INHOUDSOPGAWE:
- Voorrade
- Stap 1: Stel u waaier op
- Stap 2: Skep 'n PI (D) -beheerder
- Stap 3: Begin beheerskrip by die aanvang
Video: Presiese temperatuurbeheer op die Raspberry Pi 4: 3 -stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Die Pimoroni Fan Shim is 'n uitstekende oplossing om die temperatuur van u Pi te verlaag as dit warm word. Die vervaardigers bied selfs sagteware wat die waaier aanskakel wanneer die CPU -temperatuur bo 'n sekere drempel styg (bv. 65 grade). Die temperatuur verlaag vinnig onder 'n laer drumpel en skakel die waaier uit. Dit is wonderlik, maar veroorsaak dat die temperatuur styg en daal onder matige belastings en veroorsaak hoorbare waaiergeraas. Hierdie instruksies verminder die geraas van die waaier terwyl die CPU -temperatuur op 'n spesifieke waarde vasgestel word met iets wat 'n PID -beheerder genoem word. Hoër drempels (bv. 65 grade) sal 'n baie stiller waaier tot gevolg hê, terwyl laer drempels (bv. 50 grade) 'n harder waaier tot gevolg sal hê, maar beter temperatuurbeheer.
Bogenoemde voorbeeld toon my resultate van die bestuur van die PID -beheerder en die verandering van die teikentermyn elke 500 sekondes. Die akkuraatheid is +/- 1 graad met 'n mate van oorskryding by skielike veranderinge in terme.
Dit is belangrik dat hierdie toets gedurende dieselfde tydperk onder dieselfde las uitgevoer is (kyk na BBC iPlayer).
Voorrade
- Framboos Pi 4
- Pimoroni Fan Shim
Stap 1: Stel u waaier op
Die eerste stap is om u waaier op te stel. Die Pimorini -tutoriaal is wonderlik!
Maak dan die terminale op u Pi oop (ctrl alt t)
En installeer die kode wat deur Pimoroni verskaf is
git-kloon https://github.com/pimoroni/fanshim-pythoncd fanshim-python sudo./install.sh
Stap 2: Skep 'n PI (D) -beheerder
'N Proportional Integral Derivative (PID) kontroleerder is 'n stelsel wat gebruik word om die waarde van 'n sekere proses (SVE -temperatuur) te beheer deur 'n fisiese toestel (waaiersnelheid) te manipuleer. Ons kan die 'spoed' en geraas van die waaier manipuleer deur dit periodiek aan en uit te skakel (Pulse Wave Modulation). Die tydsduur wat dit gedurende 'n gegewe tydperk (byvoorbeeld 1 sekonde) aanskakel, bepaal hoe vinnig en hoe hard die waaier is (900ms = hard en vinnig, 100ms = stil en stadig). Ons sal die PID gebruik om die spoed van die waaier te manipuleer en sodoende die temperatuur te beheer.
Ons kan die gebruik van 'n PID verdeel in aantal stappe.
- Besluit oor die waarde van die prosesveranderlike wat u wil bereik (bv. CPU -temperatuur = 55). Dit word jou setpoint genoem.
- Bereken die PID -fout. As u setpoint 55 grade is en die werklike temperatuur 60 grade is, is u fout 5 grade (Temperatuur - setpoint)
- Verander die tydstip van die waaier in verhouding tot die fout (groot foute lei tot groot veranderinge in waaierspoed, klein foute veroorsaak klein veranderinge in waaierspoed).
- Pas die waaier aan volgens vorige waardes (integraal/som van alle vorige foute)
- U kan ook die waaierspoed aanpas op grond van die veranderingsnelheid van die fout (afgeleide), maar ons sal dit nie hier doen nie
Noudat u die teorie het, voer die onderstaande kode uit in die Thonny IDE (of 'n ander python IDE). Verander die waarde van 'doel' in die onderstaande kode om te verander in watter toestand u Pi wil behou. Ek het die terme 'P' en 'I' op ietwat willekeurige waardes gestel. Pas dit gerus aan as dit nie vir u werk nie. Deur 'P' groter te maak, beteken die beheerder vinnig op nuwe foute (maar is moontlik nie stabiel nie). Deur 'ek' te verander, sal die beheerder die reaksie daarvan meer op vorige waardes weeg. Ek sou nie probeer om hierdie terme te groot te maak nie, aangesien die snelheid van die waaier nie vinnig verander nie, maar nie die termyn vinnig verander nie. As u ongelooflik swaar werk aan u Pi doen, bereik u moontlik nie die gewenste termyn nie (die waaier se grense geld steeds).
vanaf fanshim invoer FanShim
van tyd af invoer slaap, tyd invoer os invoer wiskunde # Return CPU temperatuur as 'n tekenreeks def getCPUtemperature (): res = os.popen ('vcgencmd measure_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) fanshim = FanShim () target = 55 # gewenste temperatuur (speel hiermee en kyk wat gebeur) periode = 1 # PWM periode op =.1 # initialiseer tot 0 % dienssiklus af = periode-aan # inisialiseer tot 0% dienssiklus P =.01 # proporsioneel Verkry term (speel hiermee en kyk wat gebeur) intErr = 0 # integrale fout I =.0001 # intergral winsterm (speel hiermee en kyk wat gebeur) terwyl dit waar is: # kry temperaute temp = int (float (getCPUtemperature ())) # bereken fout en maak err = temp-target # bereken integra lerror en beperk dit intErr = intErr+err as intErr> 10: intErr = 10 if intErr = period: on = period off = 0 else: on = on off = period-on # stel minimum dienssiklus in as op <.09: aan =.09 anders: aan = op # PWM op die fanshim-pen as op == periode: fanshim.set_fan (waar) slaap (aan) anders: fanshim.set_fan (waar) s luip (aan) fanshim.set_fan (Onwaar) slaap (af)
Stap 3: Begin beheerskrip by die aanvang
U kan hierdie skrip uitvoer elke keer as u met u pi begin, of u kan dit outomaties laat herlaai tydens herlaai. Dit is baie eenvoudig om met crontab te doen.
- maak die terminale oop
- tik crontab-e in die terminale
- voeg die volgende kode by die lêer '@reboot python /home/pi/bootScripts/fanControl.py &'
- verlaat en herlaai
Ek sit die script (fanControl.py) in 'n floder genaamd bootScripts, maar u kan dit oral plaas, maar maak seker dat u die regte pad in crontab spesifiseer.
Alles klaar! Nou sal u waaier die temperatuur van u SVE tot 'n spesifieke waarde beheer, terwyl die hoorbare geraas tot 'n minimum beperk word.
Aanbeveel:
Laat LoRa (SX1278/XL1278-SMT) werk via SPI op die WeMos D1 ESP-12F ESP8277-moederbordmodule met OLED: 7 stappen
Kry LoRa (SX1278/XL1278 -SMT) Werk via SPI op die WeMos D1 ESP -12F ESP8277 -moederbordmodule Met OLED: Dit het my 'n week geneem om uit te werk - dit lyk asof niemand anders voor my dit gedink het nie - so ek hoop dat dit u kan red 'n geruime tyd! Die ongemaklik genoemde " WeMos D1 ESP-12F ESP8266-moederbordmodule met 'n 0,96 duim OLED-skerm " is 'n $ 11 -ontwikkelingsraad wat