Estoy tratando de controlar unos pocos servos y un montón de RGB-LED desde una placa arduino. Para ello voy a encadenar unos cuantos chips TLC5940. El problema que estoy tratando de resolver en este momento es qué configuración de PWM necesito para los servos; en particular, ¿cuáles son los ajustes de rotación mínima y rotación máxima?
Mi servo es un: HiTech HS-55. Este sitio: enlace dice que el servo se ejecuta en "+ Pulse Width Control 1500usec Neutral" con 600us el pulso es de -90 y el pulso de 2400us es +90.
Para averiguar cómo generar pulsos tan largos con mi controlador PWM, necesito saber la frecuencia con la que se ejecuta el controlador. La hoja de datos del controlador: enlace dice esto sobre la operación de PWM en la parte inferior de la página 19 :
El ciclo PWM en escala de grises comienza con el borde descendente de BLANK. El primer pulso GSCLK después de que BLANK se pone bajo aumenta el contador de escala de grises en uno y enciende todos los valores de OUTn con escala de grises no cero. Cada siguiente flanco ascendente de GSCLK aumenta el contador de escala de grises en uno. El TLC5940 compara el valor de escala de grises de cada salida OUTn con el valor del contador de escala de grises. Todos los valores de OUTn con escala de grises iguales a los valores del contador se desactivan. Una señal EN BLANCO = H después de 4096 pulsos GSCLK restablece el contador de escala de grises a cero y completa el ciclo PWM en escala de grises (consulte la Figura 21). Cuando el contador alcanza una cuenta de FFFh, el contador deja de contar y todas las salidas se apagan. Si se pone en BLANCO alto antes de que el contador alcance FFFh, el contador vuelve a cero inmediatamente.
Lamentablemente no tengo idea de lo que eso significa. (Creo) Sé que el controlador PWM recibe algún tipo de señal de reloj de arduino, pero desafortunadamente no me ayuda a resolverlo.
¿Puede alguien ayudarme a averiguar qué configuraciones necesito usar en el controlador PWM para generar los pulsos deseados? El valor más cercano funcionará. Para mi aplicación, si el servo se pone dentro de un par de grados, debería estar lo suficientemente cerca. ¿Funcionará esto en absoluto? Mi comprensión de cómo funciona el servo es que generalmente necesitan un pulso cada 20 ms, así que incluso si calculo cómo generar la duración correcta del pulso, dudo que mágicamente funcione a un pulso cada 20 ms. ¿Aceptará el servo la entrada?