Para
poder comprobar el funcionamiento de la electrónica del MiniZ
(encoders, realimentación, error, etc..) es necesario poder
comunicarse con él, para ello se ha hecho un módulo
basado en un Arduino Mega con LCD para visualizar datos y botones
digitales y analógicos para manejar el coche durante las
pruebas, y también el resto de la electrónica que se vaya
conectando a este módulo.
La comunicación con el coche se realizará mediante alguno
de los protocolos series disponibles, se podría hacer
ésto directamente mediante el puerto serie del pc sin necesidad
de crear nueva electrónica, pero el objetivo de este MiniZ
además de ser un robot velocista (en el que los concursos cada
vez interesan menos debido al triste panorama robótico que hay
por aquí), es crear un Scalextric en el que el circuito
será idéntíco a los de las pruebas de velocistas.
Los coches seguirán la línea negra sin poder tocar la
roja, permitiendo a cada jugador el control de la velocidad mediante un
mando similar al de scalextric y ordenar cambios de carril para
adelantar o para ir por el carril que más interese en cada parte
del circuito. También estará disponible la opción
de correr contra coches totalmente autónomos (robot velocista),
en el que se implementa la idea de utilizar odometría para poder
adaptar la velocidad del coche a las distintas partes del circuito y
poder utilizar el freno al final de recta. No tiene mucho sentido
quitar la parte de radiocontrol a un coche rc para acabar controlandolo
con un mando estilo scalextric, pero la idea además de
divertirse aquí es aprender, desarrollar la electrónica y
el software que nos permitan correr más que nuestros oponentes,
en modo scalextric o en modo robot velocista, y en un circuito tipo
velocistas para conducir un coche rc con la emisora hace falta mucha
mucha práctica.
Por lo que para llegar a desarrollar todo lo anterior hace falta una
placa como la hecha para el Arduino Mega, que permita comprobar el
funcionamiento de los distintos pasos que vayamos haciendo en el coche
y para ello necesitamos algún tipo de interfaz, que permita
probar los módulos de comunicación que seleccionemos para
enviar datos (velocidad y carril) y recibir datos (batería,
posición, velocidad, error, etc..) del coche, y más
importante que podamos conectar los mandos tipo scalextric para el
control de los coches y además incluye una comunicación
usb con el pc, por lo que es ideal para el fin propuesto. Sin pesar en
el proyecto anterior montarse una placa de este tipo viene muy
bien para los proyectos de electrónica, ya que nos proporciona
un interfaz para comunicarnos con nuestros circuitos/proyectos, 3 buses
serie, adcs, pwm, timers, etc..
Los pines del Arduino Mega que se han ocupado para los botones yl el LCD son los siguientes:
LCD: 11 pines.: del 27 al 37 del conector digital, que se corresponden con:
PK1: Pin Micro 88.Pin Arduino: conector Analog In, pin 9. Funciones: ADC9/PCINT17. Módulo LCD: Pulsador.
PK2: Pin Micro 87.Pin Arduino: conector Analog In, pin 10. Funciones: ADC10/PCINT18.Módulo LCD: Pulsador.
PK3: Pin Micro 86.Pin Arduino: conector Analog In, pin 11. Funciones: ADC11/PCINT19.Módulo LCD: Pulsador.
PK4: Pin Micro 85.Pin Arduino: conector Analog In, pin 12. Funciones: ADC12/PCINT20.Módulo LCD: Pulsador.
PK5: Pin Micro 84.Pin Arduino: conector Analog In, pin 13. Funciones: ADC13/PCINT21.Módulo LCD: Pulsador.
PK6: Pin Micro 83.Pin Arduino: conector Analog In, pin 14. Funciones: ADC14/PCINT22.Módulo LCD: Pulsador.
PK7: Pin Micro 82.Pin Arduino: conector Analog In, pin 15. Funciones: ADC15/PCINT23.Módulo LCD: Pulsador.
PF0: Pin Micro 97.Pin Arduino: conector Analog In, pin 0. Funciones: ADC0 (ADC input channel 0).Módulo LCD: Potenciometro.
PF1: Pin Micro 96.Pin Arduino: conector Analog In, pin 1 Funciones: ADC1.Módulo LCD: Potenciometro.
El resto de pines de los conectores
del Arduino Mega siguen teniendo acceso al mundo exterior con un
conector macho y uno hembra para cada pin. Se ha añadido a todos
los pines (incluidos los anteiores utilizados) una resistencia de 220
Ohmios en serie para proteger al puerto de errores de
programación que lo puedan quemar, en el caso de que pueda
influir sobre alguno de los periféricos pues se quita y se pone
una de 0 Ohmios en su lugar.
Los pulsadores están filtrados mediante un RC que entra al
Trigger Schmitt del puerto, el valor de los condensadores más
grandes que tenía por aquí son 220 nF, la resistencia de
pull-up del pulsador 100k y la del RC 10K, los condensadore
habría que subirlos a 1 uF para filtrar más tiempo de
rebote, la resistencia ya es suficientemente grande ya que el puerto
como entrada tiene una corriente de 1 uA por lo que no es aconsejable
subir esta resistencia en lugar del condensador, ya que nos
iríamos acercando al umbral mínimo del trigger.
Se ha sacado la conexión ICSP delante del LCD ya que quedaba
debajo de éste y aprovechando el bus I2C se ha añadido
una memoria eeprom de 1 Mega, además de las resistencias de
pull-up correspondientes para el funcionamiento del bus de 4k7.
Por lo demás subo el pcb y las fotos del montaje, click para mayor resolución. PCB.