Wednesday, June 20, 2012

Control de motor servo de rotación continua (galego)

Antonio Lomba, dende Galicia, enviounos este artigo que explica a utilización de servos de rotación continua con Minibloq e bloques definidos polo usuario:

Os motores servo de rotación continua funcionan ao recibir pulsos eléctricos. Dependendo la duración do sinal activo o servo xirará nun ou noutro sentido, ou permanecerá parado. Para gobernar este tipo de motores é necesario coñecer as súas características de funcionamento.

Para un servo modelo S35/STDde GWS o fabricante recomenda pulsos de 0,9 ms para conseguir o xiro no sentido das agullas do reloxo, pulsos de 1,5 ms para bloquear o motor nunha posición e mantelo parado, e pulsos de 2,1 ms para que xire no sentido contrario das agullas do reloxo. Tamén se debe controlar a duración do período, que é o tempo total entre a zona activa do sinal e a zona inactiva. A duración do período recomendada para conseguir unha velocidade óptima está entre 16 e 23 ms.

Para conectar o motor nunha controladora Arduino Uno teremos en conta as cores dos cables de conexión do motor e farémolo tal como se indica na imaxe. O cable marrón para GND, o cable vermello a 5V e o cable amarelo para o pin de control dixital:
 
Os programas básicos de control para xiro continuo a dereita e xiro continuo a esquerda, utilizando o pin de saída dixital D3 para o control, son os que se mostran a continuación. Hai que facer notar que os tempos que están programados en Minibloq son en microsegundos. Para elo foi necesario incorporar un bloque novo ao Minibloq, trátase do bloque “delayMicroseconds”. O bloque “delay” que trae por defecto manexa o tempo en milisegundos e con este bloque non era posible programar a parada do motor con impulsos de 1,5 milisegundos xa que este bloque non admite números decimais.
O bloque delayMicroseconds é un bloque definido polo usuario, partindo precisamente do bloque delay. Na nova Guía de Desenvolvedores de Minibloq (en inglés) explícase, entre outras cousas, como crear este típo de bloques.