Controladores de motores
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
¿Dónde puedo encontrar información adicional sobre sus productos?

Contamos con hojas de datos, manuales de usuario, modelos 3D, diagramas de cableado y más en nuestras secciones de Recursos y Centro de aprendizaje .

¿Cómo puedo determinar qué actuador lineal de Automatizaciones Progresivas es el más adecuado para mi aplicación?
¿Qué es el ciclo de trabajo y cómo se calcula?
¿Puedo usar sus actuadores para reemplazar el que ya tengo?
¿Qué significa accidente cerebrovascular? ¿Cómo se supone que debo saber qué talla elegir?
¿Cómo sé qué clasificación de fuerza es la adecuada para mi aplicación?
¿Puedo utilizar mi propia fuente de alimentación como fuente para mis actuadores?
¿Cómo puedo controlar que los actuadores viajen al mismo tiempo?
¿Por qué mi actuador lineal hace tanto ruido?
¿Puedo personalizar un actuador lineal según mis especificaciones?
¿Puedo sincronizar mis actuadores lineales?
¿Están disponibles los kits de actuadores lineales?
¿La temperatura afectará mi actuador lineal?
¿Puedo implementar uno de sus actuadores en un mecanismo de terceros?
¿Cuál es el pin de mi actuador lineal?
¿Puedo obtener modelos CAD en 3D para mi actuador lineal?
¿Cuáles son las opciones de la caja de control para mi actuador?
¿Puedo utilizar sus cajas de control con un producto de terceros?
¿Venden cajas de control de Wi-Fi?
¿Todas sus cajas de control son compatibles con todos sus actuadores lineales?
¿Puedo usar mi propia caja de control?
¿Tiene una codificación de muestra que pueda utilizar?
No tengo una fuente de energía: ¿qué puedo hacer?
¿Puedo usar mi propia fuente de alimentación?
¿Tiene fuentes de alimentación de 220 VCA disponibles?
¿Puedo controlar las columnas elevadoras con un controlador de terceros?
¿Puedo utilizar dos de las columnas elevadoras Flt-11 juntas?
¿Qué caja de control debo emparejar con mis columnas elevadoras?
¿Son personalizables los elevadores de mesa/escritorio/TV?
¿Qué tamaños de televisores pueden soportar sus elevadores de televisores?
¿Cuál es la capacidad de peso de sus elevadores de mesa/escritorio?
¿Mi actuador lineal viene con soportes de montaje?
¿Dónde puedo encontrar una guía paso a paso para mi producto?
Seguí el diagrama de cableado pero no funciona. ¿Qué debo hacer?
Diagrama de flujo para la selección del actuador
¿Pueden las cajas de control FLTCON funcionar con mis actuadores?
¿Qué es conducir hacia atrás? -- ¿Qué significan las capacidades de carga dinámica y estática? -- ¿Qué es la carga lateral?
¿Cómo puedo realizar un pedido?

Los pedidos se pueden realizar de una de las siguientes formas:

En línea: utilice nuestro proceso de pedido en línea con opciones para pagar con tarjeta de crédito o PayPal.

Teléfono: 1-800 – 676 – 6123

Correo electrónico:sales@progressiveautomations.com

¿Ofrecen descuentos por cantidad?
¿Qué métodos de pago acepta?
¿En qué forma de moneda están sus precios?
¿Cómo sé si el producto que quiero está en stock?
¿Cuánto costará el envío y qué métodos ofrecen?

Las tarifas de envío de Progressive Automations se calculan en función de una variedad de factores que incluyen, entre otros: ubicación, cantidades y el peso total de su pedido. Los artículos más pequeños se envían por paquetería, mientras que los artículos más grandes y los pedidos al por mayor se envían a través de un servicio de transporte de carga. Siempre nos esforzamos por ofrecer precios de envío competitivos para todos nuestros clientes.

Los métodos de envío están disponibles a través de pedidos en línea y por teléfono. Si desea recibir un costo de envío estimado de su pedido, puede hacerlo revisando su carrito de compras final.

¿Qué empresas de transporte utiliza?
¿Me cobrarán algún impuesto?
¿Cuál es su política de devolución?
¿Cuánto dura la entrega?
¿Ofrecen envío gratuito?