- MCP4725 DAC modul (digitalno-analogni pretvarač)
- I2C komunikacija u MCP4725 DAC-u
- Komponente potrebne
- Kružni dijagram
- DAC Arduino programiranje
- Digitalna u analogna pretvorba pomoću MCP4725 i Arduino
Svi znamo da mikrokontroleri rade samo s digitalnim vrijednostima, ali u stvarnom svijetu moramo se nositi s analognim signalima. Zbog toga postoji ADC (analogni u digitalni pretvarač) koji pretvara analogne vrijednosti iz stvarnog svijeta u digitalni oblik kako bi mikrokontroleri mogli obrađivati signale. Ali što ako su nam potrebni analogni signali iz digitalnih vrijednosti, ovdje dolazi DAC (digitalno-analogni pretvarač).
Jednostavan primjer pretvarača digitalnog u analogni je snimanje pjesme u studiju u kojem umjetnički pjevač koristi mikrofon i pjeva pjesmu. Ovi analogni zvučni valovi pretvaraju se u digitalni oblik, a zatim pohranjuju u datoteku digitalnog formata, a kada se pjesma reproducira pomoću pohranjene digitalne datoteke, te se digitalne vrijednosti pretvaraju u analogne signale za izlaz zvučnika. Dakle, u ovom se sustavu koristi DAC.
DAC se može koristiti u mnogim aplikacijama kao što su upravljanje motorom, upravljanje svjetlinom LED svjetla, audio pojačalo, video enkoderi, sustavi za prikupljanje podataka itd.
U mnogim mikrokontrolerima postoji interni DAC koji se može koristiti za proizvodnju analognog izlaza. Ali Arduino procesori poput ATmega328 / ATmega168 nemaju ugrađeni DAC. Arduino ima ADC značajku (analogno u digitalni pretvarač), ali nema DAC (digitalno u analogni pretvarač). Ima 10-bitni DAC u internom ADC-u, ali ovaj DAC ne može se koristiti kao samostalni. Dakle, ovdje u ovom Arduino DAC tutorialu koristimo dodatnu ploču nazvanu MCP4725 DAC modul s Arduinom.
MCP4725 DAC modul (digitalno-analogni pretvarač)
MCP4725 IC je 12-bitni modul digitalno-analognog pretvarača koji se koristi za generiranje izlaznih analognih napona od (0 do 5V) i njime se upravlja pomoću I2C komunikacije. Također dolazi s ugrađenom trajnom memorijom EEPROM.
Ovaj IC ima 12-bitnu razlučivost. To znači da koristimo (0 do 4096) kao ulaz kako bismo osigurali izlazni napon s obzirom na referentni napon. Maksimalni referentni napon je 5V.
Formula za izračunavanje izlaznog napona
O / P napon = (referentni napon / razlučivost) x digitalna vrijednost
Na primjer, ako koristimo 5V kao referentni napon i pretpostavimo da je digitalna vrijednost 2048. Dakle, za izračun DAC izlaza.
O / P napon = (5/4096) x 2048 = 2,5V
Isječak MCP4725
Ispod je slika MCP4725 s jasno naznačenim imenima pinova.

|
Pribadače MCP4725 |
Koristiti |
|
VANJ |
Izlazi analogni napon |
|
GND |
GND za izlaz |
|
SCL |
Linija I2C serijskog sata |
|
SDA |
Linija serijskih podataka I2C |
|
VCC |
Ulazni referentni napon 5V ili 3,3V |
|
GND |
GND za ulaz |
I2C komunikacija u MCP4725 DAC-u
Ovaj DAC IC može se povezati s bilo kojim mikrokontrolerom pomoću I2C komunikacije. I2C komunikacija zahtijeva samo dvije žice SCL i SDA. Prema zadanim postavkama, I2C adresa za MCP4725 je 0x60 ili 0x61 ili 0x62. Za mene njegov 0x61. Korištenjem I2C sabirnice možemo povezati više MCP4725 DAC IC. Jedino što moramo promijeniti I2C adresu IC-a. I2C komunikacija u Arduinu već je detaljno objašnjena u prethodnom vodiču.

U ovom uputstvu spojit ćemo MCP4725 DAC IC s Arduino Uno i pružiti analognu ulaznu vrijednost Arduino pinu A0 pomoću potenciometra. Tada će se ADC koristiti za pretvaranje analogne vrijednosti u digitalni oblik. Nakon toga te digitalne vrijednosti šalju se na MCP4725 putem I2C sabirnice kako bi se pretvorile u analogne signale pomoću DAC MCP4725 IC. Arduino pin A1 koristi se za provjeru analognog izlaza MCP4725 iz pin OUT-a i konačno prikaz i vrijednosti ADC i DAC i napona na LCD zaslonu 16x2.
Komponente potrebne
- Arduino Nano / Arduino Uno
- Modul LCD zaslona od 16x2
- MCP4725 DAC IC
- 10k potenciometar
- Breadboard
- Jumper žice
Kružni dijagram

