Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Hola a todos.
Mi problema es que estoy trabajando con el Robonova que usa la placa MR C-3024 la cual tiene 7 puertos AD en dos de los cuales le he instalado dos sensores IR ( modelo Sharp GP2D 12 que cuanto mas cerca este el objeto devuelven valores mayores) y el caso es que cuando los sensores no detectan nada deben devolver valores entre 0-3 lo cual me funciona unas veces bien y otras no.
Otras veces me devuelven valores cercanos a 35 y cuando aproximo la mano para que me detecta devuelve valores mayores por lo tanto si me detecta.
Lo que quiero saber es porque cuando los sensores no detectan unas veces me devuelve un 0 y otras un 30, esto lógicamente hace fallar mi programa y el robot se vuelve tonto.
Los sensores funcionan bien ,estoy seguro puesto que los he probado.
Alguien sabe que puede pasar? He probado haciendo reset, desconectando la bateria, borrando la memoria y nada.... e igual de repente me vuelve a funcionar devolviendome valores correctos.
Un saludo y gracias!
Bueno a grandes rasgos por lo que comentas parece que la salida de los sensores no es muy estable. Aun así podrias poner el circuito que usas (yo desconozco esa placa, pero creo recordar que usa un Atmega 128). ¿lleva resistencia de compensación en las entradas ADC? ¿conectas la salida analogica del sensor directamente a la placa o haces alguna adaptación de señal?
En general, cuando se usan señales analogicas (y de baja frecuencia como es esta), conviene hacer un filtrado de la señal para evitar eso que comentas (la inestabilidad). Por otro lado, tambien es conveniente tener esto presente en el desarrollo del software y dar una histeresis (un margen de valores para tomar una acción u otra).
Bueno, espero al menos haberte orientado hacia la solucion.
Un saludo.
El filtrado por software lo puedes hacer usando la media, es decir que el valor que tu tomas como real sea la media entre los n valores anteriores + el actual, de esta forma suavizaras mediante software esos picos, la respuesta sera algo mas lenta, pero en lecturas como por ejemplo en la serie
10, 11, 10, 14, 9, 40, 15, 8 ,10, 12
la media te daría 14, como ves el efecto del 40 queda muy atenuado, otra opcion es usar una doble vuelta, despues de cojer esta media eliminar los valores que excedan por ejemplo +/- 5, con lo que nos quedaría la siguiente serie
10,11,10,14,9,15,10,12
como ves hemos eliminado el pico del 40, dando la media 11
esto ya es ajustarlo a tus necesidades y ver si soluciona tu problema
hola!!!.En primer lugar gracias a los dos por contestar.
El micro de la placa es como bien dices un Atmel ATMega 128.
El sensor lo conecto directamente a la placa, sin adaptar la señal y la verdad no se si tiene resistencia de compensacion,en tal caso estara integrada supongo.....
Es cierto que mi programa tiene una cierta tolerancia para realizar una accion u otra y ademas como tu comentas Garrocha hago una media que me ralentiza un poco el programa pero que me ayuda.
Me debi explicar mal.Resulta que los valores que devuelve el sensor son bastante estables puesto que no me dan picos, son muy precisos, el problema es como si en la placa hubiese interferencias y no reconociese bien la señal porque cuando no detecta nada devuelve una cosas asi:
CASO CORRECTO:
1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0
es decir bastante estable, y en vez de picos en la misma situacion me ocurre esto:
CASO INCORRECTO:
30,32,33,30,33,30,34,30,34,30,32,33,33,30,33,30,30,30,
Lo que NO me ocurre es esto:
NO OCURRE:
1,0,0,0,0,0,0,0,30,0,0,0,1,0,0,0,0,0,30,0,0,2,0,0,0,0,0,0,0
porque si fuese solo esto el usar la media lo resolveria por completo.
Una cosa mas que se me olvidaba.Resulta que si tomas los valores de un puerto ADC en el que no este nada conectado aparecen valores que este devolviendo un sensor en otro puerto,no da valores al azar que seria algo mas lógico(creo), sino que te da valores muy cercano a los que esta devolviendo algun tipo de sensor.
Espero haberme explicado mejor.
Un saludo!!!
mirando por otras páginas he visto esta:
http://www.info-ab.uclm.es/labelec/Sola ... ancias.htm
donde recomiendan filtrar la señal de alimentación del sensor (condensador entre vcc y gnd) ¿podria ser eso?
Mira tambien condiciones ambientales, una ventana, un mando a distancia, una bombilla que te pueda estar afectando a la medida del sensor.
Lo de que al medir sobre una patilla del A/D que esta al aire te de valores cercanos a los de otra patilla puede ser una diafonía que se va al conectarle una señal
Otra cosa, el 30 ¿que valor de tension representa?