Sommario:

Controllo preciso della temperatura sul Raspberry Pi 4: 3 passaggi
Controllo preciso della temperatura sul Raspberry Pi 4: 3 passaggi

Video: Controllo preciso della temperatura sul Raspberry Pi 4: 3 passaggi

Video: Controllo preciso della temperatura sul Raspberry Pi 4: 3 passaggi
Video: Controllo di temperatura con un Raspberry Pi e Amazon AWS 2024, Dicembre
Anonim
Controllo preciso della temperatura sul Raspberry Pi 4
Controllo preciso della temperatura sul Raspberry Pi 4

Il Pimoroni Fan Shim è un'ottima soluzione per ridurre la temperatura del tuo Pi quando fa caldo. I produttori forniscono anche un software che attiva la ventola quando la temperatura della CPU supera una certa soglia (ad esempio 65 gradi). La temperatura scende rapidamente al di sotto di una soglia inferiore e spegne la ventola. Questo è ottimo, ma fa salire e scendere la temperatura sotto carichi moderati e crea un rumore udibile della ventola. Questo istruibile ridurrà il rumore della ventola mentre fissa la temperatura della CPU su un valore specifico usando qualcosa chiamato controller PID. Soglie più alte (ad es. 65 gradi) si tradurranno in una ventola molto più silenziosa, mentre soglie più basse (ad es. 50 gradi) si tradurranno in una ventola più rumorosa ma con un migliore controllo della temperatura.

L'esempio sopra mostra i miei risultati dall'esecuzione del controller PID e dalla modifica della temperatura target ogni 500 secondi. La precisione è di +/- 1 grado con qualche superamento in caso di sbalzi di temperatura.

È importante sottolineare che questo test è stato eseguito con lo stesso carico per il tempo totale del test (guardando BBC iPlayer).

Forniture

  • Lampone Pi 4
  • Pimoroni Fan Shim

Passaggio 1: configura il tuo fan

Configura il tuo fan
Configura il tuo fan

Il primo passo è configurare il tuo ventilatore. Il tutorial di Pimorini è fantastico!

Quindi apri il terminale sul tuo Pi (ctrl alt t)

E installa il codice fornito da Pimoroni

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

Passaggio 2: creare un controller PI(D)

Creare un controller PI(D)
Creare un controller PI(D)

Un controller Proportional Integral Derivative (PID) è un sistema utilizzato per controllare il valore di un determinato processo (temperatura CPU) manipolando un dispositivo fisico (Fan Speed). Possiamo manipolare la 'velocità' e il rumore della ventola accendendola e spegnendola periodicamente (Pulse Wave Modulation). La durata dell'accensione in un determinato periodo (ad es. 1 secondo) determina la velocità e il volume della ventola (900 ms = alto e veloce, 100 ms = basso e lento). Useremo il PID per manipolare la velocità della ventola e quindi controllare la temperatura.

Possiamo dividere l'uso di un PID in numero di passaggi.

  1. Decidi il valore della variabile di processo che vuoi ottenere (es. temperatura CPU = 55). Questo è chiamato il tuo setpoint.
  2. Calcola l'errore PID. Se il tuo setpoint è di 55 gradi e la temperatura effettiva è di 60 gradi, il tuo errore è di 5 gradi (temperatura - setpoint)
  3. Modificare il tempo di accensione della ventola in proporzione all'errore (grandi errori provocano grandi cambiamenti nella velocità della ventola, piccoli errori causano piccoli cambiamenti nella velocità della ventola).
  4. Regolare la ventola in proporzione ai valori passati (Integrale/somma di tutti gli errori precedenti)
  5. Facoltativamente, si regola la velocità della ventola in base alla velocità di variazione dell'errore (derivata), ma non lo faremo qui

Ora che hai la teoria, esegui il codice qui sotto nell'IDE Thonny (o in qualche altro IDE Python). Modifica il valore di "target" nel codice seguente per modificare la temperatura a cui desideri mantenere il tuo Pi. Ho impostato i termini "P" e "I" a valori un po' arbitrari. Sentiti libero di regolarli se non funzionano per te. rendere 'P' più grande significa che il controller risponderà rapidamente a nuovi errori (ma potrebbe non essere stabile). La modifica di 'I' farà sì che il controller appesantisca maggiormente la sua risposta rispetto ai valori passati. Non proverei a rendere questi termini troppo grandi poiché cambiando rapidamente la velocità della ventola non cambierà rapidamente la temperatura. Inoltre, se stai facendo un lavoro incredibilmente pesante sul tuo Pi, potresti non raggiungere la temperatura desiderata (i limiti della ventola si applicano ancora).

da fanshim import FanShim

from time import sleep, time import os import math # Restituisce la temperatura della CPU come stringa di caratteri def getCPUtemperature(): res = os.popen('vcgencmd measure_temp').readline() return(res.replace("temp=", " ").replace("'C\n", "")) fanshim = FanShim() target = 55 # temperatura desiderata (gioca con questo e guarda cosa succede) period=1 # PWM period on=.1 # inizializza a 0 % duty cycle off=period-on # inizializza a 0% duty cycle P=.01 # proporzionale Gain term (gioca con questo e guarda cosa succede) intErr=0 # errore integrale I=.0001 # intergral gain term (gioca con questo e guarda cosa succede) while True: # get temperaute temp=int(float(getCPUtemperature())) # calcola errore e smooth err = temp-target # calcola integra lerror e vincolalo intErr=intErr+err if intErr>10: intErr =10 if intErr=periodo: on=period off=0 else: on=on off = period-on # imposta il duty cycle minimo se on<.09: on=.09 else: on=on # PWM sul pin fanshim if on ==period: fanshim.set_fan(True) sleep(on) else: fanshim.set_fan(True) s leep(on) fanshim.set_fan(False) sleep(off)

Passaggio 3: eseguire lo script di controllo all'avvio

Esegui script di controllo all'avvio
Esegui script di controllo all'avvio

Puoi eseguire questo script ogni volta che avvii il tuo pi o potresti farlo attivare automaticamente al riavvio. Questo è semplicissimo da fare con crontab.

  1. apri il terminale
  2. digita crontab-e nel terminale
  3. aggiungi la seguente riga di codice al file '@reboot python /home/pi/bootScripts/fanControl.py &'
  4. esci e riavvia

Ho messo lo script (fanControl.py) in un floder chiamato bootScripts ma potresti metterlo ovunque, assicurati di specificare il percorso corretto in crontab.

Tutto fatto! Ora la tua ventola controllerà la temperatura della tua CPU su un valore specifico, riducendo al minimo il rumore udibile che produce.

Consigliato: