f Proyecto: Control de carro RC ~ Ingenieria a nivel industrial

Visita mi canal de youtube

domingo, 16 de julio de 2017

Proyecto: Control de carro RC


Visión de conjunto:


    Decidimos construir módulos transmisores y receptores para un vehículo radiocontrolado (RC), así como implementar un control de motor de velocidad variable y una función de dirección continua. Los controles de velocidad simples incluidos en la mayoría de los kits RC raramente ofrecen más de tres velocidades hacia adelante y una velocidad inversa; Además, los controles de dirección en la mayoría de los juguetes de "Radio Shack" sólo ofrecen una dirección binaria: O bien el automóvil está girando a la izquierda, bien o no. Pensamos que la superación de estas limitaciones haría cualquier coche RC más realista para manejar y en última instancia, más divertido de conducir.



El coche

   Un modelo de modelo Tamiya RC fue comprado en una tienda de hobby de Maryland, junto con una rudimentaria unidad de control de radio para verificar el funcionamiento de la unidad original. Después de asegurarse de que todas las piezas se montaron correctamente, se eliminaron el control mecánico de velocidad, el servo de control de velocidad y el módulo receptor de radio. El coche que hemos seleccionado ya implementa la dirección continua con un servo conectado a la articulación de dirección; Sin embargo, debido a que el receptor de radio ya no estaba siendo utilizado, decidimos dejar el servo y el ingeniero inverso de su interfaz.

   La implementación original del control de velocidad en el coche consiste en un servo que mueve mecánicamente el brazo de un simple potenciómetro de alta potencia. Mientras el movimiento del servo es continuo, el circuito sólo produce seis niveles discretos: tres adelante, dos inversos y neutro. Aficionados a los coches RC a menudo reemplazar este conjunto con un control electrónico de velocidad (ESC), que utiliza la modulación de ancho de pulso para proporcionar un control de velocidad suave. Optamos por simular la función de estos ESC comercialmente disponibles mediante el uso del microprocesador para modular la anchura de pulso a través del motor.

Comunicación

   Un coche RC es de poco valor si los controles están atados al vehículo. Sin embargo, durante el proceso de diseño, determinamos que el sistema de radio era en su mayoría irrelevante para el proyecto real y que el tiempo requerido para construir el sistema dificultaría seriamente el resto del proyecto. Decidimos en su lugar utilizar un par de módems de radio comercialmente disponibles. Los dispositivos, fabricados por National Semiconductor y utilizados por Laplink bajo la etiqueta "AirShare", pretenden establecer una conexión en serie de 115 kbps a una distancia de hasta 30 pies con una línea de visión clara. Si bien esta gama es inferior a la de las unidades de control de radio comercialmente disponibles, es más que suficiente para demostrar que el resto del diseño funciona.


Se estableció un protocolo de comunicación sencillo para enviar mensajes desde el controlador al coche. Debido a que la conexión es en serie, codificamos cada comando en un paquete de bytes. El nibble superior indica el comando y el nibble inferior representa el nivel en el que se va a ejecutar el comando. Para las operaciones discretas (como faros), el segundo nibble determina qué funciones se van a conmutar. La comunicación viaja de una manera desde el controlador al coche, lo que reduce el hardware necesario para cada unidad.

Controlador

   El controlador original usaba potenciómetros centrados en resorte para producir señales analógicas que controlaban la velocidad y la dirección del automóvil. Las señales analógicas se transmitieron al vehículo a través de un enlace de radio AM de 75 MHz.

   Con el fin de emular la verdadera experiencia de coche RC, decidimos que necesitábamos algo más visualmente intuitivo que dos potenciómetros pegados en un tablero. Compramos un simple joystick para PC de Radio Shack y quitamos los circuitos del botón "turbo". Utilizando el cable de interfaz existente, pudimos conectar los potenciómetros internos y los pulsadores a la placa receptora sin alterar el joystick de forma estética.



Nuestro diseño para el controlador utiliza los ADCs de serie de National Semiconductor para convertir la forma de onda analógica de los potenciómetros a una señal digital. Por ejemplo, el valor de 8 bits obtenido del potenciómetro de avance / retroceso se compara con un valor conocido para el valor "centrado" de ese potenciómetro; Por lo tanto, podemos determinar si el usuario tiene intención de avanzar o retroceder, y la velocidad a la que planea hacerlo. Estos datos se utilizan para generar el opcode y el valor que se enviará al coche a través de la conexión en serie.

   Después de la codificación, el carácter se envía al coche. El controlador consulta las entradas del usuario una tras otra, enviando datos independientemente de un cambio de estado de la entrada.

