mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Programm(A51) DS1820 auf DS18b20 Umstellen


Autor: Manfred Müller (manfred-m)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Habe da ein Problem.
ich Möchte gern den DS18b20 Benutzen Anstat den DS1820,
habt ihr mir ein paar Tipps.
Was ist eigentlich der unterschied zischen denn beiden?
MFG Manfred

Autor: Markus J. (doc_database)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manfred Müller wrote:
> Hallo Habe da ein Problem.
> ich Möchte gern den DS18b20 Benutzen Anstat den DS1820,
> habt ihr mir ein paar Tipps.
> Was ist eigentlich der unterschied zischen denn beiden?
> MFG Manfred

Der DS1820 ist durch den DS18S20 ersetzt worden.
Detaillierte Infos gibt es bei www.maxim-ic.vom in der Ricchtung 
Temperatur Sensoren und 1-Wire.
Wenn du dich mit dem Thema 1-Wire auseinadersetzt, wirst du merken, das 
der "Family-Code" unterschiedlich ist:
DS18S20: 10h
DS18B20: 28h

Weiterhin ist der DS18B20 in der Wandlungsteit wesentlich schneller 
(<<750ms), suche nach tconv im Datenblatt.
Bin eigenlich ganz fit in 1-Wire.
Wenn du noch Fragen hast, sprech mich ruhig an.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der DS18[S]20 liefert die Temperatur in 2 Schritten pro Grad, der 
DS18B20 in 16. Ansonsten kann man sie gleich behandeln. Man kann also 
den Code so formulieren, dass abhängig von Family-Code das Resultat 
umgerechnet wird.

Schneller ist der DS18B20 nur dann, wenn man auf volle Auflösung 
verzichtet.

Autor: Markus J. (doc_database)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Schneller ist der DS18B20 nur dann, wenn man auf volle Auflösung
> verzichtet.

Stimmt soweit, da aber beide eine Auflösung von 9 Bit bestitzen und wenn 
man diese vergleicht, dann ist der Ds18B20 etwa 7x Schneller, und hat 
bei 12 bit Auflöung die gleiche Wandlungszeit wie der DS18S20 bei 9 Bit 
Auflösung.

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus J. wrote:
>> Schneller ist der DS18B20 nur dann, wenn man auf volle Auflösung
>> verzichtet.
>
> Stimmt soweit, da aber beide eine Auflösung von 9 Bit bestitzen und wenn
> man diese vergleicht, dann ist der Ds18B20 etwa 7x Schneller, und hat
> bei 12 bit Auflöung die gleiche Wandlungszeit wie der DS18S20 bei 9 Bit
> Auflösung.

Wenn der B-Typ die 12 bit gewandelt hat, sind die beim S-Typ auch da. 
Nur nicht direkt im ersten und zweiten Byte, sondern als 16tel Schritte 
im 7. Byte. Also ich sehe da einen wirklichen Unterschied.

Gruß

Rolf

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die maximal erzielbare Auflösung ist bei beiden gleichermassen 12 Bit. 
Der Unterschied liegt darin, wie man an das Ergebnis kommt. Bei B20 
steht es direkt im Ergebnisregister, bei S20 muss man den Rest aus einem 
weiteren Register fischen und ein bischen rechnen.

