Actuadores lineales
Sistemas de control
Controladores de motores
Columnas elevadoras
MONITOREO DE LA CORRIENTE DE UN ACTUADOR LINEAL

Este código de ejemplo utiliza un MegaMoto Plus y un Arduino Uno para monitorear la corriente de un actuador lineal.

 /* Código para monitorear el consumo de amperaje actual del actuador y para cortar la energía si
 supera cierta cantidad.

 Escrito por Automatizaciones Progresivas
 19 de agosto de 2015

 Hardware:
 - Tableros de control RobotPower MegaMoto
 -Arduino Uno
 - 2 pulsadores
 */

 const intEnablePin = 8;
 const intPWMPinA = 11;
 constanteintPWMPinB = 3; // pines para Megamoto

 const int botónIzquierda = 4;
 const int buttonRight = 5;//botones para mover el motor

 constante int CPin1 = A5; // retroalimentación motora

 int cierre izquierdo = BAJO;
 int rightlatch = LOW;//pestillos del motor (usados ​​para la lógica del código)

 int hitLimits = 0;//comienza en 0
 int hitLimitsmax = 10;//valores para saber si se alcanzaron los límites de viaje

 último tiempo de retroalimentación largo = 0; // debe ser largo, de lo contrario se desborda 
int retardo del tiempo de primera retroalimentación = 750; //primer retraso para ignorar el pico actual
 int tiempo de retroalimentación = 50; //retraso entre ciclos de retroalimentación, con qué frecuencia desea que se revise el motor
 retroalimentación de tiempo actual larga = 0; // debe ser largo, de lo contrario se desborda

 int tiempo de rebote = 300; //cantidad para evitar rebotes en los botones, los valores más bajos hacen que los botones sean más sensibles
 último botón presionado = 0; // temporizador para antirrebote
 long currentTimedebounce = 0;

 intCRaw = 0; // valor de entrada para las lecturas actuales
 int máxAmps = 0; // límite de viaje

 bool dontExtend = falso;
 bool primera ejecución = verdadero;
 boolfullyRetracted = false;//lógica del programa

 configuración nula()
 {
 Serie.begin(9600);
 pinMode(EnablePin, SALIDA);
 pinMode(PWMPinA, SALIDA);
 pinMode(PWMPinB, OUTPUT);//Establecer salidas del motor
 pinMode(botónIzquierdo, ENTRADA);
 pinMode(botónDerecha, ENTRADA);//botones

 digitalWrite(botónIzquierda, ALTA);
 digitalWrite(buttonRight, HIGH);//habilita pullups internos
 pinMode(CPin1, INPUT);//establecer entrada de retroalimentación

 currentTimedebounce = milis();
 currentTimefeedback = 0;//Establecer tiempos iniciales
 
maxAmps = 15;// ESTABLEZCA LA CORRIENTE MÁXIMA AQUÍ

 }//finalizar configuración

 bucle vacío()
 {
 latchButtons();//verificar botones, ver si necesitamos movernos

 moveMotor();//revisa los pestillos, mueve el motor hacia adentro o hacia afuera

 }//finalizar el bucle principal

 Botones de cierre vacíos()
 {
 if (digitalRead(buttonLeft)==LOW)//izquierda es hacia adelante
 {
 currentTimedebounce = millis() - lastButtonpress;// comprobar el tiempo desde la última pulsación
 if (currentTimedebounce > debounceTime && dontExtend == false)//una vez que haya activado dontExtend, ignore todas las pulsaciones hacia adelante
 {
 leftlatch = !leftlatch;// si el motor se está moviendo, se detiene, si está parado, comienza a moverse
 firstRun = true;// establece el indicador firstRun para ignorar el pico actual
 completamente retraído = falso; // una vez que avanzas, no estás completamente retraído
 lastButtonpress = millis();//almacenar la hora de la última pulsación del botón
 devolver;
 }//terminara si
 }//fin de botón IZQUIERDA

 if (digitalRead(buttonRight)==LOW)//la derecha está al revés
 {
 currentTimedebounce = millis() - lastButtonpress;// comprobar el tiempo desde la última pulsación

 if (tiempo actual de rebote > tiempo de rebote)
 { 
rightlatch = !rightlatch;// si el motor se está moviendo, se detiene, si está parado, comienza a moverse
 firstRun = true;// establece el indicador firstRun para ignorar el pico actual
 lastButtonpress = millis();//almacenar la hora de la última pulsación del botón
 devolver; }//terminara si
 }//finalizar btnDERECHA
 }//finalizar botones de cierre

 movimiento vacíoMotor()
 {
 if (cierre izquierdo == ALTO) motorForward(255); //velocidad = 0-255
 if (cierre izquierdo == BAJO) motorStop();
 if (cierre derecho == ALTO) motorBack(255); //velocidad = 0-255
 if (cierre derecho == BAJO) motorStop();

 }//finalizar movimientoMotor

 motor vacíoAdelante(velocidad int)
 {
 mientras (dontExtend == false && leftlatch == ALTO)
 {
 escritura digital (EnablePin, ALTA);
 analogWrite(PWMPinA, velocidad);
 analogWrite(PWMPinB, 0);//mueve el motor
 si (primera ejecución == verdadero) retraso (primera demora en el tiempo de retroalimentación); // mayor retraso para ignorar el pico actual
 de lo contrario demora (retraso del tiempo de retroalimentación); //pequeño retraso para alcanzar la velocidad

 obtener comentarios();
 primera ejecución = falso;

 latchButtons();//verificar botones nuevamente
 }//finalizar mientras

 }//final del motorAdelante

 motor vacíoBack (velocidad int)
 { 
mientras (cierre derecho == ALTO)
 {
 escritura digital (EnablePin, ALTA);
 escritura analógica(PWMPinA, 0);
 analogWrite(PWMPinB, velocidad);//mueve el motor
 if (firstRun == true) delay(firstfeedbacktimedelay);// retraso mayor para ignorar el pico actual
 de lo contrario demora (retraso del tiempo de retroalimentación); //pequeño retraso para alcanzar la velocidad
 obtener comentarios();

 primera ejecución = falso;

 latchButtons();//verificar botones nuevamente

 }//finalizar mientras

 dontExtend = false;//permitir que el motor se extienda nuevamente, después de haber sido retraído

 }//final del motorVolver

 parada de motor anulada()
 {
 escritura analógica(PWMPinA, 0);
 escritura analógica(PWMPinB, 0);

 escritura digital (EnablePin, BAJO);
 firstRun = true;//una vez que el motor se haya detenido, vuelva a habilitar firstRun para tener en cuenta los picos de corriente de arranque

 }//finalizar paradaMotor

 anular la retroalimentación()
 {
 CRaw = analogRead(CPin1); // Leer actual

 if (CRaw == 0 && hitLimits < hitLimitsmax) hitLimits = hitLimits + 1;
 de lo contrario hitLimits = 0; // verificamos si el motor está en los límites y la corriente se ha detenido

 if (hitLimits == hitLimitsmax && rightlatch == ALTO)
 { 
pestillo derecho = BAJO; //parar el motor
 completamente retraído = verdadero;
 }//terminara si

 de lo contrario, si (hitLimits == hitLimitsmax && leftlatch == ALTO)
 {
 pestillo izquierdo = BAJO;//detener el motor
 límites de impacto = 0;
 }//terminara si

 si (CRaw > maxAmps)
 {
 no extender = verdadero;
 pestillo izquierdo = BAJO; //se detiene si la retroalimentación supera el máximo
 }//terminara si

 lastfeedbacktime = millis();//almacenar la hora anterior para recibir comentarios
 }//finalizar obtener comentarios
