Innholdsfortegnelse:

Presis temperaturkontroll på Raspberry Pi 4: 3 -trinn
Presis temperaturkontroll på Raspberry Pi 4: 3 -trinn

Video: Presis temperaturkontroll på Raspberry Pi 4: 3 -trinn

Video: Presis temperaturkontroll på Raspberry Pi 4: 3 -trinn
Video: Лучшие проекты Raspberry Pi на 2022 год Raspberry Pi 7-дюймовый сенсорный экран 2024, November
Anonim
Presis temperaturkontroll på Raspberry Pi 4
Presis temperaturkontroll på Raspberry Pi 4

Pimoroni Fan Shim er en flott løsning for å redusere temperaturen på Pi når den går varm. Produsentene tilbyr til og med programvare som utløser viften når CPU -temperaturen stiger over en viss terskel (f.eks. 65 grader). Temperaturen reduseres raskt under en lavere terskel og slår av viften. Dette er flott, men får temperaturen til å stige og falle under moderate belastninger og skaper hørbar viftestøy. Denne instruksen vil redusere støyen fra viften mens du fikser CPU -temperaturen til en bestemt verdi ved å bruke noe som kalles en PID -kontroller. Høyere terskler (f.eks. 65 grader) vil resultere i en mye roligere vifte mens lavere terskler (f.eks. 50 grader) vil resultere i en høyere vifte, men bedre temperaturkontroll.

Eksemplet ovenfor viser resultatene mine fra å kjøre PID -kontrolleren og endre måltermperaturen hvert 500 sekund. Nøyaktigheten er +/- 1 grad med noe overskridelse av plutselige endringer i terminsperioden.

Viktigere var at denne testen ble utført under samme belastning for den totale testtiden (se BBC iPlayer).

Rekvisita

  • Bringebær Pi 4
  • Pimoroni Fan Shim

Trinn 1: Sett opp viften din

Sett opp viften din
Sett opp viften din

Det første trinnet er å sette opp viften din. Pimorini -opplæringen er flott!

Åpne deretter terminalen på Pi (ctrl alt t)

Og installer koden levert av Pimoroni

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

Trinn 2: Lag en PI (D) -kontroller

Lag en PI (D) -kontroller
Lag en PI (D) -kontroller

En Proportional Integral Derivative (PID) kontroller er et system som brukes til å kontrollere verdien av en bestemt prosess (CPU -temperatur) ved å manipulere en fysisk enhet (viftehastighet). Vi kan manipulere "hastigheten" og støyen fra viften ved å slå den på og av med jevne mellomrom (Pulse Wave Modulation). Lengden den er på i en gitt periode (f.eks. 1 sekund) bestemmer hvor raskt og hvor høyt viften er (900 ms = høyt og raskt, 100 ms = stille og sakte). Vi vil bruke PID til å manipulere viftehastigheten og dermed kontrollere temperaturen.

Vi kan dele bruken av en PID i flere trinn.

  1. Bestem verdien av prosessvariabelen du vil oppnå (f.eks. CPU -temperatur = 55). Dette kalles settpunktet ditt.
  2. Beregn PID -feilen. Hvis settpunktet ditt er 55 grader og den faktiske temperaturen er 60 grader, er feilen din 5 grader (Temperatur - settpunkt)
  3. Endre viftens tid i forhold til feilen (Store feil resulterer i store endringer i viftehastigheten, små feil forårsaker små endringer i viftehastigheten).
  4. Juster viften i proportion til tidligere verdier (integrert/sum av alle tidligere feil)
  5. Du kan eventuelt justere viftehastigheten basert på endringshastigheten til feilen (derivat), men vi vil ikke gjøre det her

Nå som du har teorien kjørt koden nedenfor i Thonny IDE (eller en annen python IDE). Endre verdien av 'mål' i koden nedenfor for å endre hvilken terperatur du vil beholde din Pi på. Jeg har satt termene 'P' og 'I' til noe vilkårlige verdier. Juster gjerne disse hvis de ikke fungerer for deg. å gjøre 'P' større betyr at kontrolleren vil svare raskt på nye feil (men er kanskje ikke stabil). Hvis du endrer "I", vil kontrolleren veie sin respons mer på tidligere verdier. Jeg ville ikke prøve å gjøre disse begrepene for store, ettersom hurtigjustering av viftehastigheten ikke raskt vil endre løpetiden. Også, hvis du gjør utrolig tungt arbeid på Pi -en din, kan det hende du ikke oppnår ønsket periode (viftens grenser gjelder fortsatt).

fra fanshim import FanShim

fra tid import søvn, tid import os import matematikk # Returner CPU -temperaturen som en tegnstreng def getCPUtemperature (): res = os.popen ('vcgencmd measure_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) fanshim = FanShim () target = 55 # ønsket temperatur (lek med dette og se hva som skjer) periode = 1 # PWM periode på =.1 # initialiser til 0 % duty cycle off = period-on # initialize to 0% duty cycle P =.01 # proporsjonal Gain term (lek med dette og se hva som skjer) intErr = 0 # integral error I =.0001 # intergral gain term (lek med dette og se hva som skjer) mens True: # få temperaute temp = int (float (getCPUtemperature ())) # beregne feil og jevne err = temp-target # beregne integra lerror og begrense det intErr = intErr+err if intErr> 10: intErr = 10 hvis intErr = periode: på = periode av = 0 annet: på = på av = periode på # sett minimum driftssyklus hvis på <.09: på =.09 annet: på = på # PWM på fanshim-pinnen hvis on == periode: fanshim.set_fan (True) sleep (on) else: fanshim.set_fan (True) s leep (on) fanshim.set_fan (False) sleep (av)

Trinn 3: Kjør kontrollskript ved oppstart

Kjør kontrollskript ved oppstart
Kjør kontrollskript ved oppstart

Du kan kjøre dette skriptet hver gang du starter pi, eller du kan få det til å utløse automatisk ved omstart. Dette er superenkelt å gjøre med crontab.

  1. åpne terminalen
  2. skriv crontab-e inn i terminalen
  3. legg til følgende kodelinje i filen '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. avslutt og start på nytt

Jeg la skriptet (fanControl.py) i en floder kalt bootScripts, men du kan sette det hvor som helst, bare pass på at du angir riktig bane i crontab.

Ferdig! Nå vil viften din regulere temperaturen på CPU -en til en bestemt verdi, samtidig som den minimerer den hørbare støyen den produserer.

Anbefalt: