- Componenti richiesti
- Modulo ADC / DAC PCF8591
- Interfacciamento del modulo ADC / DAC PCF8591 con Arduino
La conversione da analogico a digitale è un compito molto importante nell'elettronica incorporata, poiché la maggior parte dei sensori fornisce output come valori analogici e per inserirli in microcontrollori che comprendono solo valori binari, dobbiamo convertirli in valori digitali. Quindi per essere in grado di elaborare i dati analogici, i microcontrollori necessitano di un convertitore da analogico a digitale.
Alcuni microcontrollori hanno un ADC integrato come Arduino, MSP430, PIC16F877A ma alcuni microcontrollori non ce l'hanno come 8051, Raspberry Pi ecc. E dobbiamo utilizzare alcuni circuiti integrati di conversione analogico-digitale esterni come ADC0804, ADC0808. Di seguito puoi trovare vari esempi di ADC con diversi microcontrollori:
- Come utilizzare ADC in Arduino Uno?
- Tutorial ADC Raspberry Pi
- Interfacciamento ADC0808 con Microcontrollore 8051
- Voltmetro digitale 0-25V con microcontrollore AVR
- Come utilizzare ADC in STM32F103C8
- Come utilizzare ADC in MSP430G2
- Come utilizzare ADC in ARM7 LPC2148
- Utilizzo del modulo ADC del microcontrollore PIC con MPLAB e XC8
In questo tutorial, controlleremo come interfacciare il modulo ADC / DAC PCF8591 con Arduino.
Componenti richiesti
- Arduino UNO
- Modulo ADC PCF8591
- 100K Pot
- Cavi jumper
Modulo ADC / DAC PCF8591
PCF8591 è un modulo convertitore da 8 bit da analogico a digitale o da 8 bit da digitale ad analogico, il che significa che ogni pin può leggere valori analogici fino a 256. Ha anche un circuito LDR e termistore fornito sulla scheda. Questo modulo ha quattro ingressi analogici e un'uscita analogica. Funziona sulla comunicazione I 2 C, quindi ci sono pin SCL e SDA per l'orologio seriale e l'indirizzo dati seriali. Richiede una tensione di alimentazione di 2,5-6 V e una bassa corrente di stand-by. Possiamo anche manipolare la tensione di ingresso regolando la manopola del potenziometro sul modulo. Ci sono anche tre ponticelli sul tabellone. J4 è collegato per selezionare il circuito di accesso al termistore, J5 è collegato per selezionare il circuito di accesso LDR / fotocellula e J6 è collegato per selezionare il circuito di accesso a tensione regolabile. Per accedere a questi circuiti è necessario utilizzare gli indirizzi di questi jumper: 0x50 per J6, 0x60 per J5 e 0x70 per J4. Ci sono due LED sulla scheda D1 e D2-D1 mostra l'intensità della tensione di uscita e D2 mostra l'intensità della tensione di alimentazione. Maggiore è la tensione di uscita o di alimentazione, maggiore è l'intensità del LED D1 o D2. Puoi anche testare questi LED usando un potenziometro su VCC o sul pin AOUT.
Interfacciamento del modulo ADC / DAC PCF8591 con Arduino
Il programma completo e il video di lavoro sono forniti alla fine di questo tutorial.
In primo luogo, dobbiamo definire la libreria per la comunicazione I 2 C e il display LCD.
#includere
Quindi definire alcune macro. La prima macro è per definire l'indirizzo del bus dati per IC e la seconda macro è per definire l'indirizzo del primo pin di ingresso del modulo, dove viene fornito l'ingresso dal pot.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Quindi definire le connessioni pin di LCD con Arduino e inizializzare il valore che stiamo ottenendo sul pin analogico.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); valore int = 0;
Ora, veniamo alla funzione di configurazione . Qui, in prima riga, abbiamo inizializzato la comunicazione I 2 C. E nella seconda riga, abbiamo inizializzato il display LCD su cui stiamo stampando i valori analogici. Scopri di più sull'interfacciamento di LCD 16x2 con Arduino qui.
void setup () { Wire.begin (); lcd.begin (16,2); }
Nella funzione loop , la prima riga è per iniziare la trasmissione, cioè avvia il PCF8591. La seconda riga indica all'IC di effettuare la misurazione analogica sul primo pin di ingresso analogico. La terza riga termina la trasmissione e la quarta riga riceve i dati misurati dal pin analogico.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
Nella parte successiva, inserire il valore letto dal pin analogico nella variabile Value definita in precedenza. E nelle righe successive, stampa quel valore sul display LCD.
Valore = Wire.read (); lcd.print ("ADC Value ="); lcd.print (Value); ritardo (500); lcd.clear ();}
Infine carica il codice in Arduino ed eseguilo. I valori analogici inizieranno a essere visualizzati sul display LCD. Regola la manopola del piatto e vedrai il graduale cambiamento dei valori.