Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Konfigurer din ventilator
- Trin 2: Opret en PI (D) -controller
- Trin 3: Kør kontrolscript ved opstart
Video: Præcis temperaturkontrol på Raspberry Pi 4: 3 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Pimoroni Fan Shim er en fantastisk løsning til at reducere temperaturen på din Pi, når den kører varm. Producenterne leverer endda software, der udløser blæseren, når CPU -temperaturen stiger over en bestemt tærskel (f.eks. 65 grader). Temperaturen falder hurtigt under en lavere tærskel og slukker blæseren. Dette er fantastisk, men får temperaturen til at stige og falde under moderate belastninger og skaber hørbar blæserstøj. Denne instruerbare vil reducere støj fra blæseren, mens CPU -temperaturen fastlægges til en bestemt værdi ved hjælp af noget, der kaldes en PID -controller. Højere tærskler (f.eks. 65 grader) vil resultere i en meget mere støjsvag blæser, mens lavere tærskler (f.eks. 50 grader) vil resultere i en højere blæser, men bedre temperaturkontrol.
Eksemplet ovenfor viser mine resultater fra at køre PID -controlleren og ændre måltermperaturen hvert 500 sekund. Nøjagtigheden er +/- 1 grad med en vis overskridelse af pludselige ændringer i løbetiden.
Det er vigtigt, at denne test blev udført under den samme belastning i den samlede testtid (se BBC iPlayer).
Forbrugsvarer
- Hindbær Pi 4
- Pimoroni Fan Shim
Trin 1: Konfigurer din ventilator
Det første trin er at opsætte din ventilator. Pimorini -øvelsen er fantastisk!
Åbn derefter terminalen på din Pi (ctrl alt t)
Og installer koden fra Pimoroni
git-klon https://github.com/pimoroni/fanshim-pythoncd fanshim-python sudo./install.sh
Trin 2: Opret en PI (D) -controller
En Proportional Integral Derivative (PID) controller er et system, der bruges til at styre værdien af en bestemt proces (CPU -temperatur) ved at manipulere en eller anden fysisk enhed (blæserhastighed). Vi kan manipulere ventilatorens 'hastighed' og støj ved periodisk at tænde og slukke den (Pulse Wave Modulation). Den tid, den er tændt i i en given periode (f.eks. 1 sekund) bestemmer, hvor hurtig og hvor høj blæseren er (900 ms = høj og hurtig, 100 ms = stille og langsom). Vi vil bruge PID til at manipulere ventilatorens hastighed og dermed kontrollere temperaturen.
Vi kan opdele brugen af et PID i antal trin.
- Beslut dig om værdien af den procesvariabel, du vil opnå (f.eks. CPU -temperatur = 55). Dette kaldes dit setpunkt.
- Beregn PID -fejlen. Hvis dit setpunkt er 55 grader, og den faktiske temperatur er 60 grader, er din fejl 5 grader (Temperatur - setpunkt)
- Skift blæserens tid i forhold til fejlen (Store fejl resulterer i store ændringer i blæserhastighed, små fejl forårsager små ændringer i blæserhastighed).
- Juster blæseren i forhold til tidligere værdier (integral/sum af alle tidligere fejl)
- Du kan eventuelt justere blæserhastigheden baseret på ændringshastigheden for fejlen (afledt), men det gør vi ikke her
Nu hvor du har teorien kørt koden herunder i Thonny IDE (eller en anden python IDE). Skift værdien af 'mål' i nedenstående kode for at ændre, hvilken terperatur du vil beholde din Pi på. Jeg har angivet vilkårene 'P' og 'I' til noget vilkårlige værdier. Du er velkommen til at justere disse, hvis de ikke virker for dig. gør 'P' større betyder, at controlleren reagerer hurtigt på nye fejl (men er muligvis ikke stabil). Ændring af 'I' vil få controlleren til at vægte sit svar mere på tidligere værdier. Jeg ville ikke forsøge at gøre disse udtryk for store, da hurtig ændring af blæserhastigheden ikke hurtigt vil ændre løbetiden. Hvis du også laver utroligt tungt arbejde på din Pi, opnår du muligvis ikke din ønskede termiperiode (ventilatorens grænser gælder stadig).
fra fanshim import FanShim
fra tid import sleep, time import os import math # Return CPU temperatur 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 (spil med dette og se hvad der sker) periode = 1 # PWM periode på =.1 # initialiser til 0 % duty cycle off = period-on # initialise to 0% duty cycle P =.01 # proportional Gain term (spil med dette og se hvad der sker) intErr = 0 # integral error I =.0001 # intergral gain term (spil med dette og se, hvad der sker) mens True: # get temperaute temp = int (float (getCPUtemperature ())) # beregn fejl og glat err = temp-target # compute integra lerror og begræns det intErr = intErr+err if intErr> 10: intErr = 10 if intErr = period: on = period off = 0 else: on = on off = period-on # indstil minimum driftscyklus, hvis den er på <.09: on =.09 else: on = on # PWM på fanshim pin, hvis on == periode: fanshim.set_fan (True) sleep (on) else: fanshim.set_fan (True) s leep (on) fanshim.set_fan (Falsk) søvn (off)
Trin 3: Kør kontrolscript ved opstart
Du kan køre dette script hver gang du starter din pi, eller du kan få det til automatisk at udløse ved genstart. Dette er super enkelt at gøre med crontab.
- åbne terminalen
- skriv crontab-e i terminalen
- tilføj den følgende kodelinje til filen '@reboot python /home/pi/bootScripts/fanControl.py &'
- afslut og genstart
Jeg lagde scriptet (fanControl.py) i en floder kaldet bootScripts, men du kunne sætte det overalt, bare sørg for at angive den korrekte sti i crontab.
Helt færdig! Nu vil din blæser styre temperaturen på din CPU til en bestemt værdi, mens den minimerer den hørbare støj, den producerer.
Anbefalede:
Waveshare E-ink Display præcis voltmeter (0-90v DC) med Arduino Nano: 3 trin
Waveshare E-ink Display Precise Voltmeter (0-90v DC) Med Arduino Nano: I denne instruktør bruger jeg et 2,9 '' Waveshare E-Paper display med en Arduino Nano, en spændingsdeler og en ADS1115 til at vise præcise spændinger op til 90 volt DC på E-Paper Display.Denne instruktive kombinerer disse to tidligere projekter:- Ardui
Præcis Wiimote Light Gun til Raspberry PI: 9 trin (med billeder)
Præcis Wiimote Light Gun til Raspberry PI: Normalt er Wii -fjernbetjeningen, der bruges som en lyspistol, ikke præcis nok til retrospil som NES Duck Hunt, fordi Wii Remote faktisk ikke vælger det punkt på tv'et, den peger på. Det kan ikke! Wii -fjernbetjeningen har et infrarødt kamera foran
TouchFree: Automatisk temperaturkontrol og maskedetektionskiosk: 5 trin
TouchFree: Automatiseret temperaturkontrol og maskedetekteringskiosk: Efterhånden som lande rundt om i verden genåbner, bliver det at leve med den nye coronavirus ved at blive den nye livsstil. Men for at stoppe spredningen af virussen er vi nødt til at adskille mennesker, der har Coronavirus fra resten. Ifølge CDC er feber l
Temperaturkontrol til fryser eller køleskab: 7 trin
Temperaturkontrol til fryser eller køleskab: Denne instruktion dækker integrationen af en Johnson Controls temperaturkontrol i en forlængerledning med kontakt og stikkontakt til styring af en fryser. Til gæring af øl er en kummefryser en fantastisk platform, men fabrikken fortsætter
Genbrug af din gamle lysdæmperkontakt som en variabel temperaturkontrol til dit loddejern: 7 trin
Genbrug af din gamle lysdæmperkontakt som variabel temperaturkontrol til dit loddejern: Jeg har set en masse professionel variabel temperaturkontrol til loddejern, men for dyrt. Så jeg laver en af en gammel lysdæmperkontakt, stikkontakt, gangplade og stik, der allerede var skrammel og en gammel PVC -switchboks, der fulgte med, og så