Nota

Ciao e benvenuto nella Community di Appassionati di SunFounder per Raspberry Pi, Arduino ed ESP32 su Facebook! Approfondisci il mondo di Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché Unirsi?

  • Supporto Esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e Condividi: Scambia consigli e tutorial per migliorare le tue competenze.

  • Anteprime Esclusive: Ottieni accesso anticipato agli annunci dei nuovi prodotti e a contenuti esclusivi.

  • Sconti Speciali: Approfitta di sconti esclusivi sui nostri nuovi prodotti.

  • Promozioni Festive e Giveaway: Partecipa a concorsi e promozioni festive.

👉 Pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!

2.2.2 Termistore

Nota

../_images/mcp3008_and_adc0834.jpg

A seconda della versione del kit, identifica se hai ADC0834 o MCP3008 e procedi con la sezione corrispondente.

Introduzione

Così come la fotoresistenza può rilevare la luce, il termistore è un dispositivo elettronico sensibile alla temperatura, che può essere utilizzato per realizzare funzioni di controllo della temperatura,

Componenti Necessari

In questo progetto, abbiamo bisogno dei seguenti componenti.

../_images/2.2.2_thermistor_list.png

Schema Elettrico

../_images/2.2.2_thermistor_schematic_1.png ../_images/2.2.2_thermistor_schematic_2.png

Procedure Sperimentali

Passo 1: Costruisci il circuito.

../_images/2.2.2_thermistor_circuit.png

Passo 2: Vai nella cartella del codice.

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Passo 3: Esegui il file eseguibile.

sudo python3 2.2.2_Thermistor.py

Quando il codice è in esecuzione, il termistore rileverà la temperatura ambiente, che verrà stampata sullo schermo al termine dei calcoli del programma.

Avvertimento

Se compare l’errore RuntimeError: Cannot determine SOC peripheral base address, consulta Se gpiozero non funziona.

Codice

Nota

Puoi Modificare/Reimpostare/Copiare/Eseguire/Interrompere il codice qui sotto. Prima di farlo, però, vai al percorso del codice sorgente, come davinci-kit-for-raspberry-pi/python-pi5. Dopo aver modificato il codice, potrai eseguirlo direttamente per vedere il risultato.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import ADC0834
import time
import math

# Inizializza il modulo ADC0834
ADC0834.setup()

# Esegui il processo in un blocco try-except
try:
    while True:
        # Leggi il valore analogico dal sensore
        analogVal = ADC0834.getResult()

        # Converte 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)))

        # Converte Kelvin in Celsius
        Cel = temp - 273.15

        # Converte Celsius in Fahrenheit
        Fah = Cel * 1.8 + 32

        # Stampa la temperatura in Celsius e Fahrenheit
        print('Celsius: %.2f C  Fahrenheit: %.2f F' % (Cel, Fah))

        # Pausa di 0,2 secondi prima della lettura successiva
        time.sleep(0.2)

# Gestisce KeyboardInterrupt per una chiusura ordinata
except KeyboardInterrupt:
    # Libera le risorse di ADC0834
    ADC0834.destroy()

Spiegazione del Codice

  1. Questo segmento importa la libreria ADC0834 per la conversione analogico-digitale, la libreria time per implementare ritardi e la libreria math per eseguire operazioni matematiche.

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    import ADC0834
    import time
    import math
    
  2. Inizializza il modulo ADC0834 per abilitare la lettura di valori analogici.

    # Inizializza il modulo ADC0834
    ADC0834.setup()
    
  3. 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 poi traduce questa resistenza in misure di temperatura in Kelvin, Celsius e Fahrenheit. Visualizza le letture della temperatura in Celsius e Fahrenheit, con una pausa di 0,2 secondi tra ogni lettura.

    # Esegui il processo in un blocco try-except
    try:
        while True:
            # Leggi il valore analogico dal sensore
            analogVal = ADC0834.getResult()
    
            # Converte 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)))
    
            # Converte Kelvin in Celsius
            Cel = temp - 273.15
    
            # Converte Celsius in Fahrenheit
            Fah = Cel * 1.8 + 32
    
            # Stampa la temperatura in Celsius e Fahrenheit
            print('Celsius: %.2f C  Fahrenheit: %.2f F' % (Cel, Fah))
    
            # Pausa di 0,2 secondi prima della lettura successiva
            time.sleep(0.2)
    
  4. Cattura l’eccezione KeyboardInterrupt per terminare il programma in modo ordinato e include istruzioni per liberare le risorse ADC0834 alla chiusura.

    # Gestisce KeyboardInterrupt per una chiusura ordinata
    except KeyboardInterrupt:
        # Libera le risorse di ADC0834
        ADC0834.destroy()