Ventole PC lettura giri con Arduino

Da quanto leggo in questo topic:

le ventole per pc hanno varie caratteristiche, tra le quali la possibilità di ricavare dal filo giallo ( quelle a 3 fili ) la velocità di rotazione, ma con Arduino come posso "leggerla" ??

amario57:
le ventole per pc hanno varie caratteristiche, tra le quali la possibilità di ricavare dal filo giallo ( quelle a 3 fili ) la velocità di rotazione, ma con Arduino come posso "leggerla" ??

Sul terzo filo è presente un impulso, in alcuni modelli di ventola due, per ogni rotazione della ventola, in pratica un semplice encoder monocanale, puoi calcolare la velocità di rotazione sia contando il numero di impulsi ogni secondo oppure dall'inverso del periodo di rotazione.
Attenzione che a seconda del modello di ventola, e della tensione di alimentazione, la tensione degli impulsi può essere sia 5V che 12V, nel secondo caso è indispensabile abbassarla a 5V prime di collegarla ad un pin di Arduino.

astrobeed:
Sul terzo filo è presente un impulso, in alcuni modelli di ventola due, per ogni rotazione della ventola, in pratica un semplice encoder monocanale, puoi calcolare la velocità di rotazione sia contando il numero di impulsi ogni secondo oppure dall'inverso del periodo di rotazione.

Grazie per il suggerimemnto astrobeed ma :
encoder monocanale ????
Scusa la mia ignoranza ma in che senso ??

amario57:
encoder monocanale ????
Scusa la mia ignoranza ma in che senso ??

Gli encoder possono avere più canali, quelli più semplici ne possiedono solo uno da dove escono tot impulsi per ogni rotazione, un esempio classico sono gli encoder low cost di tipo magnetico presenti su alcuni motori.

Quindi solo software non è possibile?

amario57:
Quindi solo software non è possibile?

Cosa intendi con "solo software", è abbastanza ovvio che per rilevare un qualunque grandezza fisica hai sempre e comunque bisogno di un qualche tipo di sensore, nel caso della ventolina è l'encoder integrato.

Come diceva astro,in quelle ventoline ci sono dei sensori ad effetto di hall che ad ogni giro ti danno un impulso del quale puoi leggere il periodo con pulsein.

Ok, capito :smiley:
Grazie

Ho provato proprio oggi a misurare la velocità di una ventola a 3 pin, lo sketch completo lo trovate a questo link:

Ho preso spunto da un sito inglese e ho semplificato molto lo sketch, il programma è interamente commentato.
Spero che il mio lavoro sia utile a qualcuno...

alex27riva:
...
Spero che il mio lavoro sia utile a qualcuno...

Bel lavoro, però, affinché sia utile ... è bene che venga corretto :wink:

Tu dichiari :

int Giri;        //memorizza il numero di giri al secondo

... ma giri è una variabile ch usi sia da dentro la ISR che da fuori e, per evitare problemi ... DEVE essere dichiarata volatile :wink:

volatile int Giri;       //memorizza il numero di giri al secondo

Correggi il codice così da non indurre nello stesso errore i lettori :slight_smile:

Guglielmo

gpb01:

alex27riva:
...
Spero che il mio lavoro sia utile a qualcuno...

Bel lavoro, però, affinché sia utile ... è bene che venga corretto :wink:

Tu dichiari :

int Giri;        //memorizza il numero di giri al secondo

... ma giri è una variabile ch usi sia da dentro la ISR che da fuori e, per evitare problemi ... DEVE essere dichiarata volatile :wink:

volatile int Giri;       //memorizza il numero di giri al secondo

Correggi il codice così da non indurre nello stesso errore i lettori :slight_smile:

Guglielmo

Ok, grazie per la correzione, ma che problemi può causare una variabile non volatile?

alex27riva:
Ok, grazie per la correzione, ma che problemi può causare una variabile non volatile?

Hai letto attentamente il link che ti ho messo per la parola chiave "volatile" ??? :astonished: :astonished: :astonished:

E' chiaramente spiegato ...

Guglielmo

P.S. Comunque evita che ottimizzazioni effettuate dal compilatore vadano ad impattare in modo errato con il tuo programma.
P.P.S. ... QUI trovi una spiegazione un po' più dettagliata

ma la ventola è a 12v e alimenti tutto con una piletta da 9v? quanto dura 5 minuti? :slight_smile:

Ok, grazie ho capito a cosa serve una variabile "volatile"

pablos:
ma la ventola è a 12v e alimenti tutto con una piletta da 9v? quanto dura 5 minuti? :slight_smile:

La ventola alimentata 9V consuma 50mA, la batteria è da 400mah quindi dura teoricamente 8 ore! altro che 5 minuti..

hai ragione, quasi quasi alimento il mio condizionatore a 125 :slight_smile: .... tanto funziona lo stesso
Comunque ho scritto "tutto" compreso arduino.
8 ore? se ci riesci mi mangio una me..rendina XD