Continuação
do artigo anterior (parte 1)
Esta é a parte do artigo que explicará as funcionalidades e modo de operação do nosso driver. O artigo anterior, lidados com as bases do hardware. Na 3a e última parte, descreveremos a biblioteca para Arduino.
Funcionamento
O funcionamento é extremamente simples.
Aplicando as tensões nas entradas de controle conforme o diagrama abaixo, temos a ativação, ou
não, da saída.
Entrada
|
Saída
|
A(C)
|
EN1(2)
|
B(D)
|
OUT
|
X
|
0
|
X
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
1
|
RUN +
|
1
|
1
|
0
|
RUN -
|
1
|
1
|
1
|
0
|
X - não importa o valor
da entrada.
0, 1: sinal low (0V) e high (Vcc) respectivamente
RUN: saída ativada (+ em uma polaridade, - com polaridade invertida)
No diagrama abaixo, temos um exemplo de
conexão com a utilização do Arduino. A conexão SENS1,SENS2 é opcional.
A alimentação do motor não deverá ultrapassar
46V. Nem o consumo total dos motores, excederem 2A cada um – Não há fusível de
proteção.
Quando a alimentação do motor estiver ativada,
o LED7 ficará aceso. Os demais LEDs estão ligados às linhas de sinal do L298.
PWM
Até o
presente momento não se falou em controle de velocidade. Do jeito que está, o
motor irá girar na sua velocidade nominal, proporcional à corrente que passa,
claro! E se quisermos dotar os motores de um controle de velocidade? Como não
temos potenciômetros para controlar corrente, então lançamos mão do PWM.
O PWM
significa Pulse Width Modulation, ou modulação por largura de pulso. Quando se
trabalha com PWM, o leitor tem que ter em mente o conceito de ciclo de
trabalho (duty cycle). Um sinal de PWM tem freqüência fixa, e valores de amplitudes bem
definidos – 0 ou 1 (0 ou VCC, como quiser) – mudando somente quanto tempo no ciclo o sinal vai estar em
0 ou 1. Isto é, eu altero somente a largura do pulso... Veja no diagrama abaixo 5 sinais de mesma freqüência, porém com largura de
pulso diferentes.
Na prática,
dado as características elétricas da carga mediante um sinal variável, a
largura de pulso irá influenciar dramaticamente no comportamento do dispositivo:
- A
tensão efetiva (eficaz ou RMS) será proporcional à largura do pulso. Apesar da
corrente agora, ser também pulsada, esse conceito não se aplica. Se o motor
consome 2A, ele receberá os 2A, só que por um período de tempo determinado pelo PWM.
Isso faz com que se tenha melhor controle de consumo e por sua vez a potência
consumida J
- Sinais
PWM costumam gerar harmônicos: Prepare-se para instabilidades com ruídos e
ajustes nos capacitores que vão aos motores L
- O
corte abrupto (1 --> 0) nos sinais PWM faz com que as cargas indutivas criem
correntes parasitas (fly back). Os diodos de proteção irão trabalhar mais
intensamente! Fica de olho, costumam esquentar!!! K
Plugue os
pinos EN1 e EN2 nas portas do Arduino que suportem PWM. Quando ativar o pino,
em vez de usar a função digitalWrite,
use analogWrite passando o numero do pino e o
valor de PWM desejado (0 a 255, para 0 e 100% respectivamente)
No diagrama
de conexão acima, os pinos EN estão ligados aos pinos 6 e 9 que são PWM! :)
Current Sensing
Por fim, e
não menos importante, current sensing, isto é os pinos SENS1 e SENS2. É dele
que virá o controle de feedback do driver.
Se estiver
utilizando o current sensing propriamente, isto é com o resistor de 0.5Ohm/1W.
Teremos ali a leitura de tensão proporcional à corrente que passa por cada
canal do L298. Conforme especificado, se essa tensão ultrapassar 1V, teremos
uma corrente circulante > 2A, o que pode queimar o integrado...
Os pinos
SENS1 e SENS2 deverão ser ligados a um conversor AD, o arduino possui esses
pinos (A0..A5). Para ler, utilize analogRead(). Faça as conversões necessárias. O AD
do arduino tem resolução de 10bits... com fundo de escala de 5V... então
fazendo os cálculos, qualquer leitura acima de 204 (~=1V) já podemos tomar
algumas ações como, diminuir o ciclo de PWM; ou desabilitar o canal respectivo momentaneamente;
ou parar tudo para proteger o L298.
No diagrama acima, eles estão ligados aos pinos A0 e A1 respectivamente.
--//--
No proximo e último artigo, trataremos da biblioteca de controle para o Arduino.