- ADC0804 e Raspberry Pi:
- Componenti richiesti:
- Spiegazione del circuito:
- Spiegazione della programmazione:
- Lavorando:
Raspberry Pi è una scheda basata su processore con architettura ARM progettata per ingegneri elettronici e hobbisti. Il PI è una delle piattaforme di sviluppo di progetti più affidabili attualmente disponibili. Con una maggiore velocità del processore e 1 GB di RAM, il PI può essere utilizzato per molti progetti di alto profilo come l'elaborazione delle immagini e Internet of Things.
Per fare uno qualsiasi dei progetti di alto profilo, è necessario comprendere le funzioni di base di PI. Tratteremo tutte le funzionalità di base di Raspberry Pi in questi tutorial. In ogni tutorial discuteremo una delle funzioni di PI. Entro la fine di questa serie di tutorial Raspberry Pi, sarai in grado di realizzare progetti di alto profilo da solo. Segui i tutorial seguenti:
- Guida introduttiva a Raspberry Pi
- Configurazione Raspberry Pi
- LED lampeggiante
- Interfaccia pulsante Raspberry Pi
- Generazione PWM Raspberry Pi
- Controllo del motore CC utilizzando Raspberry Pi
- Controllo motore passo-passo con Raspberry Pi
- Interfacciamento del registro a scorrimento con Raspberry Pi
In questo tutorial, interfacciamo un chip ADC (Analog to Digital Conversion) a Raspberry Pi. Conosciamo tutti i parametri dell'analogico, significa che ci variano continuamente nel tempo. Diciamo per esempio la temperatura della stanza, la temperatura della stanza varia continuamente nel tempo. Questa temperatura è dotata di numeri decimali. Ma nel mondo digitale, non ci sono numeri decimali, quindi dobbiamo convertire il valore analogico in valore digitale. Questo processo di conversione viene eseguito dalla tecnica ADC. Ulteriori informazioni su ADC qui: Introduzione ad ADC0804
ADC0804 e Raspberry Pi:
I controller normali hanno canali ADC ma per PI non ci sono canali ADC forniti internamente. Quindi, se vogliamo interfacciare qualsiasi sensore analogico, abbiamo bisogno di un'unità di conversione ADC. Quindi per questo scopo andremo a interfacciare ADC0804 con Raspberry Pi.
ADC0804 è un chip progettato per convertire il segnale analogico in dati digitali a 8 bit. Questo chip è una delle serie popolari di ADC. È un'unità di conversione a 8 bit, quindi abbiamo valori o valori da 0 a 255. Con una tensione di misurazione massima di 5 V, avremo una variazione ogni 19,5 mV. Di seguito è riportato il Pinout di ADC0804:
Ora un'altra cosa importante qui è che l' ADC0804 funziona a 5V e quindi fornisce un'uscita in segnale logico a 5V. Nell'uscita a 8 pin (che rappresenta 8 bit), ogni pin fornisce un'uscita + 5V per rappresentare "1" logico. Quindi il problema è che la logica PI è di + 3,3 V, quindi non è possibile dare logica + 5 V al pin GPIO + 3,3 V di PI. Se dai + 5V a qualsiasi pin GPIO di PI, la scheda viene danneggiata.
Quindi per abbassare il livello logico da + 5V, useremo il circuito del divisore di tensione. Abbiamo discusso il circuito del divisore di tensione in precedenza esaminarlo per ulteriori chiarimenti. Quello che faremo è utilizzare due resistori per dividere la logica + 5V in logiche 2 * 2.5V. Quindi, dopo la divisione, daremo una logica + 2.5v a PI. Quindi, ogni volta che l'ADC0804 presenta "1" logico, vedremo + 2,5 V al pin PI GPIO, invece di + 5 V.
Scopri di più sui pin GPIO di Raspberry Pi qui e segui i nostri tutorial precedenti.
Componenti richiesti:
Qui stiamo usando Raspberry Pi 2 Model B con Raspbian Jessie OS. Tutti i requisiti hardware e software di base sono stati discussi in precedenza, puoi cercarli nell'introduzione di Raspberry Pi, oltre a quello di cui abbiamo bisogno:
- Perni di collegamento
- Resistenza da 220Ω o 1KΩ (17 pezzi)
- Pentola da 10K
- Condensatore 0,1µF (2 pezzi)
- ADC0804 IC
- Tagliere per il pane
Spiegazione del circuito:
Funziona con una tensione di alimentazione di + 5V e può misurare un intervallo di tensione variabile nell'intervallo 0-5V.
I collegamenti per interfacciare ADC0804 a Raspberry PI, sono mostrati nello schema elettrico sopra.
L'ADC ha sempre molto rumore, questo rumore può influenzare notevolmente le prestazioni, quindi utilizziamo un condensatore da 0,1uF per la filtrazione del rumore. Senza questo ci saranno molte fluttuazioni in uscita.
Il chip funziona sul clock dell'oscillatore RC (Resistor-Capacitor). Come mostrato nello schema del circuito, C2 e R20 formano un orologio. La cosa importante da ricordare qui è che il condensatore C2 può essere modificato su un valore inferiore per un tasso di conversione ADC più elevato. Tuttavia, con una velocità maggiore, la precisione diminuirà. Quindi, se l'applicazione richiede una maggiore precisione, scegli il condensatore con valore più alto e per una velocità maggiore scegli il condensatore con valore più basso.
Spiegazione della programmazione:
Una volta che tutto è collegato come da schema elettrico, possiamo accendere il PI per scrivere il programma in PYHTON.
Parleremo di alcuni comandi che useremo nel programma PYHTON, Stiamo per importare il file GPIO dalla libreria, la funzione sottostante ci consente di programmare i pin GPIO di PI. Stiamo anche rinominando "GPIO" in "IO", quindi nel programma ogni volta che vogliamo fare riferimento ai pin GPIO useremo la parola "IO".
importa RPi.GPIO come IO
A volte, quando i pin GPIO, che stiamo cercando di utilizzare, potrebbero svolgere altre funzioni. In tal caso, riceveremo avvisi durante l'esecuzione del programma. Il comando seguente indica al PI di ignorare gli avvisi e procedere con il programma.
IO.setwarnings (False)
Possiamo fare riferimento ai pin GPIO di PI, sia per numero di pin a bordo che per numero di funzione. Come il "PIN 29" sulla scheda è "GPIO5". Quindi diciamo qui o rappresenteremo il pin qui con "29" o "5".
IO.setmode (IO.BCM)
Stiamo impostando 8 pin come pin di input. Rileveremo 8 bit di dati ADC da questi pin.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
Nel caso in cui la condizione tra parentesi graffe sia vera, le istruzioni all'interno del ciclo verranno eseguite una volta. Quindi, se il pin GPIO 19 diventa alto, le istruzioni all'interno del ciclo IF verranno eseguite una volta. Se il pin 19 GPIO non va in alto, le istruzioni all'interno del ciclo IF non verranno eseguite.
if (IO.input (19) == True):
Il comando seguente viene utilizzato come ciclo per sempre, con questo comando le istruzioni all'interno di questo ciclo verranno eseguite continuamente.
Mentre 1:
Ulteriori spiegazioni sul Programma sono fornite nella sezione Codice sottostante.
Lavorando:
Dopo aver scritto il programma ed eseguito, vedrai "0" sullo schermo. '0' significa 0 volt in ingresso.
Se regoliamo il piatto da 10K collegato al chip, vedremo il cambiamento nei valori sullo schermo. I valori sullo schermo continuano a scorrere continuamente, questi sono i valori digitali letti da PI.
Diciamo che se portiamo il potenziometro al centro, abbiamo + 2.5V all'ingresso ADC0804. Quindi vediamo 128 sullo schermo come mostrato di seguito.
Per il valore analogico + 5V, avremo 255.
Quindi, variando il potenziometro, si varia la tensione da 0 a + 5V all'ingresso ADC0804. Con questo PI leggere i valori da 0-255. I valori vengono stampati sullo schermo.
Quindi abbiamo interfacciato ADC0804 con Raspberry Pi.