Forum: Mikrocontroller und Digitale Elektronik DS18S20 zeigt falsche Werte an?


von Simon R. (simon_r44)


Lesenswert?

Habe die Schaltung nachgebaut:

http://www.dh2faa.de/

unter: Projekte Nr.22

Er zeit mir aber -1,5*C an. was soll ich da machen. Hab auch schon den 
4,7K Widerstand ausgetauscht/verändert.

von Cyblord -. (cyblord)


Lesenswert?

Sorgfältiger Nachbauen. Du hast einen Fehler drin. Sonst würde es 
funkttionieren.

Was anderes kannst du nicht machen, wenn du zu 100% Copy&Paste machst, 
hast du von der ganzen Sache keine Ahnung. Also hilft nur möglichst 
genau alles zu kopieren.

gruß cyblord

von Simon R. (simon_r44)


Lesenswert?

cyblord ---- schrieb:
> Sorgfältiger Nachbauen. Du hast einen Fehler drin. Sonst würde es
> funkttionieren.
>
> Was anderes kannst du nicht machen, wenn du zu 100% Copy&Paste machst,
> hast du von der ganzen Sache keine Ahnung. Also hilft nur möglichst
> genau alles zu kopieren.
>
> gruß cyblord

Was soll ich da KOPIEREN?

von Karl H. (kbuchegg)


Lesenswert?

Na zum Beispiel das hier
1
'------------------------------------------------------
2
'
3
'     DS1820 für das pollin spiel 810148
4
'
5
'             DH2FAA      06.03.2011
6
'------------------------------------------------------
7
'
8
'
9
' Ansicht von unten auf die Anschlüsse des DS18S20
10
'
11
'     GND   DQ    Vdd
12
'       -----------
13
'       | 1  2  3 |
14
'       \         /
15
'        \_______/
16
'
17
'
18
' Beschaltung:
19
'
20
'    Vdd an Spannung
21
'    Dq  an Port B.5             ----------PB5
22
'    GND an Masse
23
'
24
' zusätzlich einen Pullupwiderstand 4,7 K von Vdd an DQ legen

Hast du deinen DS genau so angeschlossen?

von Cyblord -. (cyblord)


Lesenswert?

Simon R. schrieb:
> cyblord ---- schrieb:
>> Sorgfältiger Nachbauen. Du hast einen Fehler drin. Sonst würde es
>> funkttionieren.
>>
>> Was anderes kannst du nicht machen, wenn du zu 100% Copy&Paste machst,
>> hast du von der ganzen Sache keine Ahnung. Also hilft nur möglichst
>> genau alles zu kopieren.
>>
>> gruß cyblord
>
> Was soll ich da KOPIEREN?

Na du hast doch NACHGEBAUT (=KOPIERT). Also und da ist irgendwo halt was 
falsch. Pindreher oder falsch angeschlossen oder sonst was.
Wenn du alles 1:1 übernommen hättest, würde es ja wohl gehen.

gruß cyblord

von Simon R. (simon_r44)


Lesenswert?

> Na du hast doch NACHGEBAUT (=KOPIERT). Also und da ist irgendwo halt was
> falsch. Pindreher oder falsch angeschlossen oder sonst was.
> Wenn du alles 1:1 übernommen hättest, würde es ja wohl gehen.
>
> gruß cyblord

Ich gebe zu, das ich beim ersten mal den Sensor falsch herum (-/+) 
angeschlossen habe. Beim zweiten mal habe ich den aber mit einem neunen 
Sensor richtig herum angeschlossen...

von (prx) A. K. (prx)


Lesenswert?

Die Software sollte in der Lage sein, einen fehlenden Sensor oder eine 
kurzgeschlossene Sensorleitung festzustellen. Wenn nicht => Müll.

von Simon R. (simon_r44)


Lesenswert?

Es wird ja auch angezeigt:
SensorID000000

von (prx) A. K. (prx)


