Siguiendo con la idea de sacar un robot velocista de este coche,
aprovechando sus pequeñas dimensiones que nos pueden hacer
correr bastante, vemos que la cosa no es tan sencilla como convertir un
MiniZ, la nueva electrónica que está poniendo Kyosho en
sus modelos (también en los MiniZ) de 2.4 GHz complica bastante
su reutilización como velocista respecto a la versión
anterior de 27 MHz.
Al abrir la electrónica nos encontramos con dos circuitos
integrados un microcontrolador 16f690 de microchip y un integrado de
radio CYRF6936 con un bus SPI para comunicarse con el
microcontrolador, y éste es el que debemos escuchar para saber
como funciona y ver que señales tenemos que generar con un micro
externo para poder controlar el micro interno, es decir cortamos las
pistas que van del 16f690 al CYRF6936 y ponemos ahí cables a
nuestro microcontrolador externo que hará la función del
circuito de radio para controlar el micro a nuestro deseo, o esa es la
idea inicial.
Una vez identificado que pin es cada uno en el microcontrolador se les
suelda unos cables y se conecta un analizador lógico para ver
las señales, en este caso tenemos los pines cuyas señales
se corresponden SDAT, CLK, SS'del protocolo SPI e IRQ del integrado de
radio.
El protocolo SPI según cuentan los libros tiene 4 modos de
operación, dependiendo de la polaridad y fase del reloj. Y
según las polaridades y fases que nos indiquen sabremos si
debemos leer los bits en el flanco de bajada o de subida del reloj.
Polaridad baja y fase cero.
Aquí nos dice que considerando está configuración
de reloj, el bit los leeremos cuando suceda el flanco de subida del
reloj.
Polaridad baja y fase uno.
Si nos dicen que la polaridad es baja y la fase uno el valor del bit lo
tomaremos en el flanco de bajada del reloj (cuando pasa de 1 y llega a
cero).
Polaridad alta y fase uno.
Si nos dicen que la polaridad es alta y la fase es uno los bits los cogeremos en el flanco de subida del reloj.
Polaridad alta y fase cero.
Y en este último caso los bits los leeremos en el flanco de bajada del reloj.
Conectando el analizador y encendiendo la emisora sin tocar los mandos del coche encontramos una señal de esta forma:
En ella poco podemos apreciar, el channel dos se corresponde con el pin
de la IRQ del circuito de radio, el channel 3 es el SDAT, el channel 1
es la señal de reloj generada por el microcontrolador y el
chanel 0 en la línea SS' (selección de esclavo).
Por lo que para saber a que frecuencia debemos de muestrar hay que observar la señal de reloj.
Reloj, channel1.
Vemos que el reloj tiene un período de 3 uS, es decir una
frecuencia de 333.333 KHz, por lo que la frecuencia menor del
analizador superior al doble de la frecuencia del reloj es la de 1 MHz
y la que usaremos para muestrear.
Señal a 1 MHZ
Pero antes hay que ver en que parte de la señal buscar y
teniendo una línea de IRQ entre el micro y el integrado de radio
lo primero es mirar aquí, no sé cual de los dos es el
encargado de generar esta señal ya que en el data dice que puede
funcionar como entrada y como salida este pin.
Para cualquier valor del gatillo y volante de la emisora, cuando la IRQ
está en alto obtenemos los mismos bits en SDAT (channel 3).
Se puede apreciar como se generan los 16 pulsos de reloj en el channel1
para mandar 2 bytes cuando la línea SS' pasa a nivel bajo.
Si miramos en la parte baja de la IRQ, vemos que los bits de SDAT
cambian en función de la posición de los mandos de la
emisora. Por lo que pasamos a leer los bits que se mandan durante la
parte baja de la IRQ (channel2) por la línea SDAT(channel3), y
se mandan unos cuantos...
Bytes 1 y 2.
Los primeros 2 bytes comienzan en el primer flanco de bajada de la
línea SS' (channel 0) una vez que la línea IRQ (channel
2) se encuentra a cero. El valor de SDAT (channel 3) lo cojo en el
flanco de subida del reloj (channel 1), no sé si me equivoco
aquí pero las cuentas han salido. De esta forma el primer byte
valdría "10000101" y el segundo Byte toma el valor "10001000",
es decir el Byte1=133 y el Byte2=136, que se corresponden con los dos
bytes enviados mientra la IRQ está a nivel alto. El primer byte
de cada transmisión es la palabra de control y el segundo el de
datos, una transmisión tiene lugar cuando SS'(channel 0)
está a cero y finaliza cuando pasa a valer 1.
El primer bit del primer byte nos dice si el micro va a escribir (1) en
el esclavo o va a leer de él (0), el segundo bit es para que se
incremente el registro automáticamente cuando se manda un byte,
y los 6 restantes es la dirección del registro en el que vamos a
leer o escribir si no recuerdo mal. Por lo que en este caso al estar a
1 el primer bit del primer byte el micro se encargaría de
generar toda la señal, tendría sus entradas configuradas
como salidas durante toda la transmisión.
Bytes 3 y 4.
De la misma forma leemos los bytes 3 y 4 y tenemos "00100001" y
"00000000", el valor 33 y 0 en decimal. En este caso el primer bit del
primer byte de esta transmisión generado por el micro tiene el
valor cero lo que indica que va a leer del esclavo, es decir el segundo
byte de la transmisión se encarga de generarlo el esclavo y el
micro estará configurado como entrada.
Bytes 5 y 6.
Byte5= b"00100001" 33 en decima y Byte6="01001111" 79 en decimal.
Bytes 7 y 8.
Byte7="00100001" 33 en decimal y Byte8="00110010" 50 en decimal.
Bytes 9 y 10.
Byte9="00100001", 33 y Byte10="00000000".
Bytes 11 y 12.
Byte11="00100001" 33 y Byte12="10000100" 132
Bytes 13 y 14.
Byte13="00100001" 33 y Byte14="01111010" 122.
Bytes 15 y 16.
Byte15="00100001" 33 y Byte16="00000000"
Bytes 17 y 18.
Igual que en el anterior 33 y 0.
Bytes 19 y 20.
Byte19="00100001" 33 y Byte20="11111110" 254
Y la IRQ (channel 2) pasa a valer 1 finalizando la transmisión y
generando la misma cadena de bytes mientras permanezca a 1 la IRQ. Se
han mandado 20 bytes en 10 transmisiones durante el tiempo que la
interrupción ha estado activa a nivel bajo, el primer byte de
cada transmisión siempre es el mismo excepto en la primera,
indicando que el segundo byte se va a leer del circuito de radio, y el
segundo byte se corresponde con un valor númerico que es
función de los mandos de la emisora.
Por lo que resumiendo, con el mando en reposo hemos visto los siguientes valores..
Transmsión 1. 133 y 136
Transmsión 2. 33 y 0
Transmsión 3. 33 y 79
Transmsión 4. 33 y 50
Transmsión 5. 33 y 0
Transmsión 6. 33 y 132
Transmsión 7. 33 y 122
Transmsión 8. 33 y 0
Transmsión 9. 33 y 0
Transmsión 10. 33 y 254
Pues ahora hay que hacer lo mismo con los mandos de la emisora en otras posiciones.
Acelerador al máximo y volantes en reposo.
Transmsión 1. 133 y 136
Transmsión 2. 33 y 0
Transmsión 3. 33 y 79
Transmsión 4. 33 y 50
Transmsión 5. 33 y 0
Transmsión 6. 33 y 133
Transmsión 7. 33 y 55
Transmsión 8. 33 y 0
Transmsión 9. 33 y 0
Transmsión 10. 33 y 188
Observamos como cambia el valor de la séptima transmisión
(velocidad) y el valor de la última transmisión se
corresponde con la suma de la transmisión 6 y 7 al igual que en
el caso anterior, comprobación de errores.
Volante hacía delante acelerador en reposo.
Transmsión 1. 133 y 136
Transmsión 2. 33 y 0
Transmsión 3. 33 y 79
Transmsión 4. 33 y 50
Transmsión 5. 33 y 0
Transmsión 6. 33 y 207
Transmsión 7. 33 y 122
Transmsión 8. 33 y 0
Transmsión 9. 33 y 0
Transmsión 10. 33 y 73
Ahora cambia la sexta transmisión (giro) y la séptima
(velocidad) se pone como cuando estaba en reposo. El último
valor es 73 que se corresponde con 207+122 - 256, es decir se ha
desbordado el registro.
Freno al máximo volante hacía atrás.
Transmsión 1. 133 y 136
Transmsión 2. 33 y 0
Transmsión 3. 33 y 79
Transmsión 4. 33 y 50
Transmsión 5. 33 y 0
Transmsión 6. 33 y 58
Transmsión 7. 33 y 163
Transmsión 8. 33 y 0
Transmsión 9. 33 y 0
Transmsión 10. 33 y 221
Ahora tocamos los dos mandos y cambian ambos valores
(transmisión 6 y 7) respecto a la posición en reposo, la
última se corresponde con la suma de los valores anteriores.
Medio volante hacía delante, medio acelerador.
Transmsión 1. 133 y 136
Transmsión 2. 33 y 0
Transmsión 3. 33 y 79
Transmsión 4. 33 y 50
Transmsión 5. 33 y 0
Transmsión 6. 33 y 164
Transmsión 7. 33 y 83
Transmsión 8. 33 y 0
Transmsión 9. 33 y 0
Transmsión 10. 33 y 247
Igual que el anterior a sus respectivos valores.
Medio volante hacía dentro y medio freno.
Transmsión 1. 133 y 136
Transmsión 2. 33 y 0
Transmsión 3. 33 y 79
Transmsión 4. 33 y 50
Transmsión 5. 33 y 0
Transmsión 6. 33 y 102
Transmsión 7. 33 y 144
Transmsión 8. 33 y 0
Transmsión 9. 33 y 0
Transmsión 10. 33 y 246
Por lo que observando lo anterior se puede observar su funcionamiento y
que hay que generar con el micro externo para reutilizar el coche como
velocista.
El valor de reposo del volante es 133 y se asigna en la sexta
transmisión, enviando un valor mayor hasta un máximo de
207 y mínimo de 58 giramos en un sentido o en el otro cierto
ángulo proporcional al valor enviado.
El valor de reposo del acelerador es 122 y se asigna en la
séptima transmisión, enviando un valor entre 122 y 55
aceleramos, y mandando un valor por encima de 122 frenamos si el valor
anterior es menor a 122 y retrocedemos si el valor anterior es igual o
mayor a 122. La velocidad es proporcional al valor mandado entre el
rango comprendido.
Supongo que los valores de reposo el 133 y 122, al igual que los
máximos y mínimos serán configurables desde la
emisora. El resto de valores mandados en cada transmisión ni
idea de para que sirven, pueden ser bytes asignados para configurar el
coche desde la emisora, el 50 y 79 pueden indicar que significan los
valores de las transmisiones 6 y 7 o pueden indicar el canal de la
emisora, no sé, la cosa es que con saber ésto y ser
capaces de generarlo con un micro externo sería suficiente para
controlar la electrónica de este coche.
La ventaja es que tenemos un coche escala 1:43 bien hecho y
diseñado de Kyosho que corre tanto como un MiniZ y puede ser
buen velocista debido a su radio mínimo de curvatura, a escala
es como si a un MiniZ en lugar de decirle que el radio mínimo
del circuito es 40 le decimos que es 61, esa sería la
equivalencia. 61 + 11 de la equivalencia del carril exterior pues nos
encontramos con curvas exteriores de radios mínimos de 72 cm,
resumiendo es como si tuvieramos 25 cm más de radio en la curva
que en un miniZ es en un incremento notable de cm/s, y luego 23 cm a la
línea roja.
La desventaja es que reutilizar la electrónica de 2.4 GHz es
mucho más difícil si queremos usar el micro interno,
desoldar el circuito de radio y el micro y utilizar el resto de la
electrónica con nuestro microcontrolador es otra opción,
pero debemos tratar con la realimentación del servo y con los
tiempos de encendido y apagado de los transistores de los puentes en H,
por lo que también es complicado. Otro problema es los tiempos
que manejamos de 3 uS los que nos hará irnos a ensamblador. Y
otro problema más es el tamaño del coche, ya que debido a
sus reducidas dimensiones pues podemos llevar menos sensores, menoas
electrónica y es más difícil trabajar.
La mala noticia es que todos los modelos de MiniZ están
empezando a venderse con esta electrónica, así que puede
ser buena idea hacerse con un par más de las viejas. Todo son
problemas pero si se adapta yo creo que ésto puede ser muy
competitivo, yendo incluso por delante de robots diferenciales y
sniffers debido a sus reducidas dimensiones, lo malo es que tiene mucho
trabajo y yo de momento voy a continuar con los MiniZ que me
gustaría finalizar.
Para cualquier sugerencia, duda o si alguien ve algo que haya podido
hacer o pensar mal ya que es la primera vez que trato con ésto,
por favor que me deje un comentario.