DS18S20 zeigt falsche Werte an?

#3253363
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?
#3253366
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
#3253370
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...
#3253411
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
#3253496
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.
#3253771
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.
#3253874
Lesenswert?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren