- MCP4725 DAC modul (digitális-analóg átalakító)
- I2C kommunikáció MCP4725 DAC-ban
- Szükséges alkatrészek
- Kördiagramm
- DAC Arduino programozás
- Digitális analóg átalakítás az MCP4725 és az Arduino segítségével
Mindannyian tudjuk, hogy a mikrovezérlők csak digitális értékekkel működnek, de a való világban analóg jelekkel kell foglalkoznunk. Ezért van az ADC (analóg-digitális átalakító), amely a valós analóg értékeket digitális formába konvertálja, hogy a mikrovezérlők feldolgozni tudják a jeleket. De mi van akkor, ha analóg jelekre van szükségünk digitális értékekből, tehát itt jön a DAC (Digital to Analog Converter).
Egyszerű példa a Digital to Analog átalakítóra egy dal rögzítése a stúdióban, ahol egy művészénekes mikrofont használ és egy dalt énekel. Ezeket az analóg hanghullámokat digitális formává alakítják, majd egy digitális formátumú fájlban tárolják, és amikor a dalt a tárolt digitális fájl segítségével játsszák le, ezeket a digitális értékeket analóg jelekké alakítják át a hangszóró kimenetéhez. Tehát ebben a rendszerben a DAC-t használják.
A DAC számos alkalmazásban használható, például motorvezérlésben, a LED-es lámpák fényerejének vezérlésében, hangerősítőben, videokódolókban, adatgyűjtő rendszerekben stb.
Sok mikrovezérlőben van egy belső DAC, amely analóg kimenet előállítására használható. De az Arduino processzoroknak, például az ATmega328 / ATmega168-nak nincs beépített DAC-ja. Az Arduino rendelkezik ADC funkcióval (analóg-digitális átalakító), de nincs DAC (digitális-analóg átalakító). A belső ADC-ben 10 bites DAC található, de ez a DAC nem használható önállóként. Tehát itt, ebben az Arduino DAC oktatóanyagban egy további, az MCP4725 DAC Module nevű táblát használunk az Arduinóval.
MCP4725 DAC modul (digitális-analóg átalakító)
Az MCP4725 IC egy 12 bites digitális-analóg átalakító modul, amelyet kimeneti analóg feszültségek előállítására használnak (0 és 5 V között), és az I2C kommunikáció segítségével vezérelhető. A fedélzeti EEPROM memóriával is rendelkezik.
Ennek az IC-nek 12 bites felbontása van. Ez azt jelenti, hogy bemenetként (0 és 4096 között) használjuk a feszültség kimenetének biztosítását a referenciafeszültséghez képest. A maximális referenciafeszültség 5V.
Kimenet a kimeneti feszültség kiszámításához
O / P feszültség = (referenciafeszültség / felbontás) x digitális érték
Például, ha 5 V-ot használunk referenciafeszültségként, és tegyük fel, hogy a digitális érték 2048. Tehát a DAC kimenet kiszámításához.
O / P feszültség = (5/4096) x 2048 = 2,5 V
Az MCP4725 pinoutja
Az alábbiakban látható az MCP4725 képe, egyértelműen feltüntetve a pin neveket.
Az MCP4725 csapjai |
Használat |
KI |
Kimenet analóg feszültség |
GND |
GND a kimenethez |
SCL |
I2C soros óra vonal |
SDA |
I2C soros adatok sor |
VCC |
Bemeneti referenciafeszültség: 5 V vagy 3,3 V |
GND |
GND a bemenethez |
I2C kommunikáció MCP4725 DAC-ban
Ez a DAC IC bármilyen mikrovezérlővel összekapcsolható az I2C kommunikáció segítségével. Az I2C kommunikációhoz csak két vezetékes SCL és SDA szükséges. Alapértelmezés szerint az MCP4725 I2C címe 0x60 vagy 0x61 vagy 0x62. Nekem a 0x61. Az I2C busz segítségével több MCP4725 DAC IC-t csatlakoztathatunk. Egyetlen dolog, hogy meg kell változtatnunk az IC I2C címét. Az I2C kommunikációt az Arduino-ban már részletesen bemutatja az előző bemutató.
Ebben az oktatóanyagban egy MCP4725 DAC IC-t csatlakoztatunk az Arduino Uno-hoz, és egy potenciométer segítségével analóg bemeneti értéket biztosítunk az Arduino A0 tűhöz. Ezután az ADC-t használják az analóg érték digitális formába konvertálására. Ezt követően ezeket a digitális értékeket az I2C buszon keresztül elküldik az MCP4725-be, hogy a DAC MCP4725 IC segítségével analóg jelekké alakítsák át. Az Arduino A1 tű az MCP4725 analóg kimenetének ellenőrzésére szolgál az OUT tűről, és végül megjeleníti mind az ADC, mind a DAC értékeket és a feszültségeket a 16x2 LCD kijelzőn.
Szükséges alkatrészek
- Arduino Nano / Arduino Uno
- 16x2 LCD kijelző modul
- MCP4725 DAC IC
- 10k potenciométer
- Kenyérlemez
- Jumper huzalok
Kördiagramm
Az alábbi táblázat bemutatja az MCP4725 DAC IC, az Arduino Nano és a Multi-meter közötti kapcsolatot
MCP4725 |
Arduino Nano |
Multiméter |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 vagy OUT |
A1 |
+ ve terminál |
GND |
GND |
-ve terminál |
VCC |
5V |
NC |
Kapcsolat a 16x2 LCD és az Arduino Nano között
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
A potenciométer középső csapjától az LCD kontrasztjának beállításához |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
A |
+ 5V |
K |
GND |
A potenciométert az Arduino Nano A0 analóg bemenetéhez csatlakoztatott középső tűvel, a bal oldali tűt a GND-vel és a jobb oldali legtöbb tűt az 5 V-os Arduino-val csatlakoztatják.
DAC Arduino programozás
A DAC oktatóanyag teljes Arduino kódját a végén egy bemutató videóval adjuk meg. Itt soronként ismertettük a kódot.
Először is, többek között a könyvtár I2C és LCD segítségével wire.h és liquidcrystal.h könyvtárban.
#include
Ezután határozza meg és inicializálja az LCD-érintkezőket az Arduino Nano-val összekapcsolt csapok szerint
LiquidCrystal lcd (2,3,4,5,6,7); // Definiálja az LCD kijelző csapokat RS, E, D4, D5, D6, D7
Ezután adja meg az MCP4725 DAC IC I2C címét
#define MCP4725 0x61
A void beállításban ()
Először kezdje el az I2C kommunikációt az Arduino Nano A4 (SDA) és A5 (SCL) csatlakozóinál
Wire.begin (); // Megkezdi az I2C kommunikációt
Ezután állítsa az LCD-kijelzőt 16x2-es módba, és üdvözlő üzenetet jelenítsen meg.
lcdbegin (16,2); // Az LCD-t 16X2 módban állítja be az lcd.print ("CIRCUIT DIGEST"); késés (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("DAC és MCP4725"); késés (2000); lcd.clear ();
A void ciklusban ()
1. Először a pufferben tegye a kontroll bájt értékét (0b01000000)
(010-Az MCP4725 beállítása írási módban)
puffer = 0b01000000;
2. A következő utasítás kiolvassa az analóg értéket az A0 tűről és átalakítja digitális értékekké (0-1023). Az Arduino ADC 10 bites felbontású, így szorozva 4-gyel: 0-4096, mivel a DAC 12 bites felbontású.
adc = analogRead (A0) * 4;
3. Ennek a megállapításnak az a célja, hogy az ADC bemeneti értékének feszültségét (0 és 4096 között) és a referenciafeszültséget 5 V-nak találja
float ipvolt = (5,0 / 4096,0) * adc;
4. Az első sor alatt a legfontosabb bitértékeket a pufferbe helyezi azáltal, hogy 4 bitet jobbra tol az ADC-változóban, a második sor pedig a legkevésbé bitértékeket a pufferbe teszi, ha 4 bitet balra tol az ADC-változóban.
puffer = adc >> 4; puffer = adc << 4;
5. Az alábbi állítás analóg feszültséget olvas le A1-ből, amely a DAC kimenet (MCP4725 DAC IC OUTPUT tűje). Ez a tű a multiméterhez is csatlakoztatható a kimeneti feszültség ellenőrzéséhez. Itt megtudhatja, hogyan kell használni a multimétert.
előjel nélküli int analreadread = analogRead (A1) * 4;
6. Ezenkívül a változó analóg leolvasott feszültség értékét az alábbi képlet segítségével számoljuk
float opvolt = (5,0 / 4096,0) * analóg olvasás;
7. A következő állítást használják az átvitel megkezdésére az MCP4725-tel
Wire.beginTransmission (MCP4725);
A vezérlő bájtot elküldi az I2C-nek
Wire.write (puffer);
Az MSB-t elküldi az I2C-nek
Wire.write (puffer);
Küldi az LSB-t az I2C-nek
Wire.write (puffer);
Befejezi az adást
Wire.endTransmission ();
Most végre jelenítse meg ezeket az eredményeket az LCD 16x2-es kijelzőn az lcd.print () használatával
lcd.setCursor (0,0); lcd.print ("A IP:"); lcd.print (adc); lcd.setCursor (10,0); lcd.print ("V:"); lcd.print (ipvolt); lcd.setCursor (0,1); lcd.print ("D OP:"); lcd.print (analóg olvasás); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvolt); késés (500); lcd.clear ();
Digitális analóg átalakítás az MCP4725 és az Arduino segítségével
Az összes áramköri kapcsolat befejezése után töltse fel a kódot az Arduino-ba, változtassa meg a potenciométert, és nézze meg a kimenetet az LCD-n . Az LCD első sora a bemenő ADC értéket és feszültséget, a második sor pedig a kimeneti DAC értéket és feszültséget mutatja.
A kimeneti feszültséget úgy is ellenőrizheti, hogy multimétert csatlakoztat az MCP4725 OUT és GND csatlakozóihoz.
Így alakíthatjuk át a digitális értékeket analógra az MCP4725 DAC modul és az Arduino összekapcsolásával.