fbpixel
Etiquetas: , , ,

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.

dcmotor-robotbase-ttgm Controlar um motor CC com o Raspberry Pi

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.

h-bridge-sn754410 Controlar um motor CC com o Raspberry Pi
pont-h Controlar um motor CC com o Raspberry Pi

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.

dcmotor-raspi3-bb Controlar um motor CC com o Raspberry Pi

Para lembrar, veja o descritivo dos pinos Raspberry Pi 3.

rp2_pinout Controlar um motor CC com o Raspberry Pi

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