Včasih naši projekti potrebujejo dodatno varnost. To je lahko primer v različnih aplikacijah, kot so mehanizmi za zaklepanje vrat, preprečevanje nevarne ali nepooblaščene uporabe strojev ali, še bolj nišno, rekviziti za sobe pobega. V tem članku vas bomo popeljali skozi sestavo aktuatorja s tipkovnico in razložili, kako lahko z geslom zaščitite delovanje svojega linearnega aktuatorja.
To bomo uporabili:
- Arduino Uno.
- 4x4 matrična tipkovnica.
- 2‑kanalni relejni modul (na slikah je prikazan 4‑kanalni, vendar sta potrebna le 2 kanala).
- Aktuator PA-03-6-600.
- Napajalnik PS-20-12.
- Piskač (neobvezno).
Ožičenje vašega aktuatorja
Najprej bomo začeli z ožičenjem. Da boste lahko aktuator izvlekli in uvlekli, moramo uporabiti oba kanala našega 2‑kanalnega relejnega modula. Tako bo, ko je aktiven Rele ena, tok tekel v eno smer, ko pa je aktiven Rele dva, bo tok tekel v nasprotno smer. Če ni aktiven noben ali sta aktivna oba releja, do aktuatorja ne bo tekel noben tok. Za to moramo vzpostaviti naslednje povezave.
Releji do aktuatorja in napajalnika
- +12V na NC1 (običajno zaprti priključek na releju ena) (bela žica).
- -12V na NO1 (običajno odprti priključek na releju ena) (črna žica).
- NC1 na NC2 (modra povezovalna žica).
- NO1 na NO2 (zelena povezovalna žica).
- COMMON1 na aktuator (rjava žica aktuatorja).
- COMMON2 na aktuator (modra žica aktuatorja).
Arduino do tipkovnice in relejnega modula
- Povežite pine 1–8 na tipkovnici s pini 2–9 na Arduinu (v tem zaporedju).
- Pin 10 na Arduinu na IN1 na relejnem modulu.
- Pin 11 na Arduinu na IN2 na relejnem modulu.
- Arduino 5V na VCC na relejnem modulu.
- Arduino GND na GND na relejnem modulu.
- Anoda piskača (daljša nožica) na pin 12 (neobvezno).
- Katoda piskača (krajša nožica) na GND (neobvezno).

