Indholdsfortegnelse:

Præcis temperaturkontrol på Raspberry Pi 4: 3 trin
Præcis temperaturkontrol på Raspberry Pi 4: 3 trin

Video: Præcis temperaturkontrol på Raspberry Pi 4: 3 trin

Video: Præcis temperaturkontrol på Raspberry Pi 4: 3 trin
Video: Makeblock Untimate Robot Kit Part 1 : Step by Step Assembly Robot of Aram Tank 2024, November
Anonim
Præcis temperaturkontrol på Raspberry Pi 4
Præcis temperaturkontrol på Raspberry Pi 4

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

Opsæt din ventilator
Opsæt 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

Opret en PI (D) controller
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.

  1. Beslut dig om værdien af den procesvariabel, du vil opnå (f.eks. CPU -temperatur = 55). Dette kaldes dit setpunkt.
  2. Beregn PID -fejlen. Hvis dit setpunkt er 55 grader, og den faktiske temperatur er 60 grader, er din fejl 5 grader (Temperatur - setpunkt)
  3. 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).
  4. Juster blæseren i forhold til tidligere værdier (integral/sum af alle tidligere fejl)
  5. 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

Kør kontrolscript ved opstart
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.

  1. åbne terminalen
  2. skriv crontab-e i terminalen
  3. tilføj den følgende kodelinje til filen '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. 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: