INHOUDSOPGAWE:

Presiese temperatuurbeheer op die Raspberry Pi 4: 3 -stappe
Presiese temperatuurbeheer op die Raspberry Pi 4: 3 -stappe

Video: Presiese temperatuurbeheer op die Raspberry Pi 4: 3 -stappe

Video: Presiese temperatuurbeheer op die Raspberry Pi 4: 3 -stappe
Video: Review of Roottronics LUPS-05 5V 2A UPS for Arduino and Raspberry Pie using 18650 Lithium battery 2024, November
Anonim
Presiese temperatuurbeheer op die Raspberry Pi 4
Presiese temperatuurbeheer op die Raspberry Pi 4

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

Stel u waaier op
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

Skep 'n PI (D) -beheerder
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.

  1. Besluit oor die waarde van die prosesveranderlike wat u wil bereik (bv. CPU -temperatuur = 55). Dit word jou setpoint genoem.
  2. Bereken die PID -fout. As u setpoint 55 grade is en die werklike temperatuur 60 grade is, is u fout 5 grade (Temperatuur - setpoint)
  3. 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).
  4. Pas die waaier aan volgens vorige waardes (integraal/som van alle vorige foute)
  5. 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

Begin beheerskrip by opstart
Begin beheerskrip by opstart

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.

  1. maak die terminale oop
  2. tik crontab-e in die terminale
  3. voeg die volgende kode by die lêer '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. 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: