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.

vazio setMotor (velocidade int, reverso booleano)

{

analógicoWrite (habilitarPin,velocidade);

digitalWrite(in1Pin, ! Reverso);

digitalWrite(in2Pin, 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.