Hallov senzor
Hallov senzor osjeća magnet bez dodira: sklopka A3144, zasun i linearni senzor, spajanje na Arduino, dvije granice uključivanja i čelična kuglica iznad magneta.

Što je Hallov senzor?
Oko svakog magneta je magnetsko polje. Ne vidimo ga, ali osjetimo kad magnet privuče čavao ili drugi magnet. Polje je najjače uz polove magneta, sjeverni (N) i južni (S), a što smo dalje, to je slabije.
Hallov senzor je mali čip koji osjeća magnetsko polje. Javlja je li magnet blizu, a da ga ništa ne mora dodirnuti. Ime je dobio po američkom fizičaru Edwinu Hallu, koji je 1879. otkrio da magnetsko polje malo skrene struju u vodiču.
Gdje ih nalazimo:
- prijenosno računalo u poklopcu ima magnet, a ispod tipkovnice Hallov senzor, pa zna kad je poklopac zatvoren;
- mnogi automobili Hallovim senzorima mjere koliko se brzo okreću kotači i motor;
- električni romobil njime zna koliko jako pritišćeš ručicu za gas;
- naš fliper njima prepoznaje kuglicu u stazama.
Hallov senzor radi isto što i reed sklopka, ali nema pokretnih dijelova ni staklene cjevčice. Ne troši se, ne poskakuje i ne razbije se. Zauzvrat mu treba napajanje, pa ima tri nožice umjesto dvije.

Naš senzor, A3144, malo je crno kućište s tri nožice. Na prednjoj strani je natpis, a nožice su, gledano sprijeda:
- VCC: napajanje, 5 V,
- GND: minus,
- OUT: izlaz, koji javlja Arduinu.
A3144 se uključi kad južni pol (S) magneta dođe blizu njegove prednje strane, s natpisom. Sjeverni pol ga ne uključi. Ako senzor ne reagira, okreni magnet.
Micro:bit osjeća magnet
Micro:bit ima senzor za kompas, koji također osjeća magnetsko polje. Blok magnetic force (µT) iz kategorije Input daje jakost polja u mikroteslama. Prikaži ga na zaslonu i približi micro:bitu magnet: broj naglo naraste. Zemljino magnetsko polje, koje okreće iglu kompasa, ima samo oko 50 µT.
Tri vrste Hallovih senzora
- Sklopka (A3144): izlaz se uključi kad je polje dovoljno jako, a isključi kad magnet ode. Koristimo je za kuglicu u fliperu.
- Zasun (na primjer US1881): uključi ga južni pol, a ostane uključen i kad magnet ode, sve dok ne dođe sjeverni pol. S prstenom u kojem se izmjenjuju polovi broji okretaje motora ili kotača.
- Linearni senzor (na primjer 49E): ne javlja samo da ili ne, nego koliko je polje jako. Bez magneta daje oko 2,5 V, s jednim polom više, a s drugim manje. Arduino ga čita s
analogRead().
Jaki magneti
Mali neodimijski magneti vrlo su jaki. Dva takva magneta naglo skoče jedan prema drugome i mogu priklještiti prst. Drži ih dalje od mobitela i kartica s magnetskom trakom. Magnete nikad ne stavljaj u usta: dva progutana magneta mogu se privući kroz stijenke crijeva i teško ih ozlijediti.
Hallov senzor na Arduino radionici
Od ovog mjesta stranica je za Arduino radionicu. Hallov senzor s magnetom i čeličnom kuglicom upoznajemo u lekciji Prepoznavanje kuglice.
Spajanje

Izlaz zato treba pull-up otpornik, kao tipkalo. Uključimo ugrađeni s pinMode(hallSenzor, INPUT_PULLUP), pa senzor čitamo kao tipkalo: LOW znači magnet ili kuglica, HIGH znači ništa. Ako su žice do senzora duge, dodaj i vanjski pull-up otpornik od 10 kΩ između OUT i 5V.
- A3144 treba barem 4,5 V, pa ga napajamo s 5V Arduina. Na 3,3 V micro:bita ne radi.
- Hallov senzor nema kontakata, pa ne poskakuje. Program ga čita bez smirivanja.
- Izlaz se može spojiti samo s GND, a senzor treba napajanje, pa Hallov senzor ne može u matricu prekidača kao tipkalo. U fliperu Hallove senzore zato čita čip 74HC165.
Dvije granice
Senzor se uključi pri jačem polju nego što se isključi. Graf pokazuje primjer: izlaz padne na 0 V kad polje naraste do 25 mT, a vrati se na 5 V tek kad padne ispod 22 mT.

