Conversia analogică la digitală este o sarcină foarte importantă în electronica încorporată, deoarece majoritatea senzorilor furnizează ieșiri ca valori analogice și pentru a le alimenta în microcontroler care înțelege doar valorile binare, trebuie să le convertim în valori digitale. Deci, pentru a putea procesa datele analogice, microcontrolerele au nevoie de convertor analog la digital.
Unele microcontrolere au ADC încorporat, cum ar fi Arduino, MSP430, PIC16F877A, dar unele microcontrolere nu îl au ca 8051, Raspberry Pi etc. Mai jos puteți găsi diverse exemple de ADC cu diferite microcontrolere:
- Cum se utilizează ADC în Arduino Uno?
- Tutorial ADC Raspberry Pi
- Interfațarea ADC0808 cu microcontrolerul 8051
- Voltmetru digital 0-25V folosind microcontrolerul AVR
- Cum se utilizează ADC în STM32F103C8
- Cum se utilizează ADC în MSP430G2
- Cum se utilizează ADC în ARM7 LPC2148
- Utilizarea modulului ADC al microcontrolerului PIC cu MPLAB și XC8
În acest tutorial, vom verifica cum să interfațăm modulul PCF8591 ADC / DAC cu Arduino.
Componente necesare
- Arduino UNO
- Modul ADC PCF8591
- Oală de 100K
- Cabluri jumper
Modulul PCF8591 ADC / DAC
PCF8591 este un modul convertor analogic digital pe 8 biți sau digital convertor analogic pe 8 biți, ceea ce înseamnă că fiecare pin poate citi valori analogice până la 256. Are, de asemenea, LDR și circuit termistor furnizat pe placă. Acest modul are patru intrări analogice și o ieșire analogică. Funcționează pe comunicația I 2 C, deci există pin SCL și SDA pentru ceasul serial și adresa de date seriale. Necesită tensiune de alimentare de 2,5-6V și are un curent de stand-by redus. De asemenea, putem manipula tensiunea de intrare reglând butonul potențiometrului de pe modul. Există, de asemenea, trei săritori pe tablă. J4 este conectat pentru a selecta circuitul de acces la termistor, J5 este conectat pentru a selecta circuitul de acces la rezistorul LDR / foto iar J6 este conectat pentru a selecta circuitul reglabil de acces la tensiune. Pentru a accesa aceste circuite trebuie să utilizați adresele acestor jumperi: 0x50 pentru J6, 0x60 pentru J5 și 0x70 pentru J4. Există două LED-uri la bordul D1 și D2-D1 arată intensitatea tensiunii de ieșire și D2 arată intensitatea tensiunii de alimentare. Cu cât tensiunea de ieșire sau de alimentare este mai mare, cu atât este mai mare intensitatea LED-urilor D1 sau D2. De asemenea, puteți testa aceste LED-uri utilizând un potențiometru pe VCC sau pe pinul AOUT.
Interfațarea modulului PCF8591 ADC / DAC cu Arduino
Programul complet și videoclipul de lucru sunt date la sfârșitul acestui tutorial.
În primul rând, trebuie să definim biblioteca pentru comunicarea I 2 C și afișajul LCD.
#include
Apoi definiți câteva macrocomenzi. Prima macro este pentru definirea adresei magistralei de date pentru IC și a doua macro este pentru definirea adresei primului pin de intrare al modulului, unde este dată intrarea din pot.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Apoi definiți conexiunile pin ale LCD-ului cu Arduino și inițializați valoarea pe care o obținem la pinul analogic.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Valoare = 0;
Acum, să trecem la funcția de configurare . Aici, în prima linie am inițializat comunicarea I 2 C. Și în a doua linie, am inițializat afișajul LCD pe care tipărim valorile analogice. Aflați mai multe despre interfața LCD 16x2 cu Arduino aici.
void setup () { Wire.begin (); lcd.inceput (16,2); }
În funcția de buclă , prima linie este să înceapă transmisia, adică pornește PCF8591. A doua linie spune IC-ului să facă măsurarea analogică la primul pin de intrare analogic. A treia linie încheie transmisia, iar a patra linie primește datele măsurate de la pinul analogic.
bucla void () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
În porțiunea următoare, puneți valoarea citită de la pinul analogic la variabila Value definită anterior. Și în rândurile următoare, imprimați această valoare pe ecranul LCD.
Valoare = Wire.read (); lcd.print ("Valoare ADC ="); lcd.print (Valoare); întârziere (500); lcd.clear ();}
În cele din urmă, încărcați codul în Arduino și rulați-l. Valorile analogice vor începe să apară pe ecranul LCD. Reglați butonul potului și veți vedea schimbarea treptată a valorilor.