• Benvenuti su RaspberryItaly!
Benvenuto ospite! Login Login con Facebook Registrati Login with Facebook


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
Tags
via ventola software

Ventola via software
#11
(19/06/2018, 20:30)Zzed Ha scritto: No, le ultime 2 righe vanno allineate al primo if in alto. Al limite usa else invece di elif, ma se lo elimini è basta, non può funzionare alla stessa maniera.
Codice:
else ventola.value = 0
Non vedi più il prompt, perché sta girando Python (CTRL+C per uscire)
Ed è normale che tu non veda nulla a schermo, il programma non ha output a schermo (lo possiamo aggiungere, per debug).
Ma hai copiato anche la prima parte del listato? E soprattutto.. Hai collegato qualcosa al pin che stai comandando? Un LED o una ventola tramite almeno un transistor? Il solo codice non può ovviare al fatto che i pin del GPIO emettono una corrente limitatissima.
Grazie mille proverò , però a questo punto non serve a niente, in quanto la mia domanda era chiara dall’inizio, ovvero gestire la ventola solo via software e non collegando altro hardware, transistor, led e relè.
Risposta
#12
Permettimi, anche la mia risposta era chiara. I gpio forniscono circa 16mA. E ti ho chiesto, cosa c'è scritto sulla tua ventola?
Risposta
#13
la risposta alla tua domanda è :
Non si può.
Heart Libro  | Blog EnricoSartori.it | Idea YouTube
Se un utente ti è stato utile, aumenta la sua reputazione! premi il Pollicione! 
Risposta
#14
(20/06/2018, 10:17)Zzed Ha scritto: Permettimi, anche la mia risposta era chiara. I gpio forniscono circa 16mA. E ti ho chiesto, cosa c'è scritto sulla tua ventola?
 Forse non ci eravamo capiti allora niente!!!

(21/06/2018, 12:52)Enrico Sartori Ha scritto: la risposta alla tua domanda è :
Non si può.

Ecco appunto, quindi neanche solo accendere e spegnere?
Risposta
#15
Senza transistor o relè, no, mi spiace. È come voler accendere un condizionatore con un pila stilo..
Risposta
#16
(29/06/2018, 19:30)Zzed Ha scritto: Senza transistor o relè, no, mi spiace. È come voler accendere un condizionatore con un pila stilo..

ok grazie mille ancora e scusate se non mi sono fatto capire dall'inizio
Risposta
#17
allora, ripesco questa discussione perché c'è ancora chi mi chiede sull' argomento.
ne approfitto per fare un riassunto.
- premetto che, a mio parere, una ventola è inutile e deleteria nel 99% dei casi (e no, l'uso con Retropie o Kodi non esce da questo 99%). Inutile perché Raspberry Pi nasce senza dissipatori e senza ventole, ha una CPU che al massimo assorbe 5W (non i circa 100W di un processore da pc), che le prestazioni sono le stesse sia a 40° che a 78, che fino a 80° è lo stato di funzionamento normale, che proprio in casi di uso intenso o continuato un buon dissipatore passivo è sufficiente, se il case è in grado di far entrare aria fresca e far uscire l'aria calda. Deleterio perché l'alimentazione di queste ventole può disturbare il WiFi (tenere i cavi di alimentazione lontano dal chip WiFi). Alimentare le ventole dal GPIO non è corretto: i pin GPIO possono fornire massimo circa 16mA, e una ventolina solitamente assorbe molto di più. Ciò significa far lavorare male la ventola , mettere sotto stress la linea 5V del Raspberry, che è la stessa di alimentazione di tutto il sistema (= sistema instabile), non avere altra corrente disponibile per gli altri pin GPIO, creare rumore elettrico sui 5V (= ancora sistema instabile).

-Nonostante tutto, c'è chi vuole usare delle ventole, e vuole comandarle con i pin del GPIO in base alla temperatura della CPU. Bene. I pin programmabili sono a 3,3V, assicuratevi prima che la vostra ventola funzioni anche collegando il + a 3,3V e il meno a massa. Se funziona, OK, siete a posto.
Altrimenti, per comandarla dai pin del GPIO, dovrete utilizzare dell' elettronica aggiuntiva, ad esempio tramite l'uso di un transistor 2N3904 NPN o similare, potremo comandare il passaggio di corrente di un carico a 5V (però i 5V prendeteli dall' alimentatore e non dai pin sul GPIO, sempre per la corrente limitata)
[Immagine: Npn_switch.png]
oppure tramite un relè, un mosfet ecc.

Dopo tutta la premessa hardware, eccoci al software:
si può impostare il funzionamento della ventola solo oltre una certa temperatura di soglia:
Codice:
#!/usr/bin/env python
# comandare ventola in base a temperatura by zzed

from gpiozero import DigitaOutputDevice
from time import sleep
# impostazioni
n = 23       # pin gpio a cui e collegata la ventola (numerazione BCM /GPIO)
t = 60       # temperatura di soglia
# fine impostazioni

ventola = DigitalOutputDevice(n)
while True:
  temp = int(open('/sys/class/thermal/thermal_zone0/temp').read()) / 1e3 # prende temperatura CPU
  if temp >= t:
     ventola.on()
  else:
     ventola.off()
  sleep(20)

Questo semplice programma Python importa DigitaOutputDevice dalla libreria gpiozero e sleep dalla libreria time.
n e t sono le costanti che potete variare in base alle vostre esigenze, rispettivamente il pin a cui è collegato il + della ventola e la temperatura oltre la quale deve accendersi
viene poi impostata la variabile ventola come sispositivo collegato al pin n
in un ciclo, viene letta la temperatura della CPU, se questa è maggiore o uguale della temperatura t di soglia, viene acceso il pin della ventola, altrimenti, viene spento.
si attende 20 secondi, e il ciclo rifà il controllo.
Per rendere lo script attivo a ogni boot, il metodo che io preferisco è editare il file  con il comando rc.local
Codice:
sudo nano /etc/rc.local
e aggiungere alla fine la stringa
Codice:
python /home/pi/ventola.py &
in fondo, appena prima di "exit 0".
la & finale serve a evitare che il sistema attenda la fine del programma per proseguire (che essendo un loop infinito, non termina mai)

Volendo, poi si può usare il PWM per regolarne la velocità in base alla temperatura (si possono fare anche "rampe" di accelerazione e decelerazione), ma funzionerà solo se la eventuale elettronica aggiuntiva è in grado di supportare i segnali PWM (ad esempio un transistor, non un relè). E sinceramente.. vale la pena solo come esercitazione con il PWM.
Risposta
#18
ciao ...
ho acquistato un case tutto in alluminio e sopra monta due ventoline ..
stavo appunto cercando di attivarle sopra una certa temperatura ...
questo script mi da questo errore

Traceback (most recent call last):
File "Tventola.py", line 4, in <module>
from gpiozero import DigitaOutputDevice
mi manca qualcosa ?
grazie
Risposta
#19
Due cose ti mancano.
1- (un po' provocatoria) manca la consapevolezza che 2 ventole sul RaspberryPi servono solo se lo monti attaccato a un forno. È progettato per funzionare senza ventole, consuma 5W o poco più. Collegare ventole al GPIO può essere deleterio : introduce "rumore' elettrico sui 5V, tensione che invece deve essere" pulita" per una buona stabilità di CPU e GPU; può disturbare in radiofrequenza il WiFi.
2 - (più essenziale) ti manca una l
È DigitalOutputDevice

Inviato dal mio A0001 utilizzando Tapatalk
Risposta
#20
grazie per la risposta..
sono piccoline erano comprese nel case ..
adesso vedo le temperature, il RaspberryPi è sempre acceso c'e su domoticz
le ventole volendo se serve ..le posso collegare anche con alimentazione a parte...
il GPIO va ad abilitare un relè che alimenta le ventole (attualmente sul 5v del RaspberryPi)
Risposta
  


Vai al forum:


Navigazione: 1 Ospite(i)
Forum con nuovi Post
Forum senza nuovi post
Forum bloccato
Forum Redirect