Sadržaj:

Precizna kontrola temperature na malini Pi u koracima 4: 3
Precizna kontrola temperature na malini Pi u koracima 4: 3

Video: Precizna kontrola temperature na malini Pi u koracima 4: 3

Video: Precizna kontrola temperature na malini Pi u koracima 4: 3
Video: WARHAMMER 40000 FREEBLADE (HUMANS BEGONE) 2024, Studeni
Anonim
Precizna kontrola temperature na malini Pi 4
Precizna kontrola temperature na malini Pi 4

Pimoroni Fan Shim izvrsno je rješenje za smanjenje temperature vašeg Pi -a dok je vruć. Proizvođači čak nude softver koji pokreće ventilator kada temperatura procesora poraste iznad određenog praga (npr. 65 stupnjeva). Temperatura se brzo smanjuje ispod donjeg praga i isključuje ventilator. To je sjajno, ali uzrokuje porast i pad temperature pod umjerenim opterećenjima te stvara zvuk ventilatora. Ovo uputstvo će smanjiti buku ventilatora dok fiksira temperaturu procesora na određenu vrijednost pomoću nečega što se naziva PID kontroler. Viši pragovi (npr. 65 stupnjeva) rezultirat će mnogo tišim ventilatorom, dok će niži pragovi (npr. 50 stupnjeva) rezultirati jačim ventilatorom, ali boljom kontrolom temperature.

Gornji primjer prikazuje moje rezultate pokretanja PID kontrolera i promjene ciljne temperature svakih 500 sekundi. Točnost je +/- 1 stupanj s nekim prekoračenjem pri naglim promjenama temperature.

Ono što je važno, ovaj je test izveden pod istim opterećenjem za ukupno vrijeme testiranja (gledajući BBC iPlayer).

Pribor

  • Malina Pi 4
  • Pimoroni Fan Shim

Korak 1: Postavite ventilator

Postavite svoj ventilator
Postavite svoj ventilator

Prvi korak je postavljanje ventilatora. Pimorinijev vodič je odličan!

Zatim otvorite terminal na svom Pi (ctrl alt t)

I instalirajte kôd koji pruža Pimoroni

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

Korak 2: Izradite PI (D) kontroler

Izradite PI (D) kontroler
Izradite PI (D) kontroler

Kontroler proporcionalne integralne izvedenice (PID) sustav je koji se koristi za kontrolu vrijednosti određenog procesa (temperatura CPU -a) manipuliranjem nekim fizičkim uređajem (brzina ventilatora). 'Brzinom' i bukom ventilatora možemo manipulirati povremenim uključivanjem i isključivanjem (Pulse Wave Modulation). Koliko dugo je uključeno u određenom razdoblju (npr. 1 sekunda) određuje koliko je ventilator brz i glasan (900 ms = glasno i brzo, 100 ms = tiho i sporo). PID -om ćemo upravljati brzinom ventilatora i tako kontrolirati temperaturu.

Korištenje PID -a možemo podijeliti u nekoliko koraka.

  1. Odlučite se o vrijednosti varijable procesa koju želite postići (npr. Temperatura procesora = 55). To se naziva vaša zadana vrijednost.
  2. Izračunajte PID pogrešku. Ako je vaša zadana vrijednost 55 stupnjeva, a stvarna temperatura 60 stupnjeva, vaša pogreška je 5 stupnjeva (temperatura - zadana vrijednost)
  3. Promijenite vrijeme uključivanja ventilatora proporcionalno pogrešci (velike pogreške rezultiraju velikim promjenama u brzini ventilatora, male pogreške uzrokuju male promjene u brzini ventilatora).
  4. Prilagodite ventilator u proprtionu na prethodne vrijednosti (Integralno/zbroj svih prethodnih pogrešaka)
  5. Po želji možete podesiti brzinu ventilatora na temelju brzine promjene pogreške (izvedenica), ali to ovdje nećemo učiniti

Sada kada imate teoriju, pokrenite donji kod u Thonny IDE -u (ili nekom drugom Python IDE -u). Promijenite vrijednost 'target' u donjem kodu da biste promijenili temperaturu na kojoj želite održavati svoj Pi. Postavio sam izraze 'P' i 'I' na donekle proizvoljne vrijednosti. Slobodno ih prilagodite ako vam ne odgovaraju. povećavajući "P" znači da će kontroler brzo reagirati na nove pogreške (ali možda neće biti stabilan). Promjena 'I' će uzrokovati da kontroler ponderira njegov odgovor više na prošle vrijednosti. Ne bih pokušao učiniti ove izraze prevelikima jer brzo mijenjanje brzine ventilatora neće brzo promijeniti temperaturu. Također, ako radite nevjerojatno težak posao na svom Pi, možda nećete postići željenu radnu temperaturu (ograničenja ventilatora i dalje vrijede).

from fanshim import FanShim

from time import sleep sleep, time import os import math # Vrati temperaturu CPU -a kao niz znakova def getCPUtemperature (): res = os.popen ('vcgencmd mjera_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) fanshim = FanShim () target = 55 # željena temperatura (igrajte se s ovim i vidite što se događa) period = 1 # PWM period na =.1 # inicijalizirajte na 0 % radni ciklus isključen = period uključen # inicijaliziran na 0% radni ciklus P =.01 # proporcionalni pojačani pojam (igrajte se s ovim i vidite što se događa) intErr = 0 # integralna pogreška I =.0001 # pojam intergralnog pojačanja (igrajte se s ovim i vidjeti što će se dogoditi) dok je True: # get temperaute temp = int (float (getCPUtemperature ())) # izračunajte pogrešku i glatko err = temp-target # izračunajte integraciju lerror i ograničite je intErr = intErr+err ako je intErr> 10: intErr = 10 ako je intErr = razdoblje: uključeno = razdoblje isključeno = 0 drugo: uključeno = uključeno isključeno = razdoblje-uključeno # postavlja minimalni radni ciklus ako je uključeno <.09: uključeno =.09 ostalo: uključeno = uključeno # PWM na pinu ventilatora ako uključeno == točka: fanshim.set_fan (True) spavanje (on) else: fanshim.set_fan (True) s leep (uključeno) fanshim.set_fan (lažno) sleep (isključeno)

Korak 3: Pokrenite Control Script pri pokretanju

Pokrenite kontrolnu skriptu pri pokretanju
Pokrenite kontrolnu skriptu pri pokretanju

Ovu skriptu možete pokrenuti svaki put kada pokrenete svoj pi ili je možete automatski pokrenuti pri ponovnom pokretanju. Ovo je super jednostavno učiniti s crontabom.

  1. otvorite terminal
  2. upišite crontab-e u terminal
  3. dodajte sljedeći redak koda u datoteku '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. izlaz i ponovno podizanje sustava

Ja sam skriptu (fanControl.py) stavio u floder nazvan bootScripts, ali možete ga staviti bilo gdje, samo provjerite jeste li naveli ispravan put u crontab -u.

Sve gotovo! Sada će vaš ventilator kontrolirati temperaturu vašeg CPU -a na određenu vrijednost, dok će minimizirati zvuk koji proizvodi.

Preporučeni: