Esta es la base para un robot velocista para los próximos
concursos (Cosmobot 2009 si hay suerte y lo tenemos), se tratra de un
coche rc escala 1:28 igual que el usado en ablana,
pero esta vez un modelo más nuevo, un miniz mr02, y como es de
esperar bastante más caro, 140 euros lo que viene en la foto. La
principal diferencia sobre el modelo anterior (mr 015) es que es
más bajo, las pilas no están puestas dos a dos en cada
lado, si no una detrás de otra a la misma altura, lo que baja el
centro de gravedad.
Con el anterior miniz se hizo una electrónica nueva, esta vez
voy a intentar reutilizar la electrónica, lo que
evitará tener que construir un puente en H para el control del
motor y añadir la electrónica de control para el motor
del servo. El principal problema es que no tenemos el esquema
eléctrico (ni la paciencia suficiente para dibujarlo) por lo que
nunca sabremos donde estamos tocando.
La electrónica del coche es un pcb, que se encarga de recibir la
señal de la emisora y convertirla en una velocidad y sentido
para el motor y en un ángulo de giro para las ruedas delanteras,
al desmontar la tapa azul nos encontramos con lo siguiente:
Electrónica del coche:
Cara de debajo, (cristal removido de su zócalo):
Lo primero es identificar los chips que hay en este pcb, en el de
arriba vemos un 31136G, que es un receptor de radio, se encargara de
recibir la señal de nuestra emisora. En la placa de abajo
tenemos 2 x3004 y 2x3010 dos a dos en cada lado, estos son
parejas de transistores Fets que se encargan de formar dos
puentes en H, uno para controlar el motor en sentido y velocidad que
mueve al coche y el otro para controlar el motor de dirección,
éste se puede ver en la parte delantera en el centro, junto con
sus engranajes, potenciometro para su realimentación y el
salvaservo, la pieza negra arriba delante que se encarga de evitar que
los golpes en las ruedas rompan algún engranaje.
Identificados los chips y sus funciones sólo nos queda uno donde
mirar, el que está abajo a la derecha en la última foto,
es un microcontrolador pic 12c509a, tanto oír que los pics
sólo se usan a nivel aficionado y en el primer coche de estos
que abrimos nos encontramos con uno, y estos japoneses tontos no
son.
Es un micro de ocho bits con ocho patas, dos son de alimentación
y las otras seis restantes forman un puerto de entrada y salida con sus
distintos periféricos, por lo que si queremos descubrir como
funciona esta electrónica sin dibujar el esquema lo mejor es
observar este microcontrolador. Otra cosa a observar y como vamos a
comprobar luego es la falta de un cristal u oscilador externo, fiandose
de la eficacia del interno en cuánto a tiempos se refiere, y
aquí la exactitud es importante.
Para observar las señales en el pic a falta de 4 brazos lo mejor
es soldar unos cables a cada pata, ya que sujetar la sonda del
osciloscopio, al mismo tiempo que se maneja éste y la emisora
del coche para ver las señales es complicado. Para soldar en
estos tamaños lo mejor que yo he encontrado es el soldador de
11w de JBC con la punta de 0.5 mm, y como cable el que se usa para
chipear consolas.
Soldadura de cables al pic:
Yo no tengo ni idea del mundo del radiocontrol, por lo que para alguien
que venga de este mundo saber como funciona este circuito puede ser
básico, por lo que en mi caso me decidí a observar todas
las señales e intentar hacerme una idea de su funcionamiento que
aún no sé si es correcta, por lo que voy a poner las
señales observadas en cada pin, ya que puedo estar equivocado y
sin un esquema todo son suposiciones...
Los pines 1 y 8 son los de alimentación, si medimos en estos nos
encontraremos que el pic funciona a 3 V, cosa a tener en cuenta, ya que
este voltaje nos dará los umbrales para nivel alto y bajo de los
puertos de entrada y salida, y también nos dirá
cuál es la tensión máxima que podemos conectar en
esos puertos. Me éxplico, si vamos a utilizar un
microcontrolador funcionando a 5 voltios para manejar este pic, un
puerto de salida a nivel alto estará aproximadamente en 5V,
por lo que si lo pinchamos directamente al micro del coche, nos lo
podemos cargar, ya que el nivel máximo soportado por este
micro con Vcc de 3V puede ser menor a los 5V de salida del otro
microcontrolador. Por lo que mejor en estos casos es revisar el
datasheert de la lógica para comprobar los niveles de tensiones
e intensidades máximas soportadas y los niveles de umbral del 1
y el 0 (niveles a los que se considera que tenemos un 1 o un 0 en la
entrada de cada pata del microcontrolador).
Empezando por la pata 2 (gpio5) nos encontramos con una señal
que aparece cuando giramos la rueda de dirección de la emisora.
Con la rueda al máximo tenemos la señal anterior, y con
una posición intermedia entre reposo y máximo la
siguiente:
Una señal igual aparece en pin 5 (gpio2) cuando giramos el
mando en el otro sentido, por lo que empezando las suposiciones,
supongo que estas señales son para controlar un puente en H
mediante pwm, al girar al máximo el tope del motor de
dirección es mecánico y la señal de pwm le sigue
ordenando al motor que gire. Esto valdría para usar la
electrónica en distintos diseños de coche donde puede
haber distintos máximos y mínimos del ángulo de
giro de las ruedas de dirección. La señal de la
posición media no es una señal pwm, aquí el pwm
sólo aparece hasta que se alcanza la posición deseada por
el motor de dirección, y luego se ven pequeños pulsos
(cortos intervalos de pwm) para mantener esa posición ante
cualquier cambio. Si esto es así debemos tener una señal
de realimentación, que indique al microcontrolador cuál
es la posición del motor de dirección para que este sepa
cuando ha alcanzado la posición deseada y también para
que pueda corregir posibles cambios.
En el pin3 encontramos una señal que cambia con el mando de
dirección y que tiene toda la pinta de ser la
realimentación anterior.
Giro máximo de la rueda:
Rueda en reposo:
Giro máximo en el otro sentido.
Vemos una señal en rampa de 62.5 Hz, donde según la
posición de la rueda de la emisora varía el ancho del
pulso, por lo que es de suponer que esta señal indica la la
situación del motor alargandose o acortandose.
Es decir los pines 2,3 y 5 se encargaría de controlar el motor
de dirección del coche, haciendolo girar en un sentido o en otro
mediante señales pwm que controlan el puente en H hasta alcanzar
la posición deseada que la conocemos mediante la señal de
realimentación.
Los pines 6 y 7 del pic se encargan del otro puente en H para controlar
el motor de velocidad., cuando pulsamos el mando de acelerar en un
sentido nos encontramos con una señal pwm de 600 Hz;
Esta señal tiene un duty (ancho de pulso) de 0 a 100%, cuando lo
pulsamos en el otro sentido la señal anterior se pone a 0 y en
el otro pin (7 o 6) aparece la misma señal pwm, un puente en H
tiene dos entradas, si activamos una en un sentido y desactivamos la
otra, el motor gira en un sentido. Si ahora desactivamos la que
teníamos activada y activamos la desactivada el motor gira en
sentido inverso, y si activamos las dos el puente en H frena al motor
manteniendo ambos bornes del motor a la misma tensión. La
velocidad del motor se controla variando el ancho de pulso de la
señal que activa una de las entradas.
El efecto de freno también lo realiza el pic y es algo que
tendremos que tener en cuenta ya que en nuestro diseño final lo
vamos a utilizar, no usarlo sería como montarse en un coche sin
frenos, nos obligaría a ir mucho más despacio. Cuando
pulsamos el mando de la emisora en un sentido (hacía delante) y
repentinamente lo pulsamos hacía el otro sentido, el pic pones
los pines 6 y 7 a 1, lo que conseguiría detener el motor.
Sólo nos queda una pata en el pic, y ésta debe de
utilizarse para recibir la señal de la emisorta a través
del receptor de FM que encontramos en la placa, por lo que si miramos
las pistas vemos como esta pata del pic va conectada al circuito
receptor de FM, pasando antes por un filtro RC pasobajo.
Si miramos con el osciloscopio en el pin 4 encontramos la siguiente señal.
Una señal de 62.5 Hz (16 ms) con el mando en reposo, si no nos
acercamos más no vemos mucho, centrandonos en la parte alta de
la señal tenemos lo siguiente:
Son tres señales separadas 1.5 ms con el mando en reposo, y
estas son las encargadas de dar al pic la velocidad, sentido y
dirección que debe mandar a los puentes en H a través de
señales de pwm. Si pulsamos la rueda de dirección de la
emisora observamos como aumenta o disminuye el espacio (tiempo) entre
la primera y la segunda señal, variando su distancia entre 1 y 2
ms en función del ángulo de giro de la rueda de la
emisora.
1 ms de diferencia.
2 ms de diferencia.
Si tocamos el botón de velocidad ocurre lo mismo, la distancia
(tiempo) entre la señal 2 y 3 cambia, bajando hasta 1 ms para el
máximo en un sentido y 2 ms en el máximo del otro sentido.
1 ms.
2 ms.
Si nos vamos al pin7 del receptor de FM encontramos la siguiente
señal, que se corresponde con la vista en la pata 4 del pic una
vez que ha
pasado por el filtro RC pasobajo, se puede observar el efecto del
condensador en las vistas en el pin4 del pic.
Esta es la señal que vamos a generar con nuestro
microcontrolador externo para sustituir a la emisora, crearemos una
señal periódica de 62.5 Hz, el inicio de esta
señal serán las 3 señales vistas con un tiempo
variable entre ellas según el sentido, dirección y
velocidad que queramos.
Para ello lo primero debemos modificar el cricuito que nos encontramos
en el coche, quitando la señal de la emisora de la pata del pic,
para ello lo más rápido y fácil es cortar la pista
que va desde el circuito receptor de FM al pin 4 del pic, y soldar un
cable a esta pista por el que entrará la señal que
creemos con nuestro micro externo.
Donde cortar:
La pista que viene del receptor de fm es la que entra en la vía
que está justo donde pone D2, por lo que cortaremos aquí,
y tenemos la vía para meter el cable y soldarlo ahí
quedando bien sujeto, más no se puede pedir. Para ello raparemos
con un objeto afilado (yo lo he hecho con un punzon que uso para los
pcbs) sobre la pista hasta que se vea el cobre, y procederemos a
cortarla con cuidado de no llevarnos ninguna otra pista por delante.
Pista cortada:
Una vez hecho esto debemos soldar un cable, pero esto mejor lo haremos
en la otra cara, ya que es la que queda por arriba del coche al
levantar la tapa y es más fácil sacarlo. El cable
será el de chipear consolas que venden en cualquier tienda de
estas, pelaremos la puntita y lo metemos detro de la via para soldarlo
a ésta.
El punto donde hacerlo es en la vía a la derecha de R7 (es la que teníamos en la otra cara).
Cable soldado. Cortar el cable sobrante por la otra cara....
Removemos el cable blanco de la antena, ya que no lo necesitamos para
nada y su hueco nos sirve para sacar el cable amarillo que hemos
soldado. Si queremos volver a utilizar este circuito para sun
función original pues con puentear la pista y quitar el cable es
suficiente, ya que la electrónica de estos coches no es barata,
anda por lo 50 dolares, así que en España lo mismo cuesta
mas de 50 euros.
Si vamos a utilizar distinta alimentación para el
microcontrolador externo debemos soldar un cable a la masa de la pila,
para unir con la masa de nuestro micro externo y que ambos tengan la
misma referencia de tensiones como he hecho en esta prueba, aunque en
el diseño final por razones de peso y espacio ambos
deberán compartir la misma batería como en velocista
ablana del Cosmobot 2008. El micro externo va alimentado con 5V, por lo
que la señal al cable amarillo se coge de un divisor de
tensión (Rs del mismo valor) para no meterle voltios de
más.
Imagen del coche cerrado con el cable de señal y tierra conectado al micro externo:
Como se ve con un sólo pin vamos a controlar toda la base del
coche, por lo que aquí tenemos una de las ventajas de reutilizar
la electrónica que nos viene con el coche.
Para probar su funcionamiento necesitamos de un microcontrolador y
varios botones, en esta ocasión (aunque el diseño del
velocista tengo intención de realizarlo con un Atmega16) al
tener un 12c509a pues no me he podido resistir a usar otro 12 de
microchip... un 12f683, he preferido programar en ensamblador al tener
que manejar tiempos de microsegundos, por suerte ha funcionado a la
primera, pero si hay que ajustar los tiempos del micro para la salida
yo prefiero hacerlo en asm...
Vamos a generar la señal anterior vista en la emisora, el umbral
de Ton del 12c509a a 3V anda por los 1.5 V, lo que en el Pin4 del pic
nos da un Ton de 200 uS para el primer pulso y 150 uS para los dos
restantes en las señales observadas. Escribiendo esto me he dado
cuenta de una cosa que debo cambiar, pero de momento lo dejo así
ya que ha funcionado. Mi intención inicial era quitar R7 y
soldar ahí mejor que cortar la pista, pero si quiero volver a
utilizar la placa con su emisora me es más fácil puentear
la pista que encontrar donde deje R7.. o darme el viaje a la tienda a
por una. Por lo que había calculado un Ton para el visto en el
pin del pic, que ahora es afectado por el efecto de carga del
condensador (del RC) al entrar antes de la R y no después.
Así que mejor hacerlo de aproximadamente 400uS como el que se ve
en el pin de la emisora.
Para generar la señal periódica lo vamos a hacer mediante
una interrupción usando un timer del pic, así nos
aseguraremos de que el 12c509a reciba siempre su señal cuando la
necesita, para ello uso el timer2, el 12f683 es el único que lo
lleva de los 12 de microchip, la ventaja de usar este timer es que
contamos con un registro de 8 bits (PR2) en el que decimos al pic hasta
que valor debe contar, una vez que el valor de la cuenta sea igual a la
de este registro salta el flag de interrupción. Esto nos permite
conseguir el periodo buscado (16 ms en nuestro caso) con mucha
facilidad.
Utilizamos el reloj interno del pic, configurado a 4 MHz. La entrada al
prescaler es este reloj de 4 MHz / 4 como indica en la figura, luego
tenemos una entrada de un 1 MHz, o lo que es lo mismo, TMR2 se
incrementará en uno cada 1 uS, si usamos el prescaler lo que
hacemos es aumentar el tiempo, si ponemos un valor de 4 en éste,
TMR2 se incrementará en uno cada 4 uS.
En PR2 metemos el valor que debe alcanzar TMR2 para que active el flag
de interrupción, vamos a poner 250. Cuando alcance el valor 250
saltará, y para que se incrementará en uno tenían
que pasar 4 uS, luego tardará 4*250 uS= 1 ms. Necesitamos un
periódo de 16 ms, y aquí utilizamos el postscaler,
dandole el valor 1:16 hace que necesitemos 16 valores iguales de TMR2 y
PR2 (es decir 16 cuentas) para que active el flag de
interrupción. Luego si una cuenta se realizaba en 1 ms ahora
necesitaremos 16 ms, con lo que tenemos el periódo deseado.
Los delays de las 3 señales (los Ton y distancias entre ellas
que dan la velocidad, sentido y dirección) las hacemos por soft
al ser de 200 uS a 2 mS, por lo que el pic tiene entre 14 y 10 ms
aproximadamente para ejecutar el resto del programa, para nuestra
prueba más que de sobra. En este tiempo lo que haremos
será modificar el valor de los registros que se encargan de la
duración de los delays por soft dependiendo de que botones se
pulsen, un botón suma 50 uS por pulsación al tiempo entre
las señales 1 y 2, y otro botón resta 50 uS a este
tiempo. Lo mismo se hace con dos botones para el tiempo entre las
señales 2 y 3. Un quinto botón pone el tiempo entre las
tres señales en el incial de 1.5 ms dejando los dos motores en
reposo.
Los registros asociados a los botones deben variar el valor del delay
entre 0 y 500 uS, siendo 0 el punto de reposo para los motores de
velocidad y dirección y 500 uS el valor máximo de ambos,
en este caso lo he hecho en 10 pasos de 50 uS hacía cada lado,
corrigiendo al valor máximo cuando se sobrepasas este al pulasar
el botón.
Señales del pic que imitan a la emisora, se repiten cada 16 ms.
1.5ms 1.5ms
1ms 1.5ms
1ms 1ms
2ms 2ms
Adjuntó el código del pic en el que se deben modificar el
valor de los delays al Ton visto en el pin del circuito FM en lugar del
Ton visto en el pic aunque ha funcionado todo como se esperaba.
Video del funcionamiento.
Para cualquier dudar, suposición erronea que haya hecho, por favor..
Gracias.
Código PIC. ;**********************************************************************************************
;
; Programa para simular la señal de la emisora de un miniz
; www.jmnlab.com sept 2008
; Reloj interno 4 MHz
;
;**********************************************************************************************
;************************ Leer Botones ********************************************************
;************Si es 1 salta, si es cero asigna un cero al registro de control.******************
LOOP_BOTONES
;****************************** SUBRUTINAS BOTONES **********************************************
;******** Si no ha cambiado el botón vuelve, si ha cambiado suma o resta diez. ******************