Photo of a control box inside

Parte II: ¿Cómo monitorear la retroalimentación de carga de un actuador lineal?

Guest Writer
Guest Writer
PA Engineer

Bienvenido a la Parte II de nuestra guía sobre cómo monitorear la retroalimentación de carga de un actuador lineal . En la Parte I repasamos el proceso de cableado y la codificación básica necesaria para el ejemplo. En la guía de hoy, repasaremos en detalle las diferentes secciones de la codificación, así como algunas formas de editarla. Para comenzar, veremos la sección de código latchButtons().

Lo primero que queremos ver es el rebote del botón, por lo que cuando se presiona el botón izquierdo se debe calcular el tiempo transcurrido desde la pulsación anterior. Para hacer esto tendremos que utilizar el último valor que se almacenó en el código, luego usar la función millis() para verificar la hora. Cuando el tiempo es mayor que el tiempo de rebote, la función verificará si el actuador puede extenderse. Una vez que se cumplan ambas condiciones la función podrá continuar.

 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


La siguiente sección es el bucle dentro de la función motorForward(), específicamente los dos retrasos. El bucle comienza activando el controlador del motor, que arranca el motor del actuador lineal. Si es el primero en pasar por el bucle, habrá un retraso mayor. El retraso ignora el pico de corriente que se produce cuando se activa el motor. Asegúrate de no establecer un retraso demasiado grande porque no tendrás control sobre él una vez que comience. Cuando el motor arranca, la sección getFeedback() se utiliza para verificar el sensor de corriente.

 while (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);
de lo contrario demora (retraso del tiempo de retroalimentación); //pequeño retraso para alcanzar la velocidad
obtener comentarios();
primera ejecución = falso;
botones de cierre();
}//finalizar mientras

Foto de una caja de control en el interior.

A continuación, repasaremos las secciones de la rutina obtener retroalimentación(), que comienza leyendo el pin analógico que se conecta al sensor. Comienza verificando si el motor está en sus límites y el código conoce sus límites cuando la corriente indica 0.

Desafortunadamente, a veces puede haber una lectura falsa, por lo que es importante configurar un contador. Este código de contador tiene que contar hasta hitLimitsmax antes de que el motor se detenga y, si cuenta menos, se reiniciará.

 

 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


Después de eso van los límites de acierto. Cuando el motor del actuador lineal avanza cuando alcanza el límite, apagará el pestillo derecho. Si el motor se mueve hacia atrás, cerrará el pestillo izquierdo. El siguiente código solo muestra el pestillo derecho, pero el código del pestillo izquierdo es el mismo.

if (hitLimits == hitLimitsmax && rightlatch == ALTO) {

pestillo derecho = BAJO;
límites de impacto = 0;
}//terminara si

Se comprueba el límite actual y se define el límite máximo. Si se supera el límite, el pestillo izquierdo se desactivará y el motor ya no se extenderá. Para iniciar la extensión, es necesario invertir el motor.
 si (CRaw > maxAmps) {

no extender = verdadero;
pestillo izquierdo = BAJO; //se detiene si la retroalimentación supera el máximo
}//terminara si

Esto nos lleva al final de la Parte II sobre el monitoreo de la retroalimentación de carga de un actuador lineal . Esta vez entramos en detalles sobre secciones específicas del código y explicamos cómo funcionan. Si desea pedir alguna de las unidades que utilizamos en este ejemplo, puede realizar el pedido en línea o contactarnos para realizar el pedido por teléfono. Si tiene alguna pregunta o inquietud sobre nuestros productos, siempre estamos listos para ayudarlo.