Satura rādītājs:

Precīza Raspberry Pi temperatūras kontrole 4: 3 soļi
Precīza Raspberry Pi temperatūras kontrole 4: 3 soļi

Video: Precīza Raspberry Pi temperatūras kontrole 4: 3 soļi

Video: Precīza Raspberry Pi temperatūras kontrole 4: 3 soļi
Video: BTT - Manta M4P CM4 eMMC install of Fluidd Pi 2024, Novembris
Anonim
Precīza Raspberry Pi 4 temperatūras kontrole
Precīza Raspberry Pi 4 temperatūras kontrole

Pimoroni ventilatoru starplikas ir lielisks risinājums, lai samazinātu jūsu Pi temperatūru, kad tas darbojas karsti. Ražotāji pat nodrošina programmatūru, kas iedarbina ventilatoru, kad CPU temperatūra paaugstinās virs noteiktā sliekšņa (piemēram, 65 grādi). Temperatūra ātri pazeminās zem zemāka sliekšņa un izslēdz ventilatoru. Tas ir lieliski, bet izraisa temperatūras paaugstināšanos un pazemināšanos zem mērenas slodzes un rada dzirdamu ventilatora troksni. Šī pamācība samazinās ventilatora troksni, vienlaikus nosakot CPU temperatūru līdz noteiktai vērtībai, izmantojot PID kontrolieri. Augstāki sliekšņi (piemēram, 65 grādi) radīs daudz klusāku ventilatoru, bet zemāki sliekšņi (piemēram, 50 grādi) radīs skaļāku ventilatoru, bet labāku temperatūras kontroli.

Iepriekš redzamajā piemērā ir parādīti mani PID regulatora darbības rezultāti un mērķa temperatūras maiņa ik pēc 500 sekundēm. Precizitāte ir +/- 1 grāds ar nelielu pārsniegšanu pēkšņās temperatūras izmaiņās.

Svarīgi, ka šis tests tika veikts ar tādu pašu slodzi visu testa laiku (skatoties BBC iPlayer).

Piegādes

  • Raspberry Pi 4
  • Pimoroni līdzjutējs

1. darbība: iestatiet ventilatoru

Iestatiet savu ventilatoru
Iestatiet savu ventilatoru

Pirmais solis ir ventilatora uzstādīšana. Pimorini apmācība ir lieliska!

Pēc tam atveriet termināli savā Pi (ctrl alt t)

Un instalējiet Pimoroni sniegto kodu

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

2. darbība: izveidojiet PI (D) kontrolieri

Izveidojiet PI (D) kontrolieri
Izveidojiet PI (D) kontrolieri

Proporcionālā integrālā atvasinājuma (PID) kontrolieris ir sistēma, ko izmanto, lai kontrolētu noteikta procesa vērtību (CPU temperatūru), manipulējot ar kādu fizisku ierīci (ventilatora ātrums). Mēs varam manipulēt ar ventilatora “ātrumu” un troksni, periodiski to ieslēdzot un izslēdzot (impulsa viļņu modulācija). Laiks, kādā tas ir ieslēgts noteiktā laika posmā (piemēram, 1 sekunde), nosaka ventilatora ātrumu un skaļumu (900 ms = skaļš un ātrs, 100 ms = kluss un lēns). Mēs izmantosim PID, lai manipulētu ar ventilatora ātrumu un tādējādi kontrolētu temperatūru.

Mēs varam sadalīt PID izmantošanu vairākos soļos.

  1. Izlemiet procesa mainīgā vērtību, kuru vēlaties sasniegt (piemēram, CPU temperatūra = 55). To sauc par jūsu iestatīto vērtību.
  2. Aprēķiniet PID kļūdu. Ja jūsu iestatītā vērtība ir 55 grādi un faktiskā temperatūra ir 60 grādi, jūsu kļūda ir 5 grādi (temperatūra - iestatītā vērtība)
  3. Mainiet ventilatora ieslēgšanās laiku proporcionāli kļūdai (lielas kļūdas izraisa lielas ventilatora ātruma izmaiņas, nelielas kļūdas izraisa nelielas izmaiņas ventilatora ātrumā).
  4. Pielāgojiet ventilatoru iepriekšējām vērtībām (integrāls/visu iepriekšējo kļūdu summa)
  5. Pēc izvēles jūs pielāgojat ventilatora ātrumu, pamatojoties uz kļūdas izmaiņu ātrumu (atvasinājums), bet mēs to šeit nedarīsim

Tagad, kad jums ir teorija, palaidiet zemāk esošo kodu Thonny IDE (vai kādā citā python IDE). Mainiet “mērķa” vērtību zemāk esošajā kodā, lai mainītu temperatūru, kurā vēlaties uzturēt savu Pi. Nosaukumus “P” un “I” esmu iestatījis nedaudz patvaļīgās vērtībās. Jūtieties brīvi pielāgot tos, ja tie jums nedarbojas. palielinot “P”, kontrolieris ātri reaģēs uz jaunām kļūdām (bet var nebūt stabils). Mainot “I”, kontrolieris vairāk sāks reaģēt uz iepriekšējām vērtībām. Es nemēģinātu padarīt šos noteikumus pārāk lielus, jo strauji mainot ventilatora ātrumu, strauji nemainīsies temperatūra. Turklāt, ja veicat neticami smagu darbu ar savu Pi, iespējams, nesasniegsiet vēlamo termisko temperatūru (ventilatora ierobežojumi joprojām ir spēkā).

no fanshim importa FanShim

no laika importēšanas miega, laika importēšanas os importēšanas matemātikas # Atgriezt CPU temperatūru kā rakstzīmju virkni def getCPUtemperature (): res = os.popen ('vcgencmd meet_temp'). readline () return (res.replace ("temp =", " "). aizstāt (" 'C / n "," ")) fanshim = FanShim () mērķis = 55 # vēlamā temperatūra (spēlējiet ar šo un redziet, kas notiek) periods = 1 # PWM periods =.1 # inicializēt uz 0 % darba cikls izslēgts = periods-on # inicializēšana līdz 0% darba ciklam P =.01 # proporcionāls pastiprinājuma termiņš (spēlējiet ar šo un redziet, kas notiek) intErr = 0 # neatņemama kļūda I =.0001 # starpnozaru pieauguma termiņš un redzēt, kas notiek), kamēr True: # get temperaute temp = int (float (getCPUtemperature ())) # aprēķināt kļūdu un izlīdzināt kļūdu = temp-target # aprēķināt integrācijas kļūdu un ierobežot to intErr = intErr+kļūda, ja intErr> 10: intErr = 10, ja intErr = periods: ieslēgts = periods izslēgts = 0 cits: ieslēgts = ieslēgts = periods-ieslēgts # iestatījis minimālo darba ciklu, ja ieslēgts <.09: ieslēgts =.09 cits: ieslēgts = ieslēgts # PWM uz ventilatoru tapu, ja ieslēgts == periods: fanshim.set_fan (True) miega (ieslēgts) cits: fanshim.set_fan (True) s leep (ieslēgts) fanshim.set_fan (False) miegs (izslēgts)

3. darbība: palaidiet vadības skriptu startēšanas laikā

Palaidiet vadības skriptu startēšanas laikā
Palaidiet vadības skriptu startēšanas laikā

Jūs varētu palaist šo skriptu katru reizi, kad sākat savu pi, vai arī jūs to automātiski aktivizēsit, restartējot. Tas ir ļoti vienkārši izdarāms ar crontab.

  1. atveriet termināli
  2. ievadiet terminālī crontab-e
  3. pievienojiet failam “@reboot python /home/pi/bootScripts/fanControl.py &” šādu koda rindiņu.
  4. izejiet un pārstartējiet

Es ievietoju skriptu (fanControl.py) floderā, ko sauc par bootScripts, bet jūs varat to ievietot jebkur, vienkārši pārliecinieties, ka crontab norādāt pareizo ceļu.

Viss pabeigts! Tagad jūsu ventilators kontrolēs jūsu CPU temperatūru līdz noteiktai vērtībai, vienlaikus samazinot tā radīto skaņas troksni.

Ieteicams: