Este artículo describe un proyecto muy útil para los aficionados al modelismo y la robótica. Se trata de un convertidor analógico/digital para sistemas de radiocontrol o incluso sistemas controlados directamente por hilo, especialmente aquellos relacionados con el control direccional de dispositivos de modelismo (coches, barcos, aviones, etc.) y robots móviles.

 

Nota: Artículo publicado en la revista Electrónica Total 157 de 2013.

 

Los robots móviles autónomos, como ya sabemos, son unidades capaces de realizar diversas tareas sin necesidad de controles manuales ni programación previa. Sin embargo, para dotar a la unidad robótica de mayor versatilidad, se puede implementar un sistema de radio control interno así como sus modos de funcionamiento. Para un robot móvil controlado remotamente, el control de dirección es sin duda uno de los aspectos más críticos, y el proyectista suele implementarlo mediante cuatro llaves (por ejemplo, táctiles normalmente abiertos), que representan los comandos respectivos: adelante, derecha, izquierda y atrás. Sin embargo, estas llaves presentan la principal desventaja de desgastar naturalmente sus contactos mecánicos, lo que dificulta al operador cambiar la dirección del robot.

 

Fig. 1. Ejemplo de joystick que se puede emplear.
Fig. 1. Ejemplo de joystick que se puede emplear.

 

 

El convertidor A/D desarrollado por WR Kits soluciona estos problemas causados ​​por las llaves de contacto simples, sustituyéndolos por un joystick. La figura 1 muestra un ejemplo de joystick que puede utilizarse en este proyecto. Este modelo también incluye una llave táctil adicional, que se activa al presionar la palanca pequeña. Naturalmente, existen modelos de varios tamaños y formas. Cualquier tipo de joystick se puede utilizar en este proyecto.

 

 

Características de un control con joystick

Ampliamente utilizado en los controles de los primeros videojuegos y reintroducido en modelos más recientes, el joystick consiste en un dispositivo que básicamente tiene dos potenciómetros, fijados perpendicularmente entre sí, donde una palanca, típicamente mantenida en la posición central con la ayuda de resortes, se mueve hacia arriba y hacia abajo moviendo el eje del primer potenciómetro; o hacia la izquierda y la derecha moviendo el eje del segundo potenciómetro.

Los potenciómetros utilizados en joysticks son muy similares a los que se utilizan comúnmente en la industria electrónica, con la diferencia de que varían linealmente desde la resistencia mínima (aproximadamente 0 Ω) hasta la resistencia máxima (típicamente 100 kΩ) en un ángulo de movimiento corto. Su construcción evita que la palanca del joystick tenga que moverse en un ángulo superior a 130° para recorrer toda la banda de resistencia de sus.potenciómetros. Si se utilizan potenciómetros convencionales, que requieren un ángulo de aproximadamente 270° para recorrer toda la banda de resistencia, esto no se podría lograr con un movimiento de palanca suave.

Un joystick facilita enormemente el control de navegación de un robot móvil, proporcionando mayor agilidad al cambiar de dirección y ofreciendo además la ventaja de un desgaste significativamente menor en comparación con las llaves de contacto simples. La desventaja de un joystick es que, para aplicarlo al codificador de un sistema de radiocontrol o para el control directo por hilo de la unidad controlada, requiere un convertidor A/D que convierta con precisión sus valores analógicos (derivados de la linealidad de los potenciómetros) en bits discretos que se aplicarán a la entrada del codificador (o del driver si se implementa un control por hilo).

La figura 2 muestra el esquema de bloques básico de un transmisor de radiocontrol con estas características.

 


| Clique na imagem para ampliar |

 

 

 

La figura 3 muestra otro esquema de bloques básico: para un sistema de control idealizado con hilos conectados directamente al controlador de la unidad controlada.

 


| Clique na imagem para ampliar |

 

 

 

El circuito

Utilizando un microcontrolador económico disponible en el mercado nacional y algunos otros componentes periféricos, se desarrolló un circuito convertidor A/D para un joystick. El microcontrolador utilizado es el conocido PIC 12F675 de 8 bits, que cuenta con un convertidor A/D de 4 canales (ANO a AN3) y un oscilador interno de 4 MHz con buena precisión. Es posible utilizar un oscilador externo de hasta 20 MHz con este dispositivo.

La figura 4 muestra los pinos del PIC 12F675, tal como se proporciona en la datasheet del fabricante.

 


| Clique na imagem para ampliar |

 

 

Como se puede ver, este componente tiene energía VDD en el pino 1 y VSS (tierra del circuito) en el pino 8. Los pinos GP GP1, GP2, GP4 y GP5 pueden programarse como entradas o salidas digitales (observe las flechas que apuntan en ambas direcciones). El pino 3GP sólo puede programarse como entrada digital y también es el pino de RESET del circuito integrado.

Se eligió un microcontrolador para implementar este circuito con el fin de simplificarlo al máximo y, principalmente, por la versatilidad que su programación aporta al sistema. Con una simple configuración del código fuente, se puede cambiar el ángulo de operación del joystick sin modificar el hardware, una característica muy útil dada la diversidad de modelos de joysticks disponibles. Explicaremos esto con más detalle en el artículo.

El esquema esquemático completo del Convertidor A/D se puede ver en la figura 5. Como se puede observar en este esquema, fue necesario utilizar dos microcontroladores PIC 12F675 debido a que no cuenta con suficientes salidas digitales para implementar los 4 bits de control de dirección (el pinoGP3 solo puede programarse como entrada digital, note la flecha que apunta en una sola dirección en la figura 4).

 


| Clique na imagem para ampliar |

 

 

 


| Clique na imagem para ampliar |

 

 

Según el circuito de la figura 5, los potenciómetros del joystick se representan individualmente en el esquema: el primero tiene su terminal central conectado al pino ANO del primer microcontrolador; y el segundo tiene su pino central conectado a la misma entrada en el IC U2. Estos potenciómetros actúan como divisores de tensión, variando la tensión de energía. Se programaron por software como salidas digitales. Los resistores R1 a R4 (todos con un valor de 10 1(0)) mantienen estas salidas a un nivel lógico bajo; es decir, son resistores pull-down.

Sin embargo, cuando la tensión leída por la entrada analógica ANO se acerca a 5 V, la salida GP4 se activa, y cuando la misma tensión se acerca a 0 V, la salida GP5 se activa. Este mismo análisis se aplica a ambos microcontroladores utilizados. Como se verá más adelante, la lógica operativa principal de este circuito se implementó mediante software. Los diodos de propósito general D1 a D4 tienen la importante función de hacer que la señal de cada salida sea completamente independiente, evitando interferencias entre sí. Dependiendo del circuito codificador utilizado en el radiocontrol, podrían presentarse problemas como el funcionamiento errático de las funciones de control.

Los capacitores C1 y C2 actúan como dispositivos de desacoplamiento para los microcontroladores; es decir, sirven como una fuente de energía de acción rápida para el circuito integrado, permitiéndole funcionar hasta que la fuente de energía principal pueda proporcionar la corriente necesaria. También sirven para desviar el ruido de alta frecuencia hacia la fuente de energía.

 

 

Montaje

En la figura 6 se presenta una sugerencia de layout para el circuito propuesto, donde se puede observar claramente la simplicidad del montaje.

 


 

 

 

Los senderos de la placa de circuito impreso, que deben ser diseñadas por el proyectista o transferidas directamente a la placa fenólica (o de fibra de vidrio) mediante técnicas de construcción de placas (artesanal, silkscreen, etc.), se muestran en la figura 7. Todos los orificios para los componentes pueden ser de 1 mm. Para los orificios de montaje de la placa, utilice una broca de 3,5 mm.

 

 

 

La figura 8 muestra las máscaras de componentes presentes en el circuito, con sus respectivas referencias para una mejor orientación.

 


 

 

Se debe tener cuidado con la colocación de los microcontroladores en la placa de circuito impreso (utilice las muescas como guía) y también con la posición de los diodos. Los resistores R1 a R4 son de 1/8 W y tienen una tolerancia del 5 %. Los capacitores C1 y C2 son de 100 nF y pueden ser cerámicos o de poliéster. Diodos D1 a D4, son diodos de señal comunes y se puede utilizar cualquier equivalente (1N914 por ejemplo). Se recomienda la utilización de conectores DIL (dual in line) se utiliza un conector de 8 pinos para circuitos integrados, lo que facilita la reprogramación si es necesario y evita el sobrecalentamiento durante la soldadura. Para las interconexiones de circuitos, siempre recomendamos utilizar un conector de pinos de 11,2 mm y 180° (estándar Mother board), lo que mejora la profesionalidad del montaje.

Los potenciómetros del joystick deben conectarse a los puntos indicados en la placa, teniendo en cuenta que las entradas analógicas (AN) se encuentran en la parte superior, es decir, en estos puntos donde se conecta el terminal central de los potenciómetros. Los terminales laterales se pueden conectar sin importar la posición (lo explicaremos en la sección "Prueba y Utilización"). Se pueden comprar joysticks nuevos fácilmente en el mercado local a precios muy asequibles. Sin embargo, cabe destacar que se pueden reutilizar a partir de controles de videojuegos en desuso. Otra opción para el proyectista son las empresas que reparan videojuegos, que suelen tener controles viejos en su inventario de chatarra.

Para una mejor visualización del proyecto, presentamos en la figura 9 una imagen en perspectiva 3D del trazado previsto para este circuito.

 


| Clique na imagem para ampliar |

 

 

 

El programa

Asumiremos que el lector ya posee los conocimientos necesarios para programar microcontroladores, especialmente los de la familia PIC, por lo que no entraremos en detalles sobre esta operación. Sin embargo, se proporcionará el código fuente de este proyecto para que el usuario pueda realizar configuraciones si es necesario.

El PIC 12F675 cuenta con un registro TRISIO, que se utiliza para configurar un pino como entrada o salida. Al asignar "1" al registro, se configura como entrada (INPUT) y al asignar "0" como salida (OUTPUT). Para configurar la inicialización de los pinos de este PIC (high ou low), en este modelo, se utiliza el registro GPIO, a diferencia de los PICs más grandes (16F628A, 18F4550, etc.) que utilizan el registro PORT para la misma función.

En el box 1, presentamos el código fuente escrito para este proyecto, con abundantes comentarios para facilitar su comprensión. El lenguaje de programación utilizado fue C, y el compilador empleado para crear el código fue MikroC Pro for PIC, software libre para códigos de hasta 2 kB.

El programa comienza con la declaración de una variable entera llamada "lectura" para almacenar el valor de la cantidad analógica “leída” por el pino ANO del PIC. A continuación, en la función "main", los pinos GP4 y GP5 se configuran como digitales mediante el comando "ANSEL = 0x13;". Se debe desactivar los comparadores A/D del PIC con el comando "CMCON = 7;". Para configurar el bit menos significativo ANO como pino analógico, utilice el comando "adcon0 =Ob00000001;", (si prefiere el pino AN1, debe utilizar "adcon0 = 0b00000010;", y así sucesivamente). Luego, en el registro TRISIO, se configuraron gradualmente los bits utilizados en nuestro hardware: GPO como entrada; GP4 y GP5 como salida.

Se tomó la decisión de iniciar todos los GPIO en low utilizando el comando "GPIO = 0":

Tras la configuración inicial de nuestro dispositivo, entramos en el loop infinito con el comando "while(1);". Inicialmente, la función ADC Read() recibe cero como parámetro. Esta función está contenida en la biblioteca del compilador y es responsable de registrar valores analógicos a través de AN0.

Al primero, el valor obtenido de la función ADC_Read(0) se asigna a la variable "lectura". A continuación, se crean dos lazos de condicional "if". El primero indica que si el valor decimal de la lectura es mayor que 900, el pino GP4 estará en estado high. El segundo, a su vez, indica que si el valor decimal de la variable lectura es menor que 123, el pino GP5 estará en estado high. Los lazos "else" complementan la condición "if", indicando que si esta es falsa, el pino correspondiente estará en estado low.

Alhures en otra parte de este artículo, destacamos que el usuario puede configurar fácilmente la sensibilidad de su joystick con un simple cambio en el software. Estos valores decimales de 900 y 123 no se obtuvieron por casualidad. Lo que ocurrió es que en datasheet del fabricante del PIC 12F675, en la sección "Módulo Convertidor Analógico a Digital" (Analog-to-Digital Converter module) se especifica que el microcontrolador tiene una resolución de 10 bits. Esto significa que en decimal tenemos: 210 = 1024.

