V tomto projektu používáme koncept ADC (Analog to Digital Conversion) v ARDUINO UNO. K měření intenzity pole magnetu použijeme snímač Hall Effect a Arduino uno. Senzor, který jsme zde použili, je UGN3503U. Jedná se o Hallovo čidlo, které snímá sílu magnetického pole a poskytuje na výstupu měnící se napětí úměrné síle pole. Tento senzor snímá intenzitu pole v jednotkách „ GAUSS “.
Takže s tímto senzorem budeme mít intenzitu pole jako měnící se napětí. Pomocí funkce ADC převedeme toto napětí na číslo. Toto číslo představuje intenzitu pole a je zobrazeno na LCD.
Arduino má šest kanálů ADC. V nich lze jeden nebo všechny použít jako vstupy pro analogové napětí. UNO ADC má 10 bitové rozlišení (tedy celočíselné hodnoty od (0- (2 ^ 10) 1023)). To znamená, že bude mapovat vstupní napětí mezi 0 a 5 volty na celočíselné hodnoty mezi 0 a 1023. Takže pro každou (5/1024 = 4,9 mV) na jednotku.
K tomu všemu připojíme potenciometr nebo potenciometr na kanál „A0“ a ukážeme výsledek ADC na jednoduchém displeji. Jednoduché displeje jsou zobrazovací jednotky 16x1 a 16x2. Zobrazovací jednotka 16x1 bude mít 16 znaků a bude v jednom řádku. 16x2 bude mít 32 znaků v celkové 16in 1 prvním řádku a další 16 v 2 nd linie. Zde je třeba pochopit, že v každém znaku je 5x10 = 50 pixelů, takže pro zobrazení jednoho znaku musí všech 50 pixelů spolupracovat, ale nemusíme se toho bát, protože v zobrazovací jednotce je další řadič (HD44780) ovládání pixelů (vidíte to na LCD jednotce, je to černé oko vzadu).
Požadované komponenty
Hardware: ARDUINO UNO, napájecí zdroj (5v), JHD_162ALCD (16x2LCD), kondenzátor 100uF (2 kusy), UGn3503U.
Software: arduino IDE (Arduino v noci)
Schéma zapojení a vysvětlení
Výše uvedený obrázek ukazuje schéma zapojení pro měření magnetického pole pomocí arduino uno.
V 16x2 LCD je 16 kolíků, pokud je podsvícení, pokud není podsvícení, bude 14 kolíků. Jeden může napájet nebo nechat kolíky podsvícení. Nyní ve 14 kolíky jsou 8 datových kolíky (7-14 nebo D0-D7), 2 napájecí kolíky elektrárny (1 & 2 nebo VSS a VDD nebo GND a + 5 V), 3 rd pin pro řízení kontrastu (VEE-určuje, jak silná znaky musí být a 3 kontrolní piny (RS & RW & E).
Ve výše uvedeném obvodu můžete pozorovat, že jsem vzal pouze dva ovládací piny, kontrastní bit a READ / WRITE se často nepoužívají, takže mohou být zkratovány na zem. LCD se tak dostane do režimu nejvyššího kontrastu a čtení. Abychom mohli odpovídajícím způsobem odesílat znaky a data, musíme pouze ovládat piny ENABLE a RS.
Připojení, která se provádí pro LCD, jsou uvedena níže:
PIN1 nebo VSS k zemi
PIN2 nebo VDD nebo VCC na + 5V napájení
PIN3 nebo VEE k zemi (poskytuje maximální kontrast nejlepší pro začátečníky)
PIN4 nebo RS (výběr registru) na PIN8 ARDUINO UNO
PIN5 nebo RW (čtení / zápis) na zem (přepnutí LCD do režimu čtení usnadňuje uživateli komunikaci)
PIN6 nebo E (povolit) na PIN9 ARDUINO UNO
PIN11 nebo D4 až PIN10 společnosti ARDUINO UNO
PIN12 nebo D5 až PIN11 společnosti ARDUINO UNO
PIN13 nebo D6 až PIN12 společnosti ARDUINO UNO
PIN14 nebo D7 až PIN13 společnosti ARDUINO UNO
ARDUINO IDE umožňuje uživateli používat LCD ve 4bitovém režimu. Tento typ komunikace umožňuje uživateli snížit využití pinů na ARDUINO, na rozdíl od jiných nemusí být ARDUINO naprogramováno samostatně pro použití v režimu 4 it, protože ve výchozím nastavení je ARDUINO nastaveno na komunikaci ve 4 bitovém režimu. V obvodu můžete vidět, že jsme použili 4bitovou komunikaci (D4-D7). Takže z pouhého pozorování z výše uvedené tabulky spojujeme 6 pinů LCD k řadiči, ve kterém 4 piny jsou datové piny a 2 piny pro ovládání.
Pracovní
Pro propojení LCD s ARDUINO UNO potřebujeme vědět několik věcí.
|
Nejprve mají kanály UNO ADC výchozí referenční hodnotu 5V. To znamená, že můžeme poskytnout maximální vstupní napětí 5V pro převod ADC na jakémkoli vstupním kanálu. Jelikož některé senzory poskytují napětí od 0 do 2,5 V, s referencí 5 V získáme menší přesnost, takže máme instrukci, která nám umožňuje změnit tuto referenční hodnotu. Takže pro změnu referenční hodnoty máme („analogReference ();“)
Ve výchozím nastavení dostaneme maximální rozlišení ADC desky, které je 10 bitů, toto rozlišení lze změnit pomocí instrukce („analogReadResolution (bits);“). Tato změna rozlišení se může v některých případech hodit.
Nyní, pokud jsou výše uvedené podmínky nastaveny na výchozí hodnoty, můžeme načíst hodnotu z ADC kanálu „0“ přímým voláním funkce „analogRead (pin);“, zde „pin“ představuje pin, kde jsme připojili analogový signál, v tomto případě by být „A0“. Hodnotu z ADC lze převést na celé číslo jako „int ADCVALUE = analogRead (A0); ”, Touto instrukcí se hodnota po ADC uloží do celého čísla„ ADCVALUE “.
Nyní si promluvme trochu o 16x2 LCD. Nejprve musíme povolit hlavičkový soubor ('#include
Zadruhé musíme desce říct, jaký typ LCD zde používáme. Protože máme tolik různých typů LCD (například 20x4, 16x2, 16x1 atd.). Zde budeme propojovat 16x2 LCD na UNO, takže dostaneme 'lcd.begin (16, 2);'. Pro 16x1 dostaneme 'lcd.begin (16, 1);'.
V tomto pokynu řekneme desce, kde jsme připojili piny. Piny, které jsou připojeny, mají být zobrazeny v pořadí „RS, En, D4, D5, D6, D7“. Tyto piny musí být správně znázorněny. Protože jsme připojili RS k PIN0 atd., Jak je znázorněno v schématu zapojení, reprezentujeme číslo pinu na desce jako „LiquidCrystal lcd (0, 1, 8, 9, 10, 11);“.
Poté už zbývá jen odeslat data, data, která je třeba zobrazit na LCD, by měla být zapsána jako „cd.print („ ahoj, svět! “);“. S tímto příkazem LCD zobrazí „ahoj, svět!“. Jak vidíte, o nic jiného se nemusíme starat, musíme pouze inicializovat a UNO bude připraveno k zobrazení dat. Nemusíme psát programovou smyčku, abychom zde mohli odesílat data BYTE po BYTE.
Jakmile je magnet přiveden do blízkosti snímače, snímač představuje napětí na výstupu úměrné poli, tato hodnota je převzata Uno a zobrazena na LCD. Práce na tomto projektu měření magnetického pole je dále vysvětlena pomocí níže uvedeného kódu C.