How to Control Your Linear Actuator with Solar Power

Cómo Controlar su Actuador Lineal con Energía Solar

Josh Nigh
Josh Nigh
PA Engineer

En Progressive Automations, ofrecemos muchas opciones para controlar tu actuador lineal. Desde soluciones sencillas como interruptores de balancín, hasta nuestros controladores más avanzados como la PA-35 Wi-Fi Control Box, contamos con muchas opciones plug-and-play. Sin embargo, a veces los requisitos del proyecto y las necesidades del cliente son un poco más particulares que lo que estas opciones pueden ofrecer. Aquí es donde los microcontroladores se convierten en grandes aliados. En este artículo, veremos cómo podemos cambiar la posición de un actuador según la cantidad de luz presente, ofreciéndote una forma única y avanzada de control de actuadores lineales.

¿Qué necesitarás?

Para este proyecto solo necesitamos un Arduino (en este caso un Arduino Uno), una resistencia dependiente de la luz (también conocida como fotorresistencia o LDR), una resistencia de 10 kΩ, un módulo de relé de 2 canales y, por supuesto, un actuador.

¡Descubre nuestro Arduino Uno, fundamental para este proyecto!

Cómo elegir tu actuador lineal

En muchos casos, usaremos este tipo de disparador para aplicaciones en exteriores, como un actuador para puerta de gallinero con energía solar. Debes tener en cuenta el entorno en el que operará tu actuador y asegurarte de que tu actuador tenga el grado de protección IP correcto. Para ayudarte, puedes encontrar nuestra guía de clasificación IP aquí. También debemos asegurarnos de que elijas la longitud de carrera y la fuerza nominal adecuadas para tu actuador. Para esto, puedes consultar muchas de nuestras otras publicaciones del blog aquí. En esencia, el tipo de actuador que uses depende totalmente de tu aplicación y de lo exigente que sea el entorno.

 

Cableado

El cableado de este actuador alimentado por energía solar

 

El cableado para este proyecto de actuador alimentado por energía solar es el siguiente:

LDR al Arduino

  • Terminal 1 del LDR – Tierra
  • Terminal 2 del LDR – 5 V (a través de una resistencia de 10 kΩ)
  • Terminal 2 del LDR – Pin analógico 0

Módulo de relé al Arduino

  • VCC – 5 V
  • GND – GND
  • IN1 – Pin 2
  • IN2 – Pin 3

Módulo de relé a la fuente de alimentación y al actuador

  • +12 V a NC1 (terminal normalmente cerrado del relé uno)
  • -12 V a NO1 (terminal normalmente abierto del relé uno)
  • NC1 a NC2
  • NO1 a NO2
  • COMMON1 al cable 1 del actuador
  • COMMON2 al cable 2 del actuador

Usando un módulo de relé de 2 canales, así es como debes cablear este proyecto. Es una configuración muy simple y fácil de programar, pero tiene sus limitaciones. Si deseas añadir funciones como control de velocidad o retroalimentación de fuerza, quizá quieras considerar usar el MegaMoto motor driver shield en su lugar.  Más información al respecto aquí.

Programación de tu actuador con energía solar

La funcionalidad del código proporcionado está pensada para ser lo más simple posible. Cuando hay luz, el actuador se retrae. Cuando está oscuro, el actuador se extiende. Para evitar que el actuador se active de forma no intencionada (si alguien pasa y bloquea la luz, o si el sensor capta un destello), el cambio de oscuro a claro (o de claro a oscuro) debe durar al menos treinta segundos. Este retardo puede cambiarse fácilmente modificando el valor de “const int triggerDelay”.

La cantidad de luz presente se determina leyendo el voltaje que llega al pin analógico 0. Cuanta más luz haya, menor será la resistencia de nuestra resistencia dependiente de la luz. Como estamos usando una resistencia pull‑up, esto significa que el voltaje disminuirá a medida que el entorno se vuelva más brillante. El Arduino lo lee como un valor entre 0 y 1028. Si quieres cambiar el valor en el que cambiará el estado del actuador, simplemente cambia el valor de “const int threshold” (establecido en 650 por defecto).

Este código cumplirá su propósito tal como está, pero lo mejor de proyectos como este es que siempre hay margen de mejora. Siéntete libre de modificar este código para adaptarlo mejor a tu aplicación de actuador lineal con energía solar. Algunos ejemplos de funciones adicionales que podrías agregar a este código son: un temporizador para evitar que el actuador continúe desplazándose si no acciona el interruptor de límite dentro de un período de tiempo determinado; detección de colisiones mediante la monitorización del consumo de corriente (requeriría un MegaMoto driver en lugar de relés); o una función que permita fijar el actuador en varias posiciones en función de la cantidad de luz (no solo completamente arriba o completamente abajo).

Las aplicaciones en exteriores se benefician de este tipo de disparador. ¡Descubre los actuadores con alta protección que ofrecemos!

 /*The hardware required for this project is an Arduino, one light dependant resistor (LDR), a 10K resistor and a 2-channel 5V relay module.
 Its purpose is to control the extension and retraction of an actuator based on the amount of light that is present.
 
 Written by Progressive Automations 12/02/2020
*/

#define relay1 2 //relay used to extend actuator
#define relay2 3 //relay used to retract actuator
int ldr; //analog reading from light dependent resistor 
int countOpen = 0;//counts how long sensor is recieving light
int countClose = 0;//counts how long the sensor is not recieving light
const int triggerDelay = 3000;//number of seconds x 100 to wait after lighting changes before triggering actuator 
const int threshold = 650;//
void setup() {
Serial.begin(9600);
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
}

void loop() {
checkSensor();
}

void checkSensor()
{
ldr = analogRead(0);
Serial.println(ldr);
if(ldr > threshold)//if reading is greater than threshold, start counting
{
  countOpen++;//count how long the sensor is not recieving light
  delay(10);
}
else
{
  countOpen = 0;//reset count to zero if statement is not true
}
if(countOpen > triggerDelay)// wait x seconds before triggering actuator 
{
  extend();//extend actuator
}

if(ldr < threshold)//if reading is less than threshold, start counting
{
  countClose++;//count how long sensor is recieving light
  delay(10);
}
else
{
  countClose = 0;
}
if(countClose > triggerDelay)// wait x seconds before triggering actuator 
{
  retract();
}

}

void extend()
{
  digitalWrite(relay1,LOW);
  digitalWrite(relay2,HIGH);
}

void retract()
{
  digitalWrite(relay2,LOW);
  digitalWrite(relay1,HIGH);
}

Conclusión

¡Y eso es todo! Nuestra metodología detrás de usar un sensor de luz con actuadores lineales para controlar tu actuador usando energía solar. Sabemos que no todas las aplicaciones son iguales, por lo que puedes tener algunas consultas sobre este proyecto o algunas modificaciones que quieras compartir con nuestro equipo de ingenieros. No hay problema: envíanos un correo a sales@progressiveautomations.com, o llámanos gratis al 1-800-676-6123.