Para controlar um ou mais motores DC com o Raspberry Pi não se pode ligar diretamente nos GPIOs, pois sua corrente de tolerância é bem baixa. Existem diversas soluções como o uso de transistors, relês ou pontes H. A solução desse artigo é uma das mais simples possíveis, se trata de uma placa com a ponte H L298N, que dispõe de diversos conectores facilitando a ligação dos fios. Mais fácil que isso só comprando um shield próprio para Raspberry Pi, mas que acaba saindo mais caro. A placa que tenho em mãos foi comprada na Deal Extreme e está custando US$9,69 ( RS$ 21,60 ).
As especificações dela são as seguintes( Retirado da Dx ):
- Material: Fibra de vidro
- Driver: L298N Dual-H Ponte DC Motor Driver IC- Drive de alimentação do terminal: 5 V ~ 35 V (se alimentado a partir do tabuleiro, faixa de fornecimento de energia é 7 V ~ 35 V)
- Parte de acionamento da Corrente de pico: 2A
- Lógica de Alimentação Terminal: 5 V ~ 7 V (fonte de alimentação dentro do conselho: +5 V)
- Parte Lógica da Corrente de operação: 0 ~ 36mA
- Controle de sinal Faixa Tensão de entrada: Low (-0.3V <= Vin <= 1,5 V); Alta (2.3V <= Vin <=) Vss
- Ativar sinal Faixa Tensão de entrada: Baixa: -0,3 <= Vin <= 1,5 V (sinal de controle é inativo); Alta: 2.3V <= Vin <= Vss (sinal de controle ativo)
- Consumo de energia máxima: 20W (Temperatura = 75'C)
- Temperatura de armazenamento: -25 ~ +130' C
- Dimensões: 2,17 x 1,97 x 1,38 em (5,5 cm x 5,0 cm x 3,5 cm)
- Peso: 1,13 oz (32 g)
Existem outros modelos de diferentes valores e especificações e claro que se a idéia é fugir de facilidade você pode comprar o integrado em um pack de duas unidades à custo de US$4,31 cada.
O motor utilizado no artigo é um simples motor DC pequeno com caixa de redução.
Motor DC com caixa de redução |
Motor DC com caixa de redução |
Como ligar um motor no Raspberry Pi com a ponte H L298N
No meu caso eu soldei os fios ao motor, mas caso não tenha solda você pode simplesmente prender o fio aos furos dos contatos.
Os conectores verdes são referentes a saída para os motores. A polaridade desses conectores em geral não importa muito pois isso poderá ser alterado justamente por ser uma ponte H, que irá possibilitar reverter o motor.
Saída da ponte H |
O conector azul de 3 vias é referente a alimentação dos motores e da própria ponte H. Temos da esquerda para direita, VCC, GND e +5V.
Entre o VCC e GND será ligado uma fonte externa que pode ir de 5V à 35V.
Agora a parte em que é preciso atenção: O pino +5V é referente a parte lógica da ponte H, a alimentação dessa parte lógica pode ser feita de duas maneiras, uma é apertando o botão da placa, que faz o uso de um regulador de 5V linear na própria placa, que faz o serviço de transformar a tensão da fonte de entrada nos 5V, utilizando esse método o pino +5V poderá permanecer vazio. O problema de se utilizar esse método é que não será possível caso utilize uma fonte de menor tensão, o regulador precisa de cerca de 7V mínimos na entrada para conseguir 5V na saída, no meu caso que utilizei uma fonte de 5V eu não pude utilizar esse regulador e como minha fonte possuí a mesma tensão necessária simplesmente criei uma ponte entre os pinos VCC e +5V. Mas tome muito cuidado para não fazer isso ao utilizar uma fonte de maior tensão.
Entrada da fonte na ponte H |
O fio preto que está ligado no GND, será ligado em algum GND do Raspberry Pi para se conseguir referência para os GPIOs que serão utilizados.
Os pinos ENA e ENB ativam ou desativam a saída referente, esquerda e direita, no caso da minha placa já veio um jumper em cada.
Na parte lógica temos as marcações IN1,IN2 referentes ao controle da saída esquerda e IN3,IN4 à saída da direita.
Parte lógica da ponte H |
Esses pinos funcionam da seguinte forma, ao colocar HIGH no IN1 e LOW en IN2 o motor gira para um lado e colocando LOW em IN1 e HIGH em IN2 o motor inverte a direção.
As ligações no Raspberry Pi podem ser feitas em diversos GPIOs, mas se quiser utilizar o PWM por hardware precisará utilizar o GPIO18 para controlar. Aqui minhas ligações ficaram assim:
Ligações no Raspberry Pi |
Onde IN1 e IN2 serão ligados à GPIO17 e GPIO18.
Tudo conectado |
Como controlar um motor no Raspberry Pi com a ponte H L298N
Na parte de controle, podemos configurar manualmente via sysfs da seguinte forma:
Exportamos a interface dos GPIOs 17 e 18
echo 17 > /sys/class/gpio/export
echo 18 > /sys/class/gpio/export
Configuramos como output
echo out > /sys/class/gpio/gpio17/direction
echo out > /sys/class/gpio/gpio18/direction
Configuramos gpio17 como HIGH e 18 como LOW
echo 1 > /sys/class/gpio/gpio17/value
echo 0 > /sys/class/gpio/gpio18/value
Se tudo estiver correto o motor irá girar em modo contínuo. Caso queira inverter a rotação:
echo 0 > /sys/class/gpio/gpio17/value
echo 1 > /sys/class/gpio/gpio18/value
A utilização da ferramenta "gpio" que vem em conjunto com a biblioteca wiringPi facilita o uso e podemos utiliza-la para gerar o PWM no GPIO18.
Baixe a lib utilizando o GIT:
git clone git://git.drogon.net/wiringPi
Caso não tenha o git instalado:
sudo apt-get install git-core
Entre no diretório e rode como root ou sudo:
./build
Esse comando irá compilar e instalar automaticamente a biblioteca e a ferramenta "gpio".
Configurar o GPIO utilizando a ferramenta é simples, 0 e 1 correspondem ao GPIO17 e 18 respectivamente.
gpio mode 0 output
gpio mode 1 output
Configuramos gpio17 como HIGH e 18 como LOW
gpio write 0 1
gpio write 0 0
Caso queira inverter a rotação:
gpio write 0 0
gpio write 0 1
O uso do PWM via hardware é uma função alternativa do gpio18 e pode ser ativada da seguinte maneira.
gpio write 0 1
gpio write 1 0
gpio mode 1 pwm
gpio pwm 1 50
Onde 50 é o valor do PWM que irá influenciar na velocidade do motor, esse valor pode ir de até 1023. A desvantagem é que será preciso inverter os pinos caso queira o PWM na rotação contrária. Existe um PWM via software suportado na wiringpi que irei fazer testes e falar sobre em algum artigo futuro.
Segue o vídeo do motor em funcionamento.
Essa ponte H é uma solução fácil tanto em hardware como software para controlar os motores de diversos projetos.
Show de bola esse CI, já usei ele sem o circuito impresso... apenas o CI solo funcionou beleza!
ResponderExcluirSortudo você, hein, conseguiu importar pro Brasil um Raspberry Pi vermelho! #MorrendoDeInveja :-P
ResponderExcluirHoje é relativamente fácil arrumar um vermelho pela aliexpress ou dx, difícil mesmo é arrumar um azul, só existem 1000 unidades http://www.raspberrypi.org/blue-pi/
ExcluirOpa. Fiz um .sh com os comandos e o motor nem mexeu.
ResponderExcluirSua ponte H é igual a do artigo? Se sim, verificou todas as conexões?
ExcluirRodei com ponte h + arduino http://m.instructables.com/id/Motor-Driver-BTS7960-43A/2/?lang=pt) mas não com raspberry
ResponderExcluirhttp://produto.mercadolivre.com.br/MLB-598580715-ponte-h-bridge-controlador-motor-43a-arduino-pic-bts7960-_JM
ResponderExcluirMinha ponte H é essa. Daí eu pergunto: Vou ter que ligar os 5v da ponte H no raspberry pi, né ?
A parte de controle sim, 5v e GND. É possível que funcione também com uma fonte de 5V externa, mas o GND sempre será necessário para referência.
ExcluirAmigo preciso muito de help. To usando essa ponte h do mercado livre (bts7960) e uma fonte de 12v e 6.7A há dois dias tentando varios comandos python e echo no rpi e nada
ResponderExcluirVou tentar te ajudar, eu andei procurando e parece que ninguém ligou ou publicou sobre essa ponte H sendo usada no rasp. Pode me dizer como você está ligando os fios da ponte no Rasp? os pinos e tudo mais.
ExcluirEste comentário foi removido pelo autor.
ExcluirDesculpe pela pergunta besta, Mas será que tem muita diferença usar essa versão aqui?
ResponderExcluirhttp://www.martaduino.com.br/l298-h-bridge-motor-driver-board-2amp-para-arduino
Olá, desculpe a demora. Esse modelo que você mostrou utiliza o mesmo chip base que é o L298N, o que parece ser diferente é a posição dos pinos e algumas outras opções de configuração na placa. Há também a diferença de não ter o botão de 5v, o acionamento do regulador 5v é por jumper. Portando a placa deve funcionar normalmente desde que se observando as configurações e pinos referentes aos mesmos utilizados nesse tutorial.
Excluir*portanto
ExcluirGostaria de fazê-lo com uma fonte 12v (vi algo semelhante com arduino http://blog.filipeflop.com/motores-e-servos/motor-dc-arduino-ponte-h-l298n.html) quais as adaptações que seriam necessárias?
ResponderExcluirOlá Kauê, como informado no post você pode ligar sua fonte de 12v no VCC e GND da ponte H mas não ligando nada na entrada +5V. Você apertará o botão para utilizar o regulador de 5v interno. (Ou ativar os 5v via jumper se for o caso do seu modelo).
ExcluirOlá! Estou precisando controlar um motor de portao que é 220v, gostaria de saber o que eu necessitaria para que eu conseguisse controlar ele. Eu tenho uma RPi 2 Model B.
ResponderExcluirOlá Igor, se o motor já estiver pronto pra ligar na energia, se for só o liga/desliga você precisaria de uma placa com relés ou montar o circuito do zero (mais trabalhoso). Ainda não temos um tutorial envolvendo relés, mas você acha facilmente na internet (em inglês). Tome cuidado em verificar a potência do motor e a que o relé/placa suporta. Abraços.
ExcluirSensacional, parabéns !!!!
ResponderExcluir