DNANO 2  



Continuando con  dnano.

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.

Gracias. Saludos.


.

blog comments powered by Disqus