Servo motor com Maix Bit

Servo motor com o Maix Bit pode ser uma ótima opção para dispositivos voltados a robótica e automação, caminhando lado a lado com visão computacional

O que é um Servo Motor e como Funciona?

O servo motor é um dispositivo eletromecânico capaz de atuar de forma precisa distâncias e ângulos específicos. Por isso é composto por componente como encoder, o que possibilita o envio da posição do motor para a controladora.

SG92R desmontando mostrando todas as peças internas.

Diferença do Servo motor no Maix bit

Como já foi visto anteriormente, o servo motor trabalha com ângulos sendo que a grande maioria trabalha de 0 a 180° e consequentemente a maioria dos códigos trabalham da mesma forma. No entanto o próprio exemplo da Sipeed usa valores negativos quando se trata de ângulos maiores que 90°.

Transferidor que ilustra o funcionamento do servo motor com o maix bit.
Fonte: Piliapp

A princípio esse tipo de lógica para trabalhar com ângulo pode ser até mais prático, mas em pode acabar complicando o funcionamento do programa.

Diagrama Esquemático

Embora o próprio código exemplo da Sipeed é utilize por padrão o pino 17, é possível utilizar outros pinos sem problemas, pois o PWM é gerado pelo timer interno. Além disso, é importante alimentar com 5V (para o modelo SG92R) mesmo que o PWM do Maix Bit seja 3V3.

Diagrama esquemático do servo motor com Maix bit

Código Exemplo

Como já foi visto anteriormente o servo motor no Maix bit funciona com representações positivas de ângulos indo de 0 a 90°, mas acima disso, começa a ser valores negativos indo até -90°. Embora o exemplo abaixo esteja apenas com um único servo, é possível usar mais de um servo.

from machine import Timer,PWM
import time

tim = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM)
S1 = PWM(tim, freq=50, duty=0, pin=9)

def Servo(servo,angle):
    S1.duty((angle+90)/180*10+2.5)

while True:
    Servo(S1,-90)
    time.sleep(1)

    Servo(S1,-45)
    time.sleep(1)

    Servo(S1,0)
    time.sleep(1)

    Servo(S1,45)
    time.sleep(1)

    Servo(S1,90)
    time.sleep(1)

Funcionamento do Servo Motor com Maix Bit

Enfim o teste prático. Mesmo que este exemplo seja simples, é fundamental para dar os primeiros passos com servo motor. Note que no vídeo o servo começa em e vai progredindo até atingir -90° e volta a repetir o ciclo.