Go Down

Topic: SCP1000 (Besoin d'aide) (Read 1 time) previous topic - next topic

ogaleote

Bonjour et Bonne fête à tous,

Je viens d'essayer de mettre en fonction un capteur de pression SCP1000.
Je suis parti de l'exemple suivant:
http://arduino.cc/en/Tutorial/BarometricPressureSensor

Mais je ne reçois pas les bonnes valeurs
Je reçois 42°C et 3580 hPa au lieu de 20°C et 1000 hPa

Une idée ?

Merci
Olivier

Bidouille

Bonjour,

As tu appliqué les coeffs de conversion comme c'est indiqué dans la datasheet : http://www.sparkfun.com/datasheets/Components/SCP1000-D01.pdf ? Voir chapitre 2.2.3 ?

A+

ogaleote

#2
Dec 28, 2010, 08:51 am Last Edit: Dec 28, 2010, 08:53 am by ogaleote Reason: 1
Bonjour Bidouille,

Oui c'est fait:
Pour la temp:
Code: [Select]
   // convert the temperature to celsius and display it:
   float realTemp = (float)tempData / 20.0;


et pour la pression
Code: [Select]
   //combine the two parts into one 19-bit number:
   long pressure = ((pressure_data_high << 16) | pressure_data_low)/4;


Olivier

B@tto

C'est peut-être un hors-sujet mais :

float realTemp = (float)tempData / 20.0;

C'est quoi ce (float) ?? Ne faut-il pas plutôt float(tempData) ?
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

ogaleote

Bonjour,

Je pense que c'est pour prendre le float du résultat de la division et non, le float de tempData divisé par 20

Sinon, toujours pas d'idée pour mon problème ?

Olivier

Jean-François

#5
Dec 28, 2010, 06:14 pm Last Edit: Dec 28, 2010, 06:19 pm by jfs Reason: 1
Pour le float du résultat de la division, ce serait plutôt :

Code: [Select]
float realTemp = float(tempData / 20.0);

ce qui ne sera pas pareille que :

Code: [Select]
float realTemp = float(tempData) / 20.0;

la première risque de te donner une résultat éronné, car tu divises un int par un float et tu convertis le résultat final en float, tu risques de perdre quelques choses en route.
Il vaut mieux convertir le int en float et faire la division ensuite (cas 2)

float()
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

vincelge

La synthaxe (float) tempData est correcte, car dans l'exemple, TempData est déclaré en int.

(float) tempData permet de récupérer la valeur au format float.
Un exemple ici, dans la rubrique 'exemple code'
Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

Jean-François

#7
Dec 28, 2010, 06:42 pm Last Edit: Dec 28, 2010, 06:43 pm by jfs Reason: 1
Dans la syntaxe de l'exemple, c'est le résultat ou le x qui est convertit en float ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

B@tto

D'après l'exemple et ce que j'en conclus, c'est que : (float)x fait la même chose que float(x). Ou alors y'a une subtilité qui m'échappe ...
Blog électronique : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

Jean-François

Ce pourrait également être tout ce qui se trouve après le signe "=", ce qui correspondrait au résultat  :-?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

ogaleote

Bonjour,

La conversion se fait bien.
J'ai à peu près 800 comme valeur dans tempData une fois divisé j'ai bien mes 40°C.

J'ai vérifié mes câblages:
DRDY:Pin 6
CSB: Pin 7
MISO: Pin12
MOSI: Pin 11
SCK: Pin 13
3.3V: J'ai pris le 3.3V de l'Arduino
GND: GND

J'ai aussi mis à la masse PD et TRIG

J'ai toujours de degrés et des Pascal en plus....

Olivier

ogaleote

Bonjour et bonne année à tous !

J'ai toujours le probleme avec mon capteur .... j'avance pas.
Pour mes derniers essais, j'ai suivi la doc chez sparkfun pour les signaux en 3,3 http://www.sparkfun.com/tutorials/65

C'est mieux mais pas encore ça, j'ai environ 20° et la pression 2000hPa....

Une question, est ce que j'ai pu griller le capteur en le branchant directement sur l'Arduino ?

Sinon, une autre idée ?

Encore merci,
Je ne sais plus dans quel direction chercher....

Olivier

Jean-François

Tu l'avais branché sur le 5V de l'Arduino ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

ogaleote

Bonjour Jean-Francois,

Voici mes branchements:

Les pins:
DRDY:Pin 6 en direct sur l'Arduino
CSB: Pin 7 en direct sur l'Arduino
MISO: Pin12 en direct sur l'Arduino
MOSI: Pin 11 en direct sur l'Arduino
SCK: Pin 13 en direct sur l'Arduino
3.3V: J'ai pris le 3.3V de l'Arduino
GND: GND

L'alimentation du capteur sur le 3,3V de l'Arduino.

Olivier

Jean-François

Normalement il ne devrait pas avoir grillé.

Je pense plus à un problème de conversion :

[edit]bin '00 0010 0010 1110' [ch8594] dec '558'  
[ch8594] conversion to [°C]: 558/20 = 27,9 °C
[/edit]

Est ce que tu converti bien ta valeur en décimal avant de l'utiliser ?
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Go Up