Existen
en el mercado muchos modelos de servomotores, desde grandes servomotores
trifásicos hasta pequeños, usados en aeromodelismo. En el presente tutorial
mostraremos cómo usar los servomotores más usuales con Arduino.
Lo
primero que debes saber es que todo servomotor para su funcionamiento necesita,
una señal con la que le indiques la posición que quieres que adopte y una
alimentación, de ahí que la todos tienen 3 cables, como mínimo. Para conseguir
que el motor adopte la posición que nosotros deseamos, debemos proveerle de una
señal de PWM a través del pin de señal, siendo el ancho de pulso proporcional
al ángulo en que se debe ubicar con respecto al ángulo cero.
Controlar
un servomotor con Arduino puede ser logrado en realidad de una forma sencilla
diseñando un programa que asigne a cada ángulo un ancho de pulso, sin embargo desperdiciaríamos
un poco nuestro tiempo dado que existe una librería estándar para Arduino que
nos permiten el control de los servomotores de una forma mucho más sencilla.
Con
esta librería seremos capaces de controlar casi cualquier servomotor,
realizando sólo algunos pequeños ajustes para el caso de servomotores
especiales, como aquellos que son capaces de girar 360 grados, para los servomotores
más comunes: Sg90, Mg90s, S3003 y para la mayoría de los servos comerciales, podemos
usar exactamente el mismo código. Debemos señalar que no debemos alimentar
nunca ningún servomotor desde nuestro Arduino o podríamos causar daños
irreparables.
¿Cómo controlar un
servomotor con Arduino?
Lo
primero que debes hacer es añadir a tu programa la librería: “Servo”, luego de
lo cual aparecerá en la parte superior de tu programa la palabra: “#include
<Servo.h>” (esta librería viene ya incluida en el IDE de Arduino). Una
vez hecho esto seremos capaces de usar todos los comandos de la librería, la
lista completa y la explicación de cada uno de los comandos se encuentra en la
página de referencia de Arduino (link), sin embargo a continuación te
explicaremos los comandos más básicos y su uso más simple:
·
Servo:
Servo es un tipo de dato creado para manejo interno de la librería. Lo primero
que debemos definir en nuestro programa es una variable del tipo Servo, ésta definirá
nuestro objeto a controlar, definiremos una variable diferente por cada servo
que queramos controlar, como ejemplo a continuación llamaremos a nuestro
servomotor “myservo”, con el finde definir las demás funciones.
·
.attatch():
Debemos llamar a esta función de acuerdo a la forma como hemos nombrado a
nuestro servo, en nuestro caso debe ser: “myservo.attatch(x)”, donde la “x”
representa el pin donde conectamos el pin de señal de nuestro servomotor.
·
.write():
Debemos llamar a esta función de acuerdo a la forma como hemos nombrado a
nuestro servo, en nuestro caso debe ser: “myservo.write(x)”, donde la “x”
representa el ángulo donde queremos que se ubique nuestro servomotor.
·
.read():
Lee el ángulo en que se encuentra el servomotor de acuerdo al último valor que
le ordenamos con la función “myservo.write()”, debemos llamar a esta función de
acuerdo a la forma como hemos nombrado a nuestro servo, en nuestro caso debe
ser: “myservo.read().
Esquema
de conexión con Arduino:
Ejemplo
de código Arduino
Para
el presente ejemplo usaremos el ejemplo “Sweep” incluido en la librería misma,
para esto, conectaremos nuestro servomotor al pin 9 del Arduino y cargamos el
porgrama:
#include
<Servo.h>
Servo
myservo; // create servo object to
control a servo
// twelve
servo objects can be created on most boards
int pos =
0; // variable to store the servo
position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo
object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { //
goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position
in variable 'pos'
delay(15); // waits 15ms for the
servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { //
goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position
in variable 'pos'
delay(15); // waits 15ms for the
servo to reach the position
}
}
Una
vez cargado, podremos observar que el servo se mueve desde el ángulo 0 hasta
180 y luego regresa, repetitivamente.
FIN DEL POST
0 comentarios:
Publicar un comentario