Receptor

   De muchas maneras, la unidad receptora actúa como un microprocesador convencional: Las instrucciones se extraen del flujo de bytes de entrada, se decodifican en una operación y magnitud y se envían a la unidad de control apropiada. Dependiendo de la instrucción, la mayor parte del trabajo se realiza mediante el control de velocidad o el control de giro; Todas las demás instrucciones controlan los dispositivos de encendido y apagado simples y se pueden controlar directamente en el bucle principal del receptor.

Control de dirección

   Como se ha indicado anteriormente, la dirección está controlada por un servo. En lugar de suministrar un voltaje simple, los servos operan sobre una fuente de tensión fija y una línea de control que se pulsa para dictar el ángulo de giro. Los trabajos anteriores sobre el servo nos dejaron con un circuito DAC, y podríamos haber agregado un circuito temporizador basado en 555 para la modulación de ancho de pulso; Sin embargo, decidimos simplificar el diseño mediante la conducción del servo de la MCU. Utilizamos la subrutina de interrupción Timer0 en conjunción con la entrada de usuario del transmisor para determinar el ancho de pulso a ser aplicado y enviado a través de los pines de puerto del mcu.


Control de velocidad

     La señal digital de cuatro bits recibida indica la velocidad deseada del motor. En lugar de utilizar un convertidor digital a analógico, decidimos conducir el motor a plena tensión y utilizar la modulación de ancho de pulso para controlar la velocidad. Existen varios productos que realizan esta tarea; Sin embargo, es una cuestión sencilla implementar PWM en el microcontrolador. Una interrupción del temporizador se utiliza para contar 16 "garrapatas", y la magnitud determinada determinó cuántas de esas señales el motor será conducido.



Debido a la excesiva potencia del motor, es imposible conducir el motor directamente desde el microcontrolador. El circuito de control de velocidad resuelve este problema amplificando las señales generadas por el chip Atmel 4414 para permitir que grandes transistores de potencia conduzcan el motor. El motor puede dibujar una cantidad significativa de corriente, aproximadamente 7-8 amperios, cuando se enciende. El amplificador utiliza BJTs nominales de 200W en una configuración push-pull de clase B para impulsar esta carga. Dado que la corriente de base a los BJT de potencia está todavía en el orden de varios cientos de mAs, se utilizaron transistores intermedios para accionar las corrientes de base, que activan y desactivan los BJT grandes. Los transistores intermedios se conectan conjuntamente con los BJT de potencia en pares de modo que la ganancia de cada par es suficientemente significativa para permitir que sea accionada por los puertos de salida del microcontrolador.

Resultados

   En resumen, el sistema funciona. El joystick es capaz de mover el coche hacia delante y hacia atrás, y girar a la izquierda y la derecha. Sin embargo, fue un largo camino llegar a este punto.

    La modulación de ancho de pulso, tal como se concibió originalmente, era demasiado rápida para que el motor girara en absoluto. Reducir el tiempo hasta aproximadamente un segundo, hasta 1 milisegundo, resolvió el problema; Sin embargo, hay un notable "tirón" a los movimientos hacia adelante y hacia atrás del coche. Puede ser posible reducir el período, tal vez en la mitad o incluso más pequeño; Esto no fue probado a tiempo para el plazo del proyecto. Hubo alguna irregularidad inicial en el pulso mismo; En lugar de intervalos regulares, parecía como si los pulsos estuvieran siendo interrumpidos por algún estímulo externo. La programación cuidadosa para evitar la insensibilidad del registro resolvió gran parte del problema, pero las irregularidades ocasionalmente aparecen en tiempos impredecibles.

   Girar el coche es muy variable pero no particularmente suave. Las mismas irregularidades encontradas en el control de velocidad se manifiestan en mayor medida en el servo, haciendo que las ruedas giren ligeramente a la izquierda ya la derecha del ángulo de giro deseado. Sospechamos que el problema es extremadamente difícil de resolver con la mcu Atmel, ya que los anchos de pulso para el servo varían de 1 a 2 milisegundos; En esos pequeños periodos, es difícil obtener una temporización muy precisa con la interrupción Timer0. Quizás un circuito 555 hubiera resuelto este problema.

   La parte de software del proyecto fue fácil de diseñar, y la implementación es bastante simple. Evitando el código complicado, podemos concentrarnos en problemas de hardware. Dado que la mayor parte de este proyecto se basa en circuitos cuidadosamente diseñados, la fiabilidad del programa simplifica en gran medida el proceso de depuración.



















0 comentarios:

Publicar un comentario