Inhoudsopgave:

Nauwkeurige temperatuurregeling op de Raspberry Pi 4: 3 stappen
Nauwkeurige temperatuurregeling op de Raspberry Pi 4: 3 stappen

Video: Nauwkeurige temperatuurregeling op de Raspberry Pi 4: 3 stappen

Video: Nauwkeurige temperatuurregeling op de Raspberry Pi 4: 3 stappen
Video: Waarom heb je alleen een ansichtkaart en een fotolijstje nodig om een uitvinder te worden? (1/5) 2024, November
Anonim
Nauwkeurige temperatuurregeling op de Raspberry Pi 4
Nauwkeurige temperatuurregeling op de Raspberry Pi 4

De Pimoroni Fan Shim is een geweldige oplossing om de temperatuur van je Pi te verlagen wanneer deze heet wordt. De makers leveren zelfs software die de ventilator activeert wanneer de CPU-temperatuur boven een bepaalde drempel komt (bijvoorbeeld 65 graden). De temperatuur daalt snel tot onder een lagere drempel en schakelt de ventilator uit. Dit is geweldig, maar zorgt ervoor dat de temperatuur stijgt en daalt bij matige belasting en veroorzaakt hoorbaar ventilatorgeluid. Deze instructable zal het geluid van de ventilator verminderen terwijl de CPU-temperatuur op een specifieke waarde wordt ingesteld met behulp van iets dat een PID-controller wordt genoemd. Hogere drempels (bijv. 65 graden) resulteren in een veel stillere ventilator, terwijl lagere drempels (bijv. 50 graden) resulteren in een luidere ventilator maar een betere temperatuurregeling.

Het bovenstaande voorbeeld toont mijn resultaten van het uitvoeren van de PID-controller en het veranderen van de doeltemperatuur elke 500 seconden. De nauwkeurigheid is +/- 1 graad met enige overshoot bij plotselinge temperatuurveranderingen.

Belangrijk is dat deze test gedurende de totale testtijd onder dezelfde belasting is uitgevoerd (kijkend naar BBC iPlayer).

Benodigdheden

  • Raspberry Pi 4
  • Pimoroni Fan Shim

Stap 1: Stel je ventilator in

Stel je ventilator in
Stel je ventilator in

De eerste stap is om je ventilator in te stellen. De Pimorini-tutorial is geweldig!

Open vervolgens de terminal op je Pi (ctrl alt t)

En installeer de code van Pimoroni

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

Stap 2: Maak een PI(D)-controller

Een PI(D)-controller maken
Een PI(D)-controller maken

Een Proportional Integral Derivative (PID) -controller is een systeem dat wordt gebruikt om de waarde van een bepaald proces (CPU-temperatuur) te regelen door een fysiek apparaat te manipuleren (ventilatorsnelheid). We kunnen de 'snelheid' en het geluid van de ventilator manipuleren door deze periodiek aan en uit te zetten (Pulse Wave Modulation). De tijdsduur dat de ventilator in een bepaalde periode aan staat (bijv. 1 seconde) bepaalt hoe snel en hoe hard de ventilator is (900 ms = luid en snel, 100 ms = stil en langzaam). We zullen de PID gebruiken om de snelheid van de ventilator te manipuleren en zo de temperatuur te regelen.

We kunnen het gebruik van een PID onderverdelen in aantal stappen.

  1. Bepaal de waarde van de procesvariabele die u wilt bereiken (bijv. CPU-temperatuur = 55). Dit wordt uw setpoint genoemd.
  2. Bereken de PID-fout. Als uw instelpunt 55 graden is en de werkelijke temperatuur 60 graden is, is uw fout 5 graden (Temperatuur - instelpunt)
  3. Verander de aan-tijd van de ventilator in verhouding tot de fout (grote fouten resulteren in grote veranderingen in ventilatorsnelheid, kleine fouten veroorzaken kleine veranderingen in ventilatorsnelheid).
  4. Pas de ventilator aan in verhouding tot waarden uit het verleden (integraal/som van alle voorgaande fouten)
  5. Optioneel pas je de ventilatorsnelheid aan op basis van de veranderingssnelheid van de fout (afgeleide) maar dat doen we hier niet

Nu je de theorie hebt, voer je de onderstaande code uit in de Thonny IDE (of een andere python-IDE). Wijzig de waarde van 'target' in de onderstaande code om te wijzigen op welke temperatuur u uw Pi wilt behouden. Ik heb de termen 'P' en 'I' op enigszins willekeurige waarden gezet. Pas deze gerust aan als ze niet voor u werken. door 'P' groter te maken, zal de controller snel reageren op nieuwe fouten (maar mogelijk niet stabiel). Als u 'I' wijzigt, zal de controller zijn reactie meer wegen op waarden uit het verleden. Ik zou deze termen niet te groot proberen te maken, omdat het snel veranderen van de ventilatorsnelheid de temperatuur niet snel zal veranderen. Als je ongelooflijk zwaar werk aan je Pi doet, bereik je misschien niet de gewenste temperatuur (de limieten van de ventilator zijn nog steeds van toepassing).

van fanshim importeer FanShim

from time import sleep, time import os import math # Retourneer CPU-temperatuur als een tekenreeks def getCPUtemperature(): res = os.popen('vcgencmd measure_temp').readline() return(res.replace("temp=", " ").replace("'C\n", "")) fanshim = FanShim() target = 55 # gewenste temperatuur (speel hiermee en kijk wat er gebeurt) period=1 # PWM-periode aan=.1 # initialiseer naar 0 % duty cycle off=period-on # initialiseer naar 0% duty cycle P=.01 # proportionele versterkingsterm (speel hiermee en kijk wat er gebeurt) intErr=0 # integrale fout I=.0001 # intergrale versterkingsterm (speel hiermee en kijk wat er gebeurt) terwijl True: # get temperaute temp=int(float(getCPUtemperature())) # bereken fout en smooth err = temp-target # compute integra lerror en beperk het intErr=intErr+err als intErr>10: intErr =10 if intErr=periode: aan=periode uit=0 else: aan=aan uit = periode-aan # set minimum duty cycle if on<.09: on=.09 else: on=on # PWM op de fanshim pin if on ==periode: fanshim.set_fan(True) sleep(on) else: fanshim.set_fan(True) s leep(aan) fanshim.set_fan(False) slaap(uit)

Stap 3: Run Control Script bij opstarten

Besturingsscript uitvoeren bij opstarten
Besturingsscript uitvoeren bij opstarten

Je zou dit script elke keer kunnen uitvoeren als je je pi start of je zou het automatisch kunnen laten activeren bij het opnieuw opstarten. Dit is super eenvoudig te doen met crontab.

  1. open de terminal
  2. typ crontab-e in de terminal
  3. voeg de volgende regel code toe aan het bestand '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. afsluiten en opnieuw opstarten

Ik heb het script (fanControl.py) in een map met de naam bootScripts geplaatst, maar je zou het overal kunnen plaatsen, maar zorg ervoor dat je het juiste pad opgeeft in crontab.

Helemaal klaar! Nu regelt uw ventilator de temperatuur van uw CPU tot een specifieke waarde, terwijl het hoorbare geluid dat het produceert tot een minimum wordt beperkt.

Aanbevolen: