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

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.