Taula de continguts:

Sensor d'efecte Hall Arduino amb interrupcions: 4 passos
Sensor d'efecte Hall Arduino amb interrupcions: 4 passos

Vídeo: Sensor d'efecte Hall Arduino amb interrupcions: 4 passos

Vídeo: Sensor d'efecte Hall Arduino amb interrupcions: 4 passos
Vídeo: Interfacing KY-024 Hall Effect sensor with Arduino | DigitSpace.com 2024, Desembre
Anonim
Image
Image
Què és un sensor d'efecte Hall?
Què és un sensor d'efecte Hall?

Hola a tothom, Avui us mostraré com podeu connectar un sensor d’efecte hall a un Arduino i utilitzar-lo amb una interrupció.

Eines i materials utilitzats al vídeo (enllaços d’afiliats): Arduino Uno:

Sensors d'efecte Hall:

Diverses resistències:

Pas 1: què és un sensor d'efecte Hall?

Què és un sensor d'efecte Hall?
Què és un sensor d'efecte Hall?
Què és un sensor d'efecte Hall?
Què és un sensor d'efecte Hall?
Què és un sensor d'efecte Hall?
Què és un sensor d'efecte Hall?

Un sensor d’efecte Hall és un dispositiu que s’utilitza per mesurar la magnitud d’un camp magnètic. La seva tensió de sortida és directament proporcional a la intensitat del camp magnètic a través d’ell.

Els sensors d’efecte Hall s’utilitzen per a aplicacions de detecció de proximitat, posicionament, detecció de velocitat i detecció de corrent.

Amb el que treballaré avui s’etiqueta com a 3144, un interruptor d’efecte de sala que s’utilitza principalment per a aplicacions d’alta temperatura i automoció. La seva sortida és elevada per defecte i baixa quan es presenta un camp magnètic.

El sensor té 3 pins, VCC, terra i sortida. Podeu identificar-los en aquest ordre si manteniu el sensor amb les etiquetes cap a vosaltres. VCC és a l’esquerra i la sortida al costat dret. Per evitar qualsevol derivació de tensió, s’utilitza una resistència de 10 k entre VCC i la sortida en una configuració pull-up.

Pas 2: què és una interrupció?

Què és una interrupció?
Què és una interrupció?
Què és una interrupció?
Què és una interrupció?

Per connectar el sensor a l’Arduino, farem servir una característica senzilla però molt potent anomenada Interrupt. Un treball d'interrupció consisteix a assegurar-se que el processador respon ràpidament a esdeveniments importants. Quan es detecta un senyal determinat, una interrupció (com el seu nom indica) interromp el que fa el processador i executa un codi dissenyat per reaccionar a qualsevol estímul extern que s’està alimentant a l’Arduino. Un cop finalitzat aquest codi, el processador torna a fer el que feia originalment com si res no passés.

El que és impressionant d’això és que estructura el vostre sistema per reaccionar amb rapidesa i eficiència davant d’esdeveniments importants que no són fàcils d’anticipar al programari. El millor de tot és que allibera el processador per fer altres coses mentre espera un esdeveniment per aparèixer.

L’Arduino Uno té dos pins que podem utilitzar com a interrupcions, pin 2 i 3. La funció que fem servir per registrar el pin com a interrupció s’anomena attachInterrupt on com a primer paràmetre enviem el pin que s’utilitzarà, el segon paràmetre és el nom de la funció a la qual volem trucar un cop detectada una interrupció i com a tercer paràmetre enviem en el mode en què volem que funcioni la interrupció. Hi ha un enllaç a la descripció del vídeo a la referència completa per a aquesta funció.

Pas 3: connexions i codi

Connexions i codi
Connexions i codi
Connexions i codi
Connexions i codi
Connexions i codi
Connexions i codi

En el nostre exemple, connectem el sensor d’efectes de sala al pin 2 de l’Arduino. Al començament de l'esbós, definim les variables per al número de pin del LED incorporat, el pin d'interrupció i una variable de bytes que utilitzarem per modificar a través de la interrupció. És crucial que el marquem com a volàtil perquè el compilador pugui saber que s'està modificant fora del flux principal del programa a través de la interrupció.

A la funció de configuració, primer especifiquem els modes als pins utilitzats i després adjuntem la interrupció tal com s’ha explicat anteriorment. Una altra de les funcions que fem servir aquí és digitalPinToInterrupt que, tal com indica el seu nom, tradueix el número de pin al número d’interrupció.

Al mètode principal, només escrivim la variable d'estat al pin LED i afegim un retard molt petit perquè el processador tingui temps de funcionar correctament.

On hem adjuntat la interrupció, hem especificat parpellejar com a segon paràmetre i aquest és el nom de la funció que s'ha de cridar. A l’interior només invertim el valor de l’estat.

El tercer paràmetre de la funció attachIntertupt és el mode en què funciona. Quan el tinguem com a CANVI, la funció de parpelleig s’executarà cada vegada que canviï l’estat d’interrupció i es tornarà a trucar un cop arribem l’imant al sensor i es tornarà a activar un cop l’eliminem. D’aquesta manera, el LED s’encén mentre mantenim l’imant a prop del sensor.

Si ara canviem el mode a RISING, la funció de parpelleig només s’activarà quan es vegi una vora ascendent del senyal al pin d’interrupció. Ara, cada vegada que apropem l’imant al sensor, el LED s’apaga o s’encén, de manera que bàsicament hem fet un interruptor magnètic.

El mode final que provarem és BAIX. Amb ell, quan l’imant està a prop, la funció de parpelleig s’activarà constantment i el LED parpellejarà, tot invertint el seu estat. Quan traiem l’imant, és realment imprevisible com acabarà l’estat, ja que depèn del moment. No obstant això, aquest mode és realment útil si hem de saber durant quant de temps es va prémer un botó, ja que podem utilitzar funcions de temporització per determinar-ho.

Pas 4: accions addicionals

Més accions
Més accions

Les interrupcions són una manera senzilla de fer que el vostre sistema sigui més sensible a les tasques sensibles al temps. També tenen l'avantatge addicional d'alliberar el vostre bucle principal () per centrar-se en alguna tasca principal del sistema. (Em sembla que això tendeix a fer que el meu codi sigui una mica més organitzat quan els faig servir; és més fàcil veure per a què es va dissenyar el tros principal de codi, mentre que les interrupcions gestionen esdeveniments periòdics.) L'exemple que es mostra aquí és gairebé el més cas bàsic per utilitzar una interrupció: podeu utilitzar-les per llegir un dispositiu I2C, enviar o rebre dades sense fils, o fins i tot engegar o aturar un motor.

Si teniu un ús interessant d’una interrupció o d’un sensor d’efectes de sala, assegureu-me de fer-ho saber als comentaris, agrada i compartir aquest instructiu i no oblideu subscriure-us al meu canal de YouTube per obtenir tutorials i projectes més increïbles a futur.

Ànims i gràcies per veure-ho!

Recomanat: