Pages: 1 [2] 3   Go Down
Author Topic: Letture sfasate RPM ventola pc  (Read 987 times)
0 Members and 1 Guest are viewing this topic.
Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5874
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No, allora c'è qualche cosa che non va ...
... però mi dicevi che, se non cambi la frequenza del PWM, la cosa non succede vero ???

Guglielmo

P.S. : Comunque ho allertato Leo ... che molto esperto di Timer, PWM e Interrupt; mi ha confermato che domani mattina darà un occhiata al thread e vediamo se gli salta all'occhio qualche cosa
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Full Member
***
Karma: 0
Posts: 163
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No allora.. Se cambio la frequenza c'è un leggerissimo sbalzo degli RPM, ma solo se collego la ventola alla batteria.. Comunque nel giro di 3/4 letture torna tutto normale..
Al contrario, se invece collego la ventola all'arduino con il PWM gli RPm restano stabili solo se al PWM do valore 0 o 255 (e il pin A5 è a 0 o 1023).. Se do al PWM un valore tra 1 e 254 gli RPM sono completamente sfasati...

Ti ringrazio.. Spero di riuscire a dare un'occhiata anch'io al thread domani mattina, ma sarà difficile perchè sono all'università..!
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5874
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aspetta, ho detto .. se NON cambi la frequenza al PWM ... ovvero, se non usi la setPwmFrequency() ma colleghi il tutto al pin del PWM ... va o è sempre sballato ???

E comunque, posta anche lo schema che stai usando ... giusto per sicurezza smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E comunque, posta anche lo schema che stai usando
 ...
E' proprio necessario, direi.
Premesso che gli interrupt sono slegati dai timer/pwm, se cambi il prescaler ad un timer questo non deve influire su altro, a me il problema pare essere nel pilotaggio della ventolina, leggendo qui:
No allora.. Se cambio la frequenza c'è un leggerissimo sbalzo degli RPM, ma solo se collego la ventola alla batteria.. Comunque nel giro di 3/4 letture torna tutto normale..
Al contrario, se invece collego la ventola all'arduino con il PWM gli RPm restano stabili solo se al PWM do valore 0 o 255 (e il pin A5 è a 0 o 1023).. Se do al PWM un valore tra 1 e 254 gli RPM sono completamente sfasati...
Quindi se alimenti da Arduino sballa tutto. Ma quanto consuma questa ventola? E come fai ad alimentare una ventola a 12V dall'Arduino? Non l'ho capito.
Logged


Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5874
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

No Leo ... le prove sono state fatte sia con la ventola non controllata dal pin del PWM (praticamente staccando il transistor che va al pin 3) sia con la ventola controllata dal pin del PWM (transistor attaccato al pin 3).

Ma se, come confermi, la parte generazione del PWM non influisce minimamente sulla parte interrupt (... mi era venuto il dubbio visto che usavano lo stesso port PD) ... allora probabilmente iil problema deriva dall'HW ... per questo difatti ho chiesto lo schema di collegamento smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Full Member
***
Karma: 0
Posts: 163
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Esatto, la ventola è alimentata dal 12 v, e controllata dal transitor con arduino.. Comunque appena possibile posto uno schema..
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok per l'alimentazione, allora non ho seguito bene il discorso.
Però serve lo schema, perché il timer non è correlato all'interrupt.

