Analog til digital konvertering er en meget vigtig opgave i indbygget elektronik, da de fleste sensorer leverer output som analoge værdier og for at føde dem til mikrocontroller, som kun forstår binære værdier, er vi nødt til at konvertere dem til digitale værdier. For at kunne behandle de analoge data har mikrocontrollere brug for Analog til Digital Converter.
Nogle mikrokontroller har indbygget ADC som Arduino, MSP430, PIC16F877A, men nogle mikrokontroller har det ikke som 8051, Raspberry Pi osv., Og vi skal bruge nogle eksterne analoge til digitale konverter IC'er som ADC0804, ADC0808. Nedenfor kan du finde forskellige eksempler på ADC med forskellige mikrocontrollere:
- Hvordan bruges ADC i Arduino Uno?
- Raspberry Pi ADC vejledning
- Interfacing ADC0808 med 8051 Microcontroller
- 0-25V digitalt voltmeter ved hjælp af AVR-mikrocontroller
- Sådan bruges ADC i STM32F103C8
- Sådan bruges ADC i MSP430G2
- Sådan bruges ADC i ARM7 LPC2148
- Brug af ADC-modul fra PIC Microcontroller med MPLAB og XC8
I denne vejledning skal vi kontrollere, hvordan man interface PCF8591 ADC / DAC-modul med Arduino.
Nødvendige komponenter
- Arduino UNO
- PCF8591 ADC-modul
- 100K pot
- Jumperkabler
PCF8591 ADC / DAC-modul
PCF8591 er et 8 bit analogt til digitalt eller 8 bit digitalt til analogt konverteringsmodul, hvilket betyder, at hver ben kan læse analoge værdier op til 256. Det har også LDR og termistor kredsløb på kortet. Dette modul har fire analoge indgange og en analoge indgange. Det fungerer på I 2 C-kommunikation, så der er SCL- og SDA-ben til serielt ur og seriel data-adresse. Det kræver 2,5-6V forsyningsspænding og har lav standby-strøm. Vi kan også manipulere indgangsspændingen ved at justere drejeknappen til potentiometeret på modulet. Der er også tre springere på tavlen. J4 er forbundet for at vælge termistoradgangskredsløb, J5 er tilsluttet for at vælge LDR / fotomodstandsadgangskredsløb og J6 er tilsluttet for at vælge det justerbare spændingsadgangskredsløb. For at få adgang til disse kredsløb skal du bruge adresserne på disse jumpere: 0x50 for J6, 0x60 for J5 og 0x70 for J4. Der er to lysdioder om bord på D1, og D2-D1 viser udgangsspændingsintensiteten, og D2 viser intensiteten af forsyningsspændingen. Højere output- eller forsyningsspænding, højere intensitet af LED D1 eller D2. Du kan også teste disse lysdioder ved hjælp af et potentiometer på VCC eller på AOUT-pin.
Interfacing PCF8591 ADC / DAC-modul med Arduino
Det komplette program og arbejdsvideoen er vist i slutningen af denne vejledning.
For det første skal vi definere biblioteket til I 2 C-kommunikation og LCD-skærm.
#omfatte
Definer derefter nogle makroer. Den første makro er til at definere adressen på databussen for IC, og den anden makro er til at definere adressen på modulets første inputstift, hvor input fra potten er givet.
#definer PCF8591 (0x90 >> 1) #definer AIn0 0x00
Definer derefter pin-forbindelserne på LCD med Arduino og initialiser den værdi, som vi får ved analog pin.
konst int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Værdi = 0;
Lad os nu komme til opsætningsfunktionen . Her i første linje har vi initialiseret I 2 C-kommunikationen. Og i anden linje har vi initialiseret LCD-skærmen, hvor vi udskriver de analoge værdier. Lær mere om interface 16x2 LCD med Arduino her.
ugyldig opsætning () { Wire.begin (); lcd.begin (16,2); }
I loop- funktion er den første linje at starte transmissionen, dvs. at den starter PCF8591. Den anden linje fortæller IC'en at foretage den analoge måling ved den første analoge indgangsstift. Tredje linje afslutter transmission og fjerde linje får de målte data fra analog pin.
ugyldig sløjfe () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
I den næste del skal du sætte den læste værdi fra den analoge pin til den værdi, der blev defineret tidligere. Og i de næste linjer skal du udskrive denne værdi til LCD'et.
Værdi = Wire.read (); lcd.print ("ADC Value ="); lcd.print (værdi); forsinkelse (500); lcd.clear ();}
Endelig upload koden i Arduino og kør den. De analoge værdier vises på LCD-displayet. Juster grytens knap, så ser du den gradvise ændring af værdierne.