Neste exemplo, controlaremos a velocidade de um atuador linear com um Arduino e driver de motor.
Nota: Este tutorial pressupõe conhecimento prévio com princípios eletrônicos básicos, hardware e software Arduino. Se esta é a primeira vez que usa o Arduino, sugerimos aprender o básico de um dos muitos excelentes tutoriais para iniciantes disponíveis nas pesquisas do Google e do YouTube. Esteja ciente de que não temos os recursos para fornecer suporte técnico para aplicativos personalizados e não depuraremos, editaremos, forneceremos código ou diagramas de fiação fora desses tutoriais disponíveis publicamente.
Componentes
- 12V Linear Atuador
- Fonte de alimentação 12V
- Arduino
- Motorista
- Potenciômetro (opcional)
- Fios elétricos para fazer conexões e ferramenta de crimpagem ou ferro de solda
Fiação
Visão geral de hardware e software
Os motores DC em atuadores lineares requerem uma corrente alta (até 5A), se fôssemos conectar o atuador linear diretamente ao Arduino, esse consumo de alta corrente destruiria os pinos digitais do Arduino, pois eles são classificados apenas para 40mA cada. Portanto, usamos um driver de motor que pode receber um sinal PWM (modulação por largura de pulso) de baixa corrente da placa Arduino e emitir um sinal PWM de alta corrente para o atuador linear.
O driver do motor é conectado a dois pinos digitais PWM (pinos 10 e 11 no Arduino Uno). Definindo um desses pinos como LOW e o outro HIGH (consulte as linhas 18 e 19 no código abaixo), podemos estender o atuador na velocidade máxima. Para parar o atuador, definimos ambos os pinos para BAIXO (consulte as linhas 21 e 22 no código abaixo) e para inverter a direção do movimento podemos inverter a ordem dos pinos ALTO e BAIXO (consulte as linhas 24 e 25 no código abaixo). Também podemos ajustar a velocidade alterando a variável “Velocidade” para qualquer valor no intervalo [0, 255]; consulte a linha 17 no código abaixo.
Código
https://gist.github.com/Will-Firgelli/c0ef0871dc1946d75257e0c29dccae2a
/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* Program demos how a motor driver controls direction & speed of a linear actuator
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int Speed;
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
}
void loop() {
Speed = 255; //choose any speed in the range [0,255]
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
delay(1000); //extend at given speed for one second
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(500); //stop for half a second
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
delay(1000); //retract at maximum speed for one second
}
Controle de velocidade variável com um potenciômetro
No exemplo acima, definimos manualmente a velocidade na linha 17 do código. No entanto, podem surgir situações em que queremos variar a velocidade do atuador no tempo. O método mais fácil de conseguir isso é usando um potenciômetro. UMA potenciômetro éum resistor variável de três terminais que pode atuar como um divisor de tensão. Girando o botão do potenciômetro, a voltagem de saída irá variar e podemos conectá-la ao pino analógico em um Arduino para definir uma velocidade variável.
Fiação
Visão geral de hardware e software
Conforme mencionado acima, um potenciômetro é um dispositivo rotativo que altera a resistência quando o botão é girado. Ao conectar os dois pinos externos do potenciômetro a 5V e GND, e o pino do meio ao pino analógico do Arduino, A0, um divisor de tensão é criado. Conforme o botão é girado, o Arduino irá ler leituras analógicas variando de [0, 1023].
Para valores na faixa [512, 1023], queremos que o atuador se estenda e para os valores [0, 511], queremos que o atuador se retraia, isso pode ser alcançado com uma instrução if () / else simples nas linhas 22 e 28 em o código abaixo. Então, usando a função map () (linhas 23 e 29 no código abaixo), podemos converter isso em um sinal PWM que controlará a velocidade e a direção do atuador.
Código
https://gist.github.com/Will-Firgelli/d2cdf69edc829974885984b3fb8e4856
/* Firgelli Automations
* Limited or no support: we do not have the resources for Arduino code support
*
* This progam controls the speed of a linear actuator via a potentiometer input
*/
int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int potPin = A0; //analog pin that connects to centre potentiometer pin
int Speed, sensorVal;
void setup() {
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(potPin, INPUT);
}
void loop() {
sensorVal = analogRead(potPin); //read user input from the potentiometer
if(sensorVal >= 512){ //extension
Speed = map(sensorVal, 512, 1023, 0, 255);
analogWrite(RPWM, 0);
analogWrite(LPWM, Speed);
}
else{ //retraction
Speed = map(sensorVal, 0, 511, 255, 0);
analogWrite(RPWM, Speed);
analogWrite(LPWM, 0);
}
}