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, Novembar
Anonim
Precizna kontrola temperature na Raspberry Pi 4
Precizna kontrola temperature na Raspberry Pi 4

Pimoroni Fan Shim odlično je rješenje za smanjenje temperature vašeg Pi -a kada je vruć. Proizvođači čak nude softver koji pokreće ventilator kada temperatura procesora poraste iznad određenog praga (npr. 65 stepeni). Temperatura se brzo smanjuje ispod donjeg praga i isključuje ventilator. To je sjajno, ali uzrokuje porast i pad temperature pri umjerenim opterećenjima i stvara zvuk ventilatora. Ovo uputstvo će smanjiti buku ventilatora dok fiksira temperaturu procesora na određenu vrijednost koristeći nešto što se naziva PID kontroler. Viši pragovi (npr. 65 stepeni) 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. Tačnost je +/- 1 stepen sa nekim prekoračenjem pri naglim promjenama temperature.

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

Supplies

  • Raspberry Pi 4
  • Pimoroni Fan Shim

Korak 1: Postavite ventilator

Podesite svoj ventilator
Podesite 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: Kreirajte PI (D) kontroler

Kreirajte PI (D) kontroler
Kreirajte PI (D) kontroler

Kontroler proporcionalne integralne izvedbe (PID) je sistem koji se koristi za kontrolu vrijednosti određenog procesa (temperatura procesora) manipulacijom nekim fizičkim uređajem (brzina ventilatora). "Brzinom" i bukom ventilatora možemo manipulirati povremenim uključivanjem i isključivanjem (Pulse Wave Modulation). Dužina vremena koje je uključen u datom periodu (npr. 1 sekunda) određuje koliko je brz i glasan ventilator (900ms = glasno i brzo, 100ms = tiho i sporo). PID -om ćemo upravljati brzinom ventilatora i na taj način kontrolirati temperaturu.

Upotrebu 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 grešku. Ako je vaša zadana vrijednost 55 stupnjeva, a stvarna temperatura 60 stupnjeva, vaša greška je 5 stupnjeva (temperatura - zadana vrijednost)
  3. Promijenite vrijeme uključivanja ventilatora proporcionalno grešci (velike greške rezultiraju velikim promjenama brzine ventilatora, male greške uzrokuju male promjene brzine ventilatora).
  4. Podesite ventilator u proprtionu na prethodne vrijednosti (Integralno/zbir svih prethodnih grešaka)
  5. Opcionalno, možete podesiti brzinu ventilatora na osnovu brzine promjene greš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 termine '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 greš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 -u, 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 () cilj = 55 # željena temperatura (igrajte se s ovim i vidite što se događa) period = 1 # period PWM na =.1 # inicijalizira se 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 greška I =.0001 # međugranski pojačani pojačanje (igrajte se s ovim i pogledajte što se događa) dok je True: # get temperaute temp = int (float (getCPUtemperature ())) # izračunajte greš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 = period: uključen = period isključen = 0 ostalo: uključen = uključen isključen = period-uključen # postavljen minimalni radni ciklus ako je uključen <.09: uključen =.09 inače: uključen = uključen # PWM na pinu ventilatora ako na == period: fanshim.set_fan (True) spavanje (on) else: fanshim.set_fan (True) s leep (uključeno) fanshim.set_fan (lažno) spavanje (isključeno)

Korak 3: Pokrenite kontrolnu skriptu 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ću liniju koda u datoteku '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. izađite i ponovo pokrenite sistem

Stavio sam skriptu (fanControl.py) u floder nazvan bootScripts, ali možete je staviti bilo gdje, samo provjerite jeste li naveli ispravnu putanju u crontab -u.

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

Preporučuje se: