Servomotores

¿Cómo funcionan los Servos?
Los servos son controlados enviando señales PWM. Los parámetros son un pulso mínimo, un pulso máximo y una tasa de repetición. Dadas las limitaciones de rotación del servo, neutral se define como la posición en la que el servo tiene exactamente la misma cantidad de giro potencial en la dirección de las agujas del reloj como en sentido antihorario. Es importante tener en cuenta que los servos diferentes tienen diferentes limitaciones en su rotación, pero todos ellos tienen una posición neutral, y que la posición está siempre alrededor de 1.5 milisegundos (ms).

El ángulo está determinado por la duración de un pulso que se aplica a los cables de control. Esto se conoce como modulación de ancho de pulso. El servo espera ver un pulso cada 20 ms. La longitud del pulso determinará hasta qué punto el motor gira. Por ejemplo, un 1.5 ms de pulso se hace girar el motor a la posición de 90 grados (posición neutral).

Cuando estos servos se les ordena movimiento, se moverá a la posición y mantendrá esa posición. Si una fuerza externa empuja contra el servo mientras que el servo está sosteniendo una posición, el servo se resiste a salir de esa posición. El importe máximo de la fuerza del servo puede ejercer es el valor del torque del servo. Servos no mantendrán su posición para siempre, aunque, el pulso de posición se debe repetir para instruir a los servo para mantenerse en su posición.

Cuando un pulso es enviado a un servo que es inferior a 1.5 ms el servo gira a una posición y mantiene su eje de salida de un cierto número de grados a la izquierda del punto neutro. Cuando el pulso es más ancho de 1.5 ms ocurre lo contrario. El ancho mínimo y el máximo ancho de pulso que cuente con el servo a su vez a una posición válida son las funciones de cada servo. Las diferentes marcas, e incluso servos diferentes de la misma marca, tendrá diferentes máxima y mínimos. En general, el pulso mínimo será de alrededor de 1 ms de ancho y el pulso máxima será de 2 ms de ancho.

Otro parámetro que varía de un servo servo es la velocidad de giro. Este es el tiempo que transcurre desde el servo para cambiar de una posición a otra. El peor de los casos el tiempo de giro es cuando el servo se mantiene en el mínimo de rotación y se le ordena ir a la rotación máxima. Esto puede tardar varios segundos en los servos de par muy elevado.

Como vemos para el control de un servomotor es necesaria la generación de una señal PWM, esto podemos conseguirlo mediante los timers, pero en el ATmega16 solo contamos con un máximo de tres timers. Pero existen otras formas de generar señales PWM, para generar 8 señales PWM usaremos la misma técnica que se usó en el Barrido de Display de 7 segmentos.

La generación de las señales serán de la siguiente forma:

El gráfico está a una escala de 2.5 ms. La posición inicial de los servos es neutral y como vemos dentro de los 2.5 ms se pone en nivel alto el pin, se espera un delay y luego se ponen en nivel bajo. Notemos que el recorrido de todos los pines se hace en un tiempo de 20 ms (50 Hz).

Descargas: