Sommario:

Ventola con regolazione PWM basata sulla temperatura della CPU per Raspberry Pi: 4 passaggi (con immagini)
Ventola con regolazione PWM basata sulla temperatura della CPU per Raspberry Pi: 4 passaggi (con immagini)

Video: Ventola con regolazione PWM basata sulla temperatura della CPU per Raspberry Pi: 4 passaggi (con immagini)

Video: Ventola con regolazione PWM basata sulla temperatura della CPU per Raspberry Pi: 4 passaggi (con immagini)
Video: Home Assistant 4-Wire PWM Fan Controller Prt 2 - Flash & Breakdown 2024, Novembre
Anonim
Ventola regolata PWM basata sulla temperatura della CPU per Raspberry Pi
Ventola regolata PWM basata sulla temperatura della CPU per Raspberry Pi

Molte custodie per Raspberry Pi sono dotate di una piccola ventola da 5 V per aiutare a raffreddare la CPU. Tuttavia, queste ventole sono generalmente piuttosto rumorose e molte persone le collegano al pin 3V3 per ridurre il rumore. Queste ventole sono generalmente classificate per 200 mA, che è piuttosto alto per il regolatore 3V3 sull'RPi. Questo progetto ti insegnerà come regolare la velocità della ventola in base alla temperatura della CPU. A differenza della maggior parte dei tutorial che trattano questo argomento, non solo accenderemo o spegneremo la ventola, ma controlleremo la sua velocità come avviene sui PC tradizionali, utilizzando Python.

Passaggio 1: parti necessarie

Per questo progetto utilizzeremo solo alcuni componenti che solitamente sono inclusi nei kit di elettronica per hobbisti che puoi trovare su Amazon, come questo.

  • Raspberry Pi con Raspbian (ma dovrebbe funzionare con altre distribuzioni).
  • Ventola 5V (ma una ventola da 12V potrebbe essere utilizzata con un transistor adattato e un alimentatore da 12V).
  • Transistor NPN che supporta almeno 300 mA, come un 2N2222A.
  • Resistenza da 1K.
  • 1 diodo.

Facoltativo, per inserire i componenti all'interno del case (ma non ancora fatto):

  • Un piccolo pezzo di scheda prototipale, per saldare i componenti.
  • Grande termoretraibile, per proteggere la tavola.

Passaggio 2: collegamenti elettrici

Connessione elettrica
Connessione elettrica
Connessione elettrica
Connessione elettrica
Connessione elettrica
Connessione elettrica

Il resistore può essere collegato in entrambi i modi, ma fai attenzione alla direzione del transistor e del diodo. Il catodo del diodo deve essere collegato al filo +5V (rosso) e l'anodo deve essere collegato al filo GND (nero). Controlla il documento del tuo transistor per i pin dell'emettitore, della base e del collettore. La terra del ventilatore deve essere collegata al collettore e la terra di Rpi deve essere collegata all'emettitore

Per controllare la ventola, dobbiamo utilizzare un transistor che verrà utilizzato in configurazione a collettore aperto. In questo modo, abbiamo un interruttore che collegherà o disconnetterà il filo di terra dalla ventola alla terra del lampone pi.

Un transistor NPN BJT conduce a seconda della corrente che scorre nel suo gate. La corrente che potrà fluire dal collettore (C) all'emettitore (E) è:

Ic = B * Ib

Ic è la corrente che scorre attraverso il collettore dell'emettitore, Ib è la corrente che scorre attraverso la base verso l'emettitore e B (beta) è un valore che dipende da ciascun transistor. Approssimiamo B = 100.

Poiché la nostra ventola è classificata come 200 mA, abbiamo bisogno di almeno 2 mA attraverso la base del transistor. La tensione tra la base e l'emettitore (Vbe) è considerata costante e Vbe = 0, 7V. Ciò significa che quando il GPIO è acceso, abbiamo 3,3 - 0,7 = 2,6 V al resistore. Per avere 2 mA attraverso quel resistore, abbiamo bisogno di un resistore di, massimo, 2,6/0,002 = 1300 ohm. Usiamo un resistore da 1000 ohm per semplificare e mantenere un margine di errore. Avremo 2,6 mA attraverso il pin GPIO che è totalmente sicuro.

Poiché un ventilatore è fondamentalmente un motore elettrico, è una carica induttiva. Ciò significa che quando il transistor smette di condurre, la corrente nella ventola continuerà a fluire mentre una carica induttiva cerca di mantenere costante la corrente. Ciò comporterebbe un'alta tensione sul pin di massa della ventola e potrebbe danneggiare il transistor. Ecco perché abbiamo bisogno di un diodo in parallelo alla ventola che farà fluire la corrente costantemente attraverso il motore. Questo tipo di configurazione del diodo è chiamato diodo volano

Passaggio 3: programma per controllare la velocità della ventola

Per controllare la velocità della ventola, utilizziamo un segnale PWM software dalla libreria RPi. GPIO. Un segnale PWM è ben adattato per pilotare motori elettrici, poiché il loro tempo di reazione è molto elevato rispetto alla frequenza PWM.

Usa il programma calib_fan.py per trovare il valore FAN_MIN eseguendo nel terminale:

python calib_fan.py

Controlla diversi valori tra 0 e 100% (dovrebbe essere intorno al 20%) e vedi qual è il valore minimo per accendere la tua ventola.

È possibile modificare la corrispondenza tra temperatura e velocità del ventilatore all'inizio del codice. Devono essere presenti tanti tempSteps quanti sono i valori speedSteps. Questo è il metodo generalmente utilizzato nelle schede madri dei PC, spostando i punti su un grafico a 2 assi Temp/Velocità.

Passaggio 4: eseguire il programma all'avvio

Per eseguire il programma automaticamente all'avvio, ho creato uno script bash in cui inserisco tutti i programmi che voglio avviare, quindi lancio questo script bash all'avvio con rc.locale

  1. Crea una directory /home/pi/Scripts/ e posiziona il file fan_ctrl.py all'interno di quella directory.
  2. Nella stessa directory, crea un file chiamato launcher.sh e copia lo script qui sotto.
  3. Modifica il file /etc/rc.locale e aggiungi una nuova riga prima di "exit 0": sudo sh '/home/pi/Scripts/launcher.sh'

script launcher.sh:

#!/bin/sh#launcher.sh # vai alla directory home, quindi a questa directory, quindi esegui lo script python, quindi torna homelocalecd /cd /home/pi/Scripts/sudo python3./fan_ctrl.py &cd /

Se vuoi usarlo con OSMC, ad esempio, devi avviarlo come servizio con systemd.

  1. Scarica il file fanctrl.service.
  2. Controlla il percorso del tuo file python.
  3. Posiziona fanctrl.service in /lib/systemd/system.
  4. Infine, abilita il servizio con sudo systemctl enable fanctrl.service.

Questo metodo è più sicuro, poiché il programma verrà riavviato automaticamente se ucciso dall'utente o dal sistema.

Consigliato: