Fyzikální kabinet FyzKAB

Články Moduly ESP32 a ESP32-CAM Senzor Hallova jevu v modulu ESP32

Senzor Hallova jevu v modulu ESP32

Na samém začátku si trochu vzpomeneme, že je tento článek napsán pro web Fyzikální kabinet FyzKAB, tak dle hesla: „Trocha fyziky nikoho nezabije…“ si nejdříve vysvětlíme, co to ten Hallův jev vlastně je.

Hallův jev

Hallův jev se projeví ve vodivé destičce (zpravidla tvořená z polovodivého materiálu), kterou protéká elektrický proud. Na obrázku (viz níže) tento proud teče směrem zepředu dozadu a jeho zdrojem je znázorněná baterie. Jestliže na destičku působí magnetické pole, jehož směr je kolmý na směr protékajícího elektrického proudu, působí v destičce na proudové nosiče náboje magnetická síla. V obrázku působí magnetické pole ve svislém směru shora dolů. Směr výsledné působící magnetické síly určíme pomocí tzv. Flemingova pravidla levé ruky:

„Vložíme-li do magnetického pole dlaň levé ruky tak, aby prsty ukazovaly směr pohybu kladných částic a magnetické indukční čáry vstupovaly do dlaně, odtažený palec ukazuje směr síly, kterou působí magnetické pole na pohybující se kladné částice.“

Takto vzniklá magnetická síla, která má zde směr vlevo, posouvá kladné nosiče náboje (díry) na levou stranu destičky. Naopak záporné nosiče náboje (elektrony – na obrázku nejsou vyznačeny) se posouvají směrem vpravo na druhou stranu destičky. Tím na destičce vzniká nerovnoměrné rozložení náboje, což má za následek vznik rozdílu elektrických potenciálů = elektrické napětí. Toto napětí vytvořené Hallovým jevem můžeme měřit připojeným voltmetrem na bočních stranách destičky, nazývá se tzv. Hallovo napětí. Hallovo napětí je úměrné vektorovému součinu proudu a magnetického indukce. Známe-li velikost řídicího proudu, můžeme z velikosti Hallova napětí určit velikost působícího magnetického pole.

Halluv jev
zdroj obrázku: https://www.azosensors.com/article.aspx?ArticleID=16
(kvůli fyzikální chybě původní obrázek upravil FyzKAB)

Hallovo napětí je pojmenováno na počest amerického fyzika E. H. Halla (1855–1938), který tento jev v roce 1879 objevil. Hallův jev se však dočkal své první smysluplné aplikace až s příchodem polovodičových materiálů v 50. letech minulého století.

Modul ESP32 jako čidlo magnetického pole

Nyní se už konečně přesuneme k hlavnímu tématu tohoto článku. Všechny čipy ESP32 mají vestavěnou tzv. Hallovu sondu (snímač Hallova jevu). Hallovy sondy se používají nejen k měření magnetického pole, ale také se třeba používají pro bezdotykové měření elektrického proudu nebo k měření velkých elektrických proudů pomocí jejich magnetického projevu. To už je docela inspirativní pro nějaký zajímavý projekt, ne? Ať už používáme jakýkoliv vývojový kit s ESP32, máme rázem k dispozici uvnitř čipu vestavěný Hallův senzor, který by měl jít použít k měření magnetického pole. Chceme-li tedy měřit magnetické pole, mohli bychom třeba načítat výstup z Hallovy sondy jedním z ADC pinů vývojové desky ESP32.

První otázkou je, kde je Hallova sonda v čipu ESP32 umístěna. U všech čipů ESP32 je umístěna pod kovovým krytem modulu ESP32. Když přiblížíte magnet k tomuto kovovému krytu, sonda detekuje kolísání magnetického pole a produkuje výstupní napětí podle síly magnetického pole.

umisteni Hallovy sondy

Bohužel vývojová deska ESP32 neposkytuje žádný výstupní pin pro přímé měření Hallova napětí. Na štěstí se výstup vestavěné Hallovy sondy ukládá do registru desky ESP32 a ten můžeme snadno přečíst pomocí funkce prostředí Arduino IDE.

Načítání vestavěné Hallovy sondy modulu ESP32

Pomocí následujícího jednoduchého kódu můžeme měřit výstup z Hallovy sondy. Základem tohoto programu je funkce HallRead(), která čte z registru ESP32 hodnotu výstupu Hallovy sondy a vrací tento výsledek do deklarované proměnné.

Kód: (Načítání vestavěné Hallovy sondy modulu ESP32 )

/* Nacitani vestavene Hallovy sondy modulu ESP32 */

int hall_sensor_value = 0;   // promenna pro ulozeni nactene hodnoty

// funkce SETUP se spusti jednou pri stisknuti tlacitka reset nebo pri zapnuti desky.
void setup() {
  Serial.begin(115200);   // prenosova rychlost serioveho vystupu
}

// funkce LOOP bezi stale dokola.
void loop() {
  hall_sensor_value = hallRead();   // nacteni hodnoty z Hallovy sondy
  Serial.print("Hall sensor value = ");
  Serial.println(hall_sensor_value);   // vypsani nactene hodnoty na seriovy vystup
  delay(500);   // cekani 0.5s
}


Je třeba ještě zmínit, že výstup funkce HallRead() může být kladný nebo záporný v závislosti na směru magnetického pole!

