Paso 8: Adafruit al rescate!!!!!!
Antes de continuar debe considerar un condensador en la tarjeta controladora de servo a desvincular o estabilizar la fuente de alimentación de soldadura. También es aconsejable utilizar fuentes de energía independiente para los servos y el Arduino o separar/estabilizar la potencia entregada a la Arduino. La disociación es una forma elegante de decir que necesita añadir un condensador entre la fuente de tensión (VCC) y masa (GND). El tamaño del capacitor depende de su fuente de energía, como bien puede mantenerse al día con corrientes de oleada y el punto que son disociación. para más información, consulte el Todopoderoso Google. Por último, si utilizas electrolítico caps (tapas de la poder del metal) Asegúrese de buscar en el PCB para obtener su polaridad correcta.
Un pequeño repaso en la señal del servo:
Frecuencia es de 50Hz hasta 1 segundo / 50 = 20 milisegundos (ms) períodos
1ms pulso base es la señal baja, 0 grados o revés completo para un servo de rotación continua (CR)
pulso de 1.5ms es la señal media, 90 grados o centro para un servo de CR
2ms pulso es la señal de alto, 180 grados o delantero completo para un servo de CR
La tarjeta controladora de servo tiene 12 bits de resolución por un periodo de para crear la señal de servo. Cómo utilizamos estos 12 bits es simple porque 2 ^ 12 = 4096. Ahora podemos aplicar cocientes simples o stoichemetry para averiguar el valor asociado a cuánto tiempo queremos que la señal permanezca alto ciclo de deber de ot. Recuerdo que Arduino no gusta flotante punto cálculos así que tratan de usar matemáticas de entero o usted se empantanen el programa.
Señal de servo de 4096
Duración total: 20ms = 4096
Baja de la señal: 1 ms = 4096/20 = 205
Mediados de señal: 1.5ms = 205 * 1.5 = 308
Alta señal: 2ms = 205 * 2 = 410
Instrucción de software:
Esos valores deben almacenarse como constantes al principio de su programa para luego poder editarlos fácilmente. Ahora ¿cómo vamos a utilizar esta gama para la salida vía el tablero del servo?
En primer lugar, usted tiene que incluir el archivo de biblioteca de la Junta.
#include < Adafruit_PWMServoDriver.h >
En segundo lugar, declare el nombre dado a la Junta de servo y vincular los dos con la dirección de la Junta. Dirección por defecto es 0 x 40.
Servo=Adafruit_PWMServoDriver(0x40) de Adafruit_PWMServoDriver;
En tercer lugar, dentro del bucle de programa de instalación, iniciar la conexión de la placa de servo.
servo.Begin();
En cuarto lugar, establecer el freqeuncy del tablero servo dentro del bucle de programa de instalación.
servo.setPWMFreq(freq);
En quinto lugar, escribir el valor en la placa de servo en el bucle principal del programa.
servo.setPWM (canal, encendido, apagado);
servo.setPWM(2,0,ch3);
Instrucciones de hardware:
En primer lugar, soldado en las cabeceras incluyen pin, bloque de terminales y un casquillo electrolítico de 470uF para 10V. Usted podría ir con una tapa más grande e incluso uno de 6V.
En segundo lugar, no cambio de la dirección por defecto de la Junta y sólo es necesario si quieres encadenar varias tarjetas juntos.
En tercer lugar, usé algunos cinta aislante líquida en el fondo de los encabezados de pin ya que va a hacer un robot de crudo para la prueba.
En cuarto lugar, para conectar el Bus I2C, necesitará suministrar 5V y GND del Arduino a los pines VCC y GND. A continuación conecte A5 A4 a SDA y SCL. Ver la imagen que he creado con Fritzing.
Son los conceptos básicos y tutorial de Adafruit para más información por favor consulte. A continuación, mostraré cómo implementé el tablero servo con lógica para controlar dos servos de rotación continua.