Site icon AranaCorp

Controlar um motor CC com o Raspberry Pi

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

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:

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

Exit mobile version