Az analóg-digitális átalakítás nagyon fontos feladat a beágyazott elektronikában, mivel az érzékelők többsége analóg értékként szolgáltatja a kimenetet, és csak egy bináris értékeket megértő mikrovezérlőbe táplálja őket, ezeket digitális értékekké kell átalakítanunk. Tehát az analóg adatok feldolgozásához a mikrovezérlőknek analóg-digitális átalakítóra van szükségük.
Néhány mikrovezérlő beépítette az ADC-t, mint az Arduino, az MSP430, a PIC16F877A, de néhány mikrovezérlőnél nincs ilyen, mint a 8051, a Raspberry Pi stb., És néhány külső analóg-digitális átalakító IC-t kell használnunk, például ADC0804, ADC0808. Az alábbiakban különféle példákat találhat az ADC-ről különböző mikrovezérlőkkel:
- Hogyan kell használni az ADC-t az Arduino Uno-ban?
- Raspberry Pi ADC bemutató
- Az ADC0808 összekapcsolása a 8051 mikrokontrollerrel
- 0-25V digitális feszültségmérő AVR mikrokontrollerrel
- Az ADC használata az STM32F103C8 fájlban
- Az ADC használata az MSP430G2-ben
- Az ADC használata az ARM7 LPC2148 fájlban
- A PIC mikrokontroller ADC moduljának használata MPLAB-mal és XC8-mal
Ebben az oktatóanyagban ellenőrizni fogjuk, hogyan lehet a PCF8591 ADC / DAC modult összekapcsolni az Arduinóval.
Szükséges alkatrészek
- Arduino UNO
- PCF8591 ADC modul
- 100K pot
- Jumper kábelek
PCF8591 ADC / DAC modul
A PCF8591 egy 8 bites analóg-digitális vagy 8 bites digitális-analóg átalakító modul, vagyis minden érintkező 256-ig képes leolvasni az analóg értékeket. Az alaplapon található LDR és termisztor áramkör is. Ez a modul négy analóg bemenettel és egy analóg kimenettel rendelkezik. I 2 C kommunikáción működik, ezért vannak SCL és SDA csapok a soros óra és a soros adatcím számára. 2,5-6 V tápfeszültséget igényel, és alacsony a készenléti áram. A bemeneti feszültséget a modul potenciométer gombjának beállításával is manipulálhatjuk. A táblán három ugró is található. J4 csatlakozik a termisztor hozzáférési áramkörének kiválasztásához, J5 csatlakozik az LDR / fotóellenállás hozzáférési áramkörének kiválasztásához és a J6 csatlakozik az állítható feszültség hozzáférési áramkör kiválasztásához. Ezen áramkörök eléréséhez a következő jumperek címét kell használnia: 0x50 a J6-hoz, 0x60 a J5-hez és 0x70 a J4-hez. Két LED van a D1 fedélzeten, és D2-D1 a kimeneti feszültség intenzitását, a D2 pedig a tápfeszültség intenzitását mutatja. Nagyobb kimeneti vagy tápfeszültség, nagyobb a D1 vagy D2 LED intenzitása. Ezeket a LED-eket kipróbálhatja a VCC vagy az AOUT tű potenciométerével is.
Összekötő PCF8591 ADC / DAC modul és Arduino
A teljes program és a működő videó a bemutató végén található.
Először meg kell határoznunk az I 2 C kommunikáció és az LCD kijelző könyvtárát.
#include
Ezután definiáljon néhány makrót. Az első makró az IC busz címének meghatározására szolgál, a második makró pedig a modul első bemeneti tűjének címére, ahol a pot bemenete van megadva.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Ezután határozza meg az LCD tűkapcsolatait az Arduino-val, és inicializálja azt az értéket, amelyet az analóg tűnél kapunk.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Érték = 0;
Most térjünk a beállítási funkcióra. Itt az első sorban inicializáltuk az I 2 C kommunikációt. A második sorban pedig inicializáltuk az LCD-kijelzőt, amelyre az analóg értékeket nyomtatjuk. Itt többet megtudhat a 16x2 LCD és az Arduino összekapcsolásáról.
void setup () { Wire.begin (); lcdbegin (16,2); }
A hurokfunkcióban az első sornak meg kell kezdeni az adást, vagyis elindítja a PCF8591-et. A második sor azt mondja az IC-nek, hogy végezze el az analóg mérést az első analóg bemeneti tűnél. A harmadik vonal befejezi az adást, a negyedik vonal pedig az analóg csapról kapja a mért adatokat.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
A következő részben tegye az analóg csapról leolvasott értéket a korábban definiált Value változóba. A következő sorokban nyomtassa ki ezt az értéket az LCD-re.
Érték = Wire.read (); lcd.print ("ADC-érték ="); lcd.print (Érték); késés (500); lcd.clear ();}
Végül töltse fel a kódot az Arduino-ba, és futtassa. Az analóg értékek elkezdenek megjelenni az LCD kijelzőn. Állítsa be a fazék gombját, és látni fogja az értékek fokozatos változását.