Programiranje vašega projekta
Zdaj, ko smo vzpostavili vse povezave, smo pripravljeni na kodo. Namen te kode je brati vnose s tipkovnice, poiskati pravilno 5‑mestno vnosno kodo in temu primerno upravljati naše releje. Na voljo je tudi koda za neobvezni piskač za povratne informacije. Če piskača ne želite uporabljati, ga preprosto ne priključite in pustite kodo nespremenjeno. Če morate pin piskača uporabiti za kaj drugega, izbrišite ali zakomentirajte vso kodo, ki se uporablja za funkcije piskača oziroma »beep«.
V spodnji kodi boste našli komentarje skoraj pri vsaki vrstici (svetlosivo besedilo za »//«). Ti komentarji opisujejo, kaj se dogaja v skici, in spremembe, ki jih lahko izvedete. Nekaj pomembnih delov bomo tukaj tudi podrobneje razložili.
Koda za nastavitev
V nastavitveni kodi bomo pin piskača in relejev definirali kot izhode. Piskač bo začel na LOW, releji pa na HIGH. Tako bodo ob prvem vklopu Arduina vsi neaktivni. Enkrat bomo zagnali tudi funkcijo »retract()«, da bo Arduino poznal pravilen stanje aktuatorja.
void setup() //runs once on startup
{
digitalWrite(buzzer, LOW);//deactivates buzzer
digitalWrite(relay1,HIGH);//deactivates relay1
digitalWrite(relay2,HIGH);//deactivates relay2
for(int i=10;i<14;i++)
{
pinMode(i,OUTPUT);//sets pins 10 - 13 as outputs
}
Serial.begin(9600);//Starts the serial monitor at 9600 baud rate (for debugging only)
retract();//retracts the actuator on startup if it is not already. comment this out if you do not want the actuator to retract on startup
Serial.println("READY");//lets us know the serial monitor is running
}
Koda za tipkovnico
V tej skici uporabljamo knjižnico Keypad.h. Ta knjižnica vsebuje funkcije, ki jih uporabljamo za sprejemanje vnosov s tipkovnice. Za uporabo te knjižnice moramo ustvariti dvodimenzionalno polje, ki preslika znake naše tipkovnice. To dosežemo tako, da najprej določimo število vrstic in stolpcev na tipkovnici. Nato ustvarimo polje z vsakim znakom na tipkovnici. Naša tipkovnica ima štiri vrstice, štiri stolpce in osem izhodnih pinov. Za vsako vrstico je en pin in za vsak stolpec en pin. To v kodi prikažemo z matriko »rowPins«, ki vsebuje digitalne vhode, povezane s pini vrstic, in matriko »colPins«, ki vsebuje digitalne vhode, povezane s pini stolpcev. Ko pritisnemo tipko, povežemo en pin vrstice z enim pinom stolpca. Na primer, če pritisnemo tipko 2, ustvarimo zaprt tokokrog med pinom vrstice ena in pinom stolpca dva.
char customKey; //characters input by pressing keypad
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = { //layout your "keymap" here
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {2, 3, 4, 5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6, 7, 8, 9}; //connect to the column pinouts of the keypad
Keypad customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialize an instance of class NewKeypad
Koda za geslo
V tem primeru varnega krmiljenja linearnega aktuatorja je naše geslo 5‑mestno, zato »Passcode_Length« nastavimo na »6«. To zato, ker potrebujemo en dodaten prostor za ničelni znak. Če želite spremeniti dolžino gesla, preprosto zamenjajte 6 s številom, ki je za ena večje od želene dolžine gesla. Nato spremenite vrednost »Passcode« v poljubne znake (privzeto je »12345«).
Znak, povezan z vsako pritisnjeno tipko, bo shranjen v polju »Input«. Ko to polje vsebuje 5 znakov, bo primerjalo vrednosti »Input« in »Passcode«, da preveri, ali imamo pravilno geslo. Če sta vrednosti enaki, bo naša koda Arduinu naročila, naj aktuator izvleče ali uvleče (odvisno od trenutnega stanja aktuatorja). Če je geslo napačno, bo pin piskača trikrat hitro prešel na visoko stanje in nato na nizko. V vsakem primeru se bo nato poklicala funkcija »clearInput()«, ki počisti polje Input in pripravi prostor za nov vnos.
Koda za izvlek in uvlek
V tej kodi imamo dve zelo podobni funkciji »void extend()« in »void retract()«. Ko je poklicana, bo void extend() zapisala Rele ena na nizko stanje in ga aktivirala. To bo zaprlo tokokrog in na aktuator priklopilo pozitivno napetost. Rele bo ostal aktiven toliko časa, kolikor je določeno v »const int extendTime« (privzeto 25.000 milisekund). Funkcija void retract() bo naredila enako, le da bo namesto releja ena uporabila rele dva, da obrne napetost.
void extend()//extend the actuator
{
longBeep();
Serial.println("EXTENDING...");
digitalWrite(relay2,HIGH);//makes sure relay2 is not active
digitalWrite(relay1,LOW);//activates relay1
delay(extendTime);
digitalWrite(relay1,HIGH);//deactivates relay1
Serial.println("DONE EXTENDING");
extended = true; //tells the arduino that the actuator is extended
longBeep();
}
void retract()//extend the actuator
{
longBeep();
Serial.println("RETRACTING...");
digitalWrite(relay1,HIGH);//makes sure relay1 is not active
digitalWrite(relay2,LOW);//activates relay2
delay(retractTime);
digitalWrite(relay2,HIGH);//deactivates relay2
Serial.println("RETRACTING DONE");
extended = false; //tells the arduino that the actuator is retracted
longBeep();
}
Zaključne podrobnosti
Ko izvedemo vse povezave in naložimo kodo, bi morali imeti delujoč sistem za krmiljenje aktuatorja, zaščiten z geslom. Če imate ob prvotni nastavitvi težave, poskusite uporabiti orodje za serijski monitor v Arduino IDE. To je lahko izjemno koristno pri ugotavljanju, ali vaše težave povzroča koda, ožičenje ali okvarjene komponente.
To kodo lahko prilagodite tudi onkraj same spremembe gesla. Razmislite o zamenjavi relejne plošče z zaščitnim modulom MegaMoto, da boste imeli nadzor hitrosti, ali o uporabi aktuatorja s povratno zvezo s Hallovim učinkom za nadzor položaja.
Upamo, da vam je bil članek v pomoč! Če imate kakršna koli vprašanja o tem, o katerem koli drugem daljinsko upravljanem linearnem aktuatorju ali želite z nami deliti svoj projekt, nas prosimo pokličite ali nam pišite e‑pošto.