Naše projekty někdy potřebují dodatečné zabezpečení. To může být případ řady různých aplikací, jako jsou mechanismy zámků dveří, prevence nebezpečného nebo neoprávněného použití strojů nebo ještě specifičtější rekvizity pro únikové hry. V tomto článku si ukážeme sestavu klávesnicového aktuátoru a ukážeme si, jak můžete chránit provoz lineárního aktuátoru heslem.
Zde je to, co budeme používat:
- Arduino Uno.
- Maticová klávesnice 4x4.
- 2kanálový reléový modul (a 4kanálový je zobrazeno na obrázcích, ale pouze. Jsou vyžadovány 2 kanály).
- Pohon PA-03-6-600.
- Napájecí zdroj PS-20-12.
- Bzučák (volitelné).
Zapojení pohonu
Nejprve začneme s kabeláží. Abychom mohli vysouvat a zasouvat váš aktuátor, budeme muset použít oba kanály našeho 2kanálového reléového modulu. Tímto způsobem, když Relé jedna je aktivní, proud bude protékat jedním směrem a když Relé dva je aktivní, proud poteče v opačném směru. Pokud žádné nebo obě relé nejsou aktivní, do akčního členu nepoteče žádný proud. K dosažení tohoto cíle budeme muset provést následující zapojení.
Relé k pohonu a napájení
- +12V k NC1 (rozpínací svorka na relé jedna) (bílý vodič).
- -12V na NO1 (normálně otevřený kontakt na relé jedna) (černý vodič).
- NC1 až NC2 (modrý propojovací vodič).
- NO1 až NO2 (zelený propojovací vodič).
- COMMON1 k akčnímu členu (hnědý vodič akčního členu).
- COMMON2 k akčnímu členu (modrý vodič akčního členu).
Arduino k klávesnici a reléovému modulu
- Propojte piny 1-8 na klávesnici s piny 2-9 na Arduinu (v tomto pořadí).
- Pin 10 Arduina na IN1 na reléovém modulu.
- Pin 11 Arduina na IN2 na reléovém modulu.
- Arduino 5V na VCC na reléovém modulu.
- Uzemnění Arduina k uzemnění na reléovém modulu.
- Anoda bzučáku (delší vodič) k pinu 12 (volitelné).
- Katoda bzučáku (kratší vodič) k GND (volitelné).

Kódování vašeho projektu
Nyní, když jsme provedli všechna připojení, jsme připraveni na kód. Účelem tohoto kódu je číst vstupy z klávesnice, vyhledat správný 5místný vstup a podle toho ovládat naše relé. K dispozici je také kód pro volitelný bzučák, který poskytuje zpětnou vazbu. Pokud si nepřejete bzučák používat, můžete jej jednoduše nepřipojovat a ponechat kód tak, jak je. Pokud potřebujete pin bzučáku použít pro něco jiného, smažte nebo zakomentujte veškerý kód použitý pro funkce bzučáku nebo „pípání“.
V níže uvedeném kódu najdete komentáře téměř na každém řádku (světle šedý text za znakem „//“). Tyto komentáře popisují, co se v náčrtu děje, a také úpravy, které můžete provést. Pro podrobnější vysvětlení si zde také rozebereme několik důležitých částí.
Nastavení kódu
V našem instalačním kódu definujeme piny bzučáku a relé jako výstupy. Bzučák se spustí na nízké úrovni (LOW) a relé na vysoké úrovni (HIGH). To způsobí, že všechny budou neaktivní, když poprvé zapneme Arduino. Také jednou spustíme funkci „retract ()“, aby Arduino vědělo správný stav akčního členu.
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
}
Kód klávesnice
Pro tento náčrt používáme knihovnu Keypad.h. Tato knihovna obsahuje funkce, které používáme k přijímání vstupů z naší klávesnice. Abychom mohli tuto knihovnu používat, musíme vytvořit dvourozměrné pole pro mapování znaků naší klávesnice. Toho lze dosáhnout nejprve definováním počtu řádků a počtu sloupců na klávesnici. Poté vytvoříme pole s každým znakem na klávesnici. Naše klávesnice má čtyři řádky, čtyři sloupce a osm výstupních pinů. Pro každý řádek a jeden pin pro každý sloupec. V našem kódu to ukážeme vytvořením „rowPins„pole“, které obsahuje digitální vstupy připojené k pinům řádku a „colPins„pole“, které obsahuje digitální vstupy připojené k pinům sloupce. Když stiskneme klávesu, propojíme jeden z pinů řádku s jedním z pinů sloupce. Například, pokud stiskneme tlačítko 2, vytvoříme uzavřený obvod mezi pinem řádku jedna a pinem sloupce 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
Přístupový kód
V tomto příkladu pro bezpečné ovládání lineárního aktuátoru má náš přístupový kód 5 číslic, takže definujeme „Délka_passcode„“ jako „6“. Je to proto, že pro nulový znak potřebujeme jednu mezeru navíc. Pokud chcete změnit délku hesla, jednoduše změňte 6 na číslo, které je o jedna větší než požadovaná délka kódu. Poté změňte hodnotu „Přístupový kód„na libovolné znaky (výchozí nastavení je „12345“).
Znak spojený s každou stisknutou klávesou bude uložen v paměti „I“.vstup„. Jakmile toto pole obsahuje 5 znaků, porovná hodnotu „Vstup„a“Přístupový kód„, abychom zjistili, zda máme správný přístupový kód. Pokud jsou hodnoty stejné, náš kód řekne Arduinu, aby buď vysunul, nebo zasunul aktuátor (v závislosti na aktuálním stavu aktuátoru). Pokud je přístupový kód nesprávný, pin bzučáku se třikrát rychle zvýší a poté se sníží. V obou případech „vymazatVstup()Funkce ” bude volána poté, aby se vyčistilo vstupní pole a uvolnilo místo pro nový záznam.
Rozšíření a stažení kódu
V tomto kódu máme dvě velmi podobné funkce.void extended()„a“void retract()„. Po zavolání funkce void extend() zapíše stav Relé jedna do nízkého stavu, čímž ho aktivuje. Tím se uzavře obvod a na akční člen se přivede kladné napětí. Relé zůstane aktivní po dobu přiřazenou funkci „const int extendTime„. (výchozí nastavení je 25 000 milisekund). Funkce void retract() provede přesně totéž, až na to, že k obrácení napětí použije relé číslo dvě místo relé číslo jedna.
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();
}
Dokončovací úpravy
Po provedení všech připojení a nahrání kódu bychom měli mít funkční systém ovládání aktuátorů chráněný heslem. Pokud máte při prvním nastavení potíže, zkuste použít nástroj pro monitorování sériového portu v Arduino IDE. To může být velmi užitečné při určování, zda jsou vaše problémy způsobeny kódem, zapojením nebo vadnými komponentami.
Tento kód lze také upravit nad rámec pouhé změny přístupového kódu. Možná byste měli zvážit výměnu reléové desky za štít MegaMoto, abyste mohli regulovat rychlost, nebo použití pohonu s Hallovou zpětnou vazbou pro regulaci polohy.
Doufáme, že byl tento článek užitečný! Pokud máte jakékoli dotazy týkající se tohoto nebo jiného dálkově ovládaného lineárního aktuátoru, nebo se s námi chcete podělit o svůj projekt, neváhejte se na nás obrátit. zavolejte nám nebo nám napište e-mail.