fbpixel
Etiquetas: , , ,
5
(1)

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

How useful was this post?

Click on a star to rate it!

Average rating 5 / 5. Vote count: 1

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?