- Modul DCP MCP4725 (digitálny na analógový prevodník)
- Komunikácia I2C v MCP4725 DAC
- Súčasti sú povinné
- Schéma zapojenia
- Programovanie DAC Arduino
- Digitálna na analógovú konverziu pomocou MCP4725 a Arduino
Všetci vieme, že mikrokontroléry pracujú iba s digitálnymi hodnotami, ale v skutočnom svete sa musíme vyrovnať s analógovými signálmi. Preto je tu ADC (analógovo-digitálne prevodníky) na prevod skutočných analógových hodnôt do digitálnej podoby, aby mikroprocesory mohli spracovávať signály. Ale čo keď potrebujeme analógové signály z digitálnych hodnôt, tak prichádza na rad DAC (digitálny na analógový prevodník).
Jednoduchým príkladom prevodníka digitálnych na analógové je nahrávanie skladieb v štúdiu, kde umelec spevák používa mikrofón a spieva pieseň. Tieto analógové zvukové vlny sa prevedú do digitálnej formy a potom sa uložia do súboru v digitálnom formáte. Keď sa skladba prehrá pomocou uloženého digitálneho súboru, tieto digitálne hodnoty sa prevedú na analógové signály pre výstup reproduktorov. Takže v tomto systéme sa používa DAC.
DAC je možné použiť v mnohých aplikáciách, ako je riadenie motorov, regulácia jasu LED svetiel, zvukový zosilňovač, video kodéry, systémy na zber dát atď.
V mnohých mikrokontroléroch je interný DAC, ktorý možno použiť na výrobu analógového výstupu. Avšak procesory Arduino ako ATmega328 / ATmega168 nemajú zabudovaný DAC. Arduino má funkciu ADC (analógovo-digitálny prevodník), ale nemá žiadny DAC (digitálno-analógový prevodník). Má 10-bitový DAC v internom ADC, ale tento DAC nie je možné použiť ako samostatný. Takže tu v tomto výučbe Arduino DAC používame doplnkovú dosku s názvom MCP4725 DAC modul s Arduino.
Modul DCP MCP4725 (digitálny na analógový prevodník)
MCP4725 IC je 12-bitový digitálno-analógový prevodníkový modul, ktorý sa používa na generovanie výstupných analógových napätí od (0 do 5 V) a je riadený pomocou komunikácie I2C. Dodáva sa tiež s integrovanou permanentnou pamäťou EEPROM.
Tento IC má 12-bitové rozlíšenie. To znamená, že ako vstup používame (0 až 4096) na zabezpečenie výstupného napätia vzhľadom na referenčné napätie. Maximálne referenčné napätie je 5V.
Vzorec na výpočet výstupného napätia
O / P napätie = (referenčné napätie / rozlíšenie) x digitálna hodnota
Napríklad, ak ako referenčné napätie použijeme 5V a predpokladajme, že digitálna hodnota je 2048. Takže pre výpočet DAC výstupu.
O / P napätie = (5/4096) x 2048 = 2,5V
Pinout MCP4725
Nižšie je obrázok MCP4725 so zreteľne označujúcimi názvami pinov.
Kolíky MCP4725 |
Použite |
VON |
Výstupné analógové napätie |
GND |
GND pre výstup |
SCL |
Linka sériových hodín I2C |
SDA |
Sériová dátová linka I2C |
VCC |
Vstupné referenčné napätie 5 V alebo 3,3 V. |
GND |
GND pre vstup |
Komunikácia I2C v MCP4725 DAC
Tento DAC IC môže byť prepojený s akýmkoľvek mikrokontrolérom pomocou komunikácie I2C. Komunikácia I2C vyžaduje iba dva vodiče SCL a SDA. V predvolenom nastavení je adresa I2C pre MCP4725 0x60 alebo 0x61 alebo 0x62. Pre mňa je to 0x61. Pomocou zbernice I2C môžeme pripojiť viac MCP4725 DAC IC. Jedinou vecou je, že musíme zmeniť I2C adresu IC. Komunikácia I2C v Arduine je už podrobne vysvetlená v predchádzajúcom návode.
V tomto tutoriáli pripojíme DCP IC MCP4725 k Arduino Uno a poskytneme analógovú vstupnú hodnotu na pin Au Arduina pomocou potenciometra. Potom sa ADC použije na prevod analógovej hodnoty do digitálnej podoby. Potom sa tieto digitálne hodnoty pošlú na MCP4725 cez I2C zbernicu a prevedú sa na analógové signály pomocou DAC MCP4725 IC. Arduino pin A1 sa používa na kontrolu analógového výstupu MCP4725 z pinu OUT a na záver zobrazuje hodnoty ADC a DAC a napätia na 16x2 LCD displeji.
Súčasti sú povinné
- Arduino Nano / Arduino Uno
- Modul LCD displeja 16x2
- MCP4725 DAC IC
- 10k potenciometer
- Nepál
- Prepojovacie drôty
Schéma zapojenia
Nasledujúca tabuľka zobrazuje spojenie medzi MCP4725 DAC IC, Arduino Nano a Multi-meter
MCP4725 |
Arduino Nano |
Multimetr |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 alebo OUT |
A1 |
+ som terminál |
GND |
GND |
-ve termináli |
VCC |
5V |
NC |
Prepojenie medzi 16x2 LCD a Arduino Nano
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5V |
V0 |
Od stredového kolíka potenciometra upravte kontrast LCD |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
A |
+ 5V |
K |
GND |
Potenciometer je použitý so stredovým čapom pripojený k A0 analógovému vstupu Arduino Nano, ľavý čap pripojený k uzemnenie a najviac vpravo čapu spojený s 5V z Arduino.
Programovanie DAC Arduino
Kompletný Arduino kód pre výukový program DAC je uvedený na konci s ukážkovým videom. Tu sme vysvetlili kódový riadok po riadku.
Najskôr zahrňte knižnicu pre I2C a LCD pomocou knižnice wire.h a liquidcrystal.h.
#include
Ďalej definujte a inicializujte piny LCD podľa pinov, ktoré sme spojili s Arduino Nano
LiquidCrystal lcd (2,3,4,5,6,7); // Definujte piny LCD displeja RS, E, D4, D5, D6, D7
Ďalej definujte adresu I2C DCP IC MCP4725
#define MCP4725 0x61
V nastavení neplatnosti ()
Najprv začnite komunikáciu I2C na kolíkoch A4 (SDA) a A5 (SCL) Arduino Nano
Wire.begin (); // Začína komunikácia I2C
Ďalej nastavte LCD displej do režimu 16x2 a zobrazte uvítaciu správu.
lcd.začiatok (16,2); // Nastaví LCD v režime 16X2 lcd.print ("CIRCUIT DIGEST"); oneskorenie (1 000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print („DAC s MCP4725“); meškanie (2000); lcd.clear ();
V prázdnej slučke ()
1. Najskôr do vyrovnávacej pamäte vložte hodnotu riadiaceho bajtu (0b01000000)
(010 - nastavuje MCP4725 v režime zápisu)
vyrovnávacia pamäť = 0b01000000;
2. Nasledujúci príkaz načíta analógovú hodnotu z kolíka A0 a prevedie ju na digitálne hodnoty (0-1023). Arduino ADC má 10-bitové rozlíšenie, takže ho vynásobte 4: 0-4096, pretože DAC má 12-bitové rozlíšenie.
adc = analogRead (A0) * 4;
3. Týmto vyhlásením je nájdené napätie zo vstupnej hodnoty ADC (0 až 4096) a referenčné napätie ako 5V
float ipvolt = (5,0 / 4096,0) * adc;
4. Pod prvý riadok dáva najvýznamnejšie bitové hodnoty do medzipamäte posunutím 4 bitov doprava v premennej ADC a druhý riadok dáva najmenej významné bitové hodnoty do medzipamäte posunutím 4 bitov doľava v premennej ADC.
buffer = adc >> 4; buffer = adc << 4;
5. Nasledujúce tvrdenie číta analógové napätie z A1, ktorý je výstupom DAC (pin OUTPUT MCP4725 DAC IC). Tento pin môže byť tiež pripojený k multimetru na kontrolu výstupného napätia. Tu sa dozviete, ako používať multimetr.
unsigned int analogread = analogRead (A1) * 4;
6. Ďalej sa vypočíta hodnota napätia z premennej analogread pomocou nižšie uvedeného vzorca
float opvolt = (5.0 / 4096.0) * analogread;
7. Nasledujúci výpis sa používa na zahájenie prenosu s MCP4725
Wire.beginTransmission (MCP4725);
Odošle riadiaci bajt do I2C
Wire.write (vyrovnávacia pamäť);
Odošle MSB do I2C
Wire.write (vyrovnávacia pamäť);
Odošle LSB do I2C
Wire.write (vyrovnávacia pamäť);
Ukončí prenos
Wire.endTransmission ();
Teraz konečne zobrazte tieto výsledky na displeji LCD 16x2 pomocou lcd.print ()
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 (analogread); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvolt); oneskorenie (500); lcd.clear ();
Digitálna na analógovú konverziu pomocou MCP4725 a Arduino
Po dokončení všetkých obvodových pripojení a načítaní kódu do Arduina zmeňte potenciometer a sledujte výstup na LCD . Prvý riadok LCD zobrazuje vstupnú hodnotu a napätie ADC a druhý riadok výstupnú hodnotu a napätie DAC.
Môžete tiež skontrolovať výstupné napätie pripojením multimetra k vývodu OUT a GND na MCP4725.
Takto môžeme prevádzať digitálne hodnoty na analógové prepojením DAC modulu MCP4725 s Arduino.