Manejo de Un Servo Motor Con Raspberry
Manejo de Un Servo Motor Con Raspberry
El cuerpo de los servo motores está formado por un motor eléctrico, una caja reductora con
engranajes y un circuito electrónico de control. Los servo motores son comúnmente utilizados en
modelismo para controlar los sistemas de dirección, por ejemplo el timón de un barco o los
alerones de un avión.
Los servos usan la modulación por ancho de pulsos (PWM) para controlar la posición del motor
eléctrico.
Esquema y cableado
Hace poco he estado trabajando en un proyecto de cámara de seguridad controlada por una
Raspberry Pi. En mitad del montaje del proyecto se me ocurrió que sería interesante que el
usuario pudiese mover la cámara tan sólo pulsando unos botones de la interfaz web, asi la cámara
podría cubrir un mayor ángulo de visión, para esta modificación pensé que un servomotor podría
hacer bien el trabajo. El servomotor que he usado es el que podeis ver en la foto de cabecera, un
TOWER PRO SG90.
Los cables son de color marrón (GND), rojo (VCC) y amarillo (SIGNAL). Este servo se alimenta de 5V
asi que es ideal para usar con Raspberry o Arduino su ángulo de giro es de 180º pero se puede
modificar y hacer que gire 360º (ver Mini servo SG90 rotación contínua). Tiene un torque (fuerza
de rotación) de 1’5Kg/cm, no es que tenga una fuerza brutal pero para girar la camara Pi Noir de la
Raspberry me iba al pelo. Para controlar el servo motor monté el siguiente esquema:
Para poder controlar el servo haremos uso de la librería RPI.GPIO, este pequeño código en Python
muestra como controlar el servo poniéndolo en 3 posiciones, izquiera, derecha y centro.
Python
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(21,GPIO.OUT)
p = GPIO.PWM(21,50)
p.start(7.5)
try:
p.ChangeDutyCycle(4.5)
time.sleep(0.5)
p.ChangeDutyCycle(10.5)
time.sleep(0.5)
p.ChangeDutyCycle(7.5)
time.sleep(0.5)
except KeyboardInterrupt:
p.stop()
GPIO.cleanup()