Go Down

Topic: pulseIn , mersure de frequence 9Khz . (Read 524 times) previous topic - next topic

ppzikos

Feb 18, 2013, 10:30 pm Last Edit: Feb 18, 2013, 10:39 pm by ppzikos Reason: 1
bonjour , dans un projet visant a mesurer l'humidité relative de l'air , j'utilise un module HTF3223 de chez humirel
http://pdf1.alldatasheet.fr/datasheet-pdf/view/95387/HUMIREL/HTF3223.html

Ce module à en sortie (en fonction de l'humidité) une fréquence de 8K a 9Khz (de 0% a 100%Hr)

Mis sur une plaque d'essais , j'alimente le module et mesure grâce à mon super multimètre une fréquence de 8930Hz qui correspond a 45% d'humidité , cela est correcte j'ai effectivement 45% d'humidité relative a la maison.

Toujours sur une plaque d'essais , je regarde le signal grâce a un oscilloscope (pc-carte son) le signal , 8930 Hz , tout va bien.

La ou cela se complique c'est pour la mesure de fréquence par arduino.
effectivement arduino mesure une fréquence de 10200 Hz , la ou multimètre et oscilloscope pc mesure 8930Hz.
et donc la mesure est > pas bonne. :smiley-eek:
dans le doute , j'utilise arduino mega , puis arduino nano , je me suis dit peut être que un arduino à quelque souci sa marchera mieux sur l'autre arduino ,
NON , méga et nano me font les même mesure.

voici le code : http://g7nbp.blogspot.fr/2011/09/arduino-htf3223-humidity-sensor.html
Code: [Select]
/*

Humidity sensor test for HTF3223 humidity sensor

By G7NBP - Chris Williams

V0.0.1 28th - May 2011

The inexpensive HTF3223 sensor (ebay etc) provides good accuracy relative humidity
sensor readings (typically +/- 5%) and has a simple linear output.

Its output however is in the form of a variable frequency proportionate to the humidity.

The formula for convertion is RH = (9740/Freq)/18

Although it is possible to use the frequency library to collect the frequency, this
is somewhat overkill as the freq is not expected to be above 10KHz.

Instead the pulseIn function is used and frequency averaged over 4096 counts.



connect H pin on  HTF3223 to digital pin 7

*/

const int hpin = 7;  // the sensor pin


void setup() {
 Serial.begin(9600);
 pinMode(hpin, INPUT);

}

void loop() {
 long sensorValue = getFrequency(hpin);    // get the raw sensor frequency
 long humidity = convertToRH(sensorValue); // convert it to RH%
 Serial.print("S:");
 Serial.print(sensorValue, DEC);
 Serial.print(" H:");
 Serial.print(humidity, DEC);
 Serial.println("%");
 delay(3000);

}

long getFrequency(int pin){
 #define SAMPLES 4096
 long freq = 0;
 for(unsigned int j=0; j<SAMPLES; j++) freq+= 500000/pulseIn(pin, HIGH, 250000);
 return freq / SAMPLES;
}


long convertToRH(long sensorValue){
 long rh = (9740-sensorValue)/18;
 return rh;
}



J'aurai bien tester le code avec mon Générateur basse fréquence mais il est a 300Km ...

est ce que la mesure de fréquence inspire quelqu'un ? je suis preneur de conseil.
Merci a tous , cordialement , julien.

patg_

Bizarre.
Je ferais plutôt un truc genre sommer la période sur tous les samples puis retourner samples/periode pour avoir la fréquence moyenne
Mes Arduineries: http://breizhmakers.over-blog.com/

Go Up