Guida [GUIDA] Raspberry, Ventola dinamica con Sensore di Temperatura

Stato
Discussione chiusa ad ulteriori risposte.

Stefano Novelli

Fondatore
Amministratore
19 Novembre 2007
7,113
821
8,179
3,236
Ultima modifica:
j2sQTBM.jpg

SCOPO DELLA GUIDA


In questa guida installeremo una ventola (12V ma vanno bene anche 5V e 3.3V*) facendo uso di un Raspberry Pi 3 e anche Pi 2* tramite l'uso della GPIO. Inoltre programmeremo la ventola affinchè si attivi solo se necessario, quindi al raggiungimento di alte temperature.

REQUISITI MINIMI

Per una corretta configurazione del sistema ci occorre:
- Raspberry Pi 2/3
- Ventola PC
- Cavi
- Diodo
- Transistor TIP120
- Breadboard (solo per la prototipazione)

SCHEMA

Per una corretta esecuzione della guida si consiglia di seguire lo schema seguente:
N1hk5u8.jpg

KwTKHoY.jpg

TsuAIjr.jpg

YaNFOg7.jpg


Qui lo schema (grazie a @Dr.Wolf_ )
HVNkSoL.png



INSTALLAZIONE DEI SOFTWARE NECESSARI


* In questa guida faremo uso di OSMC come OS principale ma basta essere in grado di collegarsi con SSH al dispositivo e si potrà usare in tutte le altre (Libreelec** e non Debian escluse).
** Purtroppo Libreelec non da il supporto all’apt (che permette di installare i programmi) e l’uso della compilazione è difficoltoso a causa delle restringenti politiche di rooting (non potrete lanciare sudo, quindi non potrete compilare i software se non smanettando nei launcher). Per questo motivo si preferisce una distribuzione Debian che non sia Libreelec o Openelec.

Prima di tutto facciamo il login da root:
Codice:
sudo -s

Effettuiamo un update della distro, così da essere sicuri di utilizzare tutti i programmi all’ultima versione
Codice:
sudo apt-get update -y

Dovreste trovare PIP già installato, il manager di estensioni di Python che ci consentirà di installare i moduli GPIO dell’RPI e quindi programmare le uscite digitali del Raspberry.
Se quindi PIP non è installato procedete al lancio di questi comandi:
Codice:
sudo apt-get install python-pip python-dev build-essential
sudo pip install --upgrade pip
sudo pip install --upgrade virtualenv
Se avete problemi nell’uso di apt PIP scaricatelo quindi, da dentro la folder, lanciate il comando:
Codice:
python get-pip.py

Possiamo ora procedere al recupero di RPi.GPIO utilizzando il comando:
Codice:
pip install RPi.GPIO

Attendiamo che il download finisca…

PROGRAMMAZIONE DELLA VENTOLA

Le uscite del Raspberry possono essere comandate grazie a Python, un linguaggio interpretato molto popolare nella community degli sviluppatori di tutto il mondo.

Per creare il nostro script sarà necessario creare un file con estensione .py . Assicuriamoci però di non fare troppo casino tra le folder, quindi prima di tutto creiamo una cartella:
Codice:
mkdir /home/osmc/Apps
* nel caso di raspbian sarà /home/raspbian/Apps e via dicendo

Ora rechiamoci dentro la cartella
Codice:
cd /home/osmc/Apps
* anche qui nel caso di raspbian cambia il path in /home/raspbian/Apps

E usiamo l’editor nano per creare il nostro file
Codice:
nano controlfan.py


Ora ci troviamo di fronte all’editor di Nano. Se non è tua intenzione capire come funziona il tutto, copia il codice qui sotto (modificando se vuoi i parametri commentati) e salva con CTRL+X quindi INVIO.
Python:
#Simple FAN control with transistor for Raspberry Pi 3
#Author: Stefano Novelli
#Email: [email protected]
#Website: www.inforge.net

import RPi.GPIO as GPIO #importo i moduli di GPIO
import time, subprocess, string #importo altri moduli utili

fanPin = 11 #definisco la porta GPIO che userò per attivare il transistor
maxTemp = 46 #definisco la temperatura massima

GPIO.setmode(GPIO.BOARD) #imposto la lettura dello schema della GPIO a BOARD
GPIO.setup(fanPin, GPIO.OUT) #dico al pin della ventola, quindi 11, che deve lavorare in output

try:
        while True: #eseguo un ciclo infinito

                out = subprocess.check_output(['opt/vc/bin/vcgencmd','measure_temp']) #ottengo la CPU temp dal tool unix
                outx = string.split(out, '=') #esplodo il risultato in un array
                outy = string.split(outx[1], "'") #esplodo il risultato in secondo array
                temp = float(outy[0]) #converto il valore da stringa a float

                if temp > maxTemp: #se la temperatura è raggiunta
                        GPIO.output(fanPin, 1) #chiudo il circuito attivando il transistor
                elif temp <= maxTemp: #se la temperatura non è raggiunta
                        GPIO.output(fanPin, 0) #riapro il circuito disattivando il transistor

                print temp # stampo la temperatura

                time.sleep(3) #attendo 3 secondi


except KeyboardInterrupt:
        GPIO.cleanup() #ripulisco la cache della GPIO

Per verificare che funzioni correttamente, digita:
Codice:
python controlfan.py
Se vedi aggiornarsi le temperature, e al raggiungimento di 47°C si attiva la ventola, allora ci siamo! Puoi chiudere il programma con CTRL+C.

Spiegazione del codice (per chi è qui per imparare!)
Grazie all’infrastruttura UNIX siamo in grado di accedere ai sensori interni del Raspberry. Questa operazione viene effettuata direttamente da vcgenmod, un tool integrato nella maggior parte dei sistemi UNIX based.

Con la funzione subprocess siamo in grado di lanciare il comando vcgenmod, passandogli il parametro measure_temp, per conoscere la temperatura della CPU.

Qui possiamo già testare a quale temperatura viaggia la nostra CPU, nel mio caso ci troviamo sui 48°C in Idle. A breve monterò dei mini-dissipatori, quindi è probabile che scenda di 1-2°C. Terrò quindi la temperatura 47°C come accettabile, al di sopra di essa la mia ventola dovrà avviarsi finché la temperatura non scende.

Riguardo la ventola, per comodità abbiamo usato un transistor anziché un ponte H per questioni di spazio e di comodità per l'alloggio interno successivo, tuttavia se conoscete già il loro funzionamento potrete calibrare il codice affinché la ventola viaggi in percentuale di velocità. Nel nostro caso, un transistor comune è in grado solo di aprire e chiudere digitalmente un interruttore, quindi di sparare la ventola al 100% oppure no. Questo processo viene effettuato mediante il controllo in output del pin 11.


AUTO AVVIO

Se tutto è andato per il verso giusto siamo ora pronti ad inserire lo script all'avvio automatico del Raspberry.

Nelle ultime versioni Debian è stato introdotto systemd che va a sostituire il crontab, quindi prima di tutto dobbiamo creare il nuovo servizio dedicato alla fan:
Codice:
nano /lib/systemd/system/fan.service
Quindi incolliamo il nostro script:
Codice:
[Unit]
Description=ControllerFan Raspberry
After=multi-user.target

[Service]
Type=idle
ExecStart=/usr/bin/sudo /usr/bin/python /home/osmc/Apps/controlfan.py

[Install]
WantedBy=multi-user.target

Per essere sicuri di non aver problemi con i permessi correggiamoli:
Codice:
sudo chmod 644 /lib/systemd/system/fan.service

Riavviamo per sicurezza i servizi:
Codice:
sudo systemctl daemon-reload
sudo systemctl enable fan.service

Quindi riavviamo il Raspberry:
Codice:
reboot

Ad avvio finito possiamo verificare se ci sono problemi lanciando il comando:
Codice:
sudo systemctl status fan.service

Se ci son problemi chiedete pure! :)
 
Intanto vorrei farti i miei più sentiti complimenti per la guida. Ho cercato ovunque su google e la tua guida è la migliore tra molte che ho trovato. :)
Volevo solo avere se possibile qualche altra informazione per il mio progetto. Visto che tutti i componenti dovrei acquistarli vorrei capire se secondo te è meglio una ventola da 12v o da 5v, non vorrei che la velocità della ventola sia eccessiva e quindi rumorosa, a quel punto forse è il caso di metterci una resistenza o (potenziometro/trimmer/resistore regolabile) di qualche tipo?

Perdona la mia totale ignoranza come capirai ma mi piacerebbe davvero provare a creare sto progettino nonostante aimè le mie conoscenze sono davvero limitate e seguire la tua guida sono certo mi aiuterà molto!

Inoltre vorrei capire se il Diodo che usi ha delle specifiche particolari tipo questi (https://www.amazon.it/SODIAL-pezzi-...&ie=UTF8&qid=1489175799&sr=1-1&keywords=diodo).

Per i pi invece vedo che hai usato il 2 per il positivo, il 6 per il negativo e l'11 per il GPIO. Chiaramente non è un problema se uso un altro pin per il negativo, tipo il 9? Il 5 e 6 ce li ho già occupati per accensione e spegnimento...

Grazie mille davvero, scusa per le tante domande e complimenti ancora :)

P.S. c'è qualche aggiornamento alla tua guida o dovrebbe funzionare tutto come descritto?
 
vorrei capire se secondo te è meglio una ventola da 12v o da 5v
La 5V è meglio perché Rasp fa output a 5V. Se vuoi usare una 12V va bene ma ci vuole un'alimentazione esterna e il circuito cambia. IMHO basta e avanza una 5V. Io ho usato una 12V perché avevo solo quella.
Ci sono poi delle ventole che a 12V non riescono a partire con i 5V (se non con una "spintarella"), nel mio caso sono stato fortunato :p

Inoltre vorrei capire se il Diodo che usi ha delle specifiche particolari tipo questi (https://www.amazon.it/SODIAL-pezzi-...&ie=UTF8&qid=1489175799&sr=1-1&keywords=diodo).
Ti spiego: il diodo in questo schema tecnicamente non dovrebbe nemmeno servire, l'ho integrato perché quasi sicuramente qualcuno avrebbe messo una ventola DC che avrebbe causato danni ai circuiti. La mia ventola è di tipo brushless e quindi - che io sappia - non fa controtensione. In sostanza se un motore gira genera elettricità nel senso inverso, cosa che il Raspberry non è disposto a digerire. Con il diodo eviti questo, però ripeto se il motore è di tipo brushless non da problemi.
Se vuoi andare sul sicuro il diodo che hai linkato dovrebbe andare bene ;)

Per i pi invece vedo che hai usato il 2 per il positivo, il 6 per il negativo e l'11 per il GPIO. Chiaramente non è un problema se uso un altro pin per il negativo, tipo il 9? Il 5 e 6 ce li ho già occupati per accensione e spegnimento...
Non ci sono problemi, basta che scarichi a massa :)
 
Perfetto, grazie mille :D sei stato chiarissimo!
Inoltre non sapevo la differenza del motore brushless e mi sono fatto una piccola coltura a riguardo.
Procederò con l'acquisto di una ventolina a 5v brushless ;)

Grazie ancora e complimenti, non vedo l'ora di provare tutto :ruloz:
 
  • Mi piace
Reazioni: Stefano Novelli
La 5V è meglio perché Rasp fa output a 5V. Se vuoi usare una 12V va bene ma ci vuole un'alimentazione esterna e il circuito cambia. IMHO basta e avanza una 5V. Io ho usato una 12V perché avevo solo quella.
Ci sono poi delle ventole che a 12V non riescono a partire con i 5V (se non con una "spintarella"), nel mio caso sono stato fortunato :p


Ti spiego: il diodo in questo schema tecnicamente non dovrebbe nemmeno servire, l'ho integrato perché quasi sicuramente qualcuno avrebbe messo una ventola DC che avrebbe causato danni ai circuiti. La mia ventola è di tipo brushless e quindi - che io sappia - non fa controtensione. In sostanza se un motore gira genera elettricità nel senso inverso, cosa che il Raspberry non è disposto a digerire. Con il diodo eviti questo, però ripeto se il motore è di tipo brushless non da problemi.
Se vuoi andare sul sicuro il diodo che hai linkato dovrebbe andare bene ;)


Non ci sono problemi, basta che scarichi a massa :)
Scusa, se uno volesse utilizzare un'alimentazione esterna basterebbe cambiare il circuito a livello del transistor, collegando al transistor l'alimentazione esterna e utilizzando il PIN del Raspberry solo per gestire chiusura/apertura del circuito, oppure mi sbaglio io ed è tutto molto più complicato?
 
Per usare un'alimentazione esterna basterà collegare questa alimentazione al transistor come mostrato in figura, il pin 11 sempre alla base del mosfet e va messo il negativo della raspberry al negativo della batteria/alimentazione.
 
  • Mi piace
Reazioni: Stefano Novelli
Scusa, se uno volesse utilizzare un'alimentazione esterna basterebbe cambiare il circuito a livello del transistor, collegando al transistor l'alimentazione esterna e utilizzando il PIN del Raspberry solo per gestire chiusura/apertura del circuito, oppure mi sbaglio io ed è tutto molto più complicato?
Si non dovrebbero esserci problemi con questo ragionamento ;) Occhio però a come vengono stabiliti i circuiti con alimentazione esterna, non sia mai scordi qualcosa bruci il raspone in un secondo ;)
 
  • Mi piace
Reazioni: SyncroIT
Per usare un'alimentazione esterna basterà collegare questa alimentazione al transistor come mostrato in figura, il pin 11 sempre alla base del mosfet e va messo il negativo della raspberry al negativo della batteria/alimentazione.
Il negativo del Raspberry cosa intendi? Il PIN GND?
 
Ultima modifica:
Buongiorno,

ho provato a fare ciò con altra guida e non mi funziona.

Vorrei provare la vostra e vorrei sapere se posso utilizzare un BC337 (usato nell'altra guida) al posto del TIP120 e il diodo 1N4006k al posto del 1N4004.

Grazie
 
Ciao a tutti!
Ho provato a seguire la guida in oggetto ma ho riscontrato un problema nella compilazione del file "controlfan.py" in quanto penso che il SO sia cambiato un pò rispetto alla compilazione della guida, in quando già i percorsi delle directory sono cambiati. Ho creato la directory /home/pi/Apps e dopodiché ho editato con nano il file controlfan.py incollando il testo che c'è nella guida, ma quando lancio il comando per eseguire lo script per verificarne il funzionamento viene fuori la scritta "
File "controlfan.py", line 8
SyntaxError: Non-ASCII character '\xc3' in file controlfan.py on line 8, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Come risolvere il problema?

Volevo chiedere se c'è un aggiornamento sull'argomento o se si può buttare giù una nuova guida aggiornata secondo l'ultima versione del raspbian :orgoglio: ne sarei molto molto felice perché mi servirebbe tanto.
 
Ultima modifica:
Rimuovi i caratteri accentati dai commenti, evidentemente nuovi aggiornamenti dell'interprete hanno deciso di forzare il charset se vuoi usare caratteri "speciali"

Ok. Grazie mille!
Ho provato ma, e come dalle immagini allegate, ho riscontrato questi problemi. Lanciando il comando python controlfan.py, lui lanciava il comando con la versione 2.7 e mi dava una sequenza di errori nei processi. poi specificando che doveva usare lo script con python 3 mi ha dato solo l'errore nel "print temp" , ma non so come mai però...
Messaggio unito automaticamente:

Allego risultati
 

Allegati

  • Immagine.png
    Immagine.png
    219.9 KB · Visualizzazioni: 46
  • Immagine2.png
    Immagine2.png
    130.2 KB · Visualizzazioni: 44
  • Immagine3.png
    Immagine3.png
    61.3 KB · Visualizzazioni: 39
Ciao,

è una buona guida, bravo!
Ma sinceramente sulla parte hardware non riesco a capire per quale motivo non dovrei collegare il - della ventola alla GND.
Il transistor lo stiamo utilizzando come switch, pertanto se utilizziamo il circuito come disegnato, fatta salva la differenza di potenziale derivante dalla tensione di soglia del diodo (che di solito varia tra 0.5/0.8V sui diodi classici e non scotchky), avrebbe un risultato a mio avviso migliore tutilizzando lo stesso riferimento GND per la board e per la ventola.

per quanto riguarda le ventole a 12V, è molto facile utilizzarle con un'alimentazione a 5V. Si può fare sia mediante trasformatore, che però potrebbe risultare più costosa come soluzione ed eccessiva per qualcosa del genere, sia con un circuito come quello a questo link: https://cfpmanfredini.wordpress.com/2013/05/17/duplicatore-di-tensione/
Si fa uso di un integrato ne555, di un diodo, ed alcuni condensatori e resistenze. Regolando R1 ed R2 opportunamente, si può moltiplicare la tensione senza problemi, anche utilizzando un calcolatore online come questo: http://www.ohmslawcalculator.com/555-astable-calculator
 
  • Mi piace
Reazioni: Stefano Novelli
Ciao,

è una buona guida, bravo!
Ma sinceramente sulla parte hardware non riesco a capire per quale motivo non dovrei collegare il - della ventola alla GND.
Il transistor lo stiamo utilizzando come switch, pertanto se utilizziamo il circuito come disegnato, fatta salva la differenza di potenziale derivante dalla tensione di soglia del diodo (che di solito varia tra 0.5/0.8V sui diodi classici e non scotchky), avrebbe un risultato a mio avviso migliore tutilizzando lo stesso riferimento GND per la board e per la ventola.

per quanto riguarda le ventole a 12V, è molto facile utilizzarle con un'alimentazione a 5V. Si può fare sia mediante trasformatore, che però potrebbe risultare più costosa come soluzione ed eccessiva per qualcosa del genere, sia con un circuito come quello a questo link: https://cfpmanfredini.wordpress.com/2013/05/17/duplicatore-di-tensione/
Si fa uso di un integrato ne555, di un diodo, ed alcuni condensatori e resistenze. Regolando R1 ed R2 opportunamente, si può moltiplicare la tensione senza problemi, anche utilizzando un calcolatore online come questo: http://www.ohmslawcalculator.com/555-astable-calculator

A livello hardware ci sono varie soluzioni, ma il problema che sto riscontrando io è a livello software, in quanto lo script python non mi funziona :-(
 
mi ha dato solo l'errore nel "print temp" , ma non so come mai però...
non so come mai, comunque puoi toglierlo quel pezzo di codice tanto stampa a video la temp, non serve per il funzionamento dello script
Ma sinceramente sulla parte hardware non riesco a capire per quale motivo non dovrei collegare il - della ventola alla GND.
Il transistor lo stiamo utilizzando come switch, pertanto se utilizziamo il circuito come disegnato, fatta salva la differenza di potenziale derivante dalla tensione di soglia del diodo (che di solito varia tra 0.5/0.8V sui diodi classici e non scotchky), avrebbe un risultato a mio avviso migliore tutilizzando lo stesso riferimento GND per la board e per la ventola.
In elettronica ero (e sono) una pippa! :D
 
Questa guida mi preoccupa, ed hai usato anche il termine massa :kungfu:!!!!!!!!!!!!!!
La parte di programmazione va benissimo ma:
  1. perchè usare un darlington NPN come switch, SENZA resistenza di base? Ho il batticuore, la resistenza di base evita molti problemi, ha un costo nullo e si mette anche sui MOS.. figuriamoci un darlington
  2. lo schema del circuito è incompleto in quanto manca la resistenza di base
  3. non si mette mai un circuito ad alta potenza collegato alle porte di un microcontrollore (inteso alta potenza la ventola e microcontrollore il raspi). La porta GND del raspi sopporta una corrente massima che non mi sembra sia stata calcolata. Quindi il GND a cui lo "switch" va collegato è quello dell'alimentazione / circuito alta potenza NON quello del raspi. Per capirsi di che si parla, provate a fare un progetto in 220V
Apprezzo il fatto che nello schema abbiate detto GND, veramente lo aprrezzo. Il problema di questa guida, potenzialmente pericolosa, è che si potrebbe prendere il progetto e mettere un altro utilizzatore, ad esempio prendo un'alimentazione duale a +-24V e collego il riferimento al raspi.. esplosione.

Semmai faccio una guida su come calcolare sta benedetta resistenza su BJT e MOS, noto che molti non hanno capito il perchè si debba mettere
 
  • Mi piace
Reazioni: Stefano Novelli
Ciao. Apprezzo tantissimo il fatto che qualcuno si proponga per migliorare il progetto. La mia domanda è: perché non fai tu una guida passo passo con le dovute spiegazioni del caso, tutta di sana pianta di questo stesso progetto? Anche perché a me il codice non funziona e non so cosa non va...
Questa guida mi preoccupa, ed hai usato anche il termine massa :kungfu:!!!!!!!!!!!!!!
La parte di programmazione va benissimo ma:
  1. perchè usare un darlington NPN come switch, SENZA resistenza di base? Ho il batticuore, la resistenza di base evita molti problemi, ha un costo nullo e si mette anche sui MOS.. figuriamoci un darlington
  2. lo schema del circuito è incompleto in quanto manca la resistenza di base
  3. non si mette mai un circuito ad alta potenza collegato alle porte di un microcontrollore (inteso alta potenza la ventola e microcontrollore il raspi). La porta GND del raspi sopporta una corrente massima che non mi sembra sia stata calcolata. Quindi il GND a cui lo "switch" va collegato è quello dell'alimentazione / circuito alta potenza NON quello del raspi. Per capirsi di che si parla, provate a fare un progetto in 220V
Apprezzo il fatto che nello schema abbiate detto GND, veramente lo aprrezzo. Il problema di questa guida, potenzialmente pericolosa, è che si potrebbe prendere il progetto e mettere un altro utilizzatore, ad esempio prendo un'alimentazione duale a +-24V e collego il riferimento al raspi.. esplosione.

Semmai faccio una guida su come calcolare sta benedetta resistenza su BJT e MOS, noto che molti non hanno capito il perchè si debba mettere
 
  • Mi piace
Reazioni: Stefano Novelli
Ciao. Apprezzo tantissimo il fatto che qualcuno si proponga per migliorare il progetto. La mia domanda è: perché non fai tu una guida passo passo con le dovute spiegazioni del caso, tutta di sana pianta di questo stesso progetto? Anche perché a me il codice non funziona e non so cosa non va...

devo essere sincero non ho ben guardato la parte di programmazione perché la reputavo semplice. A me interessa far capire le cose, le guide dove si spiega cosa fare e non capisci nulla le odio. Perciò eccoti due dritte semplicistiche:

  1. il bjt si comanda in corrente di base (Ib) che va calcolata andando ad agire su quel che si chiama Bforzato (beta) nella fase di switch da resistenza da mettere sulla base (il primo che dice "mettici 1 kOhm lo prendo a sberle"
  2. Il MOS si comanda in tensione di gate (Vg), Ig=0A always (almost)
  3. che sia BJT o che sia MOS, entrambi questi dispositivi hanno delle capacità intrinseche rompiballe (capacità, non condensatori)
Detto questo la parte di programmazione dovrebbe essere un semplice

  1. read temperature
  2. if temperature=high, voltage_pin = 1 (per dire acceso) con delay
  3. if temperature=low, voltage_pin = 0 con delay
  4. tutto questo in un loop infinito
questo si farebbe in c con un microcontrollore (non ho dato il linguaggio c ma uno pseudocodice capibile da un umano), il raspi semplifica la vita con il python quindi non credo che la parte di programmazione abbia problemi.

Forse hai problemi perchè:
  1. hai usato un bjt / mos diverso (Bforzato diverso oppure gm del MOS diversa, da cui curva caratteristica diversa, da cui transistor in RAD oppure lo hai portato fuori SOA)
  2. hai usato una ventola diversa
  3. hai usato un diodo diverso (che comunque mangia tensione), e devi stare attento al parametro della corrente max circolabile nel diodo
  4. sensore di temperatura dverso (ma credo non faccia differenza
Appena ho tempo giurin giurello che sistemo la guida, la parte di programmazione la vedo ma non credo abbia problemi (funzionando all'autore del post).
 
  • Mi piace
Reazioni: sparviero79
devo essere sincero non ho ben guardato la parte di programmazione perché la reputavo semplice. A me interessa far capire le cose, le guide dove si spiega cosa fare e non capisci nulla le odio. Perciò eccoti due dritte semplicistiche:

  1. il bjt si comanda in corrente di base (Ib) che va calcolata andando ad agire su quel che si chiama Bforzato (beta) nella fase di switch da resistenza da mettere sulla base (il primo che dice "mettici 1 kOhm lo prendo a sberle"
  2. Il MOS si comanda in tensione di gate (Vg), Ig=0A always (almost)
  3. che sia BJT o che sia MOS, entrambi questi dispositivi hanno delle capacità intrinseche rompiballe (capacità, non condensatori)
Detto questo la parte di programmazione dovrebbe essere un semplice

  1. read temperature
  2. if temperature=high, voltage_pin = 1 (per dire acceso) con delay
  3. if temperature=low, voltage_pin = 0 con delay
  4. tutto questo in un loop infinito
questo si farebbe in c con un microcontrollore (non ho dato il linguaggio c ma uno pseudocodice capibile da un umano), il raspi semplifica la vita con il python quindi non credo che la parte di programmazione abbia problemi.

Forse hai problemi perchè:
  1. hai usato un bjt / mos diverso (Bforzato diverso oppure gm del MOS diversa, da cui curva caratteristica diversa, da cui transistor in RAD oppure lo hai portato fuori SOA)
  2. hai usato una ventola diversa
  3. hai usato un diodo diverso (che comunque mangia tensione), e devi stare attento al parametro della corrente max circolabile nel diodo
  4. sensore di temperatura dverso (ma credo non faccia differenza
Appena ho tempo giurin giurello che sistemo la guida, la parte di programmazione la vedo ma non credo abbia problemi (funzionando all'autore del post).

Ok attendiamo la tua guida :alesisi:
 
Stato
Discussione chiusa ad ulteriori risposte.