PS:
comunque per togliere il fischio puoi usare un piccolo filtro RC messo sul pin che pilota la base del transistor.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 163
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco lo schema.. Spero si capisca (e spero sia giusto, perchè l'ho fatto a memoria)..
http://imageshack.com/a/img845/5302/1rf5.png

Filtro rc significa mettere un condensatore tra la base e la GND..!?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 325
Posts: 22498
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Scusa. senza offese... quello è un disegnino fatto con Fritzing... non è uno schema elettrico.
Logged


Offline Offline
Full Member
***
Karma: 0
Posts: 163
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ehm.. scusami  smiley-sweat Ho "provato" a fare uno schema.. Anche se probabilmente credo non ci capirai niente.. non sono proprio abile a farli..  smiley-red
http://imageshack.com/a/img841/1531/v49c.jpg
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5874
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mmm ... manca un condensatore e, per sicurezza anche un diodo ...
... il sito di Pighi è down, per cui .. ti allego qui in pdf una sua scheda di come si controlla un motore (vedi in basso a sinistra) ... smiley

Guglielmo

* Pag6.pdf (429.42 KB - downloaded 18 times.)
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Full Member
***
Karma: 0
Posts: 163
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Purtroppo non ho un condensatore da 1uf, nè un 1N4007.. Ho cercato di rimediare con un condensatore da 10uf, e un !n4148.. Non so quanto siano compatibili però.. In ogni caso ho potuto constatare che lo fa pure con un'altra ventola (quindi è da escludere la ventola), sia alimentandolo dai 12 v del pc...
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 163
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho risolto..! O almeno, non è proprio una bella soluzione (anzi, mi sta peggiorando solo il progetto), ma almeno adesso non sballano più, e sono sempre giusti..!
In pratica cercando su internet ho trovato la stessa domanda fatta tempo fa nella sezione inglese.. Spiegavano anche come funziona il PWM.. In pratica il filo del tachimetro è collegato al V+ della ventola.. se alla ventola non arriva corrente, ne risente anche il tachimetro.. E' per questo che quando spostavo il PWM tra 1 e 254 si incasinavano gli RPM..
In pratica ho risolto cosi.. ho dichiarato il pin 4 in input, e l'ho collegato all'uscita del pin 9.. Nella funzione chiamata dall'interrupt ho messo if(digitalRead(4) == 1) calcola come mezzo giro.. In pratica gli dico di tenermi conto dei giri solo se l'interrupt si è verificato quando la ventola aveva corrente.. Ora funziona, ma non è il massimo..!
Logged

Switzerland
Online Online
Faraday Member
**
Karma: 111
Posts: 5874
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Aha ... quindi dovresti misurare la velocità, invece che con il suo filo, alimentazione dipendente, con un banale sistema ottico a riflessione.

Fai una pala bianca e le altre le lasci nere e con un sistema ottico a riflessione ... misuri i giri smiley-wink

Guglielmo
Logged

Search is Your friend ... or I am Your enemy !

Offline Offline
Full Member
***
Karma: 0
Posts: 163
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

La vedo un pò complicata come cosa.. Se riesco a finire sta cosa decentemente verrà poi applicata a diversi computer.. e non posso su ognuno colorare le pale.. A questo punto, visto che comunque sia la tua che la mia soluzione occupano un pin in più, preferirei usare la mia, almeno so che la velocità la prende direttamente dalla ventola..

Visto che ci sono, e fa sempre parte del progetto.. Ho un ulteriore problema, e non so se sono io che sbaglio, o il sensore che fa cosi..
Ho comprato un sensore per la temperatura DS18B20.. Ho provato ad appoggiarlo sul dissipatore della scheda video, da pc mi dava 65° (e toccandola si sentiva che scottava), ma l'arduino mi dice che rileva 43°... Sbaglio io o è andato il sensore..!?
Il codice che ho usato è questo
Code:
/* YourDuino Electronic Brick Test
Temperature Sensor DS18B20
- Connect cable to Arduino Digital I/O Pin 2
terry@yourduino.com */

/*-----( Import needed libraries )-----*/
#include <OneWire.h>
#include <DallasTemperature.h>

/*-----( Declare Constants )-----*/
#define ONE_WIRE_BUS 2 /*-(Connect to Pin 2 )-*/

/*-----( Declare objects )-----*/
/* Set up a oneWire instance to communicate with any OneWire device*/
OneWire ourWire(ONE_WIRE_BUS);

/* Tell Dallas Temperature Library to use oneWire Library */
DallasTemperature sensors(&ourWire);

/*-----( Declare Variables )-----*/


void setup() /*----( SETUP: RUNS ONCE )----*/
{
/*-(start serial port to see results )-*/
delay(1000);
Serial.begin(9600);
Serial.println("YourDuino.com: Electronic Brick Test Program");
Serial.println("Temperature Sensor DS18B20");
delay(1000);

/*-( Start up the DallasTemperature library )-*/
sensors.begin();
}/*--(end setup )---*/


void loop() /*----( LOOP: RUNS CONSTANTLY )----*/
{
Serial.println();
Serial.print("Requesting temperature...");
sensors.requestTemperatures(); // Send the command to get temperatures
Serial.println("DONE");

Serial.print("Device 1 (index 0) = ");
Serial.print(sensors.getTempCByIndex(0));
Serial.println(" Degrees C");
Serial.print("Device 1 (index 0) = ");
Serial.print(sensors.getTempFByIndex(0));
Serial.println(" Degrees F");

}/* --(end main loop )-- */

/* ( THE END ) */
Logged

Pages: 1 [2] 3   Go Up
Jump to: