DS1820 Temperaturmessung

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 09 9 2024  12:47:40      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte


Autor
DS1820 Temperaturmessung

    







BID = 25981

Benedikt

Inventar

Beiträge: 6241
 

  


Der DS1820 ist ein Temperatursensor mit nur 2 Leitungen, was bereits das erste Problem darstellte, da das Datenblatt alles andere als anschaulich ist.

Die Temperatur steht als 7bit Wert (0 bis 128) + Vozeichen bit + 0,5° bit zur Verfügung.

Zusätzlich habe ich noch zwei weitere 8bit Werte:
COUNT_PER_C und COUNT_REMAIN

Um die Temperatur auf 0,1° genau bestimmen zu können, muss ich folgende Rechenoperation durchführen:

fertige Temperatur= gelesende Temperatur + (COUNT_PER_C – COUNT_REMAIN)/COUNT_PER_C - 0,25

Und dies bekomme ich einfach nicht hin.

Das Problem sind die Kommastellen und die dummen -0,25
Ich habe einige Programme die teilweise funktionieren, nur manchmal bekomme ich dann sowas wie 25,/°C. Das ist dann der Fall, wenn durch Rundungsungenauigkeiten und sonstige Fehler mehr als 9 für die Nachkommastelle errechnet werden.

Als Mikrocontroller verwende ich einen AT89C51RC, also 8051 kompatibel.

BID = 25989

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  


Zitat :
...Um die Temperatur auf 0,1° genau bestimmen zu können...


Das wird nichts werden:
Der DS1820 hat nur eine Auflösung von 0,5°C, die Genauigkeit ist im Bereich 0..70°C auch nur 0,5°C. Außerhalb dieses Temperaturbereichs ist die Genauigkeit noch schlechter.



Zitat :
...Das Problem sind die Kommastellen und die dummen -0,25...


Multipliziere die Gleichung mit 4, dann heißt sie:
4*fertige_Temperatur= 4*(gelesende_Temperatur + (COUNT_PER_C – COUNT_REMAIN)/COUNT_PER_C) -1


1 subtrahieren geht ganz gut.

Die Multiplikation geht auch ganz flott, wenn Du das Zwischenergebnis 2 mal nach links schiebts und dabei aufs Vorzeichen aufpasst.
Abschließend 2mal arithmetisch nach rechts schieben.


_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !

BID = 25992

Benedikt

Inventar

Beiträge: 6241

Es stimmt schon, dass der DS1820 nur 0,5° Genauigkeit hat, aber wenn er in 0,5° Schritten springt, dann ist er ungenauer, als wenn er in kleineren Schritten anzeigt. Sieht zumindest besser aus.

Mein Hauptproblem ist folgender Bereich:
COUNT_PER_C – COUNT_REMAIN)/COUNT_PER_C)

COUNT_PER_C ist größer oder gleich COUNT_REMAIN. Deshalb erhält man einen Wert <1. Dieses wird zu 0 abgeschnitten.
Ich bräuchte aber die erste Nachkommestelle, habe aber keine Ahnung wie ich die Berechnen soll.

BID = 26007

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
...COUNT_PER_C – COUNT_REMAIN)/COUNT_PER_C) ...


Wenn Du bei Integer-Arithmetik bleiben willst oder mußt, kannst Du den Zähler mit einem festen Faktor multiplizieren, dann werden die Nachkommastellen des Ergebnisses zu Vorkommastellen.
Multiplikatoren welche Potenzen von 2 sind, eigenen sich besonders gut, weil man die am Ende notwendige Korrektur-Division dann einfach als Schiebeoperation erledigen kann.

Im Falle von 28 = 256 kannst Du die Multiplikation durch Voranstellen eines Byte, das mit dem Vorzeichen gefüllt ist, erledigen, die Division, indem Du einfach das letzte Byte des Ergebnisses wegwirfst.

_________________
Haftungsausschluß:



Bei obigem Beitrag handelt es sich um meine private Meinung.



Rechtsansprüche dürfen aus deren Anwendung nicht abgeleitet werden.



Besonders VDE0100; VDE0550/0551; VDE0700; VDE0711; VDE0860 beachten !


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag       heute wurden bisher 6 Beiträge verfasst
© x sparkkelsputz        Besucher : 181984296   Heute : 2038    Gestern : 5899    Online : 214        9.9.2024    12:47
2 Besucher in den letzten 60 Sekunden        alle 30.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0180230140686