fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Avisos
Vaciar todo

Puerstos AD placa MR c-3024 Robonova HELP

8 Respuestas
3 Usuarios
0 Reactions
3,193 Visitas
conra
Respuestas: 24
Topic starter
(@conra)
Eminent Member
Registrado: hace 17 años

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!

Responder
7 respuestas
darthagus
Respuestas: 110
(@darthagus)
Ardero
Registrado: hace 19 años

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.

Responder
garrocha
Respuestas: 1110
(@garrocha)
Ardero
Registrado: hace 19 años

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

Responder
conra
Respuestas: 24
Topic starter
(@conra)
Eminent Member
Registrado: hace 17 años

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!!!

Responder
garrocha
Respuestas: 1110
(@garrocha)
Ardero
Registrado: hace 19 años

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?

Responder
Página 1 / 2
Compartir: