Biblioteca Arduino de Alto Desempenho para Controle de Motor DC
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino UNO | 1 |
| Transistor NPN de Uso Geral | 2 |
| Transistor PNP de Uso Geral | 2 |
| Resistor 1k ohm | 2 |
| Diodo 1N4007 – Alta Tensão, Alta Corrente | 4 |
Aplicativos e Serviços Online
- Arduino IDE
Sobre o Projeto
Apresento aqui uma biblioteca Arduino para controle de motor DC. A biblioteca possui tantas facilidades e flexibilidade que pode controlar qualquer motor DC da maneira requerida. A biblioteca foi projetada conforme requisitos de controle de movimento industrial. A biblioteca possui 16 funcionalidades diferentes para controlar o motor da maneira mais versátil. Aqui está a lista de recursos:
- Controla a direção de rotação do motor
- Controla a velocidade do motor de 0-100%
- Pode fornecer partida suave (soft start) ao motor em tempo especificado – a velocidade do motor aumenta de 0% ao nível desejado no tempo especificado
- Pode fornecer parada suave (smooth stop) ao motor em tempo especificado – a velocidade diminui da velocidade atual para 0% no tempo especificado
- Pode aplicar controle de jog (jog control) ao motor em qualquer direção – o motor dá um solavanco na direção especificada
- Pode aplicar freio DC (DC BRAKE) (parada imediata ou de emergência) ao motor
As breves descrições de todas as funções da biblioteca são dadas aqui. Alguns exemplos são fornecidos posteriormente explicando como o motor é controlado usando esta biblioteca. Há três vídeos demonstrando esses exemplos. Por fim, o circuito sugerido usa um circuito H-Bridge amplamente usado para controlar motores DC.
Para usar esta biblioteca no seu sketch Arduino, basta copiar a pasta DC_Motor para o diretório raiz da pasta de bibliotecas do Arduino, como C:\arduino-1.6.7\libraries.
Descrição das Funções da Biblioteca
- DC_Motor(int pin1, int pin2): esta função declara os pinos do Arduino que acionam o motor DC
- DC_Motor(int pin1, int pin2, int speed_flag): esta função declara os pinos de saída analógica do Arduino que acionam o motor DC
- start_motor(int dir): esta função inicia a rotação do motor na direção especificada. Se direção for 1 – motor gira para frente e vice-versa
- forward(): esta função inicia a rotação do motor na direção forward
- reverse(): esta função inicia a rotação do motor na direção reverse
- dc_break(): esta função para instantaneamente a rotação do motor*
- stop_motor(): esta função para a rotação do motor
- jogg_full_speed(int dir): esta função aplica um solavanco ao motor por 5 segundos em velocidade máxima na direção requerida
- *Nota: esta função só funcionará se o motor DC tiver arranjos internos para tal freio DC. Além disso, o circuito driver apropriado deve ser projetado com resistores de freio dinâmico (DBR) e cuidado total deve ser tomado para que o motor ou circuito não seja danificado.
Todas as funções acima fornecem controle simples ao motor DC. Elas não controlam a velocidade. As próximas 8 funções controlam velocidade e direção. Mas é necessário selecionar pinos de saída analógica do Arduino para usar estas funções. O motor DC deve ser inicializado com a 2ª função junto com a flag de velocidade definida como 1.
- set_speed(int speed): esta função define a velocidade do motor DC entre 0 a 100%
- forward_with_set_speed(): esta função inicia a rotação do motor DC para frente na velocidade definida
- reverse_with_set_speed(): esta função inicia a rotação do motor DC para trás na velocidade definida
- run_motor(int dir, int speed): esta função gira o motor DC em qualquer direção na velocidade definida
- jogg_set_speed(int dir, int speed): esta função aplica um solavanco ao motor em qualquer direção na velocidade definida
- motor_speed_zero()*: a função reduz a velocidade do motor a 0 – ou seja, para o motor
- soft_start(int dir, int speed, int time_in_sec): esta função aumenta a velocidade do motor de 0 ao nível desejado no tempo especificado em qualquer direção. O tempo deve ser selecionado em segundos
- smooth_stop(int time_in_sec): esta função reduz a velocidade do motor da velocidade atual de funcionamento para 0 no tempo especificado. O tempo deve ser selecionado em segundos
- *Nota: não se pode usar a função
stop_motor()aqui porque ela dá saída digital enquanto esta função dá saída analógica mínima para tornar a velocidade do motor DC zero. Ao controlar motor DC com velocidade, não apenas pare o motor, mas torne sua velocidade zero.
Exemplos
1) Girar motor DC para frente e ré em velocidade máxima (sem controle de velocidade)
/* Este programa girará o motor DC para frente por 5 seg
depois para por 2 seg e novamente gira o motor ré por
5 seg, para por 2 seg continuamente
criado por A M Bhatt (+91-9998476150), Gujarat, INDIA
em 12/10/2016
*/
#include
DC_Motor motor(8, 12);
void setup() {}
void loop() {
motor.forward();
delay(5000);
motor.stop_motor();
delay(2000);
motor.reverse();
delay(5000);
motor.stop_motor();
delay(2000);
}
2) Girar motor DC para frente e ré em velocidade definida (com controle de velocidade)
/* Este programa girará o motor DC para frente por 5 seg
a 40% de velocidade, depois para por 2 seg e novamente gira o motor ré por
5 seg a 80% de velocidade continuamente
criado por A M Bhatt (+91-9998476150), Gujarat, INDIA
em 12/10/2016
*/
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.set_speed(40);
motor2.forward_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
motor2.set_speed(80);
motor2.reverse_with_set_speed();
delay(5000);
motor2.motor_speed_zero();
delay(2000);
}
3) Aplicar jog ao motor em ambas direções com e sem controle de velocidade
/* Este programa aplica jog a dois motores DC diferentes
* aplica jog ao 1º motor em velocidade máxima em ambas direções
* e depois fornece jog ao 2º motor com 80% velocidade na direção ré
* e 30% velocidade na direção forward
* criado por Ashutosh M Bhatt (+91-9998476150), Gujarat (INDIA)
* em 22/10/2016
*/
#include
DC_Motor motor(8, 12);
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor.jogg_full_speed(1);
motor.jogg_full_speed(0);
motor2.jogg_set_speed(0, 80);
motor2.jogg_set_speed(1, 30);
}
4) Aplicar partida suave e parada suave ao motor
/* Este programa dará partida suave ao motor e aumentará sua velocidade
de 0 a 90% em 10 seg na direção forward
depois dá parada suave de 90% a 0 em 5 seg
novamente partida suave de 0 a 50% em 6 seg na direção reverse
e finalmente parada suave de 50% a 0 em 3 seg
criado por A M Bhatt (+91-9998476150), Gujarat, INDIA
em 12/10/2016
*/
#include
DC_Motor motor2(9, 10, 1);
void setup() {}
void loop() {
motor2.soft_start(1, 90, 10);
delay(3000);
motor2.smooth_stop(5);
motor2.soft_start(0, 50, 6);
delay(3000);
motor2.smooth_stop(3);
}
Código
Biblioteca de Controle de Motor DC (C Header File)
Esta biblioteca controla velocidade e direção de todos os tipos de motores DC.
Sem preview (apenas download).
Esquemáticos
Arduino UNO e driver H-bridge usados para controlar Motor DC

Processo de manufatura
- Crie Efeitos de Áudio Controlados por Sensores com o Kit Satellite CCRMA
- Construa Sua Própria Máquina de Escrever Deveres de Casa (Plotter de Caneta) em Casa
- Robô de Detecção Humana Baseado em Arduino Uno: Integração de Sensores Passo a Passo
- Biblioteca Completa para Motor de Passo Bipolar com Arduino
- Veículo Remoto Controlado por Android com Raspberry Pi e Motor Shield
- Robô Desviador de Obstáculos com Servo: Construa com Arduino e HC-SR04
- Criar Robô Seguidor de Linha Autônomo com Arduino UNO
- Controlar Roomba Create 2 com Arduino e Android: Guia Passo a Passo
- Arduino e MPU6050: Controle Preciso de Servomotores SG90 e MG996R
- Kit de Robô de Navegação Interna Inteligente para Projetos Arduino