Sommario:
- Forniture
- Passaggio 1: configura il tuo fan
- Passaggio 2: creare un controller PI(D)
- Passaggio 3: eseguire lo script di controllo all'avvio
Video: Controllo preciso della temperatura sul Raspberry Pi 4: 3 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
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)
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.
- Decidi il valore della variabile di processo che vuoi ottenere (es. temperatura CPU = 55). Questo è chiamato il tuo setpoint.
- 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)
- 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).
- Regolare la ventola in proporzione ai valori passati (Integrale/somma di tutti gli errori precedenti)
- 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
Puoi eseguire questo script ogni volta che avvii il tuo pi o potresti farlo attivare automaticamente al riavvio. Questo è semplicissimo da fare con crontab.
- apri il terminale
- digita crontab-e nel terminale
- aggiungi la seguente riga di codice al file '@reboot python /home/pi/bootScripts/fanControl.py &'
- 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:
TouchFree: controllo automatico della temperatura e chiosco per il rilevamento della maschera: 5 passaggi
TouchFree: controllo automatico della temperatura e chiosco per il rilevamento della maschera: con la riapertura dei paesi di tutto il mondo, convivere con il nuovo coronavirus sta diventando il nuovo stile di vita. Ma per fermare la diffusione del virus dobbiamo separare le persone che hanno il Coronavirus dal resto. Secondo il CDC, la febbre è la l
ESP8266 Nodemcu Monitoraggio della temperatura utilizzando DHT11 su un server Web locale - Ottieni la temperatura e l'umidità della stanza sul tuo browser: 6 passaggi
ESP8266 Nodemcu Monitoraggio della temperatura utilizzando DHT11 su un server Web locale | Ottieni la temperatura e l'umidità della stanza sul tuo browser: Ciao ragazzi, oggi faremo un'umidità e l'umidità; sistema di monitoraggio della temperatura utilizzando ESP 8266 NODEMCU & Sensore di temperatura DHT11. La temperatura e l'umidità saranno ottenute da DHT11 Sensor & può essere visto su un browser quale pagina web verrà gestita
Controllo della luminosità Controllo LED basato su PWM tramite pulsanti, Raspberry Pi e Scratch: 8 passaggi (con immagini)
Controllo della luminosità Controllo LED basato su PWM tramite pulsanti, Raspberry Pi e Scratch: stavo cercando di trovare un modo per spiegare come funzionava il PWM ai miei studenti, quindi mi sono posto il compito di provare a controllare la luminosità di un LED utilizzando 2 pulsanti - un pulsante aumenta la luminosità di un LED e l'altro lo attenua. Per programmare
Controllo batteria con selezione della temperatura e della batteria: 23 passaggi (con immagini)
Controllo batteria con selezione della temperatura e della batteria: tester di capacità della batteria. Con questo dispositivo è possibile controllare la capacità della batteria 18650, acido e altro (la batteria più grande che ho testato è la batteria acida 6v 4,2A). Il risultato del test è in milliampere/ora. Creo questo dispositivo perché ho bisogno di verificare
Controllo del volume più preciso per T.v.: 3 passaggi
Controllo del volume più preciso per T.v.: Il problema: la mia nuova tv. ha un controllo del volume digitale che è piuttosto traballante, è FORTE o SPENTO La soluzione: aggiungere un controllo del volume analogico secondario I materiali: 1. filo 2. saldatura 3. tubo termoretraibile 4. potenziometro (ho usato 1 Mohm buono per il mio