Come controllare un attuatore con una tastiera

Come controllare un attuatore tramite tastiera

A volte i nostri progetti necessitano di una maggiore sicurezza. Questo può accadere in diverse applicazioni, come ad esempio nei meccanismi di chiusura delle porte, nella prevenzione dell'uso improprio o non autorizzato di macchinari o, in casi più specifici, negli accessori per escape room. In questo articolo esamineremo un attuatore con tastiera e spiegheremo come proteggere con password il funzionamento del vostro attuatore lineare.

Ecco cosa useremo:

Cablaggio dell'attuatore

Innanzitutto, inizieremo con il cablaggio. Per poter estendere e ritrarre l'attuatore, dovremo utilizzare entrambi i canali del nostro modulo relè a 2 canali. In questo modo, quando Relay One è attivo, la corrente scorrerà in una direzione e quando Relay Due Se uno dei relè è attivo, la corrente scorrerà nella direzione opposta. Se nessuno o entrambi i relè sono attivi, non scorrerà corrente verso l'attuatore. Per ottenere questo risultato, dovremo effettuare i seguenti collegamenti.

Relè all'attuatore e all'alimentatore

  • +12V a NC1 (terminale normalmente chiuso sul relè uno) (cavo bianco).
  • -12V a NO1 (terminale normalmente aperto sul relè uno) (cavo nero).
  • Da NC1 a NC2 (cavo di collegamento blu).
  • Da NO1 a NO2 (cavo di collegamento verde).
  • COMMON1 all'attuatore (cavo marrone dell'attuatore).
  • COMMON2 all'attuatore (cavo blu dell'attuatore).

Arduino collegato alla tastiera e al modulo relè.

  • Collega i pin da 1 a 8 della tastiera ai pin da 2 a 9 di Arduino (in quest'ordine).
  • Collegare il pin 10 di Arduino al pin IN1 del modulo relè.
  • Collegare il pin 11 di Arduino all'ingresso IN2 del modulo relè.
  • Arduino alimenta il modulo relè con 5V e VCC.
  • Collegare il GND di Arduino al GND del modulo relè.
  • Anodo del buzzer (cavo più lungo) al pin 12 (opzionale).
  • Catodo del cicalino (cavo più corto) a GND (opzionale).
    Arduino to the Keypad and the Relay Module

     

    Codifica il tuo progetto

    Ora che abbiamo effettuato tutti i collegamenti, siamo pronti per il codice. Lo scopo di questo codice è leggere gli input da una tastiera, cercare l'input corretto di 5 cifre e azionare i relè di conseguenza. È presente anche del codice per un buzzer opzionale per fornire un feedback. Se non si desidera utilizzare il buzzer, è sufficiente non collegarlo e lasciare il codice così com'è. Se è necessario utilizzare il pin del buzzer per qualcos'altro, eliminare o commentare tutto il codice utilizzato per le funzioni del buzzer o del "beep".

    Nel codice seguente, troverai commenti su quasi ogni riga (testo grigio chiaro che segue "//"). Questi commenti descriveranno cosa sta succedendo nello sketch, nonché le modifiche che puoi apportare. Analizzeremo anche alcune sezioni importanti per una spiegazione più dettagliata.

    Utilizza i nostri microcontrollori Arduino per infinite possibilità di controllo del tuo attuatore!

    Codice di configurazione

    Nel nostro codice di configurazione, definiremo i pin del buzzer e del relè come uscite. Il buzzer sarà inizialmente a livello BASSO e i relè a livello ALTO. Questo farà sì che siano tutti inattivi quando accendiamo per la prima volta l'Arduino. Eseguiremo anche la funzione "retract()" una volta, in modo che l'Arduino conosca lo stato corretto dell'attuatore.

     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
    }
    

    Codice tastierino numerico

    Per questo sketch stiamo usando la libreria Keypad.h. Questa libreria contiene le funzioni che usiamo per ricevere input dalla nostra tastiera. Per usare questa libreria, dobbiamo creare un array bidimensionale per mappare i caratteri della nostra tastiera. Questo può essere ottenuto definendo, in primo luogo, il numero di righe e il numero di colonne presenti sulla tastiera. Quindi, creiamo il nostro array con ogni carattere presente sulla tastiera. La nostra tastiera ha quattro righe, quattro colonne e otto pin di output. C'è un pin per ogni riga e un pin per ogni colonna. Lo mostriamo nel nostro codice creando un "perni di fila" array che contiene gli ingressi digitali collegati ai pin di riga e un "colPins" array che contiene gli ingressi digitali collegati ai pin di colonna. Quando premiamo un tasto, colleghiamo uno dei pin di riga con uno dei pin di colonna. Ad esempio, se premiamo il tasto 2, creiamo un circuito chiuso tra il pin di riga uno e il pin di colonna due.

     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 

    Codice di accesso

    In questo esempio per il controllo sicuro dell'attuatore lineare, il nostro codice di accesso è lungo 5 cifre, quindi definiamo "Lunghezza del codice di accesso" come "6 pollici. Questo perché abbiamo bisogno di uno spazio extra per un carattere nullo. Se vuoi cambiare la lunghezza del codice di accesso, cambia semplicemente il 6 con un numero maggiore di uno rispetto alla lunghezza del codice desiderata. Dopodiché, cambia il valore di "Codice di accesso" con i caratteri che preferisci (impostato su "12345 pollici per impostazione predefinita).

    Il carattere associato a ciascun tasto premuto verrà memorizzato nel “Iinput" array. Una volta che quell'array contiene 5 caratteri, confronterà il valore di "Ingresso" E "Codice di accesso" per verificare se abbiamo il codice di accesso corretto. Se i valori sono uguali, il nostro codice dirà ad Arduino di estendere o ritrarre l'attuatore (a seconda dello stato attuale dell'attuatore). Se il codice di accesso non è corretto, il pin del buzzer andrà alto tre volte rapidamente e poi basso. In entrambi i casi, il "clearInput()Successivamente verrà chiamata la funzione per svuotare l'array Input e fare spazio a una nuova voce.

    Estensione e retrazione del codice

    In questo codice abbiamo due funzioni molto simili "void extend()" E "void retract()“Quando viene chiamata, la funzione void extend() scriverà il relè Uno a livello basso, rendendolo attivo. Questo chiuderà un circuito e applicherà una tensione positiva all'attuatore. Il relè rimarrà attivo per il tempo assegnato aconst int extendTime”. (impostato a 25.000 millisecondi per impostazione predefinita). La funzione void retract() farà esattamente la stessa cosa, tranne per il fatto che userà il relè due per invertire la tensione invece del relè uno.

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

    Ritocchi finali

    Dopo aver effettuato tutti i collegamenti e caricato il codice, dovremmo avere un sistema di controllo degli attuatori funzionante e protetto da password. Se riscontri problemi durante la configurazione iniziale, prova a utilizzare lo strumento di monitoraggio seriale nell'IDE di Arduino. Questo può essere estremamente utile per determinare se i problemi sono causati dal codice, dal cablaggio o da componenti difettosi.

    Questo codice può essere modificato anche al di là della semplice sostituzione del codice di accesso. Potresti valutare la possibilità di sostituire la tua scheda relè con uno shield MegaMoto per poter controllare la velocità, oppure di utilizzare un attuatore con feedback a effetto Hall per il controllo della posizione.

    Speriamo che questo articolo sia stato utile! Se avete domande su questo, su qualsiasi altro attuatore lineare telecomandato o se volete condividere il vostro progetto con noi, non esitate a contattarci. chiamaci o inviaci un'e-mail.