Analoginis į skaitmeninį keitimas yra labai svarbi įterptosios elektronikos užduotis, nes dauguma jutiklių teikia išvestį kaip analogines reikšmes ir jas perduoda į mikrovaldiklį, kuris supranta tik dvejetaines vertes, todėl turime jas paversti skaitmeninėmis reikšmėmis. Taigi, norint valdyti analoginius duomenis, mikrovaldikliams reikia analoginio ir skaitmeninio keitiklio.
Kai kurie mikrovaldikliai turi integruotą ADC, pvz., „Arduino“, MSP430, PIC16F877A, tačiau kai kurie mikrovaldikliai neturi jo, pvz., 8051, „Raspberry Pi“ ir kt., Ir mes turime naudoti kai kuriuos išorinius analoginius į skaitmeninius keitiklius, pvz., ADC0804, ADC0808. Žemiau galite rasti įvairių ADC su skirtingais mikrovaldikliais pavyzdžių:
- Kaip naudoti ADC „Arduino Uno“?
- Raspberry Pi ADC pamoka
- Sąsaja ADC0808 su 8051 mikrovaldikliu
- 0-25V skaitmeninis voltmetras naudojant AVR mikrovaldiklį
- Kaip naudoti ADC programoje STM32F103C8
- Kaip naudoti ADC programoje MSP430G2
- Kaip naudoti ADC sistemoje ARM7 LPC2148
- Naudojant PIC mikrovaldiklio ADC modulį su MPLAB ir XC8
Šioje pamokoje mes patikrinsime, kaip susieti PCF8591 ADC / DAC modulį su „Arduino“.
Reikalingi komponentai
- „Arduino UNO“
- PCF8591 ADC modulis
- 100K puodas
- „Jumper“ kabeliai
PCF8591 ADC / DAC modulis
PCF8591 yra 8 bitų analoginio į skaitmeninį arba 8 bitų skaitmeninio į analoginį keitiklio modulis, reiškiantis, kad kiekvienas kaištis gali nuskaityti analogines vertes iki 256. Jame taip pat yra LDR ir termistoriaus grandinė. Šis modulis turi keturis analoginius įėjimus ir vieną analoginį išėjimą. Jis veikia „I 2 C“ ryšyje, todėl yra SCL ir SDA kaiščiai, skirti serijiniam laikrodžiui ir nuosekliojo duomenų adresui. Tam reikalinga 2,5–6 V maitinimo įtampa, o jo budėjimo srovė yra maža. Mes taip pat galime manipuliuoti įėjimo įtampa reguliuodami potenciometro rankenėlę modulyje. Taip pat lentoje yra trys džemperiai. J4 prijungtas norint pasirinkti termistoriaus prieigos grandinę, J5 prijungtas norint pasirinkti LDR / foto rezistoriaus prieigos grandinę ir J6 yra prijungtas, kad būtų galima pasirinkti reguliuojamos įtampos prieigos grandinę. Norėdami pasiekti šias grandines, turite naudoti šių džemperių adresus: 0x50 J6, 0x60 J5 ir 0x70 J4. D1 laive yra du šviesos diodai, o D2-D1 rodo išėjimo įtampos intensyvumą, o D2 - maitinimo įtampos intensyvumą. Didesnė išėjimo ar maitinimo įtampa, didesnis šviesos diodų D1 arba D2 intensyvumas. Taip pat galite patikrinti šiuos šviesos diodus naudodami potenciometrą VCC arba AOUT kaištį.
Sąsajos PCF8591 ADC / DAC modulis su „Arduino“
Visa programa ir darbinis vaizdo įrašas pateikiami šios pamokos pabaigoje.
Pirmiausia turime apibrėžti I 2 C ryšio biblioteką ir LCD ekraną.
# įtraukti
Tada nustatykite keletą makrokomandų. Pirmoji makrokomanda skirta duomenų magistralės adresui IC, o antroji makrokomanda - modulio pirmojo įvesties kaiščio, kuriame pateikiamas įvestis iš „pot“, adreso nustatymui.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Tada nustatykite LCD jungtis su „Arduino“ ir inicijuokite vertę, kurią gauname analoginiame kaište.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; „LiquidCrystal LCD“ (rs, en, d4, d5, d6, d7); int reikšmė = 0;
Dabar pereikime prie sąrankos funkcijos. Pirmoje eilutėje mes inicijavome „I 2 C“ ryšį. Antroje eilutėje mes inicijavome LCD ekraną, kuriame spausdiname analogines vertes. Sužinokite daugiau apie 16x2 LCD sąsają su „Arduino“ čia.
negaliojanti sąranka () { Wire.begin (); lcd.prade (16,2); }
Esant ciklo funkcijai, pirmoji eilutė turi pradėti perdavimą, ty ji pradeda PCF8591. Antroje eilutėje nurodoma IC atlikti analoginį matavimą ties pirmuoju analoginio įvesties kaiščiu. Trečioji linija baigia perdavimą, o ketvirtoji linija gauna išmatuotus duomenis iš analoginio kaiščio.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); „Wire.endTransmission“ (); „Wire.requestFrom“ (PCF8591, 1);
Kitoje dalyje įdėkite iš analoginio kaiščio perskaitytą reikšmę į anksčiau apibrėžtą vertės kintamąjį. Kitose eilutėse išspausdinkite šią vertę į LCD ekraną.
Reikšmė = Wire.read (); lcd.print ("ADC reikšmė ="); lcd.print (reikšmė); vėlavimas (500); lcd.clear ();}
Galiausiai įkelkite kodą į „Arduino“ ir paleiskite jį. Analoginės vertės pradės rodyti LCD ekrane. Sureguliuokite puodo rankenėlę ir pamatysite laipsnišką verčių pasikeitimą.