O que é um servomotor?
Um servomotor ou “servo” é um motor eletrónico de pouca inércia com o qual se pode controlar tanto a velocidade como a posição dentro do seu alcance operacional.
O corpo dos servo motores está formado por um motor elétrico, uma caixa de velocidades com engrenagens e um circuito eletrónico de controlo. Os servomotores são normalmente utilizados em modelismo para controlar os sistemas de direção, por exemplo o comando de um barco ou os ailerons de um avião.
Os servos usam a modulação por largura de pulso (PWM) para controlar a posição do motor elétrico.
Montagem e ligações
Hà pouco tempo, eu estava a trabalhar num projeto de uma câmara de segurança controlada por um Raspberry Pi. A meio do projeto, ocorreu-me que seria interessante que o utilizador pudesse mover a camára simplesmente pressionando uns botões da interface web, assim a cãmara poderia cobrir um maior ângulo de visão, para esta modificação pensei que um servomotor poderia fazer bem o trabalho. O servomotor que usei foi um TOWER PRO SG90.
Os cabos são de cor castanha (GND), vermelha (VCC) e amarela (SIGNAL). Este servo alimenta-se de 5V por isso é o ideal para usar com Raspberry ou Arduino. O seu ângulo de rotação é de 180º mas pode-se modificar e fazer com que rode 360º. Tem uma força de rotação de 1.5kg/cm. Para controlar o servomotor, montei o seguinte esquema:
Controlar o servomotor con Python
Para poder controlar o servo, vamos utilizar a livraria RPI.GPIO, este pequeno código em Python mostra como controlar o servo, colocando-o em 3 posições, esquerda, direita e centro.
import RPi.GPIO as GPIO #Importamos a livraria RPi.GPIO import time #Importamos time para poder usar time.sleep GPIO.setmode(GPIO.BOARD) #Colocamos o Raspberry em modo BOARD GPIO.setup(21,GPIO.OUT) #Colocamos o pin 21 como saída p = GPIO.PWM(21,50) #Colocamos o pin 21 em modo PWM e enviamos 50 pulsos por segundo p.start(7.5) #Colocamos um pulso de 7.5% para centrar o servo try: while True: #iniciamos un loop infinito p.ChangeDutyCycle(4.5) #Enviamos uma pressão de 4.5% para rodar o servo para a esquerda time.sleep(0.5) #pausa de meio segundo p.ChangeDutyCycle(10.5) #Enviamos uma pressão de 10.5% para rodar o servo para a direita time.sleep(0.5) #pausa de meio segundo p.ChangeDutyCycle(7.5) #Enviamos uma pressão de 7.5% para centrar o servo de novo time.sleep(0.5) #pausa de meio segundo except KeyboardInterrupt: #Se o utilizador pressiona CONTROL+C então... p.stop() #Prendemos o servo GPIO.cleanup() #Limpamos os pinos GPIO do Raspberry e fechamos o script
Gostaram deste artigo ? Deixem o vosso comentário no formulário a baixo.
Não se esqueçam de fazer like na nossa página no facebook.
Todos os produtos utilizados neste artigo podem ser encontrados na loja de componentes eletrónicos ElectroFun.