Este tutorial ajudará você a entender os controles de um controlador de motor CC sem escovas quando usado com um Arduino e um atuador linear. Este programa pode ser usado para estender e retrair continuamente o curso de um atuador.
Before we get started, let’s go over the components we will be using in this tutorial:
- Arduino Mega (Arduino Uno can be used as well).
- LC-241.
- PA-14 with a brushless motor.
- PS-13-12 power supply.
- Jumper Wires.
O atuador linear tem 2 conjuntos de fios saindo dele: um é para o motor e o outro para os interruptores de fim de curso. O esquema na figura acima mostra como ligar os componentes entre si.
PIN SETUP CODE
int out_lim = 45; // pino do fim de curso externo
int in_lim = 53; // pino do fim de curso interno
int run_f = 25; // pino de acionamento no controlador
int run_r = 30; // pino de reversão no controlador
Esta parte do código cuida da inicialização dos pinos que serão usados para receber e enviar dados. Neste caso, foram usados apenas pinos digitais, mas também é possível usar os analógicos.
SETUP LOOP CODE
void setup() {
Serial.begin(9600); // inicializa a comunicação serial a 9600 bits por segundo
pinMode(out_lim, INPUT_PULLUP); // configura o pino 45 como entrada
pinMode(in_lim, INPUT_PULLUP); // configura o pino 53 como entrada
pinMode(run_f, OUTPUT); // configura o pino 25 como saída
pinMode(run_r, OUTPUT); // configura o pino 30 como saída
retract(); // recolhe o curso na inicialização
delay(500);
}
O loop “setup” configura quais pinos serão usados como saída e quais serão usados como entrada. Como pode ser visto no código, os pinos conectados aos fins de curso serão usados para ler os estados dos interruptores de fim de curso e os pinos conectados a “RUN” e “REV” no LC-241 serão usados para enviar comandos a ele. Inicialmente, o código também executa uma função de recolhimento para retrair totalmente antes de iniciar.
FUNCTION DEFINITIONS CODE
void extend() // esta função habilita o motor a funcionar
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, HIGH);
}
void retract() // esta função inverte a direção do motor
{
digitalWrite(run_f, LOW);
digitalWrite(run_r, LOW);
}
void run_stop() // esta função desabilita o motor
{
digitalWrite(run_f, HIGH);
digitalWrite(run_r, HIGH);
}
Esta parte explica as funções usadas para controlar a potência e a direção do motor. Vamos habilitar ou desabilitar o motor escrevendo “0” ou “1” no pino “RUN” e, em seguida, os mesmos comandos no pino “REV” para inverter a direção do motor.
MAIN LOOP CODE
Void loop() {
int out_lim_state = digitalRead(out_lim); // lê os fins de curso e salva seu valor
int in_lim_state = digitalRead(in_lim);
Serial.print("outer limit switch value "), Serial.println(out_lim_state); // 0 -> o fim de curso está pressionado
Serial.print("inner limit switch value "), Serial.println(in_lim_state); // 1 -> o fim de curso não está pressionado
if (out_lim_state == 0 && in_lim_state == 1) // se o fim de curso externo está pressionado e o interno não (estendido até o fim)
{
retract(); // recolher o curso
}
else if (out_lim_state == 1 && in_lim_state == 0) // se o fim de curso interno está pressionado e o externo não (recolhido até o fim)
{
extend(); // estender o curso
}
O loop “loop” basicamente apenas lê as entradas dos interruptores de fim de curso para verificar se os interruptores estão pressionados ou não e, com base nisso, apenas altera a direção do motor.
A maioria dos atuadores lineares do mercado vem equipada com um motor CC com escovas e, por isso, o ciclo de trabalho disponível com esse motor torna praticamente impossível operar a unidade continuamente. Na Progressive Automations, damos aos nossos clientes a liberdade de optar por um motor CC sem escovas para o nosso modelo PA-14, oferecendo ainda mais opções para seus projetos.