Sommario:

Sensore ad effetto Hall Arduino con interruzioni: 4 passaggi
Sensore ad effetto Hall Arduino con interruzioni: 4 passaggi

Video: Sensore ad effetto Hall Arduino con interruzioni: 4 passaggi

Video: Sensore ad effetto Hall Arduino con interruzioni: 4 passaggi
Video: Arduino: Sensore REED. Passaggio a livello con doppio sensore 2024, Novembre
Anonim
Image
Image
Che cos'è un sensore ad effetto Hall?
Che cos'è un sensore ad effetto Hall?

Ciao a tutti, Oggi ti mostrerò come collegare un sensore ad effetto hall a un Arduino e usarlo con un interrupt.

Strumenti e materiali utilizzati nel video (link affiliati): Arduino Uno:

Sensori ad effetto Hall:

Resistori assortiti:

Passaggio 1: cos'è un sensore ad effetto Hall?

Che cos'è un sensore ad effetto Hall?
Che cos'è un sensore ad effetto Hall?
Che cos'è un sensore ad effetto Hall?
Che cos'è un sensore ad effetto Hall?
Che cos'è un sensore ad effetto Hall?
Che cos'è un sensore ad effetto Hall?

Un sensore ad effetto Hall è un dispositivo utilizzato per misurare l'ampiezza di un campo magnetico. La sua tensione di uscita è direttamente proporzionale all'intensità del campo magnetico che lo attraversa.

I sensori ad effetto Hall vengono utilizzati per applicazioni di rilevamento di prossimità, posizionamento, rilevamento della velocità e rilevamento della corrente.

Quello con cui lavorerò oggi è etichettato come 3144, che è un interruttore a effetto hall utilizzato principalmente per applicazioni automobilistiche e ad alta temperatura. La sua uscita è alta per impostazione predefinita e diventa bassa una volta in presenza di un campo magnetico.

Il sensore ha 3 pin, VCC, massa e uscita. Puoi identificarli in questo ordine se tieni il sensore con le etichette verso di te. VCC è a sinistra e l'output è a destra. Per prevenire qualsiasi deriva di tensione, viene utilizzato un resistore da 10k tra VCC e l'uscita in una configurazione pull-up.

Passaggio 2: cos'è un'interruzione?

Che cos'è un'interruzione?
Che cos'è un'interruzione?
Che cos'è un'interruzione?
Che cos'è un'interruzione?

Per collegare il sensore su Arduino, utilizzeremo una funzionalità semplice ma molto potente chiamata Interrupt. Un lavoro di interruzione consiste nell'assicurarsi che il processore risponda rapidamente a eventi importanti. Quando viene rilevato un certo segnale, un Interrupt (come suggerisce il nome) interrompe qualsiasi cosa stia facendo il processore ed esegue un codice progettato per reagire a qualsiasi stimolo esterno venga inviato all'Arduino. Una volta che il codice si è concluso, il processore torna a ciò che stava facendo originariamente come se nulla fosse!

La cosa fantastica di questo è che struttura il tuo sistema per reagire in modo rapido ed efficiente a eventi importanti che non sono facili da prevedere nel software. Soprattutto, libera il tuo processore per fare altre cose mentre è in attesa che si presenti un evento.

L'Arduino Uno ha due pin che possiamo usare come Interrupt, pin 2 e 3. La funzione che usiamo per registrare il pin come interrupt si chiama attachInterrupt dove come primo parametro inviamo il pin da utilizzare, secondo parametro è il nome della funzione che vogliamo chiamare una volta che viene rilevato un interrupt e come terzo parametro inviamo nella modalità in cui vogliamo che l'interrupt funzioni. C'è un collegamento nella descrizione del video al riferimento completo per questa funzione.

Passaggio 3: connessioni e codice

Connessioni e codice
Connessioni e codice
Connessioni e codice
Connessioni e codice
Connessioni e codice
Connessioni e codice

Nel nostro esempio, colleghiamo il sensore degli effetti hall al pin 2 di Arduino. All'inizio dello sketch, definiamo le variabili per il numero di pin del LED integrato, il pin di interrupt e una variabile di byte che utilizzeremo per modificare tramite l'interrupt. È fondamentale contrassegnarlo come volatile in modo che il compilatore possa sapere che viene modificato al di fuori del flusso del programma principale attraverso l'interrupt.

Nella funzione di setup, specifichiamo prima le modalità sui pin utilizzati e poi alleghiamo l'interrupt come spiegato in precedenza. Un'altra funzione che usiamo qui è digitalPinToInterrupt che, come suggerisce il nome, traduce il numero di pin nel numero di interrupt.

Nel metodo principale, scriviamo semplicemente la variabile di stato sul pin LED e aggiungiamo un ritardo molto piccolo in modo che il processore possa avere il tempo di funzionare correttamente.

Dove abbiamo attaccato l'interrupt, abbiamo specificato blink come secondo parametro e questo è il nome della funzione da chiamare. All'interno invertiamo semplicemente il valore dello stato.

Il terzo parametro della funzione attachIntertupt è la modalità in cui opera. Quando lo abbiamo come CHANGE, la funzione di lampeggio verrà eseguita ogni volta che lo stato di interruzione cambia, quindi verrà chiamata una volta una volta avvicinato il magnete al sensore e attivata nuovamente una volta rimosso. In questo modo, il LED è acceso mentre teniamo il magnete vicino al sensore.

Se ora cambiamo la modalità in RISING, la funzione di lampeggio verrà attivata solo quando viene visto un fronte di salita del segnale sul pin di interruzione. Ora ogni volta che avviciniamo il magnete al sensore, il LED si spegne o si accende, quindi abbiamo praticamente creato un interruttore magnetico.

La modalità finale che proveremo è LOW. Con esso, quando il magnete è vicino, la funzione di lampeggio sarà costantemente attivata e il LED lampeggerà, avendo il suo stato invertito per tutto il tempo. Quando rimuoviamo il magnete, è davvero imprevedibile come andrà a finire lo stato in quanto dipende dai tempi. Tuttavia, questa modalità è davvero utile se abbiamo bisogno di sapere per quanto tempo è stato premuto un pulsante, poiché possiamo utilizzare le funzioni di temporizzazione per determinarlo.

Passaggio 4: ulteriori azioni

Ulteriori azioni
Ulteriori azioni

Gli interrupt sono un modo semplice per rendere il sistema più reattivo alle attività sensibili al tempo. Hanno anche l'ulteriore vantaggio di liberare il tuo `loop()` principale per concentrarti su alcune attività primarie nel sistema. (Trovo che questo tenda a rendere il mio codice un po' più organizzato quando li uso - è più facile vedere per cosa è stato progettato il pezzo principale di codice, mentre gli interrupt gestiscono eventi periodici.) L'esempio mostrato qui è quasi il più caso di base per l'utilizzo di un interrupt: è possibile utilizzarli per leggere un dispositivo I2C, inviare o ricevere dati wireless o persino avviare o arrestare un motore.

Se hai un uso interessante di un sensore di interruzione o di effetti hall, assicurati di farmelo sapere nei commenti, metti mi piace e condividi questo Instructable e non dimenticare di iscriverti al mio canale YouTube per tutorial e progetti più fantastici nel futuro.

Saluti e grazie per la visione!

Consigliato: