Il Raspberry Pi è un dispositivo eccellente per vari progetti elettronici, ma utilizzando un convertitore ADC è possibile espandere le sue capacità per misurare segnali analogici e interagire con una gamma più ampia di dispositivi.
Il Raspberry Pi normalmente non dispone di ingressi analogici. Ciò lo pone in una posizione di svantaggio rispetto alle schede basate su microcontrollore come Arduino.
Ma non disperare: ci sono molte opzioni da considerare. Puoi iniziare con un Raspberry Pi e un ADC esterno. In questa guida ti forniremo una panoramica completa su come utilizzare un convertitore ADC con un Raspberry Pi, concentrandoci sui passaggi chiave e sui potenziali vantaggi. Continua a leggere per scoprire come sfruttare al meglio il tuo dispositivo e integrarlo in modo efficace nei tuoi progetti elettronici. Verificare Cos'è un convertitore da analogico a digitale (ADC)? Comprendere il suo lavoro e la sua importanza nell'era della tecnologia digitale.

Link veloci
Perché vorresti aggiungere voci?
Il mondo reale è pieno di fenomeni che possono essere facilmente descritti utilizzando la tensione, se si dispone dei circuiti giusti. Converti queste tensioni elettriche in forma digitale e puoi registrarle, elaborarle e utilizzarle per controllare parametri e altri dispositivi.
Forse stai cercando di monitorare l'umidità del terreno, la temperatura della serra o il peso del tuo criceto. Potresti voler aggiungere un controllo del volume al tuo Pi, costruire un equalizzatore o progettare un joystick da zero. Le possibilità, più o meno, sono illimitate.
Opzioni dell'ADC
Quindi, quale ADC è il migliore per i principianti?
Tra le opzioni più popolari e semplici ci sono i chipset MCP3004 (E MCP3008) da Microchip. Otterrai quattro (o otto) canali a 10 bit, che possono leggere fino a 200k SPS. D'altra parte, ci sono i dispositivi ADS111x di Texas Instruments, che leggono 16 bit a 860 SPS. Pertanto, esiste un compromesso tra velocità e precisione (e, ovviamente, prezzo).
Molti microcontrollori sono dotati di convertitori ADC integrati. L'ATMega che trovi nell'Arduino medio fornirà diversi canali a 10 bit, oltre a tutto il resto. Questo è ciò che consente ad Arduino di fornire ingressi analogici dove il Raspberry Pi non può. Se hai già un Arduino coinvolto nella tua configurazione e 10 bit sono una precisione sufficiente, questo potrebbe essere il metodo più semplice.
Qui lo faremo semplice, con ADS1115 di Adafruit. Verificare I pro e i contro dell'utilizzo di un clone di Arduino nei tuoi progetti.

Cos'è un amplificatore a guadagno programmabile?
Questo chip è dotato di alcune funzionalità interessanti, tra cui un amplificatore di guadagno programmabile (PGA). Ciò ti consentirà di regolare digitalmente l'intervallo di valori desiderato, fino a una frazione di tensione. Con il numero di valori che possono rappresentare 16 bit, ciò consentirà di rilevare differenze piccole quanto pochi microvolt.
Il vantaggio qui è che puoi modificare il guadagno nel mezzo. Altri chip, come l'MCP3004, adottano un approccio diverso; Viene fornito con un pin aggiuntivo, per il quale è possibile fornire una tensione di riferimento.
E il multiplexing?
Un multiplexer (o mux) è un interruttore che consente di leggere più ingressi con un singolo ADC. Se il tuo chip ADC ha più porte di ingresso, si sta verificando un multiplexing interno. Il mux dell'ADS1115 consente quattro ingressi, che è possibile selezionare tramite registri interni.
Gestione dei record
L'ADS1115 offre queste opzioni, oltre ad alcune altre. Puoi manipolare il multiplexer, regolare il guadagno, attivare il comparatore integrato, modificare la frequenza di campionamento e mettere il dispositivo in modalità di sospensione a basso consumo, il tutto toccando alcuni tasti.
Ma dove sono quelle chiavi? Esistono all'interno del pacchetto, sotto forma di piccolissimi pezzi di memoria chiamati registri. Per attivare una particolare funzionalità è sufficiente impostare il bit relativo su 1, anziché su 0.
Guardando una scheda tecnica ADS111xScoprirai che questi modelli sono dotati di quattro registri, inclusi i registri di configurazione che governano il comportamento del dispositivo.

Ad esempio, i bit da 14 a 12 controllano il multiplexer. Usando questi tre bit, puoi scegliere tra otto configurazioni. Il numero che desideri qui è "100", che darà la differenza tra la voce zero e il minimo. D'altra parte, i bit da 7 a 5 controllano la frequenza di campionamento. Se si desidera il massimo di 860 campioni al secondo, è possibile impostarlo su “111”.
Una volta che sai quali opzioni vuoi impostare, avrai due byte da inviare all'ADC. Se in seguito desideri impostare un singolo bit qua o là, puoi gestirli individualmente utilizzando gli operatori bit.
È qui che può creare confusione. In questo caso il binario non rappresenta un valore, bensì i valori dei singoli trasformatori. È possibile esprimere queste variabili come un numero grande, in formato decimale o esadecimale. Ma se vuoi evitare lo stress, dovresti attenersi alla versione binaria, che è più facile da leggere.
Fili di collegamento
Puoi collegare questo adattatore direttamente al singolo pannello. Accetterà ingressi di tensione positiva tra 2 e 5.5 volt, il che significa che il binario da 3.3 volt sul Raspberry Pi funzionerà perfettamente.
Collega gli ingressi SDA e SCL alle loro controparti sull'RPi e fai le stesse cose con terra e 3.3 V. Prendi un voltmetro tra la terra e le linee di tensione, quindi inserisci il filo centrale nel primo ingresso dell'ADC. Questo è tutto ciò che ti serve per iniziare!
Trattare con I2C
Diversi ADC operano su protocolli diversi. Nel caso dell'ADS1115, utilizzeremo I2C.
L'esempio seguente interagirà con l'ADC utilizzando Python. Ma prima di farlo, dovrai configurarlo. Le versioni recenti del sistema operativo Raspberry Pi hanno reso tutto questo molto semplice. Vai a Preferenze > Configurazione Raspberry Pi. Quindi, dalla scheda Interfacce, attiva I2C.

Per verificare che tutto funzioni, apri Terminale ed esegui:
sudo i2cdetect -y 1Questo comando produrrà una mesh. Supponendo che tutto funzioni e che tu lo abbia collegato correttamente, vedrai apparire un nuovo valore nella griglia. Questo è l'indirizzo del tuo ADC. Tieni presente che si tratta di un valore esadecimale, quindi è necessario prefissarlo con "0x" quando lo si utilizza nel codice seguente. Ed ecco 0x48:

Una volta ottenuto l'indirizzo, puoi utilizzare la libreria SMBus per inviare comandi I2C. Ti occuperai di due metodi qui. Il primo è write_word_data(), che accetta tre argomenti: l'indirizzo del dispositivo, il registro in cui stai scrivendo e il valore che vuoi scrivere.
Il secondo è leggi_parola_data(), Che accetta solo l'indirizzo e la cronologia del dispositivo. L'ADC leggerà continuamente le tensioni e memorizzerà il risultato nel registro di commutazione. Utilizzando questo metodo è possibile recuperare il contenuto di questo record.
Puoi abbellire un po' il risultato e poi stamparlo. Prima di tornare all'inizio del loop, esegui una breve pausa. Ciò garantirà di non essere sopraffatto dai dati.
da SMBus importare SMBus
importare orario indirizzo = 0x48
autobus = SMBus(1)
# imposta i registri per la lettura
CONFIGURAZIONE = 1
CONVERSIONEREG = 0# imposta il registro degli indirizzi in modo che punti al registro di configurazione# scrivere nei registri di configurazione
bus.write_word_data(addr, CONFIGREG, (0b00000100 << 8 | 0b10000010))
# definisce la parte superiore dell'intervallo
IN ALTO = 26300whileI veri:
# leggere il registro
b = bus.read_word_data(addr, CONVERSIONREG)
# scambia i due byte
b = ((b & 0xFF) < 8) | ((b >> 8) E 0xFF)
# sottrarre metà dell'intervallo per impostare la terra a zero
e -= 0x8000# Dividi il risultato per l'intervallo per darci un valore compreso tra zero e uno
b /= ALTO
# tappo a uno
b = min(B, 1)
# il fondo è zero
b = max(B, 0)
# due cifre decimali
b = tondo(B, 2)
print(b) tempo.sonno(.01)Hai quasi finito. Imposta l'intervallo di valori che ottieni sul valore che preferisci, quindi troncalo al numero di cifre decimali desiderato. È possibile personalizzare la funzione di stampa in modo che stampi un nuovo valore solo quando è diverso dall'ultimo valore.
Affrontare il rumore
Ora, a meno che la tua configurazione non sia davvero bella, pulita e ordinata, noterai del rumore. Questo è lo svantaggio intrinseco dell'utilizzo di 16 bit invece di soli dieci: quella piccola quantità di rumore sarà più evidente.
Collegando l'ingresso adiacente (Ingresso 1) a terra e cambiando la modalità in modo da confrontare il primo e il secondo ingresso, è possibile ottenere risultati più stabili. Puoi anche sostituire i cavi lunghi per la raccolta del rumore con cavi più piccoli e aggiungere alcuni condensatori mentre effettui questa regolazione. Anche il valore del tuo potenziometro può fare la differenza.
Ci sono anche opzioni software. Puoi creare una media mobile o semplicemente ignorare piccole modifiche. Lo svantaggio è che il codice aggiuntivo imporrà un costo computazionale. Se stai scrivendo istruzioni condizionali in un linguaggio di alto livello come Python, prelevando migliaia di campioni al secondo, questi costi aumenteranno rapidamente. Verificare Guida al monitoraggio della temperatura Raspberry Pi e Sense HAT: passaggi e suggerimenti migliori.
domande comuni
Q1. Cos'è un convertitore ADC e come funziona con Raspberry Pi?
Un ADC (convertitore analogico-digitale) è un dispositivo che converte i segnali analogici in segnali digitali. Un ADC può essere collegato a un Raspberry Pi per consentirgli di leggere segnali analogici da fonti come sensori e variabili ambientali.
Q2. Quali sono i principali vantaggi derivanti dall'utilizzo di un convertitore ADC con Raspberry Pi?
- Espandi le capacità di misurazione: consente di utilizzare segnali analogici come luce, temperatura, suono e altro.
- Maggiore precisione: La conversione dei segnali analogici in digitali fornisce una maggiore precisione nelle letture.
- Supporta una varietà di dispositivi: Può essere utilizzato con un'ampia gamma di dispositivi elettronici e progetti Raspberry Pi.
Q3. Come collego un convertitore ADC a un Raspberry Pi?
Il convertitore ADC può essere collegato al Raspberry Pi tramite l'interfaccia GPIO utilizzando gli appositi cavi e connettori. È necessario prestare attenzione e seguire la guida alle comunicazioni inclusa con il convertitore ADC.
Q4. Posso utilizzare il convertitore ADC con tutte le versioni di Raspberry Pi?
Sì, l'ADC può essere utilizzato con la maggior parte delle versioni di Raspberry Pi. Tuttavia, potrebbe essere necessario considerare la possibilità di collegare l'adattatore alla porta GPIO appropriata per la propria versione hardware.
Q5. L'utilizzo di un convertitore ADC richiede esperienza di programmazione?
Dipende dall'ambito del progetto. In casi semplici è possibile utilizzare librerie già pronte. Tuttavia, alcuni progetti potrebbero richiedere competenze di programmazione per utilizzare i dati in modo efficace.
Andare avanti con diversi potenziali passi successivi
Effettuare letture tramite I2C è molto semplice e lo stesso vale per altri metodi, come SPI. Anche se può sembrare che ci siano differenze significative tra le opzioni ADC disponibili, la verità è che una volta che ne hai una in esecuzione, è facile applicare le conoscenze acquisite alle altre.
Allora perché non andiamo oltre? Collega diversi potenziometri insieme o prova a leggere la luce, il suono o la temperatura. Espandi il controller che hai appena creato e crea una configurazione Raspberry Pi davvero funzionale! Ora puoi visualizzare Potenziali sfide dell'hosting autonomo dei tuoi progetti Raspberry Pi.










