from machine import ADC, Pin
import utime
import tm1637
import math
# Inicialización del sensor y las pantallas TM1637
AnalogIn = ADC(0) # gp26 Entrada del sensor TMP36 o LM35.
SetPoint = ADC(1) # gp27 Entrada voltaje de ajuste del setpoint de temperatura (Pot 5 ó 10 kOhm).
tmverde = tm1637.TM1637(clk=Pin(1), dio=Pin(0))
tmrojo = tm1637.TM1637(clk=Pin(2), dio=Pin(3))
tmverde.brightness(2)
tmrojo.brightness(2)
# Coeficientes de conversión ajustados
Conv = 3300 / 65535
min_temp = -24 # Temperatura mínima del setpoint
max_temp = 80 # Temperatura máxima del setpoint
Conv1 = (max_temp - min_temp) / 3300 # Coeficiente ajustado para el rango de temperaturas
# Configuración del LED y el relé
LED = Pin(15, Pin.OUT)
Relay = Pin(16, Pin.OUT)
LED.value(0)
Relay.value(0)
# Coeficiente Beta del termistor
BETA = 3950
while True:
# Lectura y conversión del valor del potenciómetro
ValorPot = SetPoint.read_u16()
TempSP = Conv * ValorPot
SetTemp = min_temp + TempSP * Conv1 # Ajuste de la fórmula para el rango de temperaturas
tmverde.number(int(SetTemp))
# Lectura del valor analógico del termistor
analogValue = AnalogIn.read_u16()
# Conversión a temperatura en grados Celsius
celsius = 1 / (math.log(1 / (65535.0 / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15
tmrojo.number(int(celsius))
# Control del relé y el LED basado en la comparación de la temperatura
if celsius < SetTemp:
Relay.value(1)
LED.value(1)
else:
Relay.value(0)
LED.value(0)
utime.sleep(1)