- ADC0804 e Raspberry Pi:
- Sensore di temperatura LM35:
- Componenti richiesti:
- Circuito e spiegazione di lavoro:
- Spiegazione della programmazione:
Abbiamo principalmente coperto tutti i componenti di base che si interfacciano con Raspberry Pi nella nostra serie di tutorial Raspberry Pi. Abbiamo coperto tutti i tutorial in modo semplice e dettagliato, in modo che chiunque, che abbia lavorato con Raspberry Pi o meno, possa imparare facilmente da questa serie. E dopo aver seguito tutti i tutorial sarai in grado di costruire alcuni progetti di alto livello usando Raspberry Pi.
Quindi qui stiamo progettando la prima applicazione basata sui tutorial precedenti. La prima applicazione di base è una Reading Room Temperature di Raspberry Pi. E puoi monitorare le letture sul computer.
Come discusso nei tutorial precedenti, non ci sono canali ADC forniti internamente in Raspberry Pi. Quindi, se vogliamo interfacciare qualsiasi sensore analogico, abbiamo bisogno di un'unità di conversione ADC. E in uno dei nostri tutorial abbiamo il chip ADC0804 interfacciato con Raspberry Pi per leggere un valore analogico. Quindi esaminalo prima di costruire questo termometro a temperatura ambiente.
ADC0804 e 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. La risoluzione di questo chip cambia in base alla tensione di riferimento che scegliamo, ne parleremo più avanti in seguito. 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.
Sensore di temperatura LM35:
Ora per la lettura della temperatura della stanza, abbiamo bisogno di un sensore. Qui useremo il sensore di temperatura LM35. La temperatura viene solitamente misurata in "gradi centigradi" o "Fahrenheit". Il sensore “LM35” fornisce l'uscita in gradi centigradi.
Come mostrato in figura, LM35 è un dispositivo simile a un transistor a tre pin. I pin sono numerati come, PIN1 = Vcc - Alimentazione (collegato a + 5V)
PIN2 = Segnale o Uscita (collegato al chip ADC)
PIN3 = Ground (Connected to ground)
Questo sensore fornisce una tensione variabile in uscita, in base alla temperatura. Per ogni aumento di temperatura di +1 centigrado ci sarà una tensione maggiore di + 10mV sul pin di uscita. Quindi, se la temperatura è 0◦ centigrado, l'uscita del sensore sarà 0V, se la temperatura è 10◦ centigrado l'uscita del sensore sarà + 100mV, se la temperatura è 25◦ centigrado l'uscita del sensore sarà + 250mV.
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 1KΩ (17 pezzi)
- Pentola da 10K
- Condensatore da 0,1µF
- Condensatore da 100µF
- Condensatore da 1000µF
- ADC0804 IC
- Sensore di temperatura LM35
- Tagliere per il pane
Circuito e spiegazione di lavoro:
I collegamenti effettuati per il collegamento di Raspberry a ADC0804 e LM35 sono mostrati nello schema del circuito seguente.
L'uscita LM35 ha molte fluttuazioni di tensione; quindi un condensatore da 100uF viene utilizzato per appianare l'uscita, come mostrato in figura.
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.
Come detto in precedenza, l'LM35 fornisce + 10mV per ogni centigrado. La temperatura massima che può essere misurata dall'LM35 è di 150 ° centigradi. Quindi avremo un massimo di 1,5 V al terminale di uscita dell'LM35. Ma la tensione di riferimento predefinita di ADC0804 è + 5V. Quindi, se utilizziamo quel valore di riferimento, la risoluzione dell'uscita sarà bassa perché utilizzeremo un massimo del (5 / 1,5) 34% del range dell'uscita digitale.
Fortunatamente l'ADC0804 ha un pin Vref regolabile (PIN9) come mostrato nel diagramma dei pin sopra. Quindi imposteremo il Vref del chip a + 2V. Per impostare Vref + 2V, dobbiamo fornire una tensione di + 1V (VREF / 2) al PIN9. Qui stiamo usando un potenziometro da 10K per regolare la tensione sul PIN9 a + 1V. Utilizzare il voltmetro per ottenere la tensione precisa.
Abbiamo già utilizzato il sensore di temperatura LM35 per leggere la temperatura ambiente con Arduino e con il microcontrollore AVR. Controlla anche la misurazione dell'umidità e della temperatura utilizzando Arduino
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 del codice sono fornite nella sezione Codice sottostante.
Dopo aver scritto il programma è ora di eseguirlo. Prima di eseguire il programma, parliamo di ciò che sta accadendo nel circuito come un riepilogo. Il primo sensore LM35 rileva la temperatura ambiente e fornisce una tensione analogica alla sua uscita. Questa tensione variabile rappresenta la temperatura linearmente con + 10mV per ºC. Questo segnale viene inviato al chip ADC0804, questo chip converte il valore analogico in valore digitale con 255/200 = 1.275 conteggio per10mv o 1.275 conteggio per 1 grado. Questo conteggio è preso in carico dal PI GPIO. Il programma converte il conteggio in valore di temperatura e lo visualizza sullo schermo. La temperatura tipica letta da PI è mostrata di seguito, Quindi abbiamo questo monitor della temperatura Raspberry Pi.