Um dos principais objetivos da robótica é articular objetos. Para isso, é muito comum o uso de motores elétricos, como os motores de corrente contínua (ou CC), especialmente para plataformas móveis. Neste artigo, veremos como controlar um motor CC com uma placa Raspberry Pi e uma ponte H.
Pré-requisitos: Programar com Raspberry Pi
Material
- Ecrã
- Cabo HDMI
- Teclado
- Raspberry PI 3 (com OS em micro SD)
- Mouse
- Carregador micro USB B
- Ponte H SN7544410NE
- Motor CC
Motor CC
Os motores CC costumam ter uma caixa de redução que permite aumentar o seu torque mantendo suas dimensões reduzidas. Os motoesr CC são muito simples de usar. Para fazê-los funcionar, basta aplicar uma tensão elétrica nos seus terminais. O sinal e o nível da tensão determinam o sentido e a velocidade de rotação.
Para controlar a tensão nos terminais de um motor CC, pode-se usar um relé ou uma ponte H.
Ponte H
A ponte H transmite energia elétrica para o motor e modula a voltagem de acordo com os comandos da placa. Ela pode ser representada por quatro interruptores que orientam a corrente de acordo com os comandos e modulam o sentido e a velocidade de rotação do motor.
Adotamos aqui o componente SN754410NE. Ele é capaz de pilotar dois motores de corrente contínua e possui várias pernas com funções próprias.
Relembramos suas funções:
- As pernas GND são conectadas entre si e devem estar ligadas à terra do projeto.
- A perna +5V alimenta a parte lógica do cartão inteligente e pode ser ligada ao terminal +5V da placa Raspberry Pi.
- M1 Enable e M2 Enable permitem ativar as duas pontes correspondentes. Elas recebem um sinal digital ALTO ou BAIXO do Raspberry.
- M1/M2 Forward, M1/M2 Reverse permitem enviar uma tensão para o terminal do motor a fim de conduzi-lo em ambos os sentidos. Recebem um sinal PWM para modular a velocidade de rotação.
- O terminal +Motor Power IN recebe a tensão de alimentação dos motores (5, 6, 7V às vezes chagando a 24V).
- As pernas restantes, Motor 1 e Motor 2, são ligadas aos terminais do motor.
Esquema de ligação
Dependendo da potência do motor utilizado, ele pode ser alimentado pelo terminal 5V da placa Raspberry Pi. Ainda assim, é fortemente aconselhado usar uma fonte de energia externa, para proteger o microcontrolador.
Para lembrar, veja o descritivo dos pinos Raspberry Pi 3.
Código básico para controlar um motor CC
Para controlar o motor, é preciso ativar a ponte H correspondente e aplicar um comando PWM ao terminal Forward ou Reverse, cada qual correspondente a um sentido de rotação do motor.
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO from time import sleep GPIO.setmode(GPIO.BCM) #Pins 18 22 24 GPIO 24 25 8 Motor1E = 24 # Enable pin 1 of the controller IC Motor1A = 25 # Input 1 of the controller IC Motor1B = 8 # Input 2 of the controller IC GPIO.setup(Motor1A,GPIO.OUT) GPIO.setup(Motor1B,GPIO.OUT) GPIO.setup(Motor1E,GPIO.OUT) forward=GPIO.PWM(Motor1A,100) # configuring Enable pin for PWM reverse=GPIO.PWM(Motor1B,100) # configuring Enable pin for PWM if __name__ == '__main__' : forward.start(0) reverse.start(0) # this will run your motor in reverse direction for 2 seconds with 80% speed by supplying 80% of the battery voltage print "GO backward" GPIO.output(Motor1E,GPIO.HIGH) forward.ChangeDutyCycle(0) reverse.ChangeDutyCycle(80) sleep(2) # this will run your motor in forward direction for 5 seconds with 50% speed. print "GO forward" GPIO.output(Motor1E,GPIO.HIGH) forward.ChangeDutyCycle(50) reverse.ChangeDutyCycle(0) sleep(5) #stop motor print "Now stop" GPIO.output(Motor1E,GPIO.LOW) forward.stop() # stop PWM from GPIO output it is necessary reverse.stop() GPIO.cleanup()
Obs: Atenção às indentações ao escrever ou copiar um código, para evitar erros de compilação.
Fontes
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie