Question à propos de DS1820

M

McMurry

Guest
J'ai des problèmes pour obtenir la valeur décimale pour le dire sortie de température
sous la forme d'xx.y

Pour obtenir cette valeur y ...Je suis actuellement en utilisant la formule de MCU programme

temp_dec = 9 - (((int) obtenir [6] * 9) / 16)

que j'ai trouvé pour être incorrectes après l'afficher la valeur "0,9" lorsque je déconnecte le capteur.

Quelqu'un at-il réussi à trouver la "formule" pour obtenir la valeur décimale?Une autre question ..
dans sa feuille de données, il est clairement écrit que DS18S20 est d'une précision de / - 0,5 degré Celsius.
ce que cela signifie que je devrais faire la sortie de lecture pour être juste une valeur entière?

Merci.

 
Selon la façon dont j'ai lu la fiche, la partie décimale du nombre n'est que la LSB.Si le LSB est un '1 'alors que la température a une partie décimale de 0,5.La partie entière du nombre est juste les données déplacé vers la droite par 2.
Que faire avec cette partie décimale est à l'utilisateur.Personnellement, je l'afficher.Si la lecture est "27,5", alors basé sur la précision, je sais que la température se situe entre "27" et "28".Si je laisse tomber le "0.5" alors je ne sais pas si la température réelle est comprise entre "27 et" 28 "ou" 26 "et" 27 ". En outre, le 0,5 ° C est le pire des cas sur toute la gamme de température. Pour de plus amples la température ambiante normale, il fera bien mieux que cela.

 
Pouvez-vous s'il vous plaît me dire quelle est la définition exacte de votre IC?
Est-il DS18B20, ou DS18S20?

J'ai utilisé un DS18B20 avec mon AT89S52 et la conversion décimal a fonctionné sans aucun problème.Je peux vous indiquer le code si vous voulez.

en ce qui concerne,
Seemanta

 
Une autre pensée, essayez-vous à la sortie de la température en F ou C?Si le LSB est un '1 'alors qu'elle représente 0.5C.Si vous convertissez ce F, il ne l'égalité de 0,9 F. Par conséquent, si vous débranchez le capteur, la résistance de pullup doit donner à tous les «1» pour chaque chiffre et je m'attends à la partie décimale de la température en F à 0,9.

 
seemanta a écrit:

Pouvez-vous s'il vous plaît me dire quelle est la définition exacte de votre IC?

Est-il DS18B20, ou DS18S20?J'ai utilisé un DS18B20 avec mon AT89S52 et la conversion décimal a fonctionné sans aucun problème.
Je peux vous indiquer le code si vous voulez.en ce qui concerne,

Seemanta
 
Je me souviens une fois, que j'ai été à tort se référant à certains DS1820 fiche variante et la formule pour obtenir la température était très différente.
Je me suis dit, "Whoa! Attendez une minute, cela ne peut pas être la feuille de données que je regardais plus tôt."

Effectivement, j'ai réalisé qu'il n'était pas DS18B20, l'IC j'interagissais.Puis j'ai regardé le datasheet pour DS18B20 et trouvé la conversion décimal assez simple.

Vous pouvez obtenir le code pour le même à l'adresse: ftopic314427.html

Notez que toutefois, cette routine d'affichage de la température est juste une partie d'un programme plus beaucoup, mais je suis sûr que vous pouvez naviguer à travers le code

<img src="http://www.edaboard.com/images/smiles/icon_biggrin.gif" alt="Very Happy" border="0" />Faites-moi savoir si vous avez besoin d'aider les autres.

en ce qui concerne,
SeemantaAjouté après 17 minutes:Et juste pour vous dire comment j'ai fait la conversion décimal, voici une explication:

chaque bit indique successifs des puissances négatives de 2.
alors 0 0 signifie x.0
0 1 signifie X.25
1 0 signifie x.50
1 1 signifie X.75

Ceci suppose la résolution 0,25 degré C, bien sûr.
Et oui, la fiche technique indique que cela fonctionne seulement en degré C. Vous devez utiliser un tableau de conversion pour convertir au degré F ou utiliser une formule de conversion.

Hope this helps!

en ce qui concerne,
Seemanta

 

Welcome to EDABoard.com

Sponsor

Back
Top