Analogna v digitalno pretvorbo je zelo pomembna naloga vgrajene elektronike, saj večina senzorjev zagotavlja izhodne podatke kot analogne vrednosti in jih za napajanje v mikrokrmilnik, ki razume le binarne vrednosti, moramo pretvoriti v digitalne vrednosti. Da bi lahko mikrokrmilniki lahko obdelali analogne podatke, potrebujejo analogno-digitalni pretvornik.
Nekateri mikrokrmilniki imajo vgrajen ADC, kot so Arduino, MSP430, PIC16F877A, nekateri mikrokrmilniki pa ga nimajo, na primer 8051, Raspberry Pi itd. Spodaj najdete različne primere ADC z različnimi mikrokrmilniki:
- Kako uporabljati ADC v Arduino Uno?
- Vadnica za ADC Raspberry Pi
- Povezava ADC0808 z mikrokrmilnikom 8051
- 0-25V digitalni voltmeter z uporabo mikrokrmilnika AVR
- Kako uporabljati ADC v STM32F103C8
- Kako uporabljati ADC v MSP430G2
- Kako uporabljati ADC v ARM7 LPC2148
- Uporaba modula ADC mikrokrmilnika PIC z MPLAB in XC8
V tej vadnici bomo preverili, kako povezati modul ADC / DAC PCF8591 z Arduino.
Zahtevane komponente
- Arduino UNO
- PCF8591 ADC modul
- 100K lonec
- Jumper kabli
Modul ADC / DAC PCF8591
PCF8591 je 8-bitni analogno-digitalni ali 8-bitni digitalno-analogni pretvorniški modul, kar pomeni, da lahko vsak zatič bere analogne vrednosti do 256. Na plošči je na voljo tudi LDR in vezje termistorja. Ta modul ima štiri analogne vhode in en analogni izhod. Deluje na komunikaciji I 2 C, zato obstajajo zatiči SCL in SDA za serijsko uro in naslov serijskih podatkov. To zahteva 2.5-6V napajalne napetosti in imajo nizko stand-by tok. Z vhodno napetostjo lahko manipuliramo tudi z nastavitvijo gumba potenciometra na modulu. Na deski so tudi trije skakalci. J4 je priključen za izbiro vezja za dostop do termistorja, J5 je povezan za izbiro vezja za dostop LDR / foto upora in J6 je priključen za izbiro nastavljivega tokokroga za dostop. Za dostop do teh vezij morate uporabiti naslove teh mostičkov: 0x50 za J6, 0x60 za J5 in 0x70 za J4. Na krovu D1 in D2-D1 sta dve LED diodi, ki prikazujeta intenziteto izhodne napetosti, D2 pa prikazuje intenzivnost napajalne napetosti. Višja kot je izhodna ali napajalna napetost, večja je jakost LED D1 ali D2. Te LED lahko preizkusite tudi z uporabo potenciometra na VCC ali na zatiču AOUT.
Povezava modula ADC / DAC PCF8591 z Arduinom
Celoten program in delovni video je podan na koncu tega učbenika.
Najprej moramo definirati knjižnico za komunikacijo I 2 C in LCD zaslon.
#include
Nato določite nekaj makrov. Prvi makro je namenjen določanju naslova podatkovnega vodila za IC, drugi makro pa opredelitvi naslova prvega vhodnega zatiča modula, kjer je podan vnos iz pot.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Nato definirajte pin-povezave LCD-ja z Arduinom in inicializirajte vrednost, ki jo dobimo na analognem pin-u.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LCD LiquidCrystal (rs, en, d4, d5, d6, d7); int vrednost = 0;
Zdaj pa pojdimo na nastavitveno funkcijo. Tu smo v prvi vrstici inicializirali komunikacijo I 2 C. In v drugi vrstici smo inicializirali LCD zaslon, na katerega tiskamo analogne vrednosti. Več o povezovanju 16x2 LCD z Arduino lahko preberete tukaj.
void setup () { Wire.begin (); lcd.begin (16,2); }
V funkciji zanke mora prva vrstica začeti prenos, torej zagnati PCF8591. Druga vrstica IC sporoča, naj izvede analogno meritev na prvem analognem vhodnem zatiču. Tretja vrstica konča prenos, četrta vrstica pa izmerjene podatke dobi iz analognega zatiča.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
V naslednjem delu postavite vrednost, prebrano z analognega zatiča, na spremenljivko vrednosti, ki je bila določena prej. V naslednjih vrsticah to vrednost natisnite na LCD.
Vrednost = Wire.read (); lcd.print ("Vrednost ADC ="); lcd.print (vrednost); zamuda (500); lcd.clear ();}
Končno naložite kodo v Arduino in jo zaženite. Analogne vrednosti se bodo začele prikazovati na LCD zaslonu. Prilagodite gumb lonca in videli boste postopno spreminjanje vrednosti.