Lesenswert?

Also was zeigt es nun an? -1,5°C oder SensorID000000?

von Karl H. (kbuchegg)


Lesenswert?

Hast du denn besagtes 'Pollin Spiel'?
Hast du einen
1
$regfile = "ATtiny2313.dat"
im Einsatz oder ist das ein anderer µC?

von (prx) A. K. (prx)


Lesenswert?


von Simon R. (simon_r44)


Angehängte Dateien:

Lesenswert?

Karl Heinz Buchegger schrieb:
> Hast du denn besagtes 'Pollin Spiel'?
Ja, das habe ich.
> Hast du einen$regfile = "ATtiny2313.dat"
die .hex
> im Einsatz oder ist das ein anderer µC?

Nein, der besagte 2313

1: DS18...

2: SensorID0000

3: Wie Bild

Alle Leitungen überprüft...

von Simon R. (simon_r44)


Lesenswert?

A. K. schrieb:
> Dieses Projekt bezieht sich offenbar hierauf:
> http://www.pollin.de/shop/dt/MTU4OTgxOTk-/Bausaetz...

Genau

von Simon R. (simon_r44)


Lesenswert?

$regfile = "ATtiny2313.dat"

Lcd_db4 Alias Portb.0
Lcd_db5 Alias Portb.1
Lcd_db6 Alias Portb.2
Lcd_db7 Alias Portb.3

Lcd_e Alias Porta.0
Lcd_rs Alias Porta.1

Lcd_ein Alias Portd.6
Config Lcd_ein = Output

Lcd_kontrast Alias Portb.4
Config Lcd_kontrast = Output

Summer Alias Portd.5
Config Summer = Output

$framesize = 40
$swstack = 10
$hwstack = 32


$crystal = 8180000

Config Lcdmode = Port
Config Lcd = 16 * 2 , Chipset = Ks077

'LCD wird im 4-Bit-Modus betrieben
Config Lcdbus = 4
Config Lcdpin = Pin , Db4 = Lcd_db4 , Db5 = Lcd_db5 , Db6 = Lcd_db6 , 
Db7 = Lcd_db7 , E = Lcd_e , Rs = Lcd_rs


'1wire
Config 1wire = Portb.5                                      'use this 
pin for 1wire


'-----------------------------
'     const
'-----------------------------
Const Myversion1 = "-DS1820-"
Const Myversion2 = " V 0.2 "

'-----------------------------
'  deklarationen
'-----------------------------

Declare Sub Init
Declare Sub Piep

Declare Sub Ausgabe_sensor_id
Declare Sub Convert_temperatur
Declare Sub Read_temperatur
Declare Sub Ausgabe_temperatur


'-----------------------------
'   variablen
'-----------------------------

'temperatur
Dim Chex As String * 2
Dim I As Byte

Dim Tmp As Byte
Dim Stemperatur As String * 5

Dim Twert As Integer
Dim Halb As Byte

Dim 1w_id(8) As Byte                                        ' ID
Dim Scratchpad(9) As Byte                                   ' ScratchPad


'-----------------------------
'     MAIN
'-----------------------------

Call Init

'Now search for the first device on the bus
1w_id(1) = 1wsearchfirst()

Call Piep

Call Ausgabe_sensor_id
Call Convert_temperatur
Call Read_temperatur

Cls
Enable Interrupts




'****************** HAUPTPROGRAMMSCHLEIFE 
**********************************
'
Do


 'Debounce Pind.0 , 1 , Key_t1 , Sub
 Debounce Pind.1 , 1 , Key_t2 , Sub
 'Debounce Pind.3 , 1 , Key_t3 , Sub
 'Debounce Pind.4 , 1 , Key_t4 , Sub
 Debounce Pind.2 , 1 , Key_ein , Sub

 Call Convert_temperatur
 Call Read_temperatur
 Call Ausgabe_temperatur
 Wait 1


Loop

End



