Wednesday, June 20, 2012

Servo de rotación continua con bloque definido por el usuario

Antonio Lomba, desde Galicia, nos ha enviado este artículo que explica cómo utilizar servos de rotación continua con Minibloq y bloques definidos por el usuario (ésta es la versión resumida del original http://www.tecnoloxia.com/index.php/control/224-motor-servo-de-rotacion-continua-con-minibloq.html):

Los motores servo de rotación continua funcionan al recibir pulsos eléctricos. Según la duración del pulso el servo girará en uno u otro sentido, o permanecerá parado. Para gobernar este tipo de motores es necesario conocer sus características de funcionamiento.

Para un servo modelo S35/STD de GWS el fabricante recomienda pulsos de 0,9 ms para conseguir el giro en el sentido de las agujas del reloj, pulsos de 1,5 ms para bloquear el motor en una posición y mantenerlo parado, y pulsos de 2,1 ms para que gire en el sentido antihorario. También hay que controlar la duración del período, que es el tiempo total de la zona activa de la señal y la zona inactiva. La duración del período recomendada para conseguir una velocidad óptima está entre 16 y 23 ms.

Para conectar el motor en una controladora Arduino Uno tendremos en cuenta los colores de los cables de conexión del motor y lo haremos tal como se indica en la imagen. El cable marrón para GND, el cable rojo a 5V y el cable amarillo para el pin de control digital:

 
Los programas básicos de control para el giro continuo en ambos sentidos, utilizando el pin de salida digital D3 para el control, son los que se muestran a continuación. Los tiempos programados en Minibloq están en microsegundos. Para ello fue necesario incorporar un nuevo bloque a Minibloq, se trata del bloque delayMicroseconds. El bloque delay que trae por defecto el programa maneja el tiempo en milisegundos y con este bloque no era posible programar la parada del motor con impulsos de 1,5 milisegundos, ya que el bloque no admite números decimales.
El bloque delayMicroseconds es un bloque definido por el usuario, partiendo precisamente del bloque delay. En la nueva Guía de Desarrolladores de Minibloq (en inglés) se explica, entre otras cosas, cómo crear este tipo de bloques.