Sådan styrer du en aktuator med et tastatur

Sådan styrer du en aktuator med et tastatur

Josh Nigh
Josh Nigh
PA Engineer

Nogle gange har vores projekter brug for ekstra sikkerhed. Dette kan være tilfældet i en række forskellige anvendelser, såsom dørlåsemekanismer, forebyggelse af usikker eller uautoriseret brug af maskiner eller til at få endnu mere nicheprægede rekvisitter til escape rooms. I denne artikel vil vi gennemgå en samling af en tastaturaktuator og gennemgå, hvordan du kan beskytte betjeningen af din lineære aktuator med en adgangskode.

Her er hvad vi vil bruge:

Ledningsføring af din aktuator

Først starter vi med ledningsføringen. For at kunne forlænge og trække din aktuator ind, skal vi bruge begge kanaler i vores 2-kanals relæmodul. På denne måde, når Relæ Et er aktiv, vil strømmen løbe i én retning, og når Relæ to er aktiv, vil strømmen flyde i den modsatte retning. Hvis ingen af eller begge relæer er aktive, vil der ikke flyde strøm til aktuatoren. For at opnå dette skal vi foretage følgende forbindelser.

Relæer til aktuatoren og strømforsyningen

  • +12V til NC1 (normalt lukket terminal på relæ et) (hvid ledning).
  • -12V til NO1 (normalt åben terminal på relæ et) (sort ledning).
  • NC1 til NC2 (blå jumperledning).
  • NO1 til NO2 (grøn jumperledning).
  • COMMON1 til aktuator (brun aktuatorledning).
  • COMMON2 til aktuator (blå aktuatorledning).

Arduino til tastaturet og relæmodulet

  • Tilslut ben 1-8 på tastaturet til ben 2-9 på Arduinoen (i nævnte rækkefølge).
  • Arduino Pin 10 til IN1 på relæmodul.
  • Arduino Pin 11 til IN2 på relæmodul.
  • Arduino 5V til VCC på relæmodul.
  • Arduino GND til GND på relæmodul.
  • Buzzeranode (længere ledning) til ben 12 (valgfrit).
  • Buzzerkatode (kortere ledning) til GND (valgfrit).
    Arduino to the Keypad and the Relay Module

     

    Kodning af dit projekt

    Nu hvor vi har foretaget alle vores forbindelser, er vi klar til koden. Formålet med denne kode er at læse input fra et tastatur, finde det korrekte 5-cifrede input og betjene vores relæer i overensstemmelse hermed. Der er også kode til en valgfri summer, der giver feedback. Hvis du ikke ønsker at bruge summeren, kan du simpelthen ikke tilslutte den og lade koden være, som den er. Hvis du skal bruge summerens pinkode til noget andet, skal du slette eller kommentere al den kode, der bruges til summer- eller "bip"-funktionerne.

    I koden nedenfor finder du kommentarer på næsten hver linje (lysegrå tekst efter "//"). Disse kommentarer beskriver, hvad der sker i skissen, samt hvilke ændringer du kan foretage. Vi vil også opdele et par vigtige afsnit her for en mere grundig forklaring.

    Brug vores Arduino mikrocontrollere til ubegrænsede styringsmuligheder for din aktuator!

    Opsætningskode

    I vores opsætningskode definerer vi vores buzzer- og relæbene som udgange. Buzzeren starter LAV, og relæerne starter HØJ. Dette vil betyde, at de alle er inaktive, når vi tænder vores Arduino første gang. Vi vil også køre funktionen "retract()" én gang, så Arduinoen kender aktuatorens korrekte tilstand.

     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
    }
    

    Tastaturkode

    Til denne skitse bruger vi Keypad.h-biblioteket. Dette bibliotek indeholder de funktioner, vi bruger til at modtage input fra vores tastatur. For at bruge dette bibliotek skal vi lave et todimensionelt array for at kortlægge tegnene på vores tastatur. Dette kan opnås ved først at definere antallet af rækker og antallet af kolonner på tastaturet. Derefter laver vi vores array med hvert tegn på tastaturet. Vores tastatur har fire rækker, fire kolonner og otte outputben. Der er et ben for hver række og et ben for hver kolonne. Vi viser dette i vores kode ved at lave et "rækkePin" array, der indeholder de digitale indgange, der er forbundet til rækkebenene, og et "colPins"array, der indeholder de digitale indgange, der er forbundet til kolonnebenene. Når vi trykker på en tast, forbinder vi en af rækkebenene med en af kolonnebenene. Hvis vi for eksempel trykker på knap 2, opretter vi et lukket kredsløb mellem rækkeben et og kolonneben to.

     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 

    Adgangskode

    I dette eksempel for sikker lineær aktuatorstyring er vores adgangskode 5 cifre lang, så vi definerer "Adgangskodelængde" som "6 inch. Dette skyldes, at vi har brug for et ekstra mellemrum for et null-tegn. Hvis du vil ændre adgangskodens længde, skal du blot ændre 6 til et tal, der er én større end din ønskede kodelængde. Derefter skal du ændre værdien af "Adgangskode" til de ønskede tegn (indstil som standard til "12345 inch).

    Det tegn, der er knyttet til hver trykt tast, gemmes i "I".nput" array. Når arrayet indeholder 5 tegn, sammenligner det værdien af "Input" og "Adgangskode" for at se, om vi har den korrekte adgangskode. Hvis værdierne er ens, vil vores kode fortælle Arduinoen, om den enten skal forlænge eller trække aktuatoren ind (afhængigt af aktuatorens aktuelle tilstand). Hvis adgangskoden er forkert, vil buzzer-pin'en blive høj tre gange hurtigt og derefter gå lav. I begge tilfælde vil "clearInput()" Funktionen " vil blive kaldt bagefter for at rydde input-arrayet og gøre plads til en ny post.

    Udvidelse og tilbagetrækning af kode

    Vi har to meget lignende funktioner i denne kode "void extend()" og "void retract()Når void extend() kaldes, vil den skrive Relæ Et lavt, hvilket gør det aktivt. Dette vil lukke et kredsløb og påføre en positiv spænding på aktuatoren. Relæet vil forblive aktivt i den tid, der er tildelt til “const int forlængelsestid". (standardindstillet til 25.000 millisekunder). Funktionen void retract() gør præcis det samme, bortset fra at den bruger relæ to til at vende spændingen i stedet for relæ et.

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

    Sidste hånd

    Når vi har foretaget alle vores forbindelser og uploadet vores kode, burde vi have et funktionelt adgangskodebeskyttet aktuatorstyringssystem. Hvis du har problemer, når du konfigurerer det første gang, kan du prøve at bruge seriel overvågningsværktøjet i Arduino IDE. Dette kan være yderst nyttigt til at afgøre, om dine problemer skyldes kode, ledninger eller defekte komponenter.

    Denne kode kan også ændres ud over blot at ændre adgangskoden. Du kan overveje at udskifte dit relækort med et MegaMoto-skjold, så du kan have hastighedskontrol eller bruge en aktuator med halleffektfeedback til positionskontrol.

    Vi håber, at denne artikel var nyttig! Hvis du har spørgsmål om denne, andre fjernbetjente lineære aktuatorer, eller ønsker at dele dit projekt med os, er du velkommen til at kontakte os. ring eller send os en e-mail.