11 Thermistor

In dit hoofdstuk leren we over thermistoren, een ander soort weerstand.

Project 11.1 Thermometer
Een thermistor is een type weerstand waarvan de weerstandswaarde afhankelijk is van de temperatuur en veranderingen in temperatuur. Daarom kunnen we van deze eigenschap profiteren om een ​​thermometer te maken.

Componentenlijst

Componentkennis

Thermistor
Thermistor is een temperatuurgevoelige weerstand. Wanneer het een verandering in temperatuur detecteert, zal de weerstand van de Thermistor veranderen. We kunnen van deze eigenschap profiteren door een Thermistor te gebruiken om de temperatuurintensiteit te detecteren. Een Thermistor en het elektronische symbool ervan worden hieronder weergegeven.

Image


De relatie tussen weerstandswaarde en temperatuur van een thermistor is:

Rt=REXP [B(1/T2-1/T1)]

Waar:
Rt is de thermistorweerstand onder T2-temperatuur;
R ligt in de nominale weerstand van de thermistor onder T1-temperatuur;
EXP[n] is de nde macht van e;
B is voor thermische index;
T1, T2 is de Kelvin-temperatuur (absolute temperatuur). Kelvin-temperatuur = 273,15 + Celsius-temperatuur.
Voor de parameters van de thermistor gebruiken we: B=3950, R=10k, T1=25.
De circuitaansluitmethode van de thermistor is vergelijkbaar met die van een fotoweerstand, en wel als volgt

The relationship between resistance value and temperature of a thermistor is:

Rt=REXP [B(1/T2-1/T1)]

Where:
Rt is the thermistor resistance under T2 temperature;
R is in the nominal resistance of thermistor under T1 temperature;
EXP[n] is nth power of e;
B is for thermal index;
T1, T2 is Kelvin temperature (absolute temperature). Kelvin temperature=273.15 + Celsius temperature.
For the parameters of the Thermistor, we use: B=3950, R=10k, T1=25.
The circuit connection method of the Thermistor is similar to photoresistor, as the following:

Image

We kunnen de door de ADC-omzetter gemeten waarde gebruiken om de weerstandswaarde van de thermistor te verkrijgen, en vervolgens kunnen we de formule gebruiken om de temperatuurwaarde te verkrijgen.
Daarom kan de temperatuurformule worden afgeleid als:

T2 = 1/(1/T1 + ln(Rt/R)/B)

Schakeling met ADS7830

Het circuit van dit project is vergelijkbaar met dat in het vorige hoofdstuk. Het enige verschil is dat de fotoresistor dat wel is vervangen door de thermistor

Image

In deze projectcode moet nog steeds de ADC-waarde worden gelezen, maar het verschil is dat dit een specifieke formule is gebruikt om de temperatuurwaarde te berekenen.

Configureer I2C en installeer Smbus als u dat nog niet heeft gedaan klik dan hier voor uitleg.

Code Thermometer.py

#!/usr/bin/env python3
#############################################################################
# Filename    : Thermometer.py
# Description : DIY Thermometer
# Author      : www.freenove.com
# modification: 2023/05/11
########################################################################
import time
import math
from ADCDevice import *

adc = ADCDevice() # Define an ADCDevice class object

def setup():
    global adc
    if(adc.detectI2C(0x48)): # Detect the pcf8591.
        adc = PCF8591()
    elif(adc.detectI2C(0x4b)): # Detect the ads7830
        adc = ADS7830()
    else:
        print("No correct I2C address found, \n"
        "Please use command 'i2cdetect -y 1' to check the I2C address! \n"
        "Program Exit. \n");
        exit(-1)
        
def loop():
    while True:
        value = adc.analogRead(0)        # read ADC value A0 pin
        voltage = value / 255.0 * 3.3        # calculate voltage
        Rt = 10 * voltage / (3.3 - voltage)    # calculate resistance value of thermistor
        tempK = 1/(1/(273.15 + 25) + math.log(Rt/10)/3950.0) # calculate temperature (Kelvin)
        tempC = tempK -273.15        # calculate temperature (Celsius)
        print ('ADC Value : %d, Voltage : %.2f, Temperature : %.2f'%(value,voltage,tempC))
        time.sleep(0.01)

def destroy():
    adc.close()
    
if __name__ == '__main__':  # Program entrance
    print ('Program is starting ... ')
    setup()
    try:
        loop()
    except KeyboardInterrupt: # Press ctrl-c to end the program.
        destroy()
        print("Ending program")

Nadat het programma is uitgevoerd, toont het Terminal-venster de huidige ADC-waarde, spanningswaarde en temperatuur waarde. Probeer de thermistor te “knijpen” (zonder de draden aan te raken) met uw wijsvinger en duim gedurende een korte tijd zou u moeten zien dat de temperatuurwaarde toeneemt.

Image
Scroll naar boven