- Szükséges alkatrészek és a hardver beállítása
- Nuvoton N76E003 áramköri ábra az analóg feszültség leolvasására
- Információ az N76E003 GPIO és analóg csapokról
- Információ az N76E003 ADC perifériájáról
- N76E003 programozása ADC-hez
- A kód és a kimenet villogása
Az analóg-digitális átalakító (ADC) a mikrovezérlő leggyakrabban használt hardverjellemzője. Analóg feszültséget vesz fel és alakítja át digitális értékre. Mivel a mikrovezérlők digitális eszközök és az 1-es és 0-os bináris számokkal működnek, nem tudta közvetlenül feldolgozni az analóg adatokat. Így egy ADC-t arra használnak, hogy felvegye az analóg feszültséget, és átalakítsa azt egyenértékű digitális értékévé, amelyet egy mikrokontroller megérthet. Ha többet szeretne tudni az analóg-digitális átalakítóról (ADC), akkor ellenőrizze a cikket.
Különböző érzékelők állnak rendelkezésre az elektronikában, amelyek analóg kimenetet szolgáltatnak, mint például az MQ gázérzékelők, az ADXL335 gyorsulásmérő érzékelő stb. Így az Analog-Digital átalakító használatával ezek az érzékelők összekapcsolhatók egy mikrovezérlő egységgel. Megtekintheti az alább felsorolt egyéb oktatóanyagokat is az ADC használatához más mikrovezérlőkkel.
- Hogyan kell használni az ADC-t az Arduino Uno-ban?
- Az ADC0808 összekapcsolása a 8051 mikrokontrollerrel
- A PIC mikrokontroller ADC moduljának használata
- Raspberry Pi ADC bemutató
- Az ADC használata az MSP430G2-ben - Analóg feszültség mérése
- Az ADC használata az STM32F103C8 fájlban
Ebben az oktatóanyagban az N76E003 mikrovezérlő egység beépített ADC perifériáját fogjuk használni, ezért értékeljük, hogy milyen hardverbeállításokra van szükségünk ehhez az alkalmazáshoz.
Szükséges alkatrészek és a hardver beállítása
Az ADC használatához az N76E003-on egy feszültségosztót használunk egy potenciométer segítségével, és leolvassuk a 0V- 5,0V közötti feszültséget. A feszültség a 16x2 karakteres LCD-n jelenik meg, ha új az LCD és az N76E003, akkor megnézheti, hogyan kell az LCD-t csatlakoztatni a Nuvoton N76E003-hoz. Így a projekt fő alkotóeleme a 16x2 karakteres LCD. Ehhez a projekthez az alábbi komponenseket fogjuk használni:
- Karakter LCD 16x2
- 1k ellenállás
- 50k potenciométer vagy trim pot
- Kevés Berg vezeték
- Kevés összekötő vezeték
- Kenyérlemez
Nem is beszélve a fenti összetevőkön kívül szükségünk van az N76E003 mikrokontroller alapú fejlesztőtáblára, valamint a Nu-Link programozóra. További 5 V-os tápegységre is szükség van, mivel az LCD elegendő áramot vesz fel, amelyet a programozó nem tudott biztosítani.
Nuvoton N76E003 áramköri ábra az analóg feszültség leolvasására
Amint azt a sematikus ábrán láthatjuk, a P0 portot használjuk az LCD-vel kapcsolatos kapcsolatokhoz. A bal szélső részen látható a programozási felület kapcsolata. A potenciométer feszültségosztóként működik, és ezt a 0 (AN0) analóg bemenet érzékeli.
Információ az N76E003 GPIO és analóg csapokról
Az alábbi kép szemlélteti az N76E003AT20 mikrovezérlő egységen elérhető GPIO érintkezőket. A 20 érintkezõ közül azonban az LCD-vel kapcsolatos kapcsolathoz a P0 portot (P0.0, P0.1, P0.2, P0.4, P0.5, P0.6 és P0.7) használják. Az analóg csapok piros színnel vannak kiemelve.
Mint láthatjuk, a P0 port maximális analóg csapokkal rendelkezik, de ezeket az LCD-vel kapcsolatos kommunikációhoz használják. Így a P3.0 és a P1.7 analóg bemenetként AIN1 és AIN0 érhető el. Mivel ehhez a projekthez csak egy analóg tűre van szükség, a P1.7-et, amely a 0-as analóg bemeneti csatorna, használják ehhez a projekthez.
Információ az N76E003 ADC perifériájáról
Az N76E003 12 bites SAR ADC-t biztosít. Nagyon jó tulajdonsága az N76E003-nak, hogy nagyon jó felbontású az ADC. Az ADC 8 csatornás bemenetekkel rendelkezik egyvégű módban. Az ADC összekapcsolása meglehetősen egyszerű és egyértelmű.
Az első lépés az ADC csatorna bemenetének kiválasztása. Az N76E003 mikrovezérlőkben 8 csatornás bemenetek állnak rendelkezésre. Az ADC bemenetek vagy az I / O csapok kiválasztása után az összes csapot be kell állítani a kód irányához. Az analóg bemenethez használt összes érintkező a mikrovezérlő bemeneti tűje, ezért az összes érintkezőt csak bemeneti (nagy impedancia) módnak kell beállítani. Ezeket a PxM1 és PxM2 regiszter segítségével állíthatjuk be. Ez a két regiszter állítja be az I / O módokat, ahol az x a portszámot jelenti (például a P1.0 portnál a regiszter P1M1 és P1M2 lesz, a P3.0 esetében pedig P3M1 és P3M2 stb.). látható az alábbi kép-
Az ADC konfigurálását két ADCCON0 és ADCCON1 regiszter végzi. Az ADCCON0 regiszter leírása az alábbiakban látható.
A regiszter első 4 bitje a 0-tól a 3-ig terjedő bitig az ADC csatorna kiválasztásának beállítására szolgál. Mivel az AIN0 csatornát használjuk, a választás 0000 lesz erre a négy bitre.
A 6. és a 7. bit a fontos. Az ADCS- nek 1-t kell beállítania az ADC-átalakítás megkezdéséhez, és az ADCF információt nyújt a sikeres ADC-átalakításról. A firmware-nek 0-t kell beállítania az ADC-átalakítás elindításához. A következő regiszter az ADCCON1-
Az ADCCON1 regisztert elsősorban a külső források által kiváltott ADC konverzióhoz használják. A normál lekérdezéssel kapcsolatos műveletekhez azonban az első bit ADCEN- nek meg kell adnia az 1 értéket az ADC áramkör bekapcsolásához.
Ezután az ADC csatorna bemenetét ellenőrizni kell az AINDIDS regiszterben, ahol a digitális bemenetek leválaszthatók.
Az n a csatornabitet jelenti (például az AIN0 csatornát az AINDIDS regiszter első P17DIDS bitjével kell vezérelni). A digitális bemenetet engedélyezni kell, különben 0-nak fog olvasni. Ezek mind az ADC alapbeállításai. Az ADCF törlése és az ADCS beállítása megkezdheti az ADC átalakítást. Az átszámított érték az alábbi regiszterekben lesz elérhető:
És
Mindkét regiszter 8 bites. Mivel az ADC 12 bites adatokat szolgáltat, az ADCRH-t teljes (8-bites) és az ADCRL-t fele (4-bites) értékként használják.
N76E003 programozása ADC-hez
Egy adott modul kódolása minden alkalommal mozgalmas munka, így egy egyszerű, mégis hatékony LCD könyvtár áll rendelkezésre, amely nagyon hasznos lesz az N76E003-hoz való 16x2 karakteres LCD interfész számára. A 16x2 LCD könyvtár elérhető a Github adattárunkban, amely az alábbi linkről tölthető le.
Töltse le a 16x2 LCD könyvtárat a Nuvoton N76E003 eszközhöz
Kérjük, rendelkezzen a könyvtárral (klónozással vagy letöltéssel), és csak az lcd.c és az LCD.h fájlokat illessze be a Keil N76E003 projektbe, hogy a 16x2 LCD-t egyszerűen integrálja a kívánt alkalmazásba vagy projektbe. A könyvtár a következő hasznos megjelenítéssel kapcsolatos funkciókat fogja biztosítani:
- Inicializálja az LCD-t.
- Küldjön parancsot az LCD-nek.
- Írjon az LCD-re.
- Tegyen egy húrt az LCD-be (16 karakter).
- Karakter nyomtatása hexa érték elküldésével.
- Hosszú, 16 karakternél hosszabb üzenetek görgetése.
- Egész számok nyomtatása közvetlenül az LCD-re.
Az ADC kódolása egyszerű. Az Enable_ADC_AIN0 beállítási funkcióban ; az ADC beállítására szolgál az AIN0 bemenethez. Ezt a fájl határozza meg.
#define Enable_ADC_AIN0 ADCCON0 & = 0xF0; P17_Input_Mode; AINDIDS = 0x00; AINDIDS- = SET_BIT0; ADCCON1- = SET_BIT0 // P17
Tehát a fenti sor a tűt állítja be bemenetként, és konfigurálja az ADCCON0, ADCCON1 regisztert, valamint az AINDIDS regisztert is. Az alábbi függvény beolvassa az ADC-t az ADCRH és ADCRL regiszterből, de 12 bites felbontással.
unsigned int ADC_read (void) { register unsigned int adc_value = 0x0000; clr_ADCF; set_ADCS; míg (ADCF == 0); adc_value = ADCRH; adc_érték << = 4; adc_value - = ADCRL; return adc_value; }
A bitet négyszer balra tolják, majd hozzáadják az adatváltozóhoz. A fő funkcióban az ADC beolvassa az adatokat, és közvetlenül a kijelzőre nyomtatja. A feszültséget azonban átalakítják a feszültség és a bitérték osztva arányának vagy arányának használatával is.
A 12 bites ADC 4095 bitet biztosít 5,0 V-os bemeneten. Így elosztva az 5,0 V / 4095 = 0,0012210012210012V értéket
Tehát 1 számjegyű bitváltozás megegyezik a 0,001 V (kb.) Változásával. Ez az alább látható fő funkcióban történik.
void main (void) { int adc_data; beállít(); lcd_com (0x01); míg (1) { lcd_com (0x01); lcd_com (0x80); lcd_puts ("ADC adatok:"); adc_data = ADC_read (); lcd_print_szám (adc_adatok); feszültség = adc_data * bit_to_voltage_ratio; sprintf (str_feszültség, "Volt:% 0,2fV", feszültség); lcd_com (0xC0); lcd_puts (str_feszültség); Timer0_Delay1ms (500); } }
Az adatokat bitértékről feszültségre konvertáljuk, és egy sprintf függvény segítségével a kimenetet stringekké alakítjuk, és elküldjük az LCD-nek.
A kód és a kimenet villogása
A kód 0 figyelmeztetést és 0 hibát adott vissza, és az alapértelmezett villogó módszerrel villantotta a Keil, az alábbi villogó üzenetet láthatja. Ha Ön még nem ismeri a Keil vagy a Nuvoton alkalmazást, olvassa el a Nuvoton mikrovezérlő használatának kezdő lépéseit, hogy megismerje az alapokat és a kód feltöltését.
Elkezdődött az újjáépítés: Projekt: időzítő Újraépíti a "Cél 1" célt a STARTUP.A51 összeállításakor … a main.c fordítása… az lcd.c fordítása… Delay.c fordítása… összekapcsolása… Program mérete: data = 101,3 xdata = 0 code = 4162 hex fájl létrehozása a ". \ Objects \ timer"… " -ből . \ Objects \ timer" - 0 hiba (ok), 0 figyelmeztetés (ek). Eltelt építési idő: 00:00:02 "G: \\ n76E003 \\ Object Objects \\ timer" betöltése Flash Törlés Kész. Flash Write Done: 4162 bájt beprogramozva. Flash Verify Done: 4162 bájt ellenőrzött. A Flash Load 11: 56: 04-kor fejeződött be
Az alábbi képen látható az áramforrásba DC-adapterrel csatlakoztatott hardver, a kijelzőn pedig a jobb oldali potenciométer által beállított kimeneti feszültség látható.
Ha elforgatjuk a potenciométert, akkor az ADC csapnak adott feszültség is megváltozik, és észrevehetjük az LCD-n megjelenő ADC értéket és analóg feszültséget. Az oktatóanyag teljes bemutatásához megtekintheti az alábbi videót.
Remélem, tetszett a cikk, és valami hasznosat tanult. Ha kérdései vannak, hagyja azokat az alábbi megjegyzés részben, vagy fórumunkon keresztül további technikai kérdéseket tehet fel.