Granice se razlikuju od senzora do senzora. Proizvođač za A3144 jamči samo da se uključi najkasnije kad polje naraste do 35 mT, a isključi najkasnije kad padne do 5 mT. Zato svaki modul za fliper namještamo posebno.
Čelična kuglica iznad magneta
Čelična kuglica nije magnet, pa je Hallov senzor sam ne bi primijetio. Zato je ispod senzora magnet, čije je polje za senzor malo preslabo. Kad kuglica dođe iznad senzora, čelik privuče silnice polja prema sebi i polje kroz senzor postane jače:


LOW, pa jedan prolaz broji jednom:// C++
int hall = digitalRead(hallSenzor);
if (hall == LOW && zadnjiHall == HIGH) { // kuglica je upravo stigla iznad senzora
prolazi = prolazi + 1;
}
zadnjiHall = hall; // zapamti za sljedeći prolaz kroz loop()
Ploča između kuglice i senzora mora biti tanka. U fliperu smije biti debela najviše 2 mm, pa je ondje odozdo istanjimo.
Linearni senzor: koliko je polje jako?
Linearni senzor 49E ima iste tri nožice, ali na izlazu daje napon. Bez magneta to je oko 2,5 V, pola napajanja, pa analogRead() daje broj oko 512. Program zato najprije izmjeri koliko senzor daje bez magneta, a zatim ispisuje razliku:
// C++
const int senzor = A0; // izlaz linearnog Hallova senzora (49E)
const int PRAG = 30; // koliko se broj mora promijeniti da upalimo LED-icu
int mirovanje = 0; // što senzor daje bez magneta
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
Serial.begin(9600);
long zbroj = 0;
for (int i = 0; i < 16; i++) { // prosjek 16 mjerenja, dok magnet nije blizu
zbroj = zbroj + analogRead(senzor);
delay(10);
}
mirovanje = zbroj / 16;
}
void loop() {
int polje = analogRead(senzor) - mirovanje; // jedan pol daje pozitivne brojeve, drugi negativne
Serial.println(polje);
if (abs(polje) > PRAG) {
digitalWrite(LED_BUILTIN, HIGH); // magnet je blizu, bez obzira na pol
} else {
digitalWrite(LED_BUILTIN, LOW);
}
delay(50);
}
Spoji VCC na 5V, GND na GND, a izlaz na A0. Učitaj program i otvori Serial Plotter, kako piše na stranici Arduino IDE. Približi magnet jednim polom, pa drugim: krivulja ide gore ili dolje, a što je magnet bliže, to dalje. Funkcija abs() uzima broj bez predznaka, pa LED-ica svijetli za oba pola. Prosjek u setup() računamo dok magnet nije blizu, zato magnet približi tek kad se program pokrene.
Što smo naučili?
- Hallov senzor osjeća magnetsko polje bez dodira. Nema kontakata, pa se ne troši i ne poskakuje.
- A3144 ima nožice VCC, GND i OUT. Uključi ga južni pol magneta okrenut prema strani s natpisom.
- Izlaz se spaja s GND kad je polje dovoljno jako, pa ga čitamo s
INPUT_PULLUP, kao tipkalo:LOWznači magnet. - Senzor se uključi pri jačem polju nego što se isključi, pa ne treperi.
- Čelična kuglica iznad magneta pojača polje kroz senzor. Linearni senzor javlja i koliko je polje jako.
Mali kviz
1. Po čemu je Hallov senzor bolji od reed sklopke, a po čemu nije?
2. Približio si magnet senzoru A3144, a ništa se ne događa. Što prvo pokušaš?
3. Zašto pin s Hallovim senzorom spajamo s INPUT_PULLUP?
HIGH.4. Zašto Hallov senzor ne smirujemo kao tipkalo?
5. Čelična kuglica nije magnet. Kako je onda Hallov senzor primijeti?
6. Linearni senzor bez magneta daje oko 512. Što znači 600, a što 420?