Cuprins:
- Provizii
- Pasul 1: configurați-vă ventilatorul
- Pasul 2: Creați un controler PI (D)
- Pasul 3: Rulați Scriptul de control la pornire
Video: Control precis al temperaturii pe Raspberry Pi 4: 3 Pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
Pimoroni Fan Shim este o soluție excelentă pentru reducerea temperaturii Pi-ului dvs. atunci când este fierbinte. Producătorii oferă chiar și software care declanșează ventilatorul atunci când temperatura procesorului crește peste un anumit prag (de ex. 65 de grade). Temperatura se reduce rapid sub un prag inferior și oprește ventilatorul. Acest lucru este minunat, dar determină creșterea și scăderea temperaturii sub sarcini moderate și creează zgomot audibil al ventilatorului. Această instrucțiune va reduce zgomotul ventilatorului în timp ce fixează temperatura procesorului la o anumită valoare utilizând ceva numit controler PID. Praguri mai mari (de exemplu, 65 de grade) vor avea ca rezultat un ventilator mult mai silențios, în timp ce praguri mai mici (de exemplu, 50 de grade) vor avea ca rezultat un ventilator mai puternic, dar un control mai bun al temperaturii.
Exemplul de mai sus arată rezultatele mele de la rularea controlerului PID și schimbarea temperaturii țintă la fiecare 500 de secunde. Precizia este de +/- 1 grad, cu unele depășiri la modificările bruște ale temperaturii.
Important, acest test a fost efectuat sub aceeași sarcină pentru timpul total de testare (vizionarea BBC iPlayer).
Provizii
- Raspberry Pi 4
- Pimoroni Fan Shim
Pasul 1: configurați-vă ventilatorul
Primul pas este să vă configurați ventilatorul. Tutorialul Pimorini este minunat!
Apoi deschideți terminalul de pe Pi (ctrl alt t)
Și instalați codul furnizat de Pimoroni
git clone https://github.com/pimoroni/fanshim-pythoncd fanshim-python sudo./install.sh
Pasul 2: Creați un controler PI (D)
Un controlor proporțional integrat derivat (PID) este un sistem utilizat pentru a controla valoarea unui anumit proces (temperatura procesorului) prin manipularea unui dispozitiv fizic (viteza ventilatorului). Putem manipula „viteza” și zgomotul ventilatorului pornindu-l și oprindu-l periodic (Modulație de undă a impulsurilor). Durata de timp pentru care este activată într-o anumită perioadă (de exemplu, 1 secundă) determină cât de rapid și cât de tare este ventilatorul (900 ms = puternic și rapid, 100 ms = liniștit și lent). Vom folosi PID pentru a manipula viteza ventilatorului și astfel vom controla temperatura.
Putem împărți utilizarea unui PID în mai mulți pași.
- Decideți valoarea variabilei de proces pe care doriți să o atingeți (de exemplu, temperatura CPU = 55). Acesta se numește punctul dvs. de referință.
- Calculați eroarea PID. Dacă valoarea de referință este de 55 de grade și temperatura reală este de 60 de grade, eroarea dvs. este de 5 grade (Temperatura - valoarea de referință)
- Schimbați timpul de pornire al ventilatorului proporțional cu eroarea (erorile mari duc la modificări mari ale vitezei ventilatorului, erorile mici determină modificări mici ale vitezei ventilatorului).
- Reglați ventilatorul în funcție de valorile anterioare (Integral / suma tuturor erorilor anterioare)
- Opțional, reglați viteza ventilatorului în funcție de rata de schimbare a erorii (derivată), dar nu vom face asta aici
Acum că aveți teoria, rulați codul de mai jos în ID-ul Thonny (sau în alt IDE Python). Schimbați valoarea „țintă” din codul de mai jos pentru a schimba la ce temperatură doriți să vă mențineți Pi. Am setat termenii „P” și „I” la valori oarecum arbitrare. Simțiți-vă liber să le ajustați dacă nu funcționează pentru dvs. mărirea „P” înseamnă că controlerul va răspunde rapid la noile erori (dar poate să nu fie stabil). Schimbarea „I” va determina controlerul să cântărească răspunsul său mai mult la valorile anterioare. Nu aș încerca să fac acești termeni prea mari, deoarece schimbarea rapidă a vitezei ventilatorului nu va schimba rapid temperatura. De asemenea, dacă faceți o muncă incredibil de grea pe Pi, este posibil să nu atingeți temperatura dorită (limitele ventilatorului se aplică în continuare).
de la fanshim import FanShim
din timp import somn, import timp os import math # Returnează temperatura CPU ca șir de caractere def getCPUtemperature (): res = os.popen ('vcgencmd measure_temp'). readline () return (res.replace ("temp =", " ").replace (" 'C / n "," ")) fanshim = FanShim () target = 55 # temperatura dorită (joacă cu asta și vezi ce se întâmplă) period = 1 # PWM period on =.1 # initialize to 0 % ciclu de funcționare oprit = perioadă de pornire # inițializare la 0% ciclu de funcționare P =.01 # proporțional Termen de câștig (joacă cu asta și vezi ce se întâmplă) intErr = 0 # eroare integrală I =.0001 # termen de câștig intergral (joacă cu acesta și vezi ce se întâmplă) în timp ce este adevărat: # get temperaute temp = int (float (getCPUtemperature ())) # calculate error and smooth err = temp-target # compute integra lerror and constrain it intErr = intErr + err if intErr> 10: intErr = 10 if intErr = period: on = period off = 0 else: on = on off = period-on # set ciclu minim de funcționare if on <.09: on =.09 else: on = on # PWM on the fanshim pin if pe == perioadă: fanshim.set_fan (True) sleep (on) else: fanshim.set_fan (True) s leep (on) fanshim.set_fan (False) sleep (off)
Pasul 3: Rulați Scriptul de control la pornire
Puteți rula acest script de fiecare dată când porniți pi-ul sau îl puteți declanșa automat la repornire. Acest lucru este foarte simplu de făcut cu crontab.
- deschide terminalul
- tastați crontab-e în terminal
- adăugați următoarea linie de cod în fișierul „@reboot python /home/pi/bootScripts/fanControl.py &”
- ieșiți și reporniți
Am pus scriptul (fanControl.py) într-un floder numit bootScripts, dar l-ați putea pune oriunde, asigurați-vă că specificați calea corectă în crontab.
Totul este gata! Acum ventilatorul dvs. va controla temperatura procesorului dvs. la o anumită valoare, reducând în același timp zgomotul sonor pe care îl produce.
Recomandat:
Contor de tensiune precis și precis Arduino (0-90V DC): 3 pași
Arduino Precise & Accurate Volt Meter (0-90V DC): În acest instructable, am construit un voltmetru pentru a măsura tensiuni ridicate DC (0-90v) cu o precizie și precizie relativă folosind un Arduino Nano. Măsurătorile de testare pe care le-am făcut au fost suficient de precise, mai ales la 0,3v de tensiunea reală măsurată cu un
Automatizare acasă cu senzor tactil NodeMCU Releu de control al temperaturii LDR: 16 pași
Automatizare la domiciliu cu releu de control al temperaturii LDR senzor tactil NodeMCU: În proiectele mele trecute NodeMCU, am controlat două aparate electrocasnice din aplicația Blynk. Am primit multe comentarii și mesaje pentru a actualiza proiectul cu Control manual și pentru a adăuga mai multe caracteristici. Așa că am proiectat această casetă Smart Extension Box. În acest IoT
Sistem de control al umidității și temperaturii pentru terariu: 11 pași (cu imagini)
Sistem de control al umidității și temperaturii pentru terariu: INTRODUCERE: Acest instructable este pentru dezvoltarea unui sistem modular de control al umidității și temperaturii folosind un Arduino Uno. Acest sistem folosește o sondă impermeabilă de umiditate și temperatură pentru a monitoriza parametrii de mediu și o conexiune Arduino Uno
Pistol ușor Wiimote precis pentru Raspberry PI: 9 pași (cu imagini)
Pistola ușoară Wiimote pentru Raspberry PI: În mod normal, telecomanda Wii utilizată ca pistol ușor nu este suficient de precisă pentru jocurile retro, cum ar fi NES Duck Hunt, deoarece telecomanda Wii nu selectează de fapt punctul de pe televizorul către care este îndreptat. Nu se poate! Telecomanda Wii are o cameră cu infraroșu în față
Reciclarea vechiului comutator Dimmer ca control variabil al temperaturii pentru fierul de lipit: 7 pași
Reciclarea vechiului comutator de reglare ca control variabil al temperaturii pentru fierul de lipit: Am văzut o mulțime de control profesional al temperaturii variabile pentru lipit, dar prea scump. Așa că fac unul dintr-un întrerupător, priză, placă de bandă și priză vechi care a fost deja nedorit și o cutie veche de comutatoare din PVC care a venit cu el și așa