Wie gesagt.
Timeout ist mir auch neu.
Egal, auf jeden Fall DANKE für die viele Hilfe!!!
Code: Alles auswählen
from machine import I2C, ADC, Pin
from machine import PWM, Timer
from machine_i2c_lcd import I2cLcd
from time import sleep
from dht import DHT11, InvalidChecksum
import time
i2c = I2C(0, sda=Pin(16), scl=Pin(17), freq=400000)
i2c_scan=i2c.scan()[0]
i2c_scan_hex=hex(i2c_scan)
I2C_ADDR = i2c_scan
lcd = I2cLcd(i2c, I2C_ADDR, 2, 16)
fan = PWM(Pin(18))
fan.freq(25000)
pot = ADC(26)
DHTpin = Pin(21, Pin.OUT, Pin.PULL_DOWN)
def map(x, in_min, in_max, out_min, out_max):
return int((x-in_min) * (out_max-out_min) / (in_max - in_min) + out_min)
while True:
tempp = map(pot.read_u16(),288, 65000,0,40)
set_temperature = tempp
print("Tempp:", tempp, "ADC, ", pot.read_u16())
start_speed = 1000
kp = 10000 # Skalierungsfaktor stellt die Beziehung zwischen Temperatur und Geschwindigkeit dar
sensor = DHT11(DHTpin)
sleep(1.5)
t = sensor.temperature
h = sensor.humidity
# hier wird eigentlich die Temperatur vom Sensor gelesen
lcd.hide_cursor()
lcd.move_to(0,0)
lcd.putstr("O: " + str(tempp) + "C " + "S: " + str(t) + "C")
lcd.move_to(0,1)
lcd.putstr("Luftf.: " + str(h) + " %")
temp_difference = set_temperature - t
speed_difference = -temp_difference * kp
new_speed = round(start_speed) + round(speed_difference)
# hier wird mit 'new_speed' die neue Geschwindigkeit für den Lüfter eingestellt
fan.duty_u16(new_speed)
if new_speed <= 0:
fan.duty_u16(1000)
if new_speed > 65000:
fan.duty_u16(65000)
print(t, "C")
print(h, "%")
print(fan.duty_u16(), "DutyCycle")
Code: Alles auswählen
from time import sleep
from dht import DHT11
from machine import ADC, I2C, PWM, Pin
from machine_i2c_lcd import I2cLcd
SDA_PIN = 16
SCL_PIN = 17
FREQUENZ = 400000
FAN_PIN = 18
DHT_PIN = 21
START_SPEED = 1000
SCALE_FACTOR = 10000
def calculate_temperature(x, in_min, in_max, out_min, out_max):
return int((x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
def read_dht_sensor(sensor):
temperature = sensor.temperature
humidity = sensor.humidity
return temperature, humidity
def update_display(lcd, set_temperature, sensor_temperature, humidity):
lcd.hide_cursor()
lcd.move_to(0, 0)
lcd.putstr(f"O: {set_temperature} °C S: {sensor_temperature} °C")
lcd.move_to(0, 1)
lcd.putstr(f"Luftf.: {humidity} %")
def control_speed(sensor_temperature, set_temperature):
return START_SPEED + (-(set_temperature - sensor_temperature) * SCALE_FACTOR)
def set_new_fanspeed(fan, new_speed):
if new_speed <= 0:
fan.duty_u16(1000)
elif new_speed > 65000:
fan.duty_u16(65000)
else:
fan.duty_u16(new_speed)
def main():
i2c = I2C(0, sda=SDA_PIN, scl=SCL_PIN, freq=FREQUENZ)
i2c_scan = i2c.scan()[0]
lcd = I2cLcd(i2c, i2c_scan, 2, 16)
fan = PWM(Pin(FAN_PIN))
fan.freq(25000)
pot = ADC(26)
temperature_sensor = DHT11(Pin(DHT_PIN, Pin.OUT, Pin.PULL_DOWN))
while True:
set_temperature = calculate_temperature(pot.read_u16(), 288, 65000, 0, 40)
print("Tempp:", set_temperature, "ADC, ", pot.read_u16())
sleep(1.5)
sensor_temperature, humidity = read_dht_sensor(temperature_sensor)
update_display(lcd, set_temperature, sensor_temperature, humidity)
new_speed = round(control_speed(sensor_temperature, set_temperature))
set_new_fanspeed(new_speed)
print(f"{sensor_temperature} °C")
print(f"{humidity} %")
print(f"{fan.duty_u16()} DutyCycle")
sleep(1)
if __name__ == "__main__":
main()