Mobile
LIÇÃO 18: Controle motor dc com L293D.
Introdução
Nesta lição, você aprenderá a controlar a direção e a velocidade de um pequeno motor DC usando um Arduino e chip de controlador de motor L293D.
Componentes
{Product:2000}{Product:256}{Product:1436}{Product:536}{Product:36}{Product:44}{Product:250}
Início
Acima de tudo, devemos experimentar com o chip de controle do motor L293D para ter uma ideia de como ele funciona. Podemos começar usando a placa UNO R3 para alimentar o motor com 5V.
Veja em que direção o motor está girando. Você pode fazer isso beliscando o eixo do motor entre os dedos. Troque os cabos do motor de modo que o cabo do motor que vai para +5V agora vai para GND e vice-versa. O motor vai girar na direção oposta. Isso nos dá uma pista de como o chip L293D funciona. Seus pinos de controle nos permitem fazer o equivalente à troca dos terminais do motor, para reverter a direção do motor. Coloque a placa protótipo como mostrado abaixo.
Os três pinos L293D que estamos interessados são Pin 1 (Enable), Pin 2 (In1) e Pin 7 (In2).
Estes estão conectados a 5V ou GND usando cabos de ponte roxo, amarelo e laranja.
Como mostrado acima, o motor deve estar girando em uma direção, vamos chamar essa direção A.
Se você mover o Pino 1 (Habilitar) para o GND, o motor vai parar, não importa o que você faça com os pinos de controle In1 e In2. Pino (Habilitar) liga e desliga tudo. Isso o torna útil para usar uma saída PWM para controlar a velocidade do motor. Reconecte o pino de 1 a 5V para que o motor volte a funcionar.
Agora tente mover In1 (pino 2, amarelo) de 5V para GND. In1 e In2 estão agora conectados ao GND, então novamente o motor vai parar. Movendo-se In2 de GND para 5V fará com que o motor gire na direção oposta (sentido B). Finalmente, mover In1 de volta para 5V de modo que tanto In1 quanto In2 estão em 5V fará com que o motor pare.
Agora que temos o controle do motor diretamente, podemos deixar que a Arduino gerencie o Pin: Enable, In1 e In2.
Procedimento
Passo 1: Conecte o circuito conforme mostrado no diagrama a seguir (certifique-se de que os pinos estão conectados corretamente ou que os caracteres não são exibidos corretamente):
Passo 2: Programa (veja código de amostra em CD ou site oficial)
/*
*/
int habilitar O 11 s 11;
int in1Pin s 10;
int int in2Pin s 9;
int switchPin s 7;
int potPin s 0;
configuração do vazio()
{
pinMode(in1Pin, OUTPUT);
pinMode(in2Pin, OUTPUT);
pinMode (habilitarPin, OUTPUT);
pinMode (switchPin, INPUT_PULLUP);
}
loop vazio()
int speed ? analogRead(potPin) / 4;
reverso booleano ? digitalRead(switchPin);
setMotor(velocidade, reverso);
vazio setMotor (velocidade int, reverso booleano)
analógicoWrite (habilitarPin, velocidade);
digitalWrite(in1Pin, ! reverso);
digitalWrite(in2Pin, reverso);
Passo 3:Construa o programa
Passo 4:Registo do programa em Um
Os pinos de placa são definidos e seus modos são definidos na função 'configuração' normalmente. Na função loop, um valor para a velocidade do motor é encontrado dividindo a leitura analógica do potencialiômetro por 4.
O fator é 4 porque a leitura analógica será entre 0 e 1023 e a saída analógica deve ser entre 0 e 255. Se o botão for pressionado, o motor seguirá em frente, caso contrário funcionará ao contrário. O valor da variável 'reverso' é definido para o valor de leitura do interruptor de pino. Então, se o botão for pressionado, ele será Falso, caso contrário será True.
Os valores de velocidade e reversão são passados para uma função chamada 'setMotor' que ajustará os pinos apropriados no chip do motorista para controlar o motor.
analógicoWrite (habilitarPin,velocidade);
digitalWrite(in1Pin, ! Reverso);
Primeiro, a velocidade é ajustada usando um analógicoWrite ( Escreva valores analógicos em Arduino) no pino de ativação Enable –.
O pino de ativação L293 simplesmente liga ou desliga o motor independentemente das configurações de pinos in1 e in2 do L293.
Para controlar a direção do motor, os pinos in1 e in2 devem estar em conformidade com valores opostos. Se in1 for ALTO e in2 é BAIXO, o motor vai girar em uma direção, se por outro lado in1 é ALTO e in2 LOW, então o motor vai girar na direção oposta.
O comando '!' significa 'não'. Portanto, o primeiro comando digitalWrite para in1 define o oposto de qualquer que seja o valor do 'reverso', portanto, se o inverso for HIGH ele define-o para LOW e vice-versa. O segundo digitalWrite para 'in2' define o pino para qualquer que seja o valor do 'reverso'. Isso significa que sempre será o oposto do que está em1.
Resumo do experimento
A. Motorista L293D
Este é um chip muito útil. Você pode realmente controlar dois motores independentemente. Só estamos usando metade do chip nesta lição, a maioria dos pinos do lado direito do chip são para controlar um segundo motor.
Um segundo motor seria conectado entre OUT3 e OUT4. Você também vai precisar de mais três pinos de controle. EN2 está conectado a um pino de saída habilitado para PWM no in3 Arduino e o IN4 está conectado a saídas digitais no Arduino O L293D tem dois pinos +V (8 e 16). O pino +Vmotor (8) fornece a potência para os motores, e +V (16) para a lógica do chip. Ambos conectamos o pino Arduino 5V. No entanto, se você estivesse usando um motor mais potente, ou um motor de tensão mais alto, você forneceria ao motor uma fonte de alimentação separada usando o pino 8 conectado à fonte de alimentação positiva.
A terra da segunda fonte de energia está conectada ao solo do Arduino.
B. Outra coisa que você pode fazer é mudar o esboço para controlar o motor sem usar o potencialiômetro ou interruptor. Ele poderia começar lentamente na direção dianteira, gradualmente ser mais rápido, desacelerar e depois ir para o outro lado, repetindo o padrão.