Autor: Manfred Müller (manfred-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Danke an Alle.
ich kann leider mit euren forschlägen nichts
anfangen. bin Anfänger könnt ich mir
vielleicht sagen wie ich das im Programm
Ändern muss.Vielen Dank

Autor: Markus J. (doc_database)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm.
So ad-hoc geht das natürlich nicht.

Genau genommen sind das zwei unterschiedliche Temperatursensoren, also 
ganz genau genommen.

Wie gesagt, der Famlily Code ist anders -> Im Program ändern, falls 
dieser benötigt wurde.
Bei der Wandlungszeit kann man alles beim alten lassen, allerdings 
bietet der Sensor dann 12 bit statt 9 bit an.
Das muß man auch evtl. berücksichtigen.

Ein Quellcode wäre schön, dann kann man etwas sehen.
Aber so ist das sehr schwierig.

Mal so gefragt:
Liegt überhaupt ein Quellcode vor?
Oder wäre die Option nicht einfacher, den DS1820 gegen einen gleichen zu 
tauschen?

Autor: Manfred Müller (manfred-m)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ja siehe Anhang.
Gruss manfred

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manfred Müller wrote:
> Ja siehe Anhang.

Das nächste mal ne Assembler Quelle auch *.asm nennen.

Dann weiß jeder, daß es der Quelltext ist und nicht irgendein Brief an 
Deine Freundin (*.txt).


Peter

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du meinst wir sollen dir das Programm der Einfachheit gleich fertig 
umschreiben?

Auf was es rausläuft: Das bisherige Programm greift in CALCULATE sowohl 
auf das Ergebnisregister (RAM+0,1, halbe Grade) als auch auf den 
Restwert für die erhöhte Auflösung (RAM+6,7, in sechzehntel Grad) zu und 
rechnet damit gemäss der im Datasheet angegebenen Art die vollständige 
Auflösung heraus.

Bei B20 hingegen stehen in RAM+0,1 der Wert in sechzehntel Grad, RAM+6,7 
wird nicht benötigt. Entsprechend ist CALCULATE anzupassen.

Autor: Markus J. (doc_database)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So schnell war ich jetzt nicht.
Ich habe mich gerade am Family Code festgebissen.
; ********** TECHK SUB **********
; TEMP MEMORY CHECK PRESENCE AT FIRST
; OUT = CY  0=NO 1=OK
; REG = R2,R3
TECHK:   MOV    R2,#8 ; R2,#40 tauschen von 0x10 zu 0x28 = 40
TECHK1:  MOV    R3,#0 ;
TECHK2:  JNB    SENSOR1,TECHK5      ;PRESENCE (RX)
         DJNZ   R3,TECHK2
         DJNZ   R2,TECHK1
         CLR    C
         RET
TECHK5:  JNB    SENSOR1,$
         MOV    R2,#8 ; hier das gleiche: 40 statt 8
         DJNZ   R2,$
         SETB   C
         RET
; ********************************************************

Assemblerfreunde: Ist das eurer Auffassung so richtig?

Autor: Markus J. (doc_database)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter Dannegger wrote:
> Manfred Müller wrote:
>> Ja siehe Anhang.
>
> Das nächste mal ne Assembler Quelle auch *.asm nennen.
>
> Dann weiß jeder, daß es der Quelltext ist und nicht irgendein Brief an
> Deine Freundin (*.txt).
>
>
> Peter

/Ack
Und bitte befügen, das es ein 8051 Derivat ist, möglich noch den 
verwendeten Compiler

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du nicht die geringste Ahnung hast, was der 
Assembler-Code macht? Einfach blind reinstochern und alle "8" durch "40" 
ersetzen macht aus dem Printout vielleicht eine schönere Tapete, aber 
kein funktionierendes Programm.

PS: An diesem Teil des Programms gibts garnichts zu ändern.

Autor: Markus J. (doc_database)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Steht doch drüber: TEMP MEMORY CHECK PRESENCE AT FIRST

Ist schon ein paar Jahre her, das ich Assembler fü C51 progrmmiert habe 
(und bitte nie wieder), aber ich weiß, wo ich bei 1 Wire drauf achten 
muß.

Wenn es ja nicht richtig ist, dann verbesser mich. Sicher bin ich mir 
nicht, aber ich lerne gerne dazu.

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann erklär mir bitte, warum du am presence check rumdrehst, wenn sich 
dieser Teil des 1-Wire Protokolls zwischen DS1820 und DS18B20 nicht 
unterscheidet.

Edit: Der oben erwähnte Family-Code steckt in der 1-Wire ID, die in 
diesem Programm überhaupt nicht verwendet wird. Unterscheidbar sind die 
Dinger dennoch, nämlich über Scratchpad Byte 4, Bit 7.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.