- MCP4725 DAC-moduuli (digitaalinen-analoginen muunnin)
- I2C-tiedonsiirto MCP4725 DAC: ssä
- Tarvittavat komponentit
- Piirikaavio
- DAC Arduino -ohjelmointi
- Digitaalinen analogiseksi muunnos MCP4725: n ja Arduinon avulla
Me kaikki tiedämme, että mikro-ohjaimet toimivat vain digitaalisten arvojen kanssa, mutta todellisessa maailmassa meidän on käsiteltävä analogisia signaaleja. Siksi ADC (analogisista digitaalimuuntimiin) on olemassa muuntamaan reaalimaailman analogiset arvot digitaalimuodoksi, jotta mikro-ohjaimet voivat käsitellä signaaleja. Mutta entä jos tarvitsemme analogisia signaaleja digitaalisista arvoista, niin tässä tulee DAC (Digital to Analog Converter).
Yksinkertainen esimerkki Digital to Analog -muuntimeen on kappaleen nauhoittaminen studiossa, jossa taiteilijalaulaja käyttää mikrofonia ja laulaa kappaletta. Nämä analogiset ääniaallot muunnetaan digitaalisiksi ja tallennetaan sitten digitaalimuodossa olevaan tiedostoon, ja kun kappale toistetaan tallennettua digitaalitiedostoa käyttämällä, nämä digitaaliset arvot muunnetaan analogisignaaleiksi kaiutinlähtöä varten. Joten tässä järjestelmässä käytetään DAC: tä.
DAC: tä voidaan käyttää monissa sovelluksissa, kuten moottorin ohjauksessa, LED-valojen kirkkauden säätämisessä, äänivahvistimessa, videokoodereissa, tiedonkeruujärjestelmissä jne.
Monissa mikro-ohjaimissa on sisäinen DAC, jota voidaan käyttää analogisen lähdön tuottamiseen. Mutta Arduino-prosessoreilla, kuten ATmega328 / ATmega168, ei ole sisäänrakennettua DAC: ta. Arduinolla on ADC-ominaisuus (analoginen digitaalimuunnin), mutta sillä ei ole DAC: ta (digitaalinen analogiamuunnin). Siinä on 10-bittinen DAC sisäisessä ADC: ssä, mutta tätä DAC: ta ei voida käyttää itsenäisenä. Joten tässä tässä Arduino DAC -oppaassa käytämme ylimääräistä korttia nimeltä MCP4725 DAC Module Arduinon kanssa.
MCP4725 DAC-moduuli (digitaalinen-analoginen muunnin)
MCP4725 IC on 12-bittinen digitaalinen - analoginen muunninmoduuli, jota käytetään tuottamaan analogisia lähtöjännitteitä (0 - 5 V) ja jota ohjataan I2C-tiedonsiirron avulla. Sen mukana tulee myös aluksella oleva haihtumaton muisti EEPROM.
Tällä IC: llä on 12-bittinen tarkkuus. Tämä tarkoittaa, että käytämme (0 - 4096) tulona jännitelähdön tuottamiseksi suhteessa vertailujännitteeseen. Suurin vertailujännite on 5 V.
Kaava lähtöjännitteen laskemiseksi
O / P-jännite = (vertailujännite / -resoluutio) x digitaalinen arvo
Esimerkiksi, jos käytämme 5 V vertailujännitteenä ja oletetaan, että digitaalinen arvo on 2048. Joten lasketaan DAC-lähtö.
O / P-jännite = (5/4096) x 2048 = 2,5 V.
MCP4725: n pinout
Alla on kuva MCP4725: stä, jossa on selkeästi ilmaistut pin-nimet.
MCP4725: n nastat |
Käyttää |
OUT |
Lähtö analoginen jännite |
GND |
GND tuotokselle |
SCL |
I2C-sarjakellolinja |
SDA |
I2C Serial Data -rivi |
VCC |
Tulon vertailujännite 5 V tai 3,3 V |
GND |
GND tuloa varten |
I2C-tiedonsiirto MCP4725 DAC: ssä
Tämä DAC-IC voidaan liittää minkä tahansa I2C-tietoliikennettä käyttävän mikro-ohjaimen kanssa. I2C-tiedonsiirto vaatii vain kaksi johtoa SCL ja SDA. Oletuksena MCP4725: n I2C-osoite on 0x60 tai 0x61 tai 0x62. Minulle sen 0x61. I2C-väylää käyttämällä voimme liittää useita MCP4725 DAC IC -piirejä. Ainoa asia on, että meidän on muutettava IC: n I2C-osoitetta. Arduinon I2C-viestintä on jo selitetty yksityiskohtaisesti edellisessä opetusohjelmassa.
Tässä opetusohjelmassa yhdistämme MCP4725 DAC IC: n Arduino Unoon ja annamme analogisen tulon arvon Arduino-nastalle A0 potentiometrillä. Sitten ADC: tä käytetään analogisen arvon muuntamiseen digitaaliseen muotoon. Sen jälkeen nämä digitaaliset arvot lähetetään MCP4725: lle I2C-väylän kautta muunnettaviksi analogisiksi signaaleiksi DAC MCP4725 IC: n avulla. Arduino-nastaa A1 käytetään tarkistamaan MCP4725: n analogilähtö nasta OUT: sta ja lopuksi sekä ADC- että DAC-arvot ja jännitteet näytetään 16x2 LCD-näytössä.
Tarvittavat komponentit
- Arduino Nano / Arduino Uno
- 16x2 LCD-näyttömoduuli
- MCP4725 DAC-IC
- 10k potentiometri
- Leipälauta
- Neulalangat
Piirikaavio
Alla olevassa taulukossa näkyy yhteys MCP4725 DAC IC: n, Arduino Nano ja Multi-meter välillä
MCP4725 |
Arduino Nano |
Yleismittari |
SDA |
A4 |
NC |
SCL |
A5 |
NC |
A0 tai OUT |
A1 |
+ ve-pääte |
GND |
GND |
-ve-pääte |
VCC |
5 V |
NC |
Yhteys 16x2 LCD: n ja Arduino Nanon välillä
LCD 16x2 |
Arduino Nano |
VSS |
GND |
VDD |
+ 5 V |
V0 |
Potentiometrin keskitapista LCD-näytön kontrastin säätämiseen |
RS |
D2 |
RW |
GND |
E |
D3 |
D4 |
D4 |
D5 |
D5 |
D6 |
D6 |
D7 |
D7 |
A |
+ 5 V |
K |
GND |
Potentiometri käytetään tapin kytketty A0 analoginen tulo Arduino Nano, vasen tappi kytketty GND ja oikealle eniten liitetty tappi 5V Arduino.
DAC Arduino -ohjelmointi
DAC-opetusohjelman täydellinen Arduino-koodi annetaan lopussa esittelyvideolla. Tässä olemme selittäneet koodin riveittäin.
Lisää ensin kirjasto I2C: lle ja LCD: lle käyttämällä wire.h- ja liquidcrystal.h- kirjastoa.
#sisältää
Määritä ja alusta seuraavaksi LCD-nastat Arduino Nanoon yhdistämiemme nastojen mukaan
LiquidCrystal lcd (2,3,4,5,6,7); // Määritä LCD-näytön nastat RS, E, D4, D5, D6, D7
Määritä seuraavaksi MCP4725 DAC IC: n I2C-osoite
#define MCP4725 0x61
Tyhjässä asennuksessa ()
Aloita ensin I2C-tiedonsiirto Arduino nanon nastoilla A4 (SDA) ja A5 (SCL).
Wire.begin (); // Aloittaa I2C-viestinnän
Aseta seuraavaksi LCD-näyttö 16x2-tilaan ja näytä tervetuloviesti.
lcd-alku (16,2); // Asettaa LCD-näytön 16X2-tilassa lcd.print ("CIRCUIT DIGEST"); viive (1000); lcd.clear (); lcd.setCursor (0,0); lcd.print ("Arduino"); lcd.setCursor (0,1); lcd.print ("DAC ja MCP4725"); viive (2000); lcd.clear ();
Tyhjässä silmukassa ()
1. Laita ensin puskuriin kontrollitavuarvo (0b01000000)
(010-Asettaa MCP4725 kirjoitustilassa)
puskuri = 0b01000000;
2. Seuraava lause lukee analogisen arvon nastasta A0 ja muuntaa sen digitaalisiksi arvoiksi (0-1023). Arduino ADC on 10-bittinen tarkkuus, joten kerro se 4: llä antaa: 0-4096, koska DAC on 12-bittinen.
adc = analoginenRead (A0) * 4;
3. Tämän lausunnon tarkoituksena on löytää jännite ADC: n tuloarvosta (0 - 4096) ja referenssijännitteeksi 5 V
kelluva ipvolt = (5,0 / 4096,0) * adc;
4. Ensimmäisen rivin alapuolelle merkittävimmät bittiarvot asetetaan puskuriin siirtämällä 4 bittiä oikealle ADC-muuttujassa, ja toinen rivi asettaa vähiten merkitsevät bittiarvot puskuriin siirtämällä 4 bittiä vasemmalle ADC-muuttujassa.
puskuri = adc >> 4; puskuri = adc << 4;
5. Seuraava lause lukee analogisen jännitteen A1: stä, joka on DAC-lähtö (MCP4725 DAC IC: n OUTPUT-tappi). Tämä tappi voidaan myös liittää yleismittariin lähtöjännitteen tarkistamiseksi. Opi käyttämään yleismittaria täältä.
allekirjoittamaton int analogread = analogRead (A1) * 4;
6. Lisäksi jännitteen arvo muuttuvasta analogisesta lukemasta lasketaan seuraavalla kaavalla
kelluva opvoltti = (5,0 / 4096,0) * analoginen lukema;
7. Seuraavaa lausetta käytetään lähetyksen aloittamiseen MCP4725: llä
Wire.beginTransmission (MCP4725);
Lähettää ohjaustavun I2C: lle
Wire.write (puskuri);
Lähettää MSB: n I2C: lle
Wire.write (puskuri);
Lähettää LSB: n I2C: lle
Wire.write (puskuri);
Lopettaa lähetyksen
Wire.endTransmission ();
Nyt vihdoin näytä nämä tulokset LCD 16x2 -näytössä käyttämällä 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 (analoginen); lcd.setCursor (10,1); lcd.print ("V:"); lcd.print (opvoltti); viive (500); lcd.clear ();
Digitaalinen analogiseksi muunnos MCP4725: n ja Arduinon avulla
Kun kaikki piiriliitännät on suoritettu ja lähetetty koodi Arduinoon, vaihda potentiometriä ja katso LCD-näytön lähtöä . LCD-näytön ensimmäinen rivi näyttää ADC-tulon arvon ja jännitteen ja toinen rivi näyttää DAC-lähdön arvon ja jännitteen.
Voit myös tarkistaa lähtöjännitteen kytkemällä yleismittarin MCP4725: n OUT- ja GND-nastaa.
Näin voimme muuntaa digitaaliset arvot analogisiksi liittämällä DAC-moduulin MCP4725 Arduinoon.