Ispod tablice prikazana je veza između MCP4725 DAC IC, Arduino Nano i multimetra
|
MCP4725 |
Arduino Nano |
Multimetar |
|
SDA |
A4 |
NC |
|
SCL |
A5 |
NC |
|
A0 ili OUT |
A1 |
+ ve terminal |
|
GND |
GND |
-ve terminal |
|
VCC |
5V |
NC |
Veza između LCD-a 16x2 i Arduino Nano-a
|
LCD 16x2 |
Arduino Nano |
|
VSS |
GND |
|
VDD |
+ 5V |
|
V0 |
Od središnje igle potenciometra za podešavanje kontrasta LCD-a |
|
RS |
D2 |
|
RW |
GND |
|
E |
D3 |
|
D4 |
D4 |
|
D5 |
D5 |
|
D6 |
D6 |
|
D7 |
D7 |
|
A |
+ 5V |
|
K |
GND |
Potenciometar se koristi sa središnjim pin spojen na A0 analogni ulaz Arduino Nano, Left pin spojen na GND i desne najviše pin spojen na 5V za Arduino.

DAC Arduino programiranje
Kompletni Arduino kôd za DAC tutorial dat je na kraju s demonstracijskim videom. Ovdje smo objasnili kôd redak po redak.
Prvo uključite knjižnicu za I2C i LCD pomoću knjižnice wire.h i liquidcrystal.h.
#include
Zatim definirajte i inicijalizirajte LCD igle prema iglama koje smo povezali s Arduino Nano
LCD LiquidCrystal (2,3,4,5,6,7); // Definirajte igle za LCD zaslon RS, E, D4, D5, D6, D7
Dalje definirajte I2C adresu MCP4725 DAC IC
#define MCP4725 0x61
U postavljanju praznine ()
Prvo započnite I2C komunikaciju na pinovima A4 (SDA) i A5 (SCL) Arduino Nano
Wire.begin (); // Počinje I2C komunikacija
Zatim postavite LCD zaslon u način rada 16x2 i prikažite poruku dobrodošlice.
lcd.početak (16,2); // Postavlja LCD zaslon LCD u načinu rada 16X2 ("CIRCUIT DIGEST"); kašnjenje (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("DAC s MCP4725"); kašnjenje (2000); lcd.clear ();
U petlji void ()
1. Prvo u međuspremnik stavite vrijednost kontrolnog bajta (0b01000000)
(010-Postavlja MCP4725 u načinu pisanja)
međuspremnik = 0b01000000;
2. Sljedeća izjava čita analognu vrijednost s pina A0 i pretvara je u digitalne vrijednosti (0-1023). Arduino ADC ima 10-bitnu razlučivost, pa ga pomnožite s 4 daje: 0-4096, jer je DAC 12-bitna razlučivost.
adc = analogRead (A0) * 4;
3. Ova je izjava za pronalaženje napona iz ulazne vrijednosti ADC-a (0 do 4096) i referentnog napona kao 5V
plutajući ipvolt = (5,0 / 4096,0) * adc;
4. Ispod prvog retka stavljaju se najznačajnije vrijednosti bitova u međuspremnik pomicanjem 4 bita udesno u varijabli ADC, a drugi redak stavlja najmanje značajne vrijednosti bita u međuspremnik pomicanjem 4 bita ulijevo u varijabli ADC.
međuspremnik = adc >> 4; međuspremnik = adc << 4;
5. Sljedeća izjava čita analogni napon s A1 koji je DAC izlaz (IZLAZNI pin MCP4725 DAC IC). Ovaj se pin također može spojiti na multimetar kako bi se provjerio izlazni napon. Ovdje naučite kako koristiti multimetar.
nepotpisano int analogread = analogRead (A1) * 4;
6. Nadalje se vrijednost napona s varijabilnog analognog očitanja izračunava pomoću donje formule
plutajući opvolt = (5.0 / 4096.0) * analognipročitano;
7. Sljedeća izjava koristi se za započinjanje prijenosa s MCP4725
Wire.beginTransmission (MCP4725);
Šalje kontrolni bajt na I2C
Wire.write (međuspremnik);
Šalje MSB na I2C
Wire.write (međuspremnik);
Šalje LSB na I2C
Wire.write (međuspremnik);
Završava prijenos
Wire.endTransmission ();
Sada napokon prikažite te rezultate na LCD zaslonu 16x2 pomoću lcd.print ()
lcd.setCursor (0,0); lcd.print ("IP:"); lcd.print (adc); lcd.setCursor (10,0); lcd.print ("V:"); lcd.print (ipvolt); lcd.setCursor (0,1); lcd.print ("D OP:"); lcd.print (analognočitati); lcd.setCursor (10,1); lcd.print ("V:"); lcd.tisak (opvolt); kašnjenje (500); lcd.clear ();
Digitalna u analogna pretvorba pomoću MCP4725 i Arduino
Nakon dovršenja svih veza kruga i prenosa koda u Arduino, promijenite potenciometar i gledajte izlaz na LCD-u . Prvi redak LCD-a prikazat će ulaznu vrijednost ADC-a i napon, a drugi redak izlaznu vrijednost DAC-a i napon.

Izlazni napon možete provjeriti i spajanjem multimetra na OUT i GND pin MCP4725.

Na ovaj način možemo pretvoriti digitalne vrijednosti u analogne povezivanjem DAC modula MCP4725 s Arduinom.
