Inhoudsopgave:
- Benodigdheden
- Stap 1: Stel je ventilator in
- Stap 2: Maak een PI(D)-controller
- Stap 3: Run Control Script bij opstarten
Video: Nauwkeurige temperatuurregeling op de Raspberry Pi 4: 3 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
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
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 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.
- Bepaal de waarde van de procesvariabele die u wilt bereiken (bijv. CPU-temperatuur = 55). Dit wordt uw setpoint genoemd.
- Bereken de PID-fout. Als uw instelpunt 55 graden is en de werkelijke temperatuur 60 graden is, is uw fout 5 graden (Temperatuur - instelpunt)
- 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).
- Pas de ventilator aan in verhouding tot waarden uit het verleden (integraal/som van alle voorgaande fouten)
- 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
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.
- open de terminal
- typ crontab-e in de terminal
- voeg de volgende regel code toe aan het bestand '@reboot python /home/pi/bootScripts/fanControl.py &'
- 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:
Arduino nauwkeurige en nauwkeurige voltmeter (0-90V DC) - Ajarnpa
Arduino Precieze en nauwkeurige voltmeter (0-90V DC): in deze instructie heb ik een voltmeter gebouwd om hoge spanningen DC (0-90v) te meten met relatieve precisie en nauwkeurigheid met behulp van een Arduino Nano. De testmetingen die ik nam waren nauwkeurig genoeg, meestal binnen 0.3v van de werkelijke spanning gemeten met een
Nauwkeurige YouTube-abonneeteller: 4 stappen
Nauwkeurige YouTube-abonneeteller: ik begon me ongeveer een maand geleden voor te bereiden op dit project, maar toen werd ik ontspoord door YouTube toen ze aankondigden dat ze niet langer het echte aantal abonnees zouden geven, maar het dichtstbijzijnde afgeronde getal. Op dit moment is dat niet echt een probleem voor
Temperatuurregeling met Arduino- en PWM-fans - Ajarnpa
Temperatuurregeling met Arduino en PWM-fans: temperatuurregeling met PID op Arduino en PWM-ventilatoren voor doe-het-zelf server-/netwerkrekkoeling Een paar weken geleden moest ik een rek opzetten met netwerkapparaten en een paar servers. Het rek staat in een afgesloten garage, dus het temperatuurbereik tussen winter en
Temperatuurregeling voor vriezer of koelkast: 7 stappen
Temperatuurregeling voor vriezer of koelkast: deze instructable behandelt de integratie van een Johnson Controls-temperatuurregeling in een verlengsnoer met schakelaar en stopcontact voor het regelen van een vriezer. Voor het vergisten van bier is een vrieskist een fantastisch platform, maar de fabrieksb
Uw oude dimmerschakelaar recyclen als variabele temperatuurregeling voor uw soldeerbout - Ajarnpa
Uw oude dimmerschakelaar recyclen als variabele temperatuurregeling voor uw soldeerbout: ik heb veel professionele variabele temperatuurregeling voor soldeerbout gezien, maar te duur. Dus ik maak er een van een oude dimmerschakelaar, stopcontact, bendeplaat en stekker die al rommel waren en een oude PVC-schakeldoos die erbij hoorde en zo