Ik krijg vandaag een olie gevulde radiator van 2200 Watt binnen, en wil daarmee de woonkamer verwarmen.
De temperatuur sensor zit daar 2,5 meter vandaan.
Nu wil ik graag de temperatuur regelen met een PID regeling, maar daar heb ik geen ervaring mee, dus hulp is zeer welkom.
Ik gebruik een Raspberry, de temperatuur kan ik in lezen met 1 cijfer achter de komma.
De verwarming kan ik Aan/Uit schakelen met een Relais.
Dus de hardware is klaar, maar nu de software...
Ik werk in Python, en heb de "simple-pid" module geinstalleerd.
Zie: https://pypi.org/project/simple-pid/
Dit heb ik aan code:
#!/usr/bin/python3
#========= Initalisatie ===============================================
#https://simple-pid.readthedocs.io/en/latest/
from simple_pid import PID
pid = PID(1, 0.1, 0.05, setpoint=1)
output = 20
pid.sample_time = 1.0 # Update every 1.0 seconds
pid.setpoint = 19.0 #Gevraagd 21 Graden
#pid.Ki = 1.0
pid.tunings = (10.0, 1.0, 1.0) #P, I, D
pid.output_limits = (0, 1) # Output value will be between 0 and 1
#pid.output_limits = (0, None) # Output will always be above 0, but with no upper bound
pid.auto_mode = True # PID Aan
#pid.set_auto_mode(True, last_output=8.0) #PID Aanzetten en de output alvast op 8.0 zetten
#===================================
#========= Hoofd Routine ===============================================
while (True): #loop forever
##### Data ophalen ######
#Hier haal ik de "Binnen_Temperatuur" op
Binnen_Temperatuur = ...
#---
#PID Regeling:
pid.setpoint = 20.0; #Ingestelde_Temperatuur
targetPwm = pid( Binnen_Temperatuur )
p, i, d = pid.components # The separate terms are now in p, i, d
print('Ingestelde_Temperatuur: ' + str(Ingestelde_Temperatuur))
print('Binnen_Temperatuur: ' + str(Binnen_Temperatuur))
print(p)
print(i)
print(d)
print(targetPwm )
print('-------')
#Hier Schakel ik het Relais In/Uit:
if targetPwm == 1:
#Verwarming Aan
if targetPwm == 0:
#Verwarming Uit
#---
time.sleep(5) # 5 Sec. Wachten en de Lus weer herhalen
Wie kan hier iets over vertellen om dit goed werkend te krijgen ?