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

../_images/mcp3008_and_adc0834.jpg

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.

../_images/2.2.2_thermistor_list.png

È decisamente conveniente acquistare un kit completo, ecco il link:

Nome

COMPONENTI NEL KIT

LINK

Raphael Kit

337

Raphael Kit

Puoi anche acquistarli separatamente dai link sottostanti.

INTRODUZIONE AI COMPONENTI

LINK D’ACQUISTO

Scheda di estensione GPIO

ACQUISTA

Breadboard

ACQUISTA

Cavi Jumper

ACQUISTA

Resistore

ACQUISTA

Termistore

ACQUISTA

ADC0834

-

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 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

  1. 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
    
  2. Inizializza il modulo ADC0834 per abilitare la lettura dei 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 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)
    
  4. 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()