Hos Progressive Automations tilbyder vi mange muligheder for at styre din lineær aktuatorFra simple løsninger som vippekontakter til vores mere avancerede controllere som f.eks. PA-35 Wi-Fi-kontrolboks, vi har mange plug-and-play-muligheder. Nogle gange er projektkrav og kundernes behov dog lidt mere unikke, end hvad disse muligheder kan tilbyde. Det er her mikrocontrollere kan virkelig være vores venner. I denne artikel vil vi gennemgå, hvordan vi kan ændre positionen af en aktuator baseret på mængden af lys, hvilket giver dig en unik og avanceret form for lineær aktuatorstyring.
Hvad skal du bruge?
Alt vi behøver til dette projekt er en Arduino (i dette tilfælde en Arduino Uno), en lysafhængig modstand (også kendt som en fotoresistor eller LDR), en 10k ohm modstand, et 2-kanals relæmodul og selvfølgelig en aktuator.
Valg af din lineære aktuator
I mange tilfælde vil vi bruge denne type trigger til udendørs applikationer, såsom en soldrevet døraktuator til hønsehusetDu skal være opmærksom på, hvilken slags miljø din aktuator skal bruges i, og sørge for, at den har den korrekte IP-klassificering. For at hjælpe med dette kan du finde vores IP-klassificeringsguide. herVi skal også sørge for, at du finder den rigtige slaglængde og kraftklassificering til din aktuator. For at få hjælp til dette kan du læse et af vores mange andre blogindlæg. herI bund og grund afhænger den type aktuator, du bruger, helt af din applikation og det barske miljø, du befinder dig i.
Ledningsføring

Ledningsføringen til dette soldrevne aktuatorprojekt er som følger:
LDR til Arduino
- LDR-ledning 1 – Jord
- LDR-ledning 2 – 5V (via 10k modstand)
- LDR-ledning 2 – Analog ben 0
Relæmodul til Arduino
- VCC – 5V
- GND – GND
- IN1 – Ben 2
- IN2 – Ben 3
Relæmodul til strømforsyning og aktuator
- +12V til NC1 (normalt lukket terminal på relæ et)
- -12V til NO1 (normalt åben terminal på relæ et)
- NC1 til NC2
- NO1 til NO2
- COMMON1 til aktuatorledning 1
- COMMON2 til aktuatorledning 2
Hvis du bruger et 2-kanals relæmodul, viser ovenstående instruktioner, hvordan du tilslutter dette projekt. Dette er en meget simpel opsætning, der er nem at kode, men den har sine begrænsninger. Hvis du vil tilføje funktioner som hastighedskontrol eller kraftfeedback, kan du overveje at bruge MegaMoto motordriverskjold i stedet. Mere information om det her.
Kodning af din soldrevne aktuator
Funktionaliteten af den angivne kode er ment at være så enkel som muligt. Når der er lys, vil aktuatoren trække sig tilbage. Når det er mørkt, vil aktuatoren forlænges. For at forhindre, at aktuatoren udløses utilsigtet (hvis nogen går forbi og blokerer lyset, eller hvis et lysglimt opfanges af sensoren), skal ændringen fra mørk til lys (eller lys til mørk) vare mindst tredive sekunder. Denne forsinkelse kan nemt ændres ved at ændre værdien af "const int triggerDelay".
Mængden af tilstedeværende lys bestemmes ved at aflæse spændingen, der går til analog pin 0. Jo mere lys der er, desto mindre modstand vil vores lysafhængige modstand have. Da vi bruger en pull-up-modstand, betyder det, at spændingen vil falde, når omgivelserne bliver lysere. Arduinoen aflæser dette som en værdi mellem 0 og 1028. Hvis du vil ændre den værdi, hvor aktuatorens tilstand ændres, skal du blot ændre værdien af "const int threshold" (standardindstillet til 650).
Denne kode vil tjene sit formål, som den er, men det fantastiske ved projekter som disse er, at der altid er plads til forbedringer. Du er velkommen til at ændre denne kode, så den bedre passer til din solcelledrevne lineære aktuatorapplikation! Et par eksempler på ekstra funktioner, der kan tilføjes til denne kode, er: en timeout, der forhindrer aktuatoren i at fortsætte med at bevæge sig, hvis den ikke rammer grænseafbryderen inden for en bestemt tidsperiode; kollisionsdetektion via strømforbrugsovervågning (ville kræve en MegaMoto-kører i stedet for relæer); eller en funktion, der gør det muligt at indstille aktuatoren til forskellige positioner baseret på lysmængden (ikke kun helt oppe eller helt nede).
/*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);
}
Konklusion
Så, dér har du det! Vores metode bag at bruge en lineær aktuators lyssensor til at styre din aktuator ved hjælp af solenergi. Vi ved, at ikke alle applikationer er ens, så du har måske nogle spørgsmål om dette projekt, eller nogle ændringer, du ønsker udført af vores team af ingeniører. Det er ikke noget problem – bare send os en e-mail via sales@progressiveautomations.com, eller ring til os gratis på 1-800-676-6123.