Vamos fazer o Arduino andar? É comum o Arduino
ser utilizado em projetos de robótica, ora lendo sensores e dando um feedback e/ou
movimentando algum chassis com motores.
Fazer estas coisas não é um mistério, mas em
muitos casos conseguir no mercado nacional aquele shield que faça essa
interface é uma aventura e muitas vezes o preço não é convidativo.
O driver aqui descrito é baseado num
manjadíssimo circuito integrado dedicado para motores o L298; Vários
fabricantes produzem esse integrado, mas é mais comum vê-lo sob a sigla da ST
(SGS-Thompson). Esse integrado é conhecido como "Ponte H" - H-Bridge
- Dual. Isto é, ele tem 2 bridges, o que pode fazê-lo controlar 2 motores com
um componente só! O que é muito bom!
Quer saber um pouco mais sobre pontes-H?
Visite o artigo neste blog: http://mmc-zaap.blogspot.com/2013/05/ponte-h.html
O L298
O L298 implementa a ponte-H conforme o
diagrama abaixo:
Não se assuste com as portas AND fazendo o driver dos transistores. A
função dele é criar a lógica necessária de forma que NUNCA coloque os
transistores de saída em curto e fazer a interface entre o setor de baixa
tensão e alta tensão. Já que o L298
trabalha com 2 alimentações.
São 2 canais(A, B); Eis a Pinagem e função:
Pino
|
Função
|
Descrição
|
IN1
|
E
|
Entrada de comando canal A
|
IN2
|
E
|
Entrada de comando Canal A
|
OUT1
|
S
|
Saída de carga canal A
|
OUT2
|
S
|
Saída de carga canal A
|
EN1
|
E
|
Habilita canal A
|
SENS1
|
S
|
Saída para o sensor de corrente do canal
A(R)
|
IN3
|
E
|
Entrada de comando canal B
|
IN4
|
E
|
Entrada de comando Canal B
|
OUT3
|
S
|
Saída de carga canal B
|
OUT4
|
S
|
Saída de carga canal B
|
EN2
|
E
|
Habilita canal B
|
SENS2
|
S
|
Saída para o sensor de corrente do canal
B(R)
|
VS
|
PWR
|
Alimentação do conjunto de potencia dos
canais
|
VCC/+Vss
|
PWR
|
Alimentação da lógica
|
GND
|
PWR
|
Ground
|
Não vou entrar nos detalhes das
características elétricas, mas resumirei o que for importante para a
implementação desse projeto:
- Alimentação da lógica: 4,5V a 7V.
- Alimentação do conjunto de poténcia: 7 a 46V
- com limitação de corrente circulante de até 2A por canal!!! (não se iluda com
os 4A que diz no datasheet, isso é corrente TOTAL=A+B)
- Frequencia de comutação máxima aplicada nos
pinos IN e EN : 40Khz (caso use alguma entrada com PWM)
O Sensor de corrente nada mais é que um
resistor cuja derivação serve para monitorar a tensão gerada. Um
microcontrolador ou algum outro circuito dedicado tem que ler essa saída e
fazer o corte do fornecimento de tensão para a carga de forma que o circuito se
mantenha estável e dentro dos parâmetros de funcionamento.
O datasheet não é claro, mas há o entendimento
que deverá ser um resistor cuja finalidade é gerar uma tensão proporcional à
corrente circulante em cada um dos canais. O corte será feito se a corrente
atingir 2A.
Segundo o datasheet, a tensão gerada em SENS1,
SENS2 não deverá exceder 2V. Se fixarmos em 1V, teremos que para 2A, a resistencia
deverá ser de 0.5Ohm. Portanto um Resistor de 0.5Ohmx1W tá de bom tamanho.
Pede-se que seja um resistor puro, não de fio. Pois num processo de comutação,
esses resistores (de fio) podem dar problemas devido indutância intrínseca do
componente.
O circuito
Com base no datasheet do L298, o circuito
final é bastante simples:
Para auxiliar a depuração e funcionamento do
motor, foi colocado uma bateria de LED's na parte de controle do circuito,
justamente para visualizar o sinal de cada estágio.
Os diodos D1 a D8 são diodos para proteção. Se
o circuito não for crítico, pode usar o 1N4007. Mas recomendo algum tipo de
diodo schottky para potência: 1N5819, UF4007 por exemplo. Não utilize o
circuito sem os diodos de proteção. D9 é só uma proteção adicional contra inversão
de polaridade.
C1,C2 são capacitores de desacoplamento de
fonte. Valores não críticos: 10uF para o Eletrolítico, 100nF para o
despolarizado (Cerâmica ou poliéster - tanto faz). C3,C4 são de poliéster - 10nF ou 47nF. para desacoplamento/ruído do motor.
Especial atenção para RS1 e RS2. Estes
resistores deverão ser de 0.5Ohm/1Watt. De preferência que não seja de fio! Caso o driver trabalhe com motores de pequena
potência (desses de brinquedos) O resistor pode ser substituído por um jumper. Os demais resistores (R1 a R6) 1k2; R9 é
calculado em função da tensão de alimentação 4k7 tá de bom tamanho)
O conector J1 é do tipo KK. Ele não é
conectado diretamente a algum pino do Arduino por uma questão de projeto. No
futuro pretendo liberar mais outros 2 artigos, usando um controlador dedicado
para este driver de potência: Usando o SN74HC14 ou SN74HC00 (ou qualquer porta
inversora) e outro dedicado ao seu controlador original, o L297. Esses 2
últimos projetos, sim, conectados diretamente à porta do Arduino. X1,X2,X3 são conectores tipo MTA de 0.156”
(distância entre pinos) com trava.
Realização
Abaixo temos o layout do circuito impresso. Em breve disponibilizarei o projeto na em um repositório público e o leitor poderá baixar e reproduzir a placa.
Veja como ficou...
Veja o vídeo do carro robótico em funcionamento, logo abaixo:
É isso aí! Até a próxima!
Nenhum comentário:
Postar um comentário