Nyní již stačí jen jediné. Zkopírujte výše uvedený kód do prostředí Arduino IDE, zkompilujte kód a po kompilaci kódu nahrajte kód do desky ESP32. Po nahrání kódu otevřete Serial Monitor (sériový monitor), který je součástí prostředí Arduino IDE (nabídka Nástroje) a sledujte výstup v okně sériového monitoru.

Halluv jev - vysledky
zdroj obrázku: https://microcontrollerslab.com/esp32-built-in-hall-effect-sensor-with-arduino-ide/

Jak vidíte na obrázku, získané hodnoty jsou opravdu podle směru magnetického pole buď kladné, nebo záporné. Můžeme tedy tak určit nejen velikost magnetického pole (v relativních jednotkách), ale i směr působícího magnetického pole.



A něco navíc?

V článku, který popisoval základní vlastnosti modulu ESP32 jsme se zmínili, že je modul osazen ještě jedním vnitřním čidlem – teploměrem.

Vestavěné teplotní čidlo modulu ESP32

Zatímco s vestavěnou Hallovou sondou se dá užít spousta legrace, vestavěné teplotní čidlo nás asi trochu zklame. První jeho slabinou je to, že (prý) je u novějších desek již programově nepřístupné, nebo snad dokonce v již čipu toto čidlo již není. Píšeme „prý“, protože naše osobní zkušenost se všemi ESP32 kity, které se tu kolem povalují po stole, ukazují, že tam to čidlo je. Ale je pravda, že se jedná o starší modely modulů ESP32. V blízké době se chystáme experimentovat s jedním z novějších typů, tak to bude jedna z prvních věcí, kterou nám bude muset tento modul prozradit! 😉

Druhý problém je v tom, že toto čidlo sleduje teplotu v procesoru, tedy pro nějaké měření vnější hodnoty se vlastně vůbec nehodí! 😕 Je hezké sledovat, jak se teplota jádra zvětšuje, pokud je zapnutý modul Wi-Fi, ale to je asi vše. Na jednom fóru jeden z „bastlířů“ ohříval pouzdro modulu ESP32 fénem a pak dokonce horkovzdušnou pistolí (!), aby se přesvědčil, jak čidlo pracuje. No,… I takové zážitky si s moduly ESP32 můžete užít!

Takže, ať už je Váš záměr s vnitřním čidlem jakýkoliv, zde uvádíme kód pro prostředí Arduino IDE, který vypisuje na sériový monitor teplotu jádra modulu. Oproti kódům, které zde byly uváděny, se zejména v první části liší. Kromě standardního programovacího jazyka Wiring prostředí Arduino IDE jsou zde uvedeny i překladové direktivy překladače („odhašované“ části kódu) volající při překladu externí proceduru. Pro začátečníky spíše stojí za zmínku výpis výstupu získané teploty. Funkce temprature_sens_read() totiž vrací teplotu ve stupních Fahrenheita, které se pak převádějí na stupně Celsia.

Kód: (Načítání vestavěné teplotního čidla modulu ESP32 )

/* ESP32 vnitrni cidlo teploty */

#ifdef __cplusplus
  extern "C" {
#endif

  uint8_t temprature_sens_read();

#ifdef __cplusplus
  }
#endif

uint8_t temprature_sens_read();

// funkce SETUP se spusti jednou pri stisknuti tlacitka reset nebo pri zapnuti desky.
void setup() {
  Serial.begin(115200);
}

// funkce LOOP bezi stale dokola.
void loop() {
  Serial.print("Temperature: ");
  Serial.print((temprature_sens_read() - 32) / 1.8);   // vypis teploty s prevodem z F na C
  Serial.println(" C");
  delay(1000);
}


Po přeložení kódu a zapsání do modulu ESP32 můžeme dostat podobný výsledek. Jak je vidět z obrázku určitě se nejedná o teplotu v místnosti.

ESP32 - vnitrni cidlo teploty - vysledky
zdroj obrázku: https://circuits4you.com/2019/01/01/esp32-internal-temperature-sensor-example/

Je pravda, že když modul běží delší dobu a využívá vestavěnou Wi-Fi, teplota jádra se pohybuje kolem 65 °C. Dokonce v rámci experimentů byl obvod se zapnutou Wi-Fi ponechán na přímém slunci, pak teplota dosahovala k 80 °C. Ale podobné experimenty už trochu připomínají „hrátky“ s horkovzdušnou pistolí!

 

Závěr

Opět jsme si představili další ze zajímavých vlastností modulu ESP32. Nyní je opět jen na samotném vývojáři, jak tyto informace zúročí a využije ve svém vlastním projektu. V tomto směru se opravdu fantazii a tvůrčí invenci meze nekladou! Byli bychom velice rádi, kdybychom viděli, že „bastlířské“ zrnko u Vás padlo na úrodnou půdu a nespokojili jste se jen s pročítáním teorie. Zkuste vymyslet nějaké využití Hallovy sondy zabudované v modulu ESP32 a pochlubte se svým výrobkem! Vždyť právě při samostatné práci na svém konkrétním projektu se člověk nejvíce naučí.

UPOZORNĚNÍ:
Nesouhlasíme s vyřazením Newtonových zákonů, Ohmova zákona a zákona zachování energie z učiva fyziky základních škol v České republice!