En este ejemplo, controlaremos la velocidad de un actuador lineal con un Arduino y un controlador de motor.
Nota: Este tutorial asume conocimientos previos con principios electrónicos básicos, hardware y software Arduino. Si es la primera vez que usa Arduino, le sugerimos que aprenda los conceptos básicos de uno de los muchos excelentes tutoriales para principiantes disponibles a través de las búsquedas de Google y YouTube. Tenga en cuenta que no tenemos los recursos para proporcionar soporte técnico para aplicaciones personalizadas y no depuraremos, editaremos, proporcionaremos código o diagramas de cableado fuera de estos tutoriales disponibles públicamente.
Componentes
- Actuador lineal 12V
- Fuente de alimentación 12V
- Arduino
- Controlador de motor
- Potenciómetro (opcional)
- Cables eléctricos para hacer conexiones y herramienta de crimpado o soldador
Alambrado
Descripción general de hardware y software
Los motores de CC en actuadores lineales requieren una alta corriente (hasta 5A), si tuviéramos que conectar el actuador lineal directamente al Arduino, este alto consumo de corriente destruiría los pines digitales de Arduino, ya que solo tienen una capacidad nominal de 40 mA cada uno. Por lo tanto, utilizamos un controlador de motor que puede tomar una señal PWM (modulación de ancho de pulso) de baja corriente de la placa Arduino y enviar una señal PWM de alta corriente al actuador lineal.
El controlador del motor está conectado a dos pines digitales PWM (pines 10 y 11 en el Arduino Uno). Al establecer uno de estos pines en BAJO y el otro en ALTO (consulte las líneas 18 y 19 en el código a continuación), podemos extender el actuador a la velocidad máxima. Para detener el actuador, configuramos ambos pines en LOW (ver línea 21 y 22 en el código a continuación) y para invertir la dirección del movimiento podemos invertir el orden de los pines HIGH y LOW (ver línea 24 y 25 en el código a continuación). También podemos ajustar la velocidad cambiando la variable “Velocidad” a cualquier valor en el rango [0, 255]; vea la línea 17 en el código a continuación.
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
}
Control de velocidad variable con un potenciómetro
En el ejemplo anterior, configuramos manualmente la velocidad en la línea 17 del código. Sin embargo, pueden surgir situaciones en las que queramos variar la velocidad del actuador en el tiempo. El método más sencillo para lograrlo es mediante un potenciómetro. UN potenciómetro esuna resistencia variable de tres terminales que puede actuar como divisor de voltaje. Al girar la perilla del potenciómetro, el voltaje de salida variará y podemos conectarlo al pin analógico de un Arduino para establecer una velocidad variable.
Alambrado
Descripción general de hardware y software
Como se mencionó anteriormente, un potenciómetro es un dispositivo giratorio que cambia la resistencia cuando se gira la perilla. Al conectar los dos pines exteriores del potenciómetro a 5V y GND, y el pin del medio al pin analógico Arduino, A0, se crea un divisor de voltaje. A medida que se gira la perilla, Arduino leerá lecturas analógicas que van desde [0, 1023].
Para valores en el rango [512, 1023] queremos que el actuador se extienda y para valores [0, 511] queremos que el actuador se retraiga, esto se puede lograr con una simple declaración if () / else en las líneas 22 y 28 en el código de abajo. Luego, usando la función map () (línea 23 y 29 en el código a continuación) podemos convertir esto en una señal PWM que controlará tanto la velocidad como la dirección del actuador.
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);
}
}