En resumen, la resolución de nuestro módulo convertidor A/D en decimal se puede representar con valores de 0 a 1023 (ya que el cero también se incluye en el conteo). Por lo tanto, estos dos extremos se utilizaron como referencia para configurar nuestro joystick, concluyendo que el valor más pequeño sería 123 y, por lo tanto, el más grande sería 900 (1023 — 123 = 900).

Cabe destacar que, idealmente, los extremos deberían ser simétricos entre sí. Por ejemplo, si el valor mínimo de su joystick es 300, el máximo debería ser 723 (1023 — 300 = 723), y así sucesivamente. Los límites superior e inferior de esta resolución de 1024 deberían obtenerse empíricamente, como se puede observar.

Después de compilar el código para generar el archivo "hex" correspondiente, simplemente grabarlo en ambos PICs 12f675 utilizados (U1 y U2) con la grabadora de su elección.

 

 

Prueba y Utilización

 

Una vez finalizado el montaje y revisado meticulosamente para corregir posibles errores, el circuito puede suministrarse con una fuente de 5V, que puede construirse, por ejemplo, a partir de un regulador de tensión LM7805. Para probar el funcionamiento del circuito, el lector puede conectar cuatro LEDs comunes de 5 mm con un resistor de 220 Ω a la salida del convertidor A/D, como se sugiere en la figura 10.

 

Fig. 10. Sugerencia de prueba para Convertidor A/D.
Fig. 10. Sugerencia de prueba para Convertidor A/D. | Clique na imagem para ampliar |

 

 

Mueva el joystick hacia arriba y compruebe qué LED se enciende. Después, mueva la palanca hacia abajo, comprobando que el primer LED se apague y...se iluminará un segundo LED. Realice el mismo procedimiento para las posiciones derecha e izquierda de la palanca del joystick para observar qué LEDs se encienden. Cada posición tendrá solo un LED correspondiente encendido y, naturalmente, cuando la palanca esté en la posición central, todos deberían estar apagados. El convertidor funcionará perfectamente de esta manera.

Una vez conocidas las salidas respectivas para cada posición, simplemente conectarlas al encoder de radiocontrol (o driver de motor), respetando el sentido correcto de navegación(adelante, atrás, derecha, izquierda). Cambiar la conexión de potenciómetro En el circuito, se cambia la salida que la posición del joystick se eleva a un nivel alto. Esto se puede hacer si el usuario prefiere que la salida "1" sea el comando de avance, "2" el de retroceso, y así sucesivamente.

Si cree que el joystick actúa demasiado rápido en las salidas (un simple movimiento eleva la salida a high), modifique los valores decimales en el código fuente, disminuyendo el límite inferior y aumentando el superior. Si su acción es demasiado lenta, simplemente aumente el límite inferior y disminuya el superior.

Como es un circuito muy pequeño, se puede instalar fácilmente dentro de la caja de control.

 

Conclusión

El circuito propuesto permitió el estudio de conceptos básicos de electrónica digital, programación de microcontroladores, hardware y software, así como los principios de la conversión A/D. Estos elementos se utilizaron para desarrollar un pequeño circuito de conversión A/D, para su implementación en sistemas controlados por radio o con hilo.

Como se mencionó anteriormente, la aplicación de un joystick a un sistema de navegación (control de dirección), ya sea para un robot móvil u otros dispositivos, ofrece numerosas ventajas en cuanto a la sensibilidad del control y la durabilidad de los componentes. Nada impide al usuario utilizar más convertidores como este para otras funciones de la unidad controlada, además de la navegación.

 

Lista de Materiales

 

Circuitos Integrados:

U1 y U2-Microcontrolador PIC 12F675

 

Semiconductores

D1, D2 , D3 y D4 - diodo 1N4148

 

Capacitores

C1 y C2 -100 nF / 63V - disco cerámico

o poliéster

 

Resistores

R1, R2, R3 y R4 - 10 kΏ 1/8W 5%

 

Varios

Joystick -vea el texto; Barra de pinos 11,2

mm (varios tamaños); PCI: Placa de

circuito impreso (fonolita o fibra de

vidrio); Zócalo DIL de 8 terminales para

los circuitos integrados