next up previous contents
Next: D. Unidad hardware de Up: DISEÑO DE ROBOTS ÁPODOS Previous: B. Montaje de los   Contents


C. Control de 8 servos con un único comparador

En este apéndice describimos el funcionamiento del programa servidor que se ejecuta en un 6811 y que permite controlar hasta 8 servos usando un único comparador. Este es el servidor que se está usando para Cube Reloaded. Las ideas son las siguientes:

  1. El intervalo de 20ms (50Hz) se divide en 8 ``ventanas'' de 2.5ms (400Hz). En cada ventana se genera la señal para controlar un servo. El ancho máximo de la señal del servo es 2.3ms por lo que cabe perfectamente en la ventana. Cada vez que se produce una interrupción que te indica el comienzo de una nueva ventana, hay que temporizar la anchura (que se puede hacer con otro comparador diferente). Así, la primera interrupción te indica que hay que actualiar el servo 1, la segunda interrupción el servo 2... así hasta el servo 8 y vuelta a empezar.
  2. Cada ventana de 2.5ms se puede dividir en dos partes, una en la que la señal PWM está a nivel alto (la anchura es la posición POSI) y otra en la que la señal está a nivel bajo (2.5ms - POSI). La anchura total es de 2.5ms, pero entre medias se ha producido otra interrupción que te marca el paso del PWM del servo actual a 0.
En la figura [*] se muestran las 8 ventanas de tiempo en las que se divide el periodo de la señal PWM. Cada ventana está asociada a un servo, en la que se genera la anchura del pulso. Obsérvese que en cada ventana sólo hay una señal activa.

Figure: Periodo de 20ms dividido en 8 ventanas de tiempo
\includegraphics[]{ps/pwm8-1.eps}

En la figura [*] se muestran las dos partes en las que se divide una ventana. En la parte de la izquierda la señal PWM está a 1 (Estado S1) y en la parte de la izquierda está a 0 (S0). La anchura de cada parte está perfectamente determinada, ya que al ser la anchura de la ventana fija (2.5ms) si la anchura del pulso es de Ton, entonces la duración del estado S0 es de 2.5ms - Ton. Las duraciones de cada pulso se encuentra almacenadas en una tabla. Cada fila de la tabla indica el anchu del pulso dentro de la ventana de tiempo correspondiente. Así la primera fila de la tabla indica la duración del pulso para la ventana 1, la fila 2 para la ventana 2, etc.

Figure: Las dos partes dentro de cada ventana y la tabla de PWM
\includegraphics[]{ps/pwm8-2.eps}

La programación del microcontrolador para poder generar las 8 señales PWM se puede hacer con una única interrupción, que tiene que hacer lo siguiente:


next up previous contents
Next: D. Unidad hardware de Up: DISEÑO DE ROBOTS ÁPODOS Previous: B. Montaje de los   Contents
Juan Gonzalez 2003-12-20