Nota
Ciao, benvenuto nella Community di SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto Tecnico Esperto: Risolvi i problemi post-vendita e le sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.
Anteprime Esclusive: Ottieni accesso anticipato agli annunci di nuovi prodotti e alle anteprime.
Sconti Speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.
Promozioni Festive e Giveaway: Partecipa a giveaway e promozioni durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!
2.2.2 Termistore
Nota
A seconda della versione del tuo kit, identifica se hai ADC0834 o MCP3008 e procedi con la sezione corrispondente.
Introduzione
Proprio come il fotoresistore può rilevare la luce, il termistore è un dispositivo elettronico sensibile alla temperatura che può essere utilizzato per realizzare funzioni di controllo della temperatura, come ad esempio un allarme di calore.
Componenti Necessari
Per questo progetto, avremo bisogno dei seguenti componenti.
È decisamente conveniente acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Raphael Kit |
337 |
Puoi anche acquistarli separatamente dai link sottostanti.
INTRODUZIONE AI COMPONENTI |
LINK D’ACQUISTO |
|---|---|
- |
Schema Elettrico
Procedure Sperimentali
Passo 1: Costruisci il circuito.
Passo 2: Vai alla cartella del codice.
cd ~/raphael-kit/python-pi5
Passo 3: Esegui il file eseguibile.
sudo python3 2.2.2_Thermistor_zero.py
Una volta avviato il codice, il termistore rileverà la temperatura ambiente, che verrà visualizzata sullo schermo dopo il calcolo effettuato dal programma.
Avvertimento
Se viene visualizzato l’errore RuntimeError: Cannot determine SOC peripheral base address, fare riferimento a If gpiozero doesn’t work..
Code
Nota
Puoi Modificare/Resettare/Copiare/Eseguire/Fermare il codice qui sotto. Ma prima, devi accedere alla directory del codice come raphael-kit/python-pi5. Dopo aver modificato il codice, puoi eseguirlo direttamente per vedere l’effetto.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import ADC0834
import time
import math
# Inizializza il modulo ADC0834
ADC0834.setup()
# Esegui il processo all'interno di un blocco try-except
try:
while True:
# Leggi il valore analogico dal sensore
analogVal = ADC0834.getResult()
# Converti il valore analogico in una tensione
Vr = 5 * float(analogVal) / 255
# Calcola la resistenza del termistore
Rt = 10000 * Vr / (5 - Vr)
# Calcola la temperatura in Kelvin
temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25)))
# Converti da Kelvin a Celsius
Cel = temp - 273.15
# Converti da Celsius a Fahrenheit
Fah = Cel * 1.8 + 32
# Stampa la temperatura in Celsius e Fahrenheit
print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah))
# Attendi per 0.2 secondi prima della prossima lettura
time.sleep(0.2)
# Gestisce l'eccezione KeyboardInterrupt per una chiusura corretta
except KeyboardInterrupt:
# Pulisce le risorse di ADC0834
ADC0834.destroy()
Spiegazione del Codice
Questa sezione importa la libreria ADC0834 per la conversione da analogico a digitale, la libreria time per implementare i ritardi e la libreria math per eseguire operazioni matematiche.
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import ADC0834 import time import math
Inizializza il modulo ADC0834 per abilitare la lettura dei valori analogici.
# Inizializza il modulo ADC0834 ADC0834.setup()
Implementa un ciclo infinito per la lettura continua dei dati. Il ciclo legge il valore analogico da un termistore, lo converte in tensione, calcola la resistenza del termistore e traduce questa resistenza in misure di temperatura in Kelvin, Celsius e Fahrenheit. Inoltre, visualizza le letture della temperatura in Celsius e Fahrenheit, con una pausa di 0.2 secondi tra ogni lettura.
# Esegui il processo all'interno di un blocco try-except try: while True: # Leggi il valore analogico dal sensore analogVal = ADC0834.getResult() # Converti il valore analogico in una tensione Vr = 5 * float(analogVal) / 255 # Calcola la resistenza del termistore Rt = 10000 * Vr / (5 - Vr) # Calcola la temperatura in Kelvin temp = 1 / (((math.log(Rt / 10000)) / 3950) + (1 / (273.15 + 25))) # Converti da Kelvin a Celsius Cel = temp - 273.15 # Converti da Celsius a Fahrenheit Fah = Cel * 1.8 + 32 # Stampa la temperatura in Celsius e Fahrenheit print('Celsius: %.2f C Fahrenheit: %.2f F' % (Cel, Fah)) # Attendi per 0.2 secondi prima della prossima lettura time.sleep(0.2)
Cattura un’eccezione KeyboardInterrupt per terminare il programma in modo corretto e include le istruzioni di pulizia per le risorse ADC0834 al termine.
# Gestisce l'eccezione KeyboardInterrupt per una chiusura corretta except KeyboardInterrupt: # Pulisce le risorse di ADC0834 ADC0834.destroy()