Hur man styr en ställdon med en knappsats

Hur man styr en ställdon med en knappsats

Josh Nigh
Josh Nigh
PA Engineer

Ibland behöver våra projekt extra säkerhet. Detta kan vara fallet i en mängd olika tillämpningar, såsom dörrlåsmekanismer, förebyggande av osäker eller obehörig användning av maskiner eller att skaffa ännu mer nischade rekvisita för escape rooms. I den här artikeln går vi igenom en montering av en knappsatsställdon och går igenom hur du kan lösenordsskydda driften av ditt linjära ställdon.

Här är vad vi kommer att använda:

Anslutning av din ställdon

Först börjar vi med kablarna. För att kunna förlänga och dra in ditt ställdon behöver vi använda båda kanalerna på vår 2-kanaliga relämodul. På så sätt, när Relä ett är aktiv, kommer strömmen att flyta i en riktning och när Stafett två är aktiv kommer strömmen att flyta i motsatt riktning. Om ingetdera eller båda reläerna är aktiva kommer ingen ström att flyta till ställdonet. För att åstadkomma detta behöver vi göra följande anslutningar.

Reläer till ställdonet och strömförsörjningen

  • +12V till NC1 (normalt sluten terminal på relä ett) (vit kabel).
  • -12V till NO1 (normalt öppen pol på relä ett) (svart kabel).
  • NC1 till NC2 (blå överkopplingskabel).
  • NO1 till NO2 (grön bygelkabel).
  • COMMON1 till ställdon (brun ställdonskabel).
  • COMMON2 till ställdon (blå ställdonskabel).

Arduino till knappsatsen och relämodulen

  • Anslut stift 1-8 på knappsatsen till stift 2-9 på Arduino (i den ordningen).
  • Arduino pin 10 till IN1 på relämodulen.
  • Arduino pin 11 till IN2 på relämodulen.
  • Arduino 5V till VCC på relämodul.
  • Arduino GND till GND på relämodul.
  • Summeranod (längre ledning) till stift 12 (valfritt).
  • Summerkatod (kortare ledning) till GND (valfritt).
    Arduino to the Keypad and the Relay Module

     

    Kodning av ditt projekt

    Nu när vi har gjort alla våra anslutningar är vi redo för koden. Syftet med den här koden är att läsa ingångarna från en knappsats, leta efter rätt 5-siffrig ingång och styra våra reläer därefter. Det finns också kod för en valfri summer för att ge feedback. Om du inte vill använda summern kan du helt enkelt inte ansluta den och lämna koden som den är. Om du behöver använda summerns PIN-kod till något annat, radera eller kommentera bort all kod som används för summer- eller "pip"-funktionerna.

    I koden nedan hittar du kommentarer på nästan varje rad (ljusgrå text som följer "//"). Dessa kommentarer beskriver vad som händer i skissen, samt vilka ändringar du kan göra. Vi kommer också att dela upp några viktiga avsnitt här för en mer grundlig förklaring.

    Använd våra Arduino-mikrokontroller för obegränsade styrmöjligheter för ditt ställdon!

    Installationskod

    I vår installationskod kommer vi att definiera våra summer- och reläpinnar som utgångar. Summern börjar LÅG och reläerna börjar HÖG. Detta gör att de alla är inaktiva när vi först slår på vår Arduino. Vi kommer också att köra funktionen "retract()" en gång så att Arduino känner till ställdonets korrekta tillstånd.

     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
    }
    

    Knappsatskod

    För den här skissen använder vi biblioteket Keypad.h. Detta bibliotek innehåller de funktioner vi använder för att ta emot indata från vårt tangentbord. För att kunna använda biblioteket behöver vi skapa en tvådimensionell array för att kartlägga tecknen på vårt tangentbord. Detta kan uppnås genom att först definiera antalet rader och antalet kolumner som finns på tangentbordet. Sedan skapar vi vår array med varje tecken på tangentbordet. Vårt tangentbord har fyra rader, fyra kolumner och åtta utgångsstift. Det finns en stift för varje rad och en stift för varje kolumn. Vi visar detta i vår kod genom att skapa ett "radPinnar” array som innehåller de digitala ingångarna anslutna till radstiften och en ”kolumner”-matris som innehåller de digitala ingångarna som är anslutna till kolumnpinnarna. När vi trycker på en tangent ansluter vi en av radpinnarna till en av kolumnpinnarna. Om vi till exempel trycker på knapp 2 skapar vi en sluten krets mellan radpinn ett och kolumnpinn två.

     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 

    Lösenordskod

    I det här exemplet för säker linjär ställdonsstyrning är vårt lösenord 5 siffror långt, så vi definierar "Lösenordslängd” som ”6”. Detta beror på att vi behöver ett extra mellanslag för ett nulltecken. Om du vill ändra lösenkodens längd, ändra helt enkelt 6 till ett nummer som är ett större än din önskade kodlängd. Ändra sedan värdet på ”Lösenord” till vilka tecken du vill (standardinställningen är ”12345”).

    Tecknet som är kopplat till varje tangenttryckning lagras i "I"-fältet.ingång”-arrayen. När arrayen innehåller 5 tecken jämför den värdet på “Input" och "Lösenord” för att se om vi har rätt lösenord. Om värdena är lika, kommer vår kod att be Arduino att antingen förlänga eller dra in ställdonet (beroende på ställdonets aktuella tillstånd). Om lösenordet är felaktigt kommer summerns pin att gå högt tre gånger snabbt och sedan gå lågt. I båda fallen kommer “clearInput()”-funktionen kommer att anropas efteråt för att rensa inmatningsarrayen och göra plats för en ny post.

    Förlänga och dra tillbaka kod

    Vi har två väldigt liknande funktioner i den här koden "void extend()" och "void retract()”. När void extend() anropas kommer det att skriva Relä Ett lågt, vilket gör det aktivt. Detta kommer att sluta en krets och applicera en positiv spänning på ställdonet. Reläet kommer att förbli aktivt under den tid som tilldelats “const int förlängTid”. (inställd på 25 000 millisekunder som standard). Funktionen void retract() gör exakt samma sak, förutom att den använder relä två för att reversera spänningen istället för relä ett.

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

    Sista handen

    När vi har gjort alla våra anslutningar och laddat upp vår kod, borde vi ha ett fungerande lösenordsskyddat styrsystem för ställdon. Om du har problem när du först installerar det, försök att använda seriell övervakningsverktyg i Arduino IDE. Detta kan vara till stor hjälp för att avgöra om dina problem orsakas av kod, kablage eller felaktiga komponenter.

    Denna kod kan också modifieras utöver att bara ändra lösenordet. Du kanske vill överväga att byta ut ditt reläkort mot en MegaMoto-skärm så att du kan ha hastighetskontroll eller använda ett ställdon med halleffektåterkoppling för positionskontroll.

    Vi hoppas att den här artikeln var hjälpsam! Om du har några frågor om detta, andra fjärrstyrda linjära ställdon, eller vill dela ditt projekt med oss, är du välkommen att kontakta oss. ring eller mejla oss.