Innehållsförteckning:

Exakt temperaturkontroll på Raspberry Pi 4: 3 -steg
Exakt temperaturkontroll på Raspberry Pi 4: 3 -steg

Video: Exakt temperaturkontroll på Raspberry Pi 4: 3 -steg

Video: Exakt temperaturkontroll på Raspberry Pi 4: 3 -steg
Video: Обзор зарядного устройства для защиты литиевых батарей TC4056 TP4056 USB 18650 2024, November
Anonim
Exakt temperaturkontroll på Raspberry Pi 4
Exakt temperaturkontroll på Raspberry Pi 4

Pimoroni Fan Shim är en bra lösning för att minska temperaturen på din Pi när den blir varm. Tillverkarna tillhandahåller till och med programvara som triggar fläkten när CPU -temperaturen stiger över en viss tröskel (t.ex. 65 grader). Temperaturen minskar snabbt under ett lägre tröskelvärde och stänger av fläkten. Detta är bra men får temperaturen att stiga och falla under måttliga belastningar och skapar hörbart fläktljud. Denna instruerbara kommer att minska fläktens brus samtidigt som CPU -temperaturen fixeras till ett specifikt värde med hjälp av något som kallas en PID -styrenhet. Högre trösklar (t.ex. 65 grader) kommer att resultera i en mycket tystare fläkt medan lägre trösklar (t.ex. 50 grader) kommer att resultera i en högre fläkt men bättre temperaturkontroll.

Exemplet ovan visar mina resultat från att köra PID -regulatorn och ändra måltermperaturen var 500: e sekund. Noggrannheten är +/- 1 grad med lite överskridande vid plötsliga förändringar i terminsperiod.

Det viktigaste var att detta test utfördes under samma belastning under den totala testtiden (tittade på BBC iPlayer).

Tillbehör

  • Hallon Pi 4
  • Pimoroni Fan Shim

Steg 1: Konfigurera din fläkt

Sätt upp din fläkt
Sätt upp din fläkt

Det första steget är att ställa in din fläkt. Pimorini -handledningen är fantastisk!

Öppna sedan terminalen på din Pi (ctrl alt t)

Och installera koden från Pimoroni

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

Steg 2: Skapa en PI (D) -kontroller

Skapa en PI (D) -kontroller
Skapa en PI (D) -kontroller

En Proportional Integral Derivative (PID) -kontroller är ett system som används för att styra värdet på en viss process (CPU -temperatur) genom att manipulera någon fysisk enhet (fläkthastighet). Vi kan manipulera fläktens "hastighet" och brus genom att slå på och av den regelbundet (Pulse Wave Modulation). Den tid den är på under en viss period (t.ex. 1 sekund) avgör hur snabbt och hur högt fläkten är (900 ms = högt och snabbt, 100 ms = tyst och långsamt). Vi kommer att använda PID för att manipulera fläktens hastighet och därmed styra temperaturen.

Vi kan dela upp användningen av en PID i antal steg.

  1. Bestäm värdet på processvariabeln du vill uppnå (t.ex. CPU -temperatur = 55). Detta kallas ditt börvärde.
  2. Beräkna PID -felet. Om ditt börvärde är 55 grader och den verkliga temperaturen är 60 grader är ditt fel 5 grader (Temperatur - börvärde)
  3. Ändra fläktens tid i proportion till felet (Stora fel resulterar i stora förändringar i fläkthastigheten, små fel orsakar små förändringar i fläkthastigheten).
  4. Justera fläkten i proprtion till tidigare värden (Integral/summa av alla tidigare fel)
  5. Alternativt kan du justera fläkthastigheten baserat på hastighetsändringen för felet (derivat) men vi kommer inte att göra det här

Nu när du har teorin kör koden nedan i Thonny IDE (eller någon annan python IDE). Ändra värdet på "mål" i koden nedan för att ändra vilken terperatur du vill behålla din Pi på. Jag har satt termen 'P' och 'I' till något godtyckliga värden. Justera gärna dessa om de inte fungerar för dig. att göra 'P' större betyder att regulatorn svarar snabbt på nya fel (men kanske inte är stabil). Om du ändrar "I" kommer kontrollern att väga sitt svar mer på tidigare värden. Jag skulle inte försöka göra dessa termer för stora eftersom att snabbt växla fläkthastigheten inte snabbt kommer att ändra terminsperiod. Om du gör otroligt tungt arbete med din Pi kanske du inte uppnår önskad termperiod (fläktens gränser gäller fortfarande).

från fanshim importera FanShim

från tid import sömn, tid import os import matematik # Returnera CPU -temperaturen som en teckensträng def getCPUtemperature (): res = os.popen ('vcgencmd measure_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) fanshim = FanShim () target = 55 # önskad temperatur (spela med detta och se vad som händer) period = 1 # PWM -period på =.1 # initialiseras till 0 % duty cycle off = period-on # initialis till 0% duty cycle P =.01 # proportionell Gain term (spela med detta och se vad som händer) intErr = 0 # integral error I =.0001 # intergral gain term (lek med detta och se vad som händer) medan True: # få temperaute temp = int (float (getCPUtemperature ())) # beräkna fel och jämna err = temp-target # beräkna integra lerror och begränsa det intErr = intErr+err if intErr> 10: intErr = 10 if intErr = period: on = period off = 0 else: on = on off = period-on # ställ in lägsta driftscykel om på <.09: on =.09 else: on = on # PWM på fanshim-stiftet om on == period: fanshim.set_fan (True) sleep (on) else: fanshim.set_fan (True) s leep (on) fanshim.set_fan (False) sleep (off)

Steg 3: Kör kontrollskript vid start

Kör kontrollskript vid start
Kör kontrollskript vid start

Du kan köra detta skript varje gång du startar din pi eller så kan du få det automatiskt att utlösa vid omstart. Detta är superenkelt att göra med crontab.

  1. öppna terminalen
  2. skriv crontab-e i terminalen
  3. lägg till följande kodrad i filen '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. avsluta och starta om

Jag lade skriptet (fanControl.py) i en floder som heter bootScripts men du kan placera det var som helst bara se till att du anger rätt sökväg i crontab.

Klart! Nu kommer din fläkt att styra temperaturen på din CPU till ett visst värde, samtidigt som det minimerar det hörbara brus som det producerar.

Rekommenderad: