Motores DC com controle de velocidade no Raspberry Pi

Vamos iniciar a ‘Trilogia dos Motores’ onde apresentaremos como controlar via Raspberry Pi 3 tipos de motores: Motores DC (ou de corrente contínua), Motores Servo (ou apenas servos) e fecharemos com oa Motores de Passo.

Quais são os Motores DC que usaremos?

Motores DC são aqueles energizados por corrente contínua (do inglês Direct Currente – DC) e que o controle de rotação é baseado na polaridade da tensão a ele aplicada, isto é, se ligarmos o + e o – de um lado irá girar em um sentido, para girar no sentido reverso basta trocar os fios de lado.

Para nosso propósito utilizaremos pequenos motores DC como aqueles encontrados em brinquedos ou recentemente, encontrados nos kits de robótica, como este:

para saber mais como funcionam os Motores DC sugiro o material do How Stuff Works.

O que você vai precisar antes de começar?

Raspberry Pi com Raspbian instalado, configurado e com acesso a internet (dúvidas veja: #01 Iniciando com Raspberry Pi 3 – 5 Min Maker

  • 1 Motor DC
  • 1 Ponte H (H-Bridge) L298
  • Fios (jumpers) para conexão
  • 1 Fonte auxiliar, bateria ou pilhas com total entre 6V a 9V

Para quer serve a Ponte H (ou H-Bridge) L298N?

Temos 2 bons motivos para utilizarmos a Ponte H para fazer a interface de controle dos motores DC.

  1. Os motores DC consomem um corrente superior a fornecida pelas saídas lógicas GPIO do Raspberry Pi e portanto podem danificar o RPi caso ligado diretamente nele
  2. O controle PWM realizado via hardware existente na Ponte H é muito mais eficiente para a regulagem de velocidade do motor e ainda reduz o processamento no RPi se o mesmo tivesse que realizar esta emulação por software.

A Ponte H que utilizaremos é a L298N comumente fabricada e distribuída com alguns acessórios facilitadores. Segue o modelo que trabalho e suas ligações:

suntekstore1355206654_image
H-Bridge L298N
hbridge-298n
Funcionamento H-Bridge L298N

 

Conexões dos Motores, Ponte e RPi 3

Estou utilizando os motores e a Ponte H montados em um acrílico que servirá de base para um veículo de um próximo projeto (a ser divulado aqui). Segue o resultado das ligações entre a Ponte H, motores e Raspberry Pi.

img_1935
Ligações na Ponte H
img_1934
Ligações no RPi

Não precisa se preocupar com as polaridades dos fios dos motores nas conexões da Ponte H ou mesmo das GPIO, pois iremos testar e se precisar inverter alguma coisa podemos fazer isso por software.

Vamos ao Código!

Para podermos realizar o controle PWM através da Ponte H (via hardware) não iremos utilizar a biblioteca GPIOZERO, e sim, a biblioteca que deu origem a ela denominada RPIO – mais nesta documentação.

Assim como a GPIOZERO não é necessário instala-la, pois ambas já vem inclusas no pacote do Raspbian que instalamos aqui: #01 Iniciando com Raspberry Pi 3 – 5 Min Maker

Etapa 1: configurar os GPIOs de controle de cada motor e do PWM

Vamos criar o arquivo ‘motor.py’ e digitar o código abaixo:

import RPi.GPIO as G   # importa a biblioteca RPIO e chamaremos de G
G.setmode(G.BCM)       # será utilizado o sistema de numeração de GPIOs

# GPIOs controladoras do Motor Direito
#
G.setup(5, G.OUT) # frente
G.setup(6, G.OUT) # trás

# GPIOs controladoras do Motor Esquerdo
#
G.setup(13,G.OUT) # frente
G.setup(19,G.OUT) # trás

# GPIO PWM para controle da velocidade - serve a ambos motores
#
G.setup(18,G.OUT)
pwm = G.PWM(18,100)
pwm.start(0)         # incializa o ciclo de trabalho entre 0 e 100

Fizemos toda a configuração dos pinos de controle e PWM. Façamos um teste rápido para saber se precisamos alterar algum setup no software, no caso do comando de ‘frente’ levar algum motor a ir para trás, por exemplo.

Adicione as linhas abaixo ao final do código acima.

pwm.ChangeDutyCycle(50)  # Mudar o ciclo de trabalho iniciado de 0 a 100

# Motor 1: andar para frente (supostamente)
G.output(5,True)
G.output(6,False)
G.output(13,False)
G.output(19,False)

# Motor 2: andar para frente (supostamente)
G.output(5,False)
G.output(6,False)
G.output(13,True)
G.output(19,False)

G.cleanup()              # libera as definições de pinos do sistema

Salve e execute a seguinte linha de comando no terminal (dúvidas em como fazer isso leia # 03 Conectando-se ao Raspberry Pi 3 via SSH – 5 Min Maker)

sudo python motor.py

Os motores deverão girar. Identifique se ambos estão girando na mesma direção e se estão, no que você considera, de ‘ir para frente’. Caso tenha ficado algo no sentido contrário , altere os pinos de ‘frente e trás’ no sotfware e tente novamente até estarem coerentes.

Para alterar a velocidade dos motores altere o valor (de 0 a 100) do Duty Cycle

pwm.ChangeDutyCycle(85)

Salve o arquivo e execute novamente. Se pretende conhecer mais sobre as funcionalidades do PWM, veja aqui: Pyhton GPIO PWM

Caso esteja interessado em ver os motores girando em outras direções é só inverter os ‘Falses e Trues’ e verificar.

Para parar completamente os motores podemos:

  • Colocar 0 (zero) no PWM >> ‘pwm.ChangeDutyCycle(0)’
  • Setar todos os controladores de Motor para ‘False’

**Obs: todos os controladores de Motor para ‘True’ também irão parar, porém travando os eixos e podendo causar problemas elétricos para o motor.

Controle PWM individual

Ambos os pinos de PWM da Ponte H estava conectados na mesma GPIO18 do RPi, portanto todos os comandos de velocidade foram repetidos aos 2 motores, porém é possível que tenhamos controles individualizados de velocidades.

Para isso basta colocar cada pino de PWM da Ponte-H em uma GPIO distinta e configurá-la para ser do tipo PWM.

Cada um com seu comando, podemos um controle de velocidade independente e fazer curvas muito mais precisas.

Vamos utilizar este conhecimento nos próximos posts.


DC

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s