CONTROLAR MÚLTIPLES ACTUADORES CON EL MULTIMOTO ARDUINO SHIELD
CONTROLADOR DE MOTOR WASP PARA CONTROL DE ACTUADOR LINEAL
USO DE RELÉS PARA CONTROLAR ACTUADORES LINEALES
CONTROLAR LA TEMPORIZACIÓN DEL MOVIMIENTO DE UN ÚNICO ACTUADOR LINEAL
EXTENDER Y RETRAER CONTINUAMENTE UN ACTUADOR LINEAL CON MOTOR DE CC SIN ESCOBILLAS
CÓDIGOS DE MUESTRA DEL MICRO SERVO ACTUADOR PA-12
Where Can I Find Additional Information on Your Products?

We have data sheets, user manuals, 3D models, wiring diagrams and more in our Resources and Learning Center sections.

How Can I Determine Which Progressive Automations Linear Actuator is Best Suited for My Application?
What Is Duty Cycle and How Is It Calculated?
Can I Use Your Actuators to Replace The One That I Already Have?
What Does Stroke Mean? How Am I Supposed to Know Which Size to Choose?
How Do I Know Which Force Rating Is Right for My Application?
Can I Use My Own Power Supply as a Source For My Actuators?
How Can I Control Actuators to Travel At The Same Time?
Why Is My Linear Actuator Making so Much Noise?
Can I Customize a Linear Actuator to My Specifications?
Can I Synchronize My Linear Actuators?
Are Linear Actuator Kits Available?
Will Temperature Affect My Linear Actuator?
Can I Implement One of Your Actuators Into A Third-Party Mechanism?
What Is the Pin Out For My Linear Actuator?
Can I Get 3D CAD Models for My Linear Actuator?
What Are the Control Box Options For My Actuator?
Can I Use Your Control Boxes with A Third-Party Product?
Do You Sell Wi-Fi Control Boxes?
Are All of Your Control Boxes Compatible With All Of Your Linear Actuators?
Can I Use My Own Control Box?
Do You Have Sample Coding I Could Use?
I Don’t Have a Power Source – What Can I Do?
Can I Use My Own Power Supply?
Do You Have 220 VAC Power Supplies Available?
Can I Control the Lifting Columns With A Third-Party Controller?
Can I Use Two of The Flt-11 Lifting Columns Together?
What Control Box Should I Pair with My Lifting Columns?
Are Your Table/Desk/TV Lifts Customizable?
What TV Sizes Can Your TV Lifts Hold?
What Is the Weight Capacity of Your Table/Desk Lifts?
Does My Linear Actuator Come with Mounting Brackets?
Where Can I Find a Step-By-Step Guide for My Product?
I Followed the Wiring Diagram But it’s Not Working – What Should I Do?
Flowchart For Actuator Selection
Can The FLTCON Control Boxes Work With My Actuators?
What Is Backdriving? -- What Does Dynamic and Static Load Ratings Mean? -- What Is Lateral Loading?
How Can I Place an Order?

Orders can be placed by one of the following ways:

Online: Use our online order process with options to pay by Credit Card or PayPal.

Phone: 1-800 – 676 – 6123

Email: sales@progressiveautomations.com

Do You Offer Quantity Discounts?
What Methods of Payment Do You Accept?
What Form of Currency Are Your Prices In?
How Do I Know If the Product I Want Is In Stock?
How Much Will Shipping Cost and What Methods Do You Offer?

Progressive Automations’ shipping fees are calculated based on a variety of factors including but not limited to: location, quantities, and the total weight of your order. Smaller items are shipped via parcel while larger items and bulk orders are shipped via a freight carrier service. We always endeavor to provide competitive shipping prices for all our customers.

Shipping methods are available through online and phone orders. If you wish to receive an estimated shipping cost of your order, this can be done by reviewing your final shopping cart.

What Freight Companies Do You Use?
Will I Be Charged with Any Duty Tax?
What Is Your Return Policy?
How Long Is Delivery?
Do You Offer Free Shipping?