Paso 1: Configuración
2. subir el código a Arduino (es en la última página)
3. Asegúrese de que está recibiendo una buena señal
Usted necesitará un R/C radio transmitter(Tx) y receiver(Rx) par, que es la parte más costosa del proyecto, pero se puede utilizar para cada proyecto futuro que podría tener participación R/C. Fui con un sistema de FM de 6 canales, pero he probado un transmisor/receptor de 27mHz AM y funciona igual de bien. La belleza de Arduino es que si desea ajustar la banda muerta o la velocidad de motor en el encendido, (a diferencia de la ESC comercial) es fácil en el IDE de Arduino.
Una vez que tengas tu radio, todo lo que necesitas hacer es subir el código a tu Arduino, conecte los 2 canales que desea utilizar de su receptor de radio en patillas Digital 2 y 3 de Arduino (estos son los 2 pines de interrupción externa en Arduino) y estás listo para controlar lo que quieras. Si no tienes un paquete de masa para el receptor, puede ejecutar los cables puente desde el Arduino + 5v y GND a la receiever de R/C para la energía, sólo necesitará suministrar un solo canal con GND y + 5v (no es necesario para cada canal).
Subir el código utilizando el IDE Aruino (estoy usando versión 0016 en Ubuntu).
Empecé por control de 3 LED con 1 canal en un protoboard. Conectado un LED rojo que adelante (pin digital 9), un LED amarillo para el retroceso (digital pin 5) y un LED verde para el neutro (digital pin 12). Esto le permite ajustar el código para adaptarse a las necesidades de su sistema de radio. Tienes buen 0-100% control PWM de ambos LED y la luz neutral se enciende cuando la palanca de control está centrada. Si es necesario, puede ampliar el margen de oscilación para el neutro, pero al hacerlo, aumentará la velocidad en el encendido (que comienza en 0%, por lo que probablemente sería deseable). Ver fotos.
----------------------------------------
El código tiene 4 salidas PWM para control de motor:
canal 1 = adelante pin digital de Arduino 9
canal 1 revés = pin digital de Arduino 5
canal 2 = adelante pin digital de Arduino 10
canal 2 revés = pin digital de Arduino 6
2 salidas para las luces de indicador de punto muerto:
canal 1 = pin digital 12
canal 2 = pin digital 13
Las 2 entradas del receptor RC deben ir a:
canal 1 = pin digital 2
canal 2 = pin digital 3
---------------------------------------
Si usted está interesado en ver sus lecturas, encienda su Monitor Serial en el IDE de Arduino (fijado a 9600bps) y puedes ver las lecturas de pulso en tiempo real real para cada canal, debe leer:
completo hacia adelante = 2000 (2 milisegundos)
Centro = 1500 (1,5 ms)
completo inversa = 1000 (1 ms)
Estas lecturas reflejan el número de microsegundos que la señal de impulso desde el receptor RC se mantiene alto (o a 5v). La típica señal de Servo que proviene de un receptor R/C es un pulso cuya duración varía de aproximadamente 1 ms a 2 ms con 1,5 ms ser Neutral (que también debe ser la posición de la palanca de control vuelve a cuando lo dejas ir). El transmisor lee la posición de la palanca de control y envía esa longitud del pulso sobre una vez cada 20milliseconds. Por lo que se esta actualizando constantemente para un control preciso (para obtener más información, ver PPM en wikipedia). Si empujas la palanca de control del transmisor hacia adelante, la lectura debe ir hasta 2000, si empujas hacia atrás debe bajar a 1000. También puede usar un medidor de voltaje en este punto para ver que cambiará a Digital Pins 5, 6, 9 y 10 de 0-5v dependiendo de la posición de los palillos de control del transmisor de R/C.
Si desea saber, el código utiliza interrupciones externas 2 de Arduino para capturar cuando el pin de señal de Rx cambia Estados (va de alto a bajo o viceversa), cuando lo hace al principio de cada señal, llama a la función de interrupción que dice el estado digital del pin y si alta, registra el valor de microsegundos en el timer0 de sistema Arduino. Luego vuelve al bucle hasta que el pasador se baja, momento en el que resta el valor de microsegundo previamente grabados desde el valor de nuevo actual microsegundo para determinar cuánto tiempo el pulso me alojé alto (que nos dice la posición de la palanca de control del transmisor). Luego de lo que una y otra vez muy rápido.
Tengo los valores limitados de 600-2400 en el código de Arduino para mantener las cosas simples. Una vez que recibe la señal y lo restringe, asigna ese valor para ser proporcionalmente entre 0 y 511, donde 255 será neutro. El código determina cuando el valor cambia y utiliza una función para determinar el apropiado 0-255 valor PWM en la dirección correcta y cada dirección tiene su propio PWM pin de salida para controlar el puente en H.
En una nota lateral:
Para facilitar las cosas, construí un tablero de breakout basados en Arduino usando perf-tablero de Radio Shack, una toma de 28pin DIP, un oscilador de 16mhz y un poco de alambre. También he añadido un conjunto de encabezados de mujer de tal manera que puedo conectar mi receptor de R/C directamente sobre el tablero de arranque. Para conexiones seguras al césped, agregué terminales de tornillo en cada pin de salida y cada uno de los 6 canales del receptor. También tiene un regulador de 5v para alimentar tanto el Atmega168 de Arduino y el receptor RC (que obtiene energía cuando se enchufa en la placa de arranque). Así que usted sólo ruta los cables puente de los canales que desea utilizar en el receptor, a los pines digitales de Atmega 2 y 3. También he añadido 2 luces LED que son difíciles de atado con alambre a los pines digitales 12 y 13 para las luces de neutro para cada canal para que pueda ver fácilmente cuando estoy en neutral.
Puesto que este bot es una configuración de dirección de tanque con motor de 1 disco en cada rueda, la codificación es muy sencillo donde la palanca izquierda controla el motor izquierdo y la palanca derecha controla el motor adecuado. Ambos palos hacia adelante significa máquina va hacia adelante, tanto hacia atrás y va en sentido contrario. Si usted empuja el delantero izquierdo y el derecho hacia atrás, hace un círculo de giro cero. Como se imaginarán, el césped es muy divertido ahora.