Turinys:

Tikslus „Raspberry Pi“temperatūros valdymas 4: 3 žingsniais
Tikslus „Raspberry Pi“temperatūros valdymas 4: 3 žingsniais

Video: Tikslus „Raspberry Pi“temperatūros valdymas 4: 3 žingsniais

Video: Tikslus „Raspberry Pi“temperatūros valdymas 4: 3 žingsniais
Video: Вздулся аккумулятор 2024, Lapkritis
Anonim
Tikslus „Raspberry Pi 4“temperatūros valdymas
Tikslus „Raspberry Pi 4“temperatūros valdymas

„Pimoroni“ventiliatoriaus tarpiklis yra puikus sprendimas norint sumažinti „Pi“temperatūrą, kai ji įkaista. Gamintojai netgi pateikia programinę įrangą, kuri įjungia ventiliatorių, kai procesoriaus temperatūra pakyla virš tam tikros ribos (pvz., 65 laipsnių). Temperatūra greitai nukrenta žemiau apatinės ribos ir išjungia ventiliatorių. Tai puiku, tačiau temperatūra pakyla ir nukrenta esant vidutinėms apkrovoms ir sukelia girdimą ventiliatoriaus triukšmą. Ši instrukcija sumažins ventiliatoriaus triukšmą, tuo pačiu nustatydama procesoriaus temperatūrą iki tam tikros vertės, vadinama PID valdikliu. Didesni slenksčiai (pvz., 65 laipsniai) sukels daug tylesnį ventiliatorių, o žemesni slenksčiai (pvz., 50 laipsnių) - garsiau, bet geriau valdys temperatūrą.

Aukščiau pateiktas pavyzdys rodo mano rezultatus, paleidžiant PID valdiklį ir keičiant tikslinę temperatūrą kas 500 sekundžių. Tikslumas yra +/- 1 laipsnis, šiek tiek viršijant staigius temperatūros pokyčius.

Svarbu tai, kad šis bandymas buvo atliktas esant vienai apkrovai visą bandymo laiką (žiūrint „BBC iPlayer“).

Prekės

  • Raspberry Pi 4
  • Pimoroni gerbėjų tarpiklis

1 veiksmas: nustatykite ventiliatorių

Nustatykite savo ventiliatorių
Nustatykite savo ventiliatorių

Pirmasis žingsnis yra nustatyti ventiliatorių. Pimorini pamoka yra puiki!

Tada atidarykite terminalą savo Pi (ctrl alt t)

Ir įdiekite Pimoroni pateiktą kodą

git klonas https://github.com/pimoroni/fanshim-pythoncd fanshim-python sudo./install.sh

2 žingsnis: sukurkite PI (D) valdiklį

Sukurkite PI (D) valdiklį
Sukurkite PI (D) valdiklį

Proporcinio integruoto darinio (PID) valdiklis yra sistema, naudojama tam tikro proceso vertei (procesoriaus temperatūrai) valdyti, manipuliuojant tam tikru fiziniu įrenginiu (ventiliatoriaus greitis). Mes galime manipuliuoti ventiliatoriaus „greičiu“ir triukšmu, periodiškai jį įjungdami ir išjungdami (impulso bangos moduliacija). Nuo to, kiek laiko jis įjungiamas tam tikru laikotarpiu (pvz., 1 sekundė), nustatomas ventiliatoriaus greitis ir garsumas (900 ms = garsus ir greitas, 100 ms = tylus ir lėtas). Mes naudosime PID, kad galėtume valdyti ventiliatoriaus greitį ir taip kontroliuoti temperatūrą.

PID naudojimą galime suskirstyti į kelis veiksmus.

  1. Nuspręskite norimo pasiekti proceso kintamojo vertę (pvz., Procesoriaus temperatūra = 55). Tai vadinama jūsų nustatytąja verte.
  2. Apskaičiuokite PID klaidą. Jei jūsų nustatyta vertė yra 55 laipsniai, o faktinė temperatūra yra 60 laipsnių, jūsų klaida yra 5 laipsniai (temperatūra - nustatytoji vertė)
  3. Pakeiskite ventiliatoriaus veikimo laiką proporcingai klaidai (didelės klaidos lemia didelius ventiliatoriaus greičio pokyčius, mažos klaidos sukelia nedidelius ventiliatoriaus greičio pokyčius).
  4. Sureguliuokite ventiliatorių pagal ankstesnes vertes (integralas/visų ankstesnių klaidų suma)
  5. Pasirinktinai galite reguliuoti ventiliatoriaus greitį, atsižvelgdami į klaidos (išvestinės) pasikeitimo greitį, bet mes to nedarysime

Dabar, kai turite teoriją, paleiskite žemiau esantį kodą „Thonny IDE“(ar kitame „python IDE“). Pakeiskite „tikslo“reikšmę žemiau esančiame kode, kad pakeistumėte, kokioje temperatūroje norite išlaikyti „Pi“. Aš nustatiau „P“ir „I“sąlygas savavališkai. Nedvejodami pakoreguokite juos, jei jie jums netinka. padidinus „P“reiškia, kad valdiklis greitai reaguos į naujas klaidas (bet gali būti nestabilus). Pakeitus „I“, valdiklis labiau įvertins atsaką į ankstesnes vertes. Aš nesistengčiau padaryti šių terminų per didelių, nes greitai keičiant ventiliatoriaus greitį, temperatūra greitai nepasikeis. Be to, jei dirbate su savo „Pi“neįtikėtinai sunkiu darbu, galite nepasiekti norimos temperatūros (ventiliatoriaus ribos vis tiek galioja).

iš fanshim importuoja „FanShim“

iš laiko importavimo miego, laiko importavimo os importavimo matematikos # Grąžinti procesoriaus temperatūrą kaip simbolių eilutę def getCPUtemperature (): res = os.popen ('vcgencmd meet_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) fanshim = FanShim () target = 55 # pageidaujama temperatūra (žaisk su tuo ir pažiūrėk, kas atsitiks) periodas = 1 # PWM periodas į.,…. % darbo ciklo išjungimas = laikotarpis-įjungimas # inicializavimas iki 0% darbo ciklo ir pažiūrėkite, kas atsitiks), kol tiesa: # get temperaute temp = int (float (getCPUtemperature ())) # apskaičiuoti klaidą ir lyginti klaidą = temp-target # apskaičiuoti integra lerror ir apriboti ją intErr = intErr+klaida, jei intErr> 10: intErr = 10, jei intErr = laikotarpis: įjungtas = laikotarpis išjungtas = 0 kitaip: įjungtas = įjungtas = laikotarpis-įjungtas # nustatytas minimalus darbo ciklas, jei įjungtas <.09: įjungtas =.09 kitas: įjungtas = įjungtas # PWM ant ventiliatoriaus kaiščio, jei on == period: fanshim.set_fan (True) sleep (on) else: fanshim.set_fan (True) s leep (on) fanshim.set_fan (False) miegoti (išjungta)

3 veiksmas: paleiskite valdymo scenarijų paleisdami

Paleiskite valdymo scenarijų paleisdami
Paleiskite valdymo scenarijų paleisdami

Šį scenarijų galite paleisti kiekvieną kartą, kai paleidžiate „pi“, arba galite automatiškai jį paleisti iš naujo. Tai padaryti su „crontab“yra labai paprasta.

  1. atidarykite terminalą
  2. į terminalą įveskite crontab-e
  3. pridėkite šią kodo eilutę prie failo „@reboot python /home/pi/bootScripts/fanControl.py &“
  4. išeikite ir paleiskite iš naujo

Įdėjau scenarijų (fanControl.py) į „floder“, vadinamą „bootScripts“, bet galite jį įdėti bet kur, tiesiog įsitikinkite, kad nurodėte teisingą kelią „crontab“.

Viskas padaryta! Dabar jūsų ventiliatorius valdys jūsų procesoriaus temperatūrą iki tam tikros vertės ir sumažins jo skleidžiamą triukšmą.

Rekomenduojamas: