TODOPIC
Mecatrónica => Robótica => Mensaje iniciado por: kaki en 15 de Febrero de 2013, 18:04:04
-
Hola buen dia.
Tengo una duda bastante simple para gente ya utilizo acelerometros analogicos!!
La pregunta es la siguiente. Cuando leo los datos con el pic como los interpretos?? osea como ago que esa valor de tencion medido se convierta en M/S o en un angulo.
Saludos!!
-
Eso lo tienes que mirar en el datasheet del acelerómetro.
Por ejemplo, para el MMA7361, el datasheet da los siguientes valores, para el eje X (aceleración estática):
Horizontal, 0g = 1.65v
Vertical hacia abajo, -1g = 0.85v
Vertical hacia arriba, 1g = 2.45v
Para los ejes Y y Z, son los mismos valores para esas inclinaciones.
Si la escala es lineal (habría que mirarlo en el datasheet), los valores intermedios para cualquier ángulo, los sacas con la tradicional regla de tres simple.
Para la aceleraciòn dínamica, sería lo mismo, hasta los G que permita medir el acelerómetro.
-
Uso un MMA7361L ... Creo que es el mismo que dices tu.
Ahora busque en el datasheet y no encontre lo que dices.
si yo se que 0g = 1,65v osea que cuando tengo 1g = 1,65 + 1,65
-
En la página 6 del datasheet del dispositivo MMA7361L se encuentran los valores de tensión en función de la aceleración dinámica.
si yo se que 0g = 1,65v osea que cuando tengo 1g = 1,65 + 1,65
No el valor para 1g= 2.45 V y para -1g = 1.65 - 0.8 = 0.85 V.
-
Moviendo el acelerometro por ejemplo en poniendolo vetical al eje X o con cualquier eje nunca me llega a 2,45V
Me conviene tomar como tencion de referencia del micro la misma con la que alimento el acelerometro 3,3 v
-
Moviendo el acelerómetro por ejemplo en poniéndolo vertical al eje X o con cualquier eje nunca me llega a 2,45V
Cual es el valor máximo que entrega el acelerómetro, podría ser que este descalibrado. Con que instrumento estas tomando la medida de tensión proveniente del acelerómetro?
Me conviene tomar como tencion de referencia del micro la misma con la que alimento el acelerómetro 3,3 v
Eso depende del microcontralador que estés usando.
-
El valor maximo que mi pic leyo es de 1,99 v y estoy utilizando un pic 18f4620... No uso ningun instrumento uso el mismo conversor del pic seteado en 10 bits
-
Pues según tengo entendido la familia 18Fxxxx maneja un rango de alimentación entre 4.2 y 5.5 V (no se si estoy en lo cierto), de ser así no podrás utilizar la fuente de alimentación del micro para alimentar el acelerómetro, pero eso no es un problema por que existen reguladores de tensión a 3.3 V.
El valor maximo que mi pic leyo es de 1,99 v
Puede ser que el acelerómetro que estas usando en la pruebas esté descalibrado, lo otro que se me ocurre es que puede haber un error en la descodificación, sería bueno que pusieras el código.
-
Con respecto a la tencion de alimentacion del pic y aceleremotro lo tengo de la siguienete manera.. el Pic alimentado con 5 Volt y el acelerometro con 3.27 Volt.
Ahora abajo te dejo el codigo la parte de los fusible de configuracion no te lo pongo.. solo donde lee los conversores y los muestra en el LCD..
float voltaje = 0;
int16 ejeX = 0, ejeY = 0,ejeZ = 0;
int muestras = 0;
float convertir (int16 dato);
void main()
{
lcd_init();
delay_ms(10);
setup_adc(ADC_CLOCK_INTERNAL);
setup_adc_ports(AN0_TO_AN2);
while(true)
{
Read_ADC(ADC_START_ONLY);
Set_ADC_Channel(0);
delay_ms(1);
ejeX=read_adc();
Set_ADC_Channel(1);
delay_ms(1);
Read_ADC(ADC_START_ONLY);
ejeY=read_adc();
Set_ADC_Channel(2);
delay_ms(1);
Read_ADC(ADC_START_ONLY);
ejeZ=read_adc();
lcd_gotoxy(1,1);
printf(lcd_putc,"X:%2.2gv ",convertir(ejeX));
lcd_gotoxy(10,1);
printf(lcd_putc,"Y:%2.2gv ",convertir(ejeY));
lcd_gotoxy(1,2);
printf(lcd_putc,"Z:%2.2gv ",convertir(ejeZ));
}
}
float convertir (int16 dato){
float aux=0;
aux = dato;
aux =(aux*5)/1023;
return aux;
}
-
No veo problema alguno en el código (te recomiendo que pongas más tiempo después de seleccionar el canal unos 10ms esta bien), por que no mides la salida de algunos de los ejes del acelerómetro con otro instrumento (osciloscopio, VOM) y compara los resultados. Si el problema persiste intenta cambiar el acelerómetro.
-
Ok.. Voy a probar lo q me dices.. Gracias y saludo...
-
Definitivamente el codigo esta bien por que medi con un Tester y tengo los mismo resultados que en el display. Los valores del acelerometro en estado normal digamos con los ejes de las sigiente manera:
Z o ------> y
|
|
x
aclaro que el Eje Z sale parra arroba... osea tiene un circulo con el puntito en el medio.
los valores son: z = 1.72 v y = 1.64 v x= 1.60
Pequeño detalle tenia seteado el Acelerometro en +-1.5G lo puse en +-6g y ahora si tengo los valores tencion que me decias tu.. de 2.45v
Cuando ago el Auto Test con el acelerometro en la misma posicion me da los siguiente valores:
x=1.67v y=1.72v z=2.04v
no se si estaran bien esos valores. saludos!!
-
Pequeño detalle tenia seteado el Acelerometro en +-1.5G lo puse en +-6g y ahora si tengo los valores tencion que me decias tu.. de 2.45v
Cuando ago el Auto Test con el acelerometro en la misma posicion me da los siguiente valores:
x=1.67v y=1.72v z=2.04v
Es extraño porque si esta configurado a 6g debería tener una resolución de 0.206 V/g es decir que para 1g en el eje x, x = 1.9 V, y = 1.65 V y Z = 1.65 V.
Ahora si se tiene 1g en el eje Z (con lo demás eje en 0g) la respuesta de los ejes del acelerómetro para esta configuración debería ser más o menos la siguiente:
x = 1.65V, y = 1.65 V , z = 1.9 V.
Yo pienso que si bien la respuesta esta más acorde, el acelerómetro con el que estas haciendo la pruebas esta algo descalibrado intenta con otro y compara resultados.
-
Bueno haciendo las comprobaciones de la hoja 6 del datasheet obtengo los casi los mismos valores con un par de milivoltios mas.
por ejemplo:
X = 2.50v Y = 1.74v Z = 1.68v
lo que noto es que cuando apago el acelerometro osea le corto la tencion el comversor sigue leyendo voltajes chicos que calculo son los que me hacen las diferencia, no se si sera ruido o algo por el estilo.
los voltaje q me muestra el display cuando desconecto el aceleromtro son los siguiente: X = 0.20 y Y = 0.21 Z = 0.19 calculo que esa es la diferecia por la cual me da mas tencion que la original cunado mido.
NO SE SI ME EXPLIQUE... saludos!!
-
Bueno haciendo las comprobaciones de la hoja 6 del datasheet obtengo los casi los mismos valores con un par de milivoltios mas.
por ejemplo:
X = 2.50v Y = 1.74v Z = 1.68v
En que resolución esta configurado el acelerómetro?
lo que noto es que cuando apago el acelerometro osea le corto la tencion el comversor sigue leyendo voltajes chicos que calculo son los que me hacen las diferencia, no se si sera ruido o algo por el estilo.
los voltaje q me muestra el display cuando desconecto el aceleromtro son los siguiente: X = 0.20 y Y = 0.21 Z = 0.19 calculo que esa es la diferecia por la cual me da mas tencion que la original cunado mido.
NO SE SI ME EXPLIQUE... saludos!!
El acelerómetro así no este bajo una señal de naturaleza mecánica detecta pequeñas vibraciones del entorno (las vibraciones que produce el sonido de los carros, voces de las personas, las personas que camina crean vibraciones que detecta este sensor etc). Así que es deber de instrumentista calibrar este tipo de sensores (debido al offset que produce por agentes que no interesan).
Acá (http://repositorio.utp.edu.co/dspace/bitstream/11059/1757/1/62138154H493.pdf) un trabajo que hice hace un buen rato donde se calibra un acelerómetro ADXL202E.
-
En 1G cuando lo pongo en 6G los valores son muchos mas chicos.. En ves de 2.45 es 2.20
Gracias por el material.. Lo voy a leer y cualquier cosa consulto aqui... Saludos
-
Buenas eh llegado a la conclucion de que el acelerometro esta dañado!!
Estos son los datoas de tencion de cada eje:
Z=
X:1.68v -Y:1.79v -Z:2.18v
X:1.67v -Y:1.78v -Z:2.20v -
X:1.66v -Y:1.77v -Z:2.20v -
X:1.67v -Y:1.77v -Z:2.21v -
X:1.67v -Y:1.78v -Z:2.20v -
X:1.67v -Y:1.78v -Z:2.21v -
X:1.67v -Y:1.78v -Z:2.19v -
X:1.67v -Y:1.78v -Z:2.20v -
X:1.68v -Y:1.77v -Z:2.20v -
X:1.68v -Y:1.77v -Z:2.19v -
X:1.68v -Y:1.79v -Z:2.20v -
-
Z tendria que ser 2.45 y X = Y esto no sucede
en el EJE X
X:2.48v -Y:1.78v -Z:1.42v -
X:2.49v -Y:1.76v -Z:1.41v -
X:2.48v -Y:1.77v -Z:1.40v -
X:2.50v -Y:1.76v -Z:1.41v -
X:2.50v -Y:1.76v -Z:1.41v -
X:2.50v -Y:1.78v -Z:1.41v -
X:2.49v -Y:1.76v -Z:1.42v -
X:2.50v -Y:1.76v -Z:1.41v -
X:2.49v -Y:1.78v -Z:1.42v -
X:2.50v -Y:1.79v -Z:1.40v -
X:2.49v -Y:1.78v -Z:1.43v -
X = 2.45 anda mas o menos por esos valores, y Y es distinto a Z....
en el EJE Y
X:1.71v -Y:2.61v -Z:1.36v -
X:1.70v -Y:2.60v -Z:1.37v -
X:1.70v -Y:2.61v -Z:1.37v -
X:1.70v -Y:2.61v -Z:1.37v -
X:1.70v -Y:2.62v -Z:1.37v -
X:1.69v -Y:2.61v -Z:1.37v -
X:1.71v -Y:2.61v -Z:1.37v -
X:1.71v -Y:2.61v -Z:1.36v -
X:1.69v -Y:2.61v -Z:1.37v -
X:1.69v -Y:2.61v -Z:1.36v -
Y tendria que ser 2.45 y se va a la mierda casi 15 mV. X y Z son distintos...
No se que opinas esta dañado??? pore usarlo para calcular angulos calibrandolo a estos valores??
-
No se que opinas esta dañado???
Yo creo que si no esta dañado (que es lo más seguro) esta descalibrado, yo recomiendo conseguir otro y hacer los mismos experimentos nuevamente.
pore usarlo para calcular angulos calibrandolo a estos valores??
Creo que, en las condiciones que se encuentra el acelerómetro sólo sirve para medir aceleraciones en el eje x ya que este es el que tiene mejor respuesta, con respectos a los otros ejes tengo dudas de que de una medida confiable.
-
Voy hacer unas pruevas con un cemi circulo midiendo los angulos fisicamente y biendo si son correcto lo q dice la el hacere ltro y comento los resultados!!!
-
Para convertir las lectuas del acelerometro a grados tienes que hacer lo siguiente:
int16 X // Lectura eje X
int16 Y // Lectura eje Y
int16 Z // Lectura eje Z
float R
float Ang_X // angulo X
float Ang_Y // angulo Y
R=sqrt((X * X) + (Y * Y) +(Z * Z));
X/=R;
Y/=R;
Z/=R;
Ang_X=atan2(X,Z) * 57.2958;
Ang_Y=atan2(Y,Z) * 57.2958;
He utilizado el acelerometro MM7455 que funciona por I2C y funciona bien con este codigo.
Saludos
-
por que lo multiplicas por 57.2958
-
¡ Hola Kaki ! Es para pasar de radianes a grados. La funcion atan2() da el resulatdo en radianes.
Saludos
-
De donde coño saco la Sensivlidad del acelerometro?? me esta volviendo loco!!
-
Pues creo la información la puedes sacar del respectivo datasheet, debe estar en la página inicial donde se especifican las características generales del dispositivo, si mal no recuerdo la sensibilidad de este acelerómetro es 800 mv/g.