Guia do escudo do driver do motor L293D do Arduino

O guia do escudo do driver do motor Arduino L293D é um projeto de robótica que envolve o acionamento de vários tipos de motores. Os tipos mais comuns usados ​​para aplicações robóticas incluem motores CC, servo e de passo.

No entanto, esses motores normalmente não podem ser acionados diretamente pelo Arduino ou outro microcontrolador. Isso se deve às suas classificações de corrente e potência mais altas, portanto, são usados ​​escudos de motor ou CIs de driver. Essas blindagens ou CIs isolam a fonte de alimentação do motor e usam a lógica de controle do circuito do microcontrolador.

Um dos escudos de driver de motor mais populares usados ​​com Arduino é o L293D. O escudo completo do driver do motor L293D pode controlar até quatro motores DC bidirecionais com seleção de velocidade de 8 bits, dois motores de passo e dois servo motores.

Um passo a passo do L293D
A blindagem do driver do motor L293D inclui dois ICs do driver do motor L293 e um IC de registro de deslocamento 74HC595. O escudo possui vários componentes importantes.

O motorista: O L293D é um driver de motor ponte H de canal duplo que pode controlar dois motores DC ou um motor de passo ao mesmo tempo. Como existem dois CIs L293D na blindagem, ele é tecnicamente capaz de controlar um total de quatro motores DC.

Isto é ideal para plataformas de robôs de duas e quatro rodas. O IC consiste em duas pontes H para controlar os motores, cada uma fornecendo p a 0,6A a um motor.

O registrador de deslocamento: O 74HC595 é um registrador de deslocamento de entrada serial de 8 bits e saída serial/paralela. Ele é usado para estender quatro Arduino GPIO (ou outro microcontrolador) para oito pinos de controle de direção para dois dos ICs do driver do motor L293D.

A fonte de energia: A fonte de alimentação do escudo pode ser usada tanto para o escudo quanto para o Arduino ou os dois podem usar fontes de alimentação separadas. Se estiver compartilhando uma fonte de alimentação comum, um jumper de alimentação deverá ser colocado na blindagem. A fonte de alimentação pode ser fornecida através da porta USB do Arduino, de seu conector DC ou do bloco EXT-PWR de 2 pinos do escudo.

Se forem usadas fontes de alimentação separadas, é importante evitar colocar o jumper de alimentação na blindagem. O bloco EXT-PWR de 2 pinos do escudo deve ser usado e o Arduino ainda pode ser alimentado conectando-se ao seu conector USB ou DC.

Se uma fonte de alimentação separada for usada, a alimentação da blindagem deverá ser inserida no bloco EXT-PWR de 2 pinos.

Idealmente, é recomendado manter a fonte de alimentação do Arduino e da blindagem separadas. Mas se for usada uma fonte comum, a tensão nunca deve ultrapassar 12V.

A blindagem vem com um indicador LED integrado que acende se a alimentação do motor for suficiente. Ele também possui um conjunto de resistores pull-down que mantém o motor desligado quando a energia está ligada.

Os terminais de saída: Para conectar os motores CC, dois terminais de parafuso de cinco pinos estão nas bordas da blindagem. Esses terminais são rotulados como M1, M2, M3 e M4. Os motores DC com tensões nominais entre 4,5 e 25 V podem ser conectados a esses terminais e fornecerão energia de até 600 mA.

Os mesmos terminais de parafuso de 5 pinos também podem ser usados ​​para conectar dois motores de passo usando as portas do motor M1-M2 e M3-M4. O terminal de aterramento nos conectores de parafuso de 5 pinos pode conectar motores de passo unipolares através das derivações centrais do motor e dos terminais GND.

Para conectar dois servomotores, use os dois conectores de 3 pinos na borda superior esquerda da blindagem.

O botão de reinicialização: O escudo tem um botão de reset no canto inferior esquerdo. É apenas o botão de reset do Arduino exibido na parte superior do escudo para uso

Mas quando o escudo é equipado com Arduino, apenas o botão de reset do Arduino (que fica na parte superior do escudo) deve ser usado.

Motores CC
Os motores DC são comumente usados ​​em projetos de robótica e eletrônica. Eles têm dois terminais. O motor gira em uma direção quando a tensão é aplicada em uma polaridade e gira na outra direção quando a polaridade é invertida.

Esses motores requerem uma tensão mínima para começar a funcionar e sua velocidade aumentará à medida que a tensão aplicada aumentar. Porém, uma vez atingida a tensão nominal máxima, qualquer tensão diminuirá sua velocidade. Um driver de motor é usado para fornecer tensão suficiente ao motor, controlando sua velocidade e direção.

Motores de passo
Os motores de passo são usados ​​para girar um eixo em um determinado número de etapas. A rotação completa pode ser dividida em um número pré-determinado de etapas iguais que podem ser programadas no Arduino. A quantidade de rotação por etapa depende da estrutura do motor. Esses motores são usados ​​em dispositivos incluindo máquinas CNC e impressoras 3D. e scanners.

Servo Motors
Servomotores são motores DC com controle de posição. Um servo pode ser girado em um ângulo específico aplicando o sinal PWM apropriado. Esses motores são adequados para aplicações como braço robótico.

Usando o L293 com Arduino
O escudo do driver do motor L293D do Arduino é compatível com Arduino Mega e UNO. A blindagem pode ser instalada na parte superior da placa Arduino.

Nesses casos, seis pinos analógicos, incluindo os pinos 2 e 13, permanecem livres para uso.

Para controlar o servo motor, use:

  • Pinos 2, 9 e 10.

Para controlar os motores DC, use:

  • Pino 11 para a porta do motor M1
  • Pino 3 para a porta do motor M2
  • Pino 5 para a porta do motor M3
  • Pino 6 para a porta do motor M4
  • Os pinos 4, 7, 8 e 12 também podem ser usados

Para controlar os motores de passo, use:

  • Pinos 11 e 3 para a porta do motor M1-M2
  • Pinos 5 e 6 para a porta do motor M2-M3
  • Os pinos 4, 7, 8 e 12 também podem ser usados

Controlando o motor CC
O motor DC pode ser conectado a qualquer uma das quatro portas do motor. Vamos usar a porta M4.

Para controlar o motor DC usando o escudo do driver do motor L293D, a biblioteca AFMotor é útil.

Aqui está um exemplo de esboço que controla o motor DC usando a blindagem do driver do motor L293D…

#include
Motor AF_DCMotor (4, MOTOR12_64KHZ)
configuração nula
{
//Define a velocidade inicial do motor e para
motor.setSpeed(200);
motor.run(RELEASE);

}
loop vazio
{
uint8_ti;

//Liga o motor
motor.run(AVANÇAR);

//Acelera de zero até a velocidade máxima
para (eu=0; eu<255; eu++)
{
motor.setSpeed(i);
atraso(10);
}

// Desacelera da velocidade máxima até zero
para (eu=255; eu!=0; eu–)
{
motor.setSpeed(i);
atraso(10);
}

// Agora muda a direção do motor
motor.run (PARA TRÁS);

//Acelera de zero até a velocidade máxima
para (eu=0; eu<255; eu++)
{
motor.setSpeed(i);
atraso(10);
}

// Desacelera da velocidade máxima até zero
para (eu=255; eu!=0; eu–)
{
motor.setSpeed(i);
atraso(10);
}

// Agora desliga o motor
motor.run(RELEASE);
atraso(1000);
}

O esboço do Arduino começa incluindo a biblioteca AFMotor.h. A próxima linha cria um objeto da classe AF_DCMotor. A instanciação deste objeto requer a menção da porta onde o motor está conectado e do segundo parâmetro que é a frequência de controle da velocidade do motor.

O segundo argumento pode ser MOTOR12_2KHZ, MOTOR12_8KHZ, MOTOR12_8KHZ e MOTOR12_8KHZ para as portas 1 e 2 dos motores. Pode ser MOTOR12_8KHZ, MOTOR12_8KHZ e MOTOR12_8KHZ para as portas 3 e 4 dos motores.

Se não for selecionado, será 1KHZ por padrão. Para conectar vários motores à blindagem, devem ser criados objetos separados para cada motor.

Por exemplo…

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

A função setSpeed(speed) define a velocidade do motor. A velocidade varia de 0 a 255 ('0' = desligado e 255 = aceleração total).

A função run(cmd) define o modo de operação do motor. Os valores válidos para o cmd são FORWARD para operar o motor na direção para frente, BACKWARD para operar o motor na direção para trás e RELEASE para parar o motor.

A blindagem do motor não implementa frenagem dinâmica, portanto o motor pode levar algum tempo para parar de se movimentar.

Controlando o servo motor
A blindagem do motor separa os pinos 9 e 10 de saída PWM de 16 bits do Arduino até a borda da blindagem, com dois conectores de 3 pinos. Os servos são alimentados pelo regulador de 5V integrado do Arduino, portanto não há necessidade de conectar uma fonte de alimentação externa ao terminal EXT_PWR. Um servo pode ser conectado a qualquer um desses conectores.

Para controlar os servo motores, a biblioteca de servos é útil. Aqui está um exemplo de esboço para controlar um servo motor usando o escudo do driver do motor L293D.

#include
Servo meu servo; //cria objeto servo para controlar um servo
intpos = 0; //variável para armazenar a posição do servo
configuração nula
{
// anexa o servo no pino 10 ao objeto servo
meuservo.attach(10);
}

loop vazio
{
//varre de 0 graus a 180 graus
para(pos = 0; pos <= 180; pos += 1)
{
meuservo.write(pos);
atraso(15);
}
//varre de 180 graus a 0 graus
para(pos = 180; pos>=0; pos-=1)
{
meuservo.write(pos);
atraso(15);
}
}

O esboço do Arduino começa importando a biblioteca servo. A próxima linha cria um objeto da classe servo. O método aqui atribui o pino de controle do servo. O método de gravação é usado para girar o servo para definir ângulos.

Controlando o motor de passo
Os motores de passo mais populares são o passo unipolar 28BYJ-48 e o passo bipolar NEMA 17.

O stepper unipolar 28BYJ-48 é classificado em 5V e oferece 48 passos por revolução. Para conectar esses motores, uma alimentação externa de 5 V deve ser fornecida ao terminal EXT_PWR.

O passo bipolar NEMA 17 é classificado em 12V e oferece 200 passos por revolução. Para conectar esses motores, uma alimentação externa de 12 V deve ser fornecida ao terminal EXT_PWR.

Lembre-se de remover o jumper de alimentação da blindagem. Um motor de passo pode ser conectado a qualquer um dos terminais do motor M1-M2 ou M3-M4.

Para controlar os motores de passo, a biblioteca AFmotor é útil. Aqui está um exemplo de esboço para controlar um motor de passo usando o escudo do driver do motor L293D.

#include
// Número de passos por rotação de saída
const int passosPerRevolution = 48;
// conecta o motor à porta #2 (M3 e M4)
Motor AF_Stepper(passosPerRevolution, 2);
configuração vazia {
Serial.begin(9600);
Serial.println(“Teste de passo!”);
motor.setSpeed(10); //10rpm
}
loop vazio {
Serial.println(“Etapas de bobina única”);
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);

Serial.println(“Etapas de bobina dupla”);
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DUPLO);

Serial.println(“Etapas de intercalação da bobina”);
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);

Serial.println(“Etapas de micropasso”);
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
}

O esboço do Arduino começa incluindo a biblioteca AFMotor.h. A próxima linha instancia um objeto da classe AF_Stepper. Este objeto requer passos por rotação do motor e um número de porta à qual o motor está conectado como parâmetros.

A função setSpeed(rpm) define a velocidade do motor, onde o rpm indica quantas rotações por minuto você deseja que o motor de passo gire.

A função step(#steps, direction, steptype) é usada para mover o motor a cada vez. O parâmetro #steps é o número de passos — com uma direção FORWARD ou BACKWARD.

Os valores válidos para o stepstyle são:

  • SINGLE para energizar uma bobina por vez,
  • DOUBLE para energizar duas bobinas por vez
  • INTERLEAVE para alternar entre single
  • DOUBLE para criar meio passo entre
  • MICROSTEP para energizar bobinas adjacentes criando uma série de micropassos entre cada passo completo

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.