- Componenti richiesti
- Modulo ADC / DAC PCF8591
- Pin I2C in Raspberry Pi
- Interfacciamento del modulo ADC / DAC PCF8591 con Raspberry Pi
- Programma Python per la conversione da analogico a digitale (ADC)
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, impareremo come interfacciare il modulo ADC / DAC PCF8591 con Raspberry Pi.
Componenti richiesti
- Raspberry-pi
- Modulo ADC PCF8591
- 100K Pot
- Cavi jumper
Si presume che tu abbia Raspberry Pi con l'ultimo sistema operativo Raspbian installato e che tu sappia come SSH nel Pi utilizzando un software terminale come putty. Se sei nuovo su Raspberry Pi, segui questo articolo per iniziare con Raspberry Pi. Tuttavia, se incontri qualche problema, ci sono tonnellate di tutorial Raspberry Pi che possono aiutarti.
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 / fotocellulae J6 è collegato per selezionare il circuito di accesso a tensione regolabile. 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.
Pin I2C in Raspberry Pi
Per utilizzare PCF8591 con Raspberry Pi, la prima cosa da fare è conoscere i pin della porta I2C di Raspberry Pi e configurare la porta I2C nel Raspberry pi.
Di seguito è riportato il diagramma dei pin di Raspberry Pi 3 Model B + e in questo tutorial vengono utilizzati i pin I2C GPIO2 (SDA) e GPIO3 (SCL).
Configurazione di I2C in Raspberry Pi
Per impostazione predefinita, I2C è disabilitato in Raspberry Pi. Quindi prima deve essere abilitato. Per abilitare l'I2C in Raspberry Pi
1. Vai al terminale e digita sudo raspi-config.
2. Ora viene visualizzato lo strumento di configurazione del software Raspberry Pi.
3. Selezionare le opzioni di interfaccia e quindi abilitare l'I2C.
4. Dopo aver abilitato l'I2C, riavviare il Pi.
Scansione dell'indirizzo I2C del PCF8591 utilizzando Raspberry Pi
Ora per avviare la comunicazione con l'IC PCF8591, il Raspberry Pi deve conoscere il suo indirizzo I2C. Per trovare l'indirizzo, collegare prima i pin SDA e SCL di PCF8591 ai pin SDA e SCL di Raspberry Pi. Collegare anche i pin + 5V e GND.
Ora apri il terminale e digita il comando di seguito per conoscere l'indirizzo del dispositivo I2C collegato, sudo i2cdetect –y 1 o sudo i2cdetect –y 0
Dopo aver trovato l'indirizzo I2C ora è il momento di costruire il circuito e installare le librerie necessarie per l'utilizzo di PCF8591 con Raspberry Pi.
Interfacciamento del modulo ADC / DAC PCF8591 con Raspberry Pi
Lo schema del circuito per l' interfacciamento del PCF8591 con Raspberry Pi è semplice. In questo esempio di interfaccia, leggeremo i valori analogici da uno qualsiasi dei pin analogici e li mostreremo sul terminale Raspberry Pi. Possiamo cambiare i valori usando un piatto da 100K.
Collega VCC e GND a GPIO2 e GPIO di Raspberry Pi. Quindi, collega SDA e SCL rispettivamente a GPIO3 e GPIO5. Infine collega un vaso da 100K con AIN0. Puoi anche aggiungere un LCD 16x2 per visualizzare i valori ADC invece di mostrarli sul terminale. Scopri di più sull'interfacciamento di LCD 16x2 con Raspberry Pi qui.
Programma Python per la conversione da analogico a digitale (ADC)
Il programma completo e il video di lavoro sono forniti alla fine di questo tutorial.
In primo luogo, importare la libreria smbus per la comunicazione bus I 2 C e la libreria tempo per fornire un tempo di sospensione tra la stampa del valore.
import smbus import time
Ora definisci alcune variabili. La prima variabile contiene l'indirizzo del bus I 2 C e la seconda variabile contiene l'indirizzo del primo pin di ingresso analogico.
indirizzo = 0x48 A0 = 0x40
Successivamente, abbiamo creato un oggetto della funzione SMBus (1) della libreria smbus
bus = smbus.SMBus (1)
Ora, mentre la prima riga dice all'IC di effettuare la misurazione analogica al primo pin di ingresso analogico. La seconda riga memorizza l'indirizzo letto sul pin analogico in un valore variabile. Infine stampa il valore.
while True: bus.write_byte (indirizzo, A0) valore = bus.read_byte (indirizzo) print (valore) time.sleep (0.1)
Ora finalmente salva il codice python in un file con estensione.py ed esegui il codice nel terminale Raspberry Pi usando il comando sottostante "
nomefile python.py
Prima di eseguire il codice assicurarsi di aver abilitato la comunicazione I 2 C e che tutti i pin siano collegati come mostrato nello schema, altrimenti verranno visualizzati degli errori. I valori analogici devono iniziare a essere visualizzati sul terminale come di seguito. Regola la manopola del potenziometro e vedrai il graduale cambiamento dei valori. Ulteriori informazioni sull'esecuzione del programma in
Di seguito sono riportati il codice e il video Python completi.