Cuprins:

Senzor de efect Arduino Hall cu întreruperi: 4 pași
Senzor de efect Arduino Hall cu întreruperi: 4 pași

Video: Senzor de efect Arduino Hall cu întreruperi: 4 pași

Video: Senzor de efect Arduino Hall cu întreruperi: 4 pași
Video: How to use Allegro ACS712 AC/DC Current Sensor with Arduino 2024, Noiembrie
Anonim
Image
Image
Ce este un senzor de efect Hall?
Ce este un senzor de efect Hall?

Buna tuturor, Astăzi vă voi arăta cum puteți conecta un senzor de efect de hală la un Arduino și îl puteți utiliza cu o întrerupere.

Instrumente și materiale utilizate în videoclip (linkuri de afiliere): Arduino Uno:

Senzori de efect Hall:

Rezistoare asortate:

Pasul 1: Ce este un senzor de efect Hall?

Ce este un senzor de efect Hall?
Ce este un senzor de efect Hall?
Ce este un senzor de efect Hall?
Ce este un senzor de efect Hall?
Ce este un senzor de efect Hall?
Ce este un senzor de efect Hall?

Un senzor de efect Hall este un dispozitiv care este utilizat pentru a măsura magnitudinea unui câmp magnetic. Tensiunea sa de ieșire este direct proporțională cu intensitatea câmpului magnetic prin ea.

Senzorii de efect Hall sunt utilizați pentru aplicații de detectare a proximității, poziționare, detectare a vitezei și detectare a curentului.

Cel cu care voi lucra astăzi este etichetat ca 3144, care este un comutator cu efect de hală utilizat în principal pentru aplicații cu temperatură ridicată și automobile. Ieșirea sa este ridicată în mod implicit și scade o dată în prezența unui câmp magnetic.

Senzorul are 3 pini, VCC, masă și ieșire. Le puteți identifica în această ordine dacă țineți senzorul cu etichetele spre dvs. VCC este în stânga, iar ieșirea este în partea dreaptă. Pentru a preveni orice derivație de tensiune, un rezistor de 10k este utilizat între VCC și ieșire într-o configurație pull-up.

Pasul 2: Ce este o întrerupere?

Ce este o întrerupere?
Ce este o întrerupere?
Ce este o întrerupere?
Ce este o întrerupere?

Pentru a conecta senzorul de pe Arduino, vom folosi o funcție simplă, dar foarte puternică numită Întrerupere. O sarcină de întrerupere este de a vă asigura că procesorul răspunde rapid la evenimente importante. Când este detectat un anumit semnal, o întrerupere (așa cum sugerează și numele) întrerupe orice face procesorul și execută un cod conceput pentru a reacționa la orice stimul extern care este alimentat către Arduino. Odată ce codul a fost încheiat, procesorul revine la ceea ce făcea inițial de parcă nu s-ar fi întâmplat nimic!

Ce este minunat în acest sens este că vă structurează sistemul pentru a reacționa rapid și eficient la evenimente importante care nu sunt ușor de anticipat în software. Cel mai bun lucru este că vă eliberează procesorul pentru a face alte lucruri în timp ce așteaptă să apară un eveniment.

Arduino Uno are doi pini pe care îi putem folosi ca întreruperi, pinul 2 și 3. Funcția pe care o folosim pentru a înregistra pinul ca întrerupere se numește attachInterrupt unde, ca prim parametru, trimitem pinul care va fi utilizat, al doilea parametru este numele funcției pe care dorim să o apelăm odată detectată o întrerupere și ca al treilea parametru îl trimitem în modul în care dorim să funcționeze întreruperea. În descrierea videoclipului există un link către referința completă pentru această funcție.

Pasul 3: Conexiuni și cod

Conexiuni și cod
Conexiuni și cod
Conexiuni și cod
Conexiuni și cod
Conexiuni și cod
Conexiuni și cod

În exemplul nostru, conectăm senzorul de efecte hall la pinul 2 de pe Arduino. La începutul schiței, definim variabilele pentru numărul de pin al LED-ului încorporat, pinul de întrerupere, precum și o variabilă de octeți pe care o vom folosi pentru a o modifica prin întrerupere. Este crucial să îl marcăm ca fiind volatil, astfel încât compilatorul să poată ști că este modificat în afara fluxului principal al programului prin întrerupere.

În funcția de configurare, mai întâi specificăm modurile pe pinii utilizați și apoi atașăm întreruperea așa cum s-a explicat anterior. O altă funcție pe care o folosim aici este digitalPinToInterrupt care, după cum sugerează și numele, traduce numărul pinului la numărul de întrerupere.

În metoda principală, scriem doar variabila de stare pe pinul LED și adăugăm o întârziere foarte mică, astfel încât procesorul să aibă timp să funcționeze corect.

Unde am atașat întreruperea, am specificat clipirea ca al doilea parametru și acesta este numele funcției care trebuie apelată. Înăuntru inversăm valoarea de stare.

Al treilea parametru al funcției attachIntertupt este modul în care operează. Când îl avem ca CHANGE, funcția de clipire va fi executată de fiecare dată când starea de întrerupere se schimbă, așa că va fi apelată odată ce magnetul se apropie de senzor și se va declanșa din nou odată ce îl scoatem. În acest fel, LED-ul este aprins în timp ce ținem magnetul aproape de senzor.

Dacă acum schimbăm modul în RISING, funcția de clipire va fi declanșată numai odată ce o margine ascendentă a semnalului este văzută pe pinul de întrerupere. Acum, de fiecare dată când apropiem magnetul de senzor, LED-ul fie se stinge, fie se aprinde, așa că am făcut practic un comutator magnetic.

Modul final pe care îl vom încerca este LOW. Odată cu acesta, când magnetul este aproape, funcția de clipire va fi declanșată constant și LED-ul va pâlpâi, având starea inversată tot timpul. Când scoatem magnetul, este cu adevărat imprevizibil cum va ajunge starea, deoarece acest lucru depinde de sincronizare. Cu toate acestea, acest mod este foarte util dacă trebuie să știm cât timp a fost apăsat un buton, deoarece putem folosi funcțiile de sincronizare pentru a determina acest lucru.

Pasul 4: Acțiuni suplimentare

Actiunile urmatoare
Actiunile urmatoare

Întreruperile sunt un mod simplu de a face sistemul dvs. mai receptiv la sarcinile sensibile la timp. De asemenea, au avantajul suplimentar de a vă elibera principalul `loop ()` pentru a vă concentra asupra unor sarcini principale din sistem. (Am constatat că acest lucru tinde să-mi facă codul puțin mai organizat atunci când le folosesc - este mai ușor să văd pentru ce a fost concepută partea principală de cod, în timp ce întreruperile gestionează evenimente periodice.) Exemplul prezentat aici este aproape cel mai carcasă de bază pentru utilizarea unei întreruperi - le puteți utiliza pentru citirea unui dispozitiv I2C, trimiterea sau primirea de date fără fir sau chiar pornirea sau oprirea unui motor.

Dacă aveți o utilizare interesantă a unei întreruperi sau a unui senzor de efecte de sală, asigurați-vă că mă anunțați în comentarii, apreciați și distribuiți acest Instructable și nu uitați să vă abonați la canalul meu YouTube pentru tutoriale și proiecte mai minunate în viitor.

Noroc și mulțumesc pentru vizionare!

Recomandat: