How to Read the Signal from a Hall Effect Sensor Using an Arduino

Hogyan olvassuk le a jelet egy Hall-effektus-érzékelőről Arduino segítségével

Adam Morissette
Adam Morissette
PA Engineer

A Hall-effektus-érzékelők az egyik visszacsatolási lehetőség, amelyet kínálunk lineáris aktuátorok hogy pozíció- és sebességinformációkat szolgáltasson. PA-04-HS és PA-100 gyárilag Hall-effektusú érzékelőkkel vannak felszerelve. Számos más aktuátorunk egyedi megrendelésre is rendelhető Hall-effektusú érzékelőkkel.

Böngésszen Arduino mikrovezérlőink széles választékában a tökéletes aktuátorvezérlésért!

MI AZ A HALL-EFEKTUS ÉRZÉKELŐ?

A Hall-effektus-érzékelő egy elektronikus alkatrész, amely a rajta átfolyó mágneses tér erőssége alapján feszültséget generál. Amikor ezt az érzékelőt egy feszültségküszöb-érzékelő áramkörrel párosítják, kétállapotú jel állítható elő. A mi esetünkben aktuátorokA Hall-effektus-érzékelő kétcsatornás jelet állít elő, amelynek hullámformái két bináris állapotban vannak számszerűsítve: be vagy ki. Ez a két jel emelkedik és süllyed, ahogy az elektromos motor 90°-os fáziskülönbséggel forog közöttük, az alábbiak szerint. Az impulzusok frekvenciája, ahogyan az a aktuátor helyzetváltozásához kapcsolódik, a teljes felbontásuktól függ, és a különböző aktuátoraink között eltérő.

Hall effect sensors 

HOGYAN OLVASSA KI EZEKET A HALL JELEKET?

Hogyan kell használni a Hall-effektusú érzékelőt

Egy mikrovezérlő digitális jelének olvasásakor két fő módszer létezik: lekérdezés és megszakítások. A lekérdezés egy programozott módszer, amelyben a mikrovezérlő rendszeresen ellenőrzi a bemenet állapotát, hogy lássa, történt-e változás. A megszakítások pedig egy hardveres mechanizmus, amely azonnal áthelyezi a mikrovezérlő programjának fókuszát, amikor a jel megváltozik egy bemeneten. Mindegyik módszernek megvannak a maga előnyei és hátrányai, és mindegyiknek vannak olyan alkalmazásai, amelyekre jobban megfelelnek. Esetünkben pontosan tudni akarjuk, hogy mikor változik egy jel állapota, ezért megszakításokat fogunk használni. Ahhoz, hogy egy Hall-effektus-érzékelőt használjunk… Arduino mikrovezérlők Egy megszakítást használnak. Egy ISR vagy megszakításkarbantartási rutin létrehozásával az Arduino azonnal végrehajthat egy kódrészletet, amikor egy meghatározott bemeneten egy meghatározott változást észlel. Az alábbiakban egy Arduino ISR-jére mutatunk példát, amelynek módosított változata, amely a detektált jeleket LED-ekre irányítja, a Hall-effektusú érzékelő tesztelésének egyik módja.

Arduino programozása Hall-effektusú érzékelők olvasására - megszakítási módszer

// globális illékony változókra van szükség az adatok átviteléhez a kettő között

// főprogram és az ISR-ek

illékony bájtjelA;
illékony bájtjelB;

// a megszakításokkal használható lábak a választott paneltől függenek

// használjuk
konstans bájt bemenetA = 2;
konstans bájt bemenetB = 3;

void setup() {
// engedélyezze a belső ellenállásokat a bemeneti lábakon
pinMode(inputA, INPUT_PULLUP);
pinMode(inputB, INPUT_PULLUP);
// beolvassa a bemenetek kezdeti állapotát
jelA = digitalRead(inputA);
jelB = digitálisOlvasás(bemenetB);

// emelkedő vagy csökkenő élt fog érzékelni
attachInterrupt(digitalPinToInterrupt(inputA),signalA_ISR,CHANGE);
attachInterrupt(digitalPinToInterrupt(inputB),signalB_ISR,CHANGE);

}

void ciklus() {
// Itt használható a jelinformáció a programban
}

void signalA_ISR() {
// amikor változást észlelünk, az mindig így lesz

// a jelenlegi állapot ellentétesébe

jelA = !jelA;
}

void signalB_ISR() {
jelB = !jelB;
}

A PA-04-HS beépített Hall-effektus visszacsatolással rendelkezik!

MIT KELL FIGYELEMBE VENNI A PÁLYÁZATBAN?

Mivel a beolvasott jelek nagyfrekvenciásak lesznek, néhány szempontot figyelembe kell venni. Először is, mennyi időbe telik a programnak végrehajtani a kódot az ISR-ben? Hány különálló jelnek kell ISR-rel rendelkeznie? Mekkora a mikrovezérlő órajele?

Egy hosszú ISR-rel rendelkező programban felmerülhet egy probléma, hogy az ISR újraindul, mielőtt befejezte volna az előző indításakor használt kódot. A probléma elkerülése érdekében ajánlott az ISR-ben a szükséges minimális kódmennyiséget megtartani.

A fenti példakódban két jel különálló megszakításokkal van beállítva. Mindkét jelre szükség van a lineáris aktuátor mozgásirányának érzékeléséhez, ezt úgy teszik, hogy ellenőrzik, melyik jel változik alacsonyról magasra a másik előtt. A megszakítások engedélyezésének hátránya mindkét jelnél, hogy kétszer annyi ISR kódot kell futtatni. Azokban az alkalmazásokban, ahol az aktuátor mozgásiránya nem szükséges, vagy már a futó programból kiderül, csak egy jelet kell beállítani egy megszakításkezelő rutinnal.

Néhány mikrovezérlő képes az órajel frekvenciájának gyorsabbra állítására. Az órajel frekvencia megváltoztatja a mikrovezérlő programjának futtatási sebességét. Ha a beolvasott jelek frekvenciája magas, akkor az órajel frekvenciáját növelni kell a lépéstartás érdekében. Azonban energiahatékonyabb a lehető legalacsonyabb órajelet használni, ameddig az alkalmazás megengedi.

MI TÖRTÉNIK, HA A MIKROVEZÉRLŐ NEM ELÉG GYORS?

A fenti megfontolások elvégzése után előfordulhat, hogy a mikrovezérlő nem elég gyors ahhoz, hogy végrehajtsa a fő kódot és lépést tartson az ISR-ekkel. Ilyen esetekben érdemes lehet egy további mikrovezérlőt használni. Az egyik mikrovezérlő használható az ISR-ek futtatására, az adatok olvasására, majd a szükséges adatok egy másik mikrovezérlőhöz való továbbítására, ahol a fő kód megszakítás nélkül végrehajtható.