How to Control an Actuator with a Keypad

Wie man einen Aktuator mit einer Tastatur steuert

Josh Nigh
Josh Nigh
PA Engineer

Manchmal benötigen unsere Projekte zusätzliche Sicherheit. Dies kann in einer Vielzahl von Anwendungen der Fall sein, wie z.B. bei Türschlossmechanismen, der Verhinderung unsicherer oder unbefugter Nutzung von Maschinen oder sogar bei Nischenanwendungen wie Escape-Room-Requisiten. In diesem Artikel führen wir Sie durch den Zusammenbau eines Tastaturaktors und erläutern, wie Sie den Betrieb Ihres Linearantriebs mit einem Passwort schützen können.

Das werden wir verwenden:

Verdrahtung Ihres Aktuators

Zuerst beginnen wir mit der Verdrahtung. Um Ihren Aktuator ausfahren und einfahren zu können, müssen wir beide Kanäle unseres 2-Kanal-Relaismoduls verwenden. Auf diese Weise fließt der Strom in eine Richtung, wenn Relais Eins aktiv ist, und in die entgegengesetzte Richtung, wenn Relais Zwei aktiv ist. Wenn keines oder beide Relais aktiv sind, fließt kein Strom zum Aktuator. Um dies zu erreichen, müssen wir die folgenden Verbindungen herstellen.

Relais zum Aktuator und zur Stromversorgung

  • +12V zu NC1 (normalerweise geschlossener Anschluss am Relais Eins) (weißer Draht).
  • -12V zu NO1 (normalerweise offener Anschluss am Relais Eins) (schwarzer Draht).
  • NC1 zu NC2 (blauer Jumperdraht).
  • NO1 zu NO2 (grüner Jumperdraht).
  • COMMON1 zum Aktuator (brauner Draht des Aktuators).
  • COMMON2 zum Aktuator (blauer Draht des Aktuators).

Arduino zur Tastatur und zum Relaismodul

  • Verbinden Sie die Pins 1-8 der Tastatur mit den Pins 2-9 des Arduino (in dieser Reihenfolge).
  • Arduino Pin 10 zu IN1 am Relaismodul.
  • Arduino Pin 11 zu IN2 am Relaismodul.
  • Arduino 5V zu VCC am Relaismodul.
  • Arduino GND zu GND am Relaismodul.
  • Summton-Anode (längerer Draht) zu Pin 12 (optional).
  • Summton-Kathode (kürzerer Draht) zu GND (optional).
    Arduino zur Tastatur und zum Relaismodul

     

    Programmierung Ihres Projekts

    Jetzt, wo wir alle Verbindungen hergestellt haben, sind wir bereit für den Code. Der Zweck dieses Codes besteht darin, die Eingaben von einer Tastatur zu lesen, nach der richtigen 5-stelligen Eingabe zu suchen und unsere Relais entsprechend zu steuern. Es gibt auch einen Code für einen optionalen Summton, um Rückmeldungen zu geben. Wenn Sie den Summton nicht verwenden möchten, können Sie ihn einfach nicht anschließen und den Code so belassen, wie er ist. Wenn Sie den Summton-Pin für etwas anderes verwenden müssen, löschen oder kommentieren Sie einfach den gesamten Code, der für die Funktionen des Summtons oder „Piepen“ verwendet wird.

    Im folgenden Code finden Sie Kommentare zu fast jeder Zeile (hellgrauer Text, der auf „//“ folgt). Diese Kommentare beschreiben, was im Sketch passiert, sowie Änderungen, die Sie vornehmen können. Wir werden auch einige wichtige Abschnitte hier für eine detailliertere Erklärung aufschlüsseln.

    [cta-inhalt]

    Verwenden Sie unsere Arduino-Mikrocontroller für unbegrenzte Steuerungsoptionen Ihres Aktuators!

    Durchsuchen Sie Arduino

    Setup-Code

    In unserem Setup-Code definieren wir unseren Summton und die Relais-Pins als Ausgänge. Der Summton wird auf LOW starten und die Relais werden auf HIGH starten. Dies führt dazu, dass sie alle inaktiv sind, wenn wir unseren Arduino zum ersten Mal mit Strom versorgen. Wir werden auch die Funktion „retract()“ einmal ausführen, damit der Arduino den richtigen Zustand des Aktuators kennt.

     void setup() //wird einmal beim Start ausgeführt
     {
     digitalWrite(buzzer, LOW);//deaktiviert den Summton
     digitalWrite(relay1,HIGH);//deaktiviert relay1 
    digitalWrite(relay2,HIGH);//deaktiviert relay2
     for(int i=10;i<14;i++)
     {
     pinMode(i,OUTPUT);//setzt die Pins 10 - 13 als Ausgänge
     }
    
    
     Serial.begin(9600);//Startet den seriellen Monitor mit 9600 Baud (nur zur Fehlersuche)
     retract();//zieht den Aktuator beim Start zurück, wenn er nicht bereits ist. Kommentieren Sie dies aus, wenn Sie nicht möchten, dass der Aktuator beim Start zurückgezogen wird
     Serial.println("READY");//informiert uns, dass der serielle Monitor läuft
     }
    

    Tastatur-Code

    Für diesen Sketch verwenden wir die Bibliothek Keypad.h. Diese Bibliothek enthält die Funktionen, die wir verwenden, um Eingaben von unserer Tastatur zu empfangen. Um diese Bibliothek zu verwenden, müssen wir ein zweidimensionales Array erstellen, um die Zeichen unserer Tastatur abzubilden. Dies kann erreicht werden, indem wir zuerst die Anzahl der Zeilen und die Anzahl der Spalten auf der Tastatur definieren. Dann erstellen wir unser Array mit jedem Zeichen auf der Tastatur. Unsere Tastatur hat vier Zeilen, vier Spalten und acht Ausgangspins. Es gibt einen Pin für jede Zeile und einen Pin für jede Spalte. Wir zeigen dies in unserem Code, indem wir ein „rowPins“-Array erstellen, das die digitalen Eingänge enthält, die mit den Zeilenpins verbunden sind, und ein „colPins“-Array, das die digitalen Eingänge enthält, die mit den Spaltenpins verbunden sind. Wenn wir eine Taste drücken, verbinden wir einen der Zeilenpins mit einem der Spaltenpins. Wenn wir beispielsweise die Taste 2 drücken, erstellen wir einen geschlossenen Stromkreis zwischen dem Zeilenpin eins und dem Spaltenpin zwei.

     char customKey; //Zeichen, die durch Drücken der Tastatur eingegeben werden
    const byte ROWS = 4; //vier Zeilen
    const byte COLS = 4; //vier Spalten 
    
    char keys[ROWS][COLS] = { //layouten Sie hier Ihre "Tastenkarten"
     {'1', '2', '3', 'A'},
     {'4', '5', '6', 'B'},
     {'7', '8', '9', 'C'},
     {'*', '0', '#', 'D'}
    };
    byte rowPins[ROWS] = {2, 3, 4, 5}; //verbinden mit den Zeilenpins der Tastatur
    byte colPins[COLS] = {6, 7, 8, 9}; //verbinden mit den Spaltenpins der Tastatur
    Keypad customKeypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS); //initialisiert eine Instanz der Klasse NewKeypad 

    Passcode-Code

    In diesem Beispiel für die sichere Steuerung des Linearantriebs ist unser Passwort 5-stellig, daher definieren wir „Passcode_Length“ als „6“. Dies liegt daran, dass wir einen zusätzlichen Platz für ein Nullzeichen benötigen. Wenn Sie die Länge des Passworts ändern möchten, ändern Sie einfach die 6 in eine Zahl, die um eins größer ist als die gewünschte Passwortlänge. Danach ändern Sie den Wert von „Passcode“ in die Zeichen, die Sie möchten (standardmäßig auf „12345“ gesetzt).

    Das Zeichen, das mit jeder gedrückten Taste verbunden ist, wird im „Input“-Array gespeichert. Sobald dieses Array 5 Zeichen enthält, vergleicht es den Wert von „Input“ und „Passcode“, um zu sehen, ob wir das richtige Passwort haben. Wenn die Werte gleich sind, wird unser Code dem Arduino sagen, ob der Aktuator ausgefahren oder eingefahren werden soll (je nach aktuellem Zustand des Aktuators). Wenn das Passwort falsch ist, wird der Summton-Pin dreimal schnell hoch und dann niedrig gehen. In jedem Fall wird danach die Funktion „clearInput()“ aufgerufen, um das Eingangsarray zu löschen und Platz für eine neue Eingabe zu schaffen.

    Ausfahr- und Einfahr-Code

    Wir haben zwei sehr ähnliche Funktionen in diesem Code „void extend()“ und „void retract()“. Wenn sie aufgerufen werden, wird void extend() Relay Eins auf niedrig schreiben und es aktiv machen. Dies schließt einen Stromkreis und legt eine positive Spannung am Aktuator an. Das Relais bleibt für die Zeit aktiv, die „const int extendTime“ zugewiesen ist. (standardmäßig auf 25.000 Millisekunden eingestellt). Die Funktion void retract() macht genau dasselbe, verwendet jedoch das Relais zwei, um die Spannung umzukehren, anstatt das Relais eins.

    void extend()//Aktuator ausfahren
    {
     longBeep();
     Serial.println("AUSFAHREN...");
     digitalWrite(relay2,HIGH);//stellt sicher, dass relay2 nicht aktiv ist
     digitalWrite(relay1,LOW);//aktiviert relay1
     delay(extendTime);
     digitalWrite(relay1,HIGH);//deaktiviert relay1
     Serial.println("AUSFAHREN BEENDEN");
     extended = true; //informiert den Arduino, dass der Aktuator ausgefahren ist 
     longBeep();
    }
    
    void retract()//Aktuator einfahren
    {
     longBeep();
     Serial.println("EINFACHEN..."); 
    digitalWrite(relay1,HIGH);//stellt sicher, dass relay1 nicht aktiv ist
     digitalWrite(relay2,LOW);//aktiviert relay2
     delay(retractTime);
     digitalWrite(relay2,HIGH);//deaktiviert relay2
     Serial.println("EINFACHEN BEENDEN");
     extended = false; //informiert den Arduino, dass der Aktuator eingefahren ist
     longBeep();
    }

    Letzte Details

    Sobald wir alle unsere Verbindungen hergestellt und unseren Code hochgeladen haben, sollten wir ein funktionierendes, passwortgeschütztes Aktuatorsteuerungssystem haben. Wenn Sie beim ersten Einrichten Probleme haben, versuchen Sie, das serielle Monitor-Tool in der Arduino IDE zu verwenden. Dies kann äußerst hilfreich sein, um festzustellen, ob Ihre Probleme durch Code, Verkabelung oder fehlerhafte Komponenten verursacht werden.

    Dieser Code kann auch über das Ändern des Passworts hinaus modifiziert werden. Sie möchten möglicherweise in Betracht ziehen, Ihr Relais-Board gegen ein MegaMoto-Shield auszutauschen, damit Sie Geschwindigkeitskontrolle haben oder einen Aktuator mit Hall-Effekt-Rückmeldung für die Positionskontrolle verwenden können.

    Wir hoffen, dass dieser Artikel hilfreich war! Wenn Sie Fragen dazu haben, zu einem anderen fernbedienten Linearantrieb oder Ihr Projekt mit uns teilen möchten, zögern Sie bitte nicht, uns anzurufen oder eine E-Mail zu senden.