How to Control an Actuator with a Keypad

Ako ovládať aktuátor pomocou klávesnice

Josh Nigh
Josh Nigh
PA Engineer

Niekedy naše projekty potrebujú dodatočné zabezpečenie. Môže to platiť pre rôzne aplikácie, napríklad mechanizmy dverových zámkov, zabránenie nebezpečnému alebo neoprávnenému používaniu strojov, či dokonca pre špecifické využitie, ako sú rekvizity do únikových miestností. V tomto článku vás prevedieme zostavením aktuátora ovládaného klávesnicou a ukážeme, ako môžete chrániť heslom ovládanie vášho lineárneho aktuátora.

Toto budeme používať:

Zapojenie aktuátora

Najprv začneme zapojením. Aby ste mohli aktuátor vysúvať a zasúvať, potrebujeme použiť oba kanály nášho 2-kanálového reléového modulu. Takto bude pri aktivovaní relé 1 prúd tiecť jedným smerom a pri aktivovaní relé 2 bude prúd tiecť opačným smerom. Ak nie je aktívne ani jedno relé alebo sú aktívne obe, ku aktuátoru nepotečie žiadny prúd. Na dosiahnutie tohto cieľa je potrebné urobiť nasledujúce spojenia.

Relé k aktuátoru a k napájaciemu zdroju

  • +12 V na NC1 (normálne zatvorený kontakt na relé 1) (biely vodič).
  • -12 V na NO1 (normálne otvorený kontakt na relé 1) (čierny vodič).
  • NC1 na NC2 (modrý prepojovací vodič).
  • NO1 na NO2 (zelený prepojovací vodič).
  • COMMON1 k aktuátoru (hnedý vodič aktuátora).
  • COMMON2 k aktuátoru (modrý vodič aktuátora).

Prepojenie Arduina s klávesnicou a reléovým modulom

  • Pripojte piny 1–8 na klávesnici k pinom 2–9 na Arduine (v tomto poradí).
  • Pin 10 Arduina na IN1 na reléovom module.
  • Pin 11 Arduina na IN2 na reléovom module.
  • Arduino 5 V na VCC na reléovom module.
  • Arduino GND na GND na reléovom module.
  • Anóda bzučiaka (dlhší vývod) na pin 12 (voliteľné).
  • Katóda bzučiaka (kratší vývod) na GND (voliteľné).
    Arduino ku klávesnici a reléovému modulu

     

    Programovanie projektu

    Keď máme všetky prepojenia hotové, môžeme prejsť ku kódu. Úlohou tohto kódu je čítať vstupy z klávesnice, skontrolovať správny 5-miestny vstup a podľa toho ovládať relé.  K dispozícii je aj kód pre voliteľný bzučiak na poskytnutie spätnej väzby.  Ak bzučiak používať nechcete, jednoducho ho nepripájajte a kód nechajte tak, ako je. Ak potrebujete pin bzučiaka použiť na niečo iné, odstráňte alebo zakomentujte všetok kód, ktorý sa používa pre funkcie bzučiaka alebo „pípnutia“.

    V kóde nižšie nájdete komentáre takmer pri každom riadku (svetlosivý text, ktorý nasleduje za „//“). Tieto komentáre opisujú, čo sa v skici deje, a tiež úpravy, ktoré môžete vykonať. Nižšie rozoberieme aj niekoľko dôležitých častí podrobnejšie.

    Použite naše mikrokontroléry Arduino na neobmedzené možnosti ovládania vášho aktuátora!

    Kód pre nastavenie

    V časti setup definujeme piny bzučiaka a relé ako výstupy. Bzučiak začne v stave LOW a relé v stave HIGH. Tým budú po prvom zapnutí Arduina všetky neaktívne.  Tiež raz spustíme funkciu „retract()“, aby Arduino poznalo správny stav aktuátora.

     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 pre klávesnicu

    V tejto skici používame knižnicu Keypad.h. Táto knižnica obsahuje funkcie, ktoré používame na prijímanie vstupov z našej klávesnice. Aby sme túto knižnicu použili, musíme vytvoriť dvojrozmerné pole, ktoré namapuje znaky našej klávesnice. To dosiahneme tak, že najprv definujeme počet riadkov a počet stĺpcov na klávesnici. Potom vytvoríme pole s každým znakom na klávesnici. Naša klávesnica má štyri riadky, štyri stĺpce a osem výstupných pinov. Pre každý riadok je jeden pin a pre každý stĺpec jeden pin. V kóde to ukazujeme vytvorením poľa „rowPins“, ktoré obsahuje digitálne vstupy pripojené k riadkovým pinom, a poľa „colPins“, ktoré obsahuje digitálne vstupy pripojené k stĺpcovým pinom. Keď stlačíme kláves, prepojíme jeden z riadkových pinov s jedným zo stĺpcových pinov. Napríklad, ak stlačíme tlačidlo 2, vytvoríme uzavretý obvod medzi riadkovým pinom jeden a stĺpcovým pinom 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 

    Kód pre heslo

    V tomto príklade bezpečného ovládania lineárneho aktuátora má naše heslo 5 číslic, preto definujeme „Passcode_Length“ ako „6“. Je to preto, že potrebujeme jedno miesto navyše pre nulový znak. Ak chcete zmeniť dĺžku hesla, jednoducho zmeňte 6 na číslo, ktoré je o jedno väčšie než požadovaná dĺžka kódu. Potom zmeňte hodnotu „Passcode“ na akékoľvek znaky, ktoré chcete (predvolene nastavené na „12345“).

    Znak priradený ku každému stlačenému tlačidlu sa uloží do poľa „Input“. Keď toto pole obsahuje 5 znakov, porovná hodnoty „Input“ a „Passcode“, aby sme zistili, či máme správne heslo. Ak sa hodnoty zhodujú, náš kód povie Arduinu, aby aktuátor vysunulo alebo zasunulo (v závislosti od aktuálneho stavu aktuátora). Ak je heslo nesprávne, pin bzučiaka trikrát rýchlo prejde do stavu HIGH a potom do LOW. V oboch prípadoch sa následne zavolá funkcia „clearInput()“, aby vymazala pole Input a uvoľnila miesto pre nový záznam.

    Kód pre vysúvanie a zasúvanie

    V tomto kóde máme dve veľmi podobné funkcie „void extend()“ a „void retract()“.  Po zavolaní void extend() nastaví Relé 1 na LOW, čím ho aktivuje. Tým sa uzavrie obvod a na aktuátor sa privedie kladné napätie. Relé zostane aktívne po dobu priradenú premennou „const int extendTime“. (predvolene 25 000 milisekúnd). Funkcia void retract() urobí presne to isté, iba použije relé 2 na zmenu polarity napätia namiesto relé 1.

    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();
    }

    Záverečné úpravy

    Keď máme všetky prepojenia hotové a kód nahratý, mali by sme mať funkčný, heslom chránený systém ovládania aktuátora.  Ak máte pri prvotnom nastavení problémy, skúste použiť nástroj Serial Monitor v Arduino IDE. To môže byť mimoriadne užitočné pri určovaní, či vaše problémy spôsobuje kód, kabeláž alebo chybné komponenty.

    Tento kód možno upraviť aj nad rámec zmeny hesla.  Môžete zvážiť výmenu reléovej dosky za štít MegaMoto, aby ste mali riadenie rýchlosti, alebo použitie aktuátora so spätnou väzbou s Hallovým efektom na riadenie polohy.

    Dúfame, že bol tento článok užitočný! Ak máte akékoľvek otázky k tomuto, k inému diaľkovo ovládanému lineárnemu aktuátoru alebo sa s nami chcete podeliť o svoj projekt, pokojne nám zavolajte alebo napíšte e‑mail.