'************* ENDE HAUPTPROGRAMM 
******************************************

'Key_t1:
'    Call Piep
'Return


Key_t2:
    Call Ausgabe_sensor_id
Return


'Key_t3:
'    Call
'Return


'Key_t4:
'    Call
'Return


Key_ein:
    Call Init
Return



'*****************************************************************


'-----------------------------
'   func/subs
'-----------------------------

Sub Init

 Set Lcd_ein
 Set Lcd_kontrast

 Initlcd
 Cursor Off
 Cls
 Locate 1 , 1 : Lcd Myversion1
 Locate 2 , 1 : Lcd Myversion2
 Wait 5
 Cls
 Cursor Off
End Sub



Sub Piep
  Sound Summer , 124 , 675                                  'H2(1/16)
End Sub


'-- ausgabe sensor_id
Sub Ausgabe_sensor_id
  Locate 1 , 1 : Lcd "SensorID"
  Locate 2 , 1:

  For I = 1 To 8
     Chex = Hex(1w_id(i))
     Lcd Chex
  Next
  Wait 3
End Sub


'-- Ausgabe_temperatur
Sub Ausgabe_temperatur
    Cls
    Locate 1 , 1
    Lcd "Temp. ="
    Locate 2 , 1
    Lcd Stemperatur
End Sub


'-- Convert_Temperatur
Sub Convert_temperatur
    1wreset
    1wwrite &H55                                            'Match Rom
    1wwrite 1w_id(1) , 8                                    'DS1820 ID 
senden
    1wwrite &H44                                            'Convert 
Temp
    Waitms 500                                              'DS1820 
500ms
    'Waitms 750                                              'DS18S20 
750ms
End Sub


'-- Read_temperatur
Sub Read_temperatur
    1wreset
    1wwrite &H55                                            'Match Rom
    1wwrite 1w_id(1) , 8                                    'DS1820 ID 
senden
    1wwrite &HBE                                            'Read 
Scratchpad
    Scratchpad(1) = 1wread(9)                               'Temp Wert 
auslesen

   'in den untersten bytes steht die temperatur in 1/2 Grad
    Twert = Makeint(scratchpad(1) , Scratchpad(2) )

    Halb = Twert And 1

   'Temperatur durch 2 teilen
    Shift Twert , Right , 1 , Signed

    Stemperatur = Str(twert) + ","
    If Halb = 1 Then
      Stemperatur = Stemperatur + "5" + Chr(223)
    Else
      Stemperatur = Stemperatur + "0" + Chr(223)
    End If
End Sub

von (prx) A. K. (prx)


Lesenswert?

Die Beschreibung im Datasheet ist etwas verwirrend, denn es gibt von den 
Sensoren 2 verschiedene Typen: DS18S20 und DS18B20 und beide werden 
darin erwähnt. Das Programm passt aber nur zum DS18S20.

von Pete K. (pete77)


Lesenswert?

Was für einen Sensor hast Du denn? 1820, 18S20 oder 18B20?

Das Beispiel ist für einen DS1820.

von (prx) A. K. (prx)


Lesenswert?

Was für eine Sensor-ID wird denn angezeigt? 000000 steht für Fehler.

von Simon R. (simon_r44)


Angehängte Dateien:

Lesenswert?

Ich habe den DS18S20

Es wird ID00000 wie im Bild angezeigt.

Wenn ich den Sensor herausnehme zeigt er nach den -1,5*C
0*C an

von (prx) A. K. (prx)


Lesenswert?

Sensor-ID 00000000 bedeutet, dass der Sensor nicht erkannt wird. Was 
dann als Temperatur angezeigt wird ist schnuppe.

Das Bitmuster 0b1111...1111 einer offenen Leitung wird aufgrund des bei 
negativen Werten fehlerhaften Programms als -1,5° angezeigt. "Korrekt" 
wäre -0,5°C.

von Karl H. (kbuchegg)


Lesenswert?

Ich würde mal den Krokoklemmenkabeln nicht trauen.

Miss doch mal mit einem Durchgangsprüfer nach, ob du direkt vom Pin B5 
eine Verbdindung zum Datenpin des DS hast.

Und bitte: rechne deine Bilder ein bischen runter. 2MB ist ein bischen 
heftig für ein Photo. Wir können sowieso nicht kontrollieren, ob deine 
Krokoklemme am richtigen Pin sitzt.

von Simon R. (simon_r44)


Lesenswert?

Karl Heinz Buchegger schrieb:
> Ich würde mal den Krokoklemmenkabeln nicht trauen.
>
> Miss doch mal mit einem Durchgangsprüfer nach, ob du direkt vom Pin B5
> eine Verbdindung zum Datenpin des DS hast.

Alle Verbindungen bestehen. Habs auch schon mit einer anderen 
Verbindungsart versucht.

von Simon R. (simon_r44)


Angehängte Dateien:

Lesenswert?

Der Sensor

von holger (Gast)


Lesenswert?

$crystal = 8180000

Das ist aber ein komischer Quarz;)

von Thomas D. (thomasderbastler)


Lesenswert?

holger schrieb:
> Das ist aber ein komischer Quarz;)

In der tat, es gibt 8 MHz oder 8,8672 MHz..

von Dietrich L. (dietrichl)


Lesenswert?

Simon R. schrieb:
> Der Sensor

Mach mal einen Stützkondensator dran.

von Simon R. (simon_r44)


Lesenswert?

Dietrich L. schrieb:
> Simon R. schrieb:
>> Der Sensor
>
> Mach mal einen Stützkondensator dran.

Hab einen 4.7 uf drangehängt. Keine Veränderung.

von holger (Gast)


Lesenswert?

>$crystal = 8180000
>
>Das ist aber ein komischer Quarz;)

Irgendwie springt Simon da ja nicht drauf an;)
Woher weisst du das dein uC mit diesem Takt läuft?
Hast du das gemessen? Mit falschem Takt läuft 1-Wire nicht.
Ich vermute mal das ist dein Problem.

von (prx) A. K. (prx)


Lesenswert?

Auf der Platine ist kein Quarz. Was die Frage aufwirft, ob der AVR noch 
jungfräuliche Fuses hat - dann wären es 1MHz statt 8MHz. Wie hat das 
Programm denn seinen Weg in den Controller gefunden?

Den Wert 8180000 hatte möglicherweise der Entwickler mal für die 
RC-Oszillator-Frequenz seines Exemplars bei offiziellen 8MHz 
nachgemessen. Wobei diese Feinheit hier nicht wichtig ist, also ob mit 8 
oder 8,2. Bei realen 1MHz allerdings geht natürlich mit Einstellung 8MHz 
nix.

von Simon R. (simon_r44)


Lesenswert?


von (prx) A. K. (prx)


Lesenswert?

Und wie ist es dabei den Fuses ergangen?

von Simon R. (simon_r44)


Angehängte Dateien:

Lesenswert?

Sag mir bitte was ich ändern muss...
Neueinsteiger :)

von Simon R. (simon_r44)


Angehängte Dateien:

Lesenswert?

Oder so :)

von tmomas (Gast)


Lesenswert?

Ich hab ja keine Ahnung davon, aber sollte die Auskommentierung nicht 
genau andersrum sein für einen DS18S20, so wie er einen hat?

Waitms 500                                              'DS1820 500ms
    'Waitms 750                                              'DS18S20 
750ms

von holger (Gast)


Lesenswert?

>Sag mir bitte was ich ändern muss...

Die Low Fuse muss 0xE4 sein. CKDIV8 ist noch aktiv
und der uC läuft mit 1MHz.

von Simon R. (simon_r44)


Lesenswert?

25,5*C
Es funktioniert!!!
Ihr seid die besten...
Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.