Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° Kategorie: I²C-Bus (von Daneie - 7.10.2015 14:08)
Als Antwort auf Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° von Serial #07747 - 5.10.2015 13:10

> Sehr geehrte Damen und Herren,
>
> Ich habe ein Problem mit dem Temperatur-Sensor für I²C.
>
> Der Erste wert den das mitgelieferte Beispielprogramm ausgibt beträgt immer 196°.
> Deshalb habe ich eine Programm-Schleife eingefügt.
> Des weiteren erhalte ich einen Wert von 255° über 40° und unterhalb von -6°.
> Ansonsten scheint der Sensor tatsächlich auf 0,5° genau zu funktionieren.
>
> Am Ende des Coodes wurde erwähnt dass Fehler und Bugs berichtet werden sollen.
> Meine Frage
>
> 1. Ist etwas defekt? Bus Fehler (Wackelkontakt der Leitung) kann ausgeschlossen werden,
> da der Fehler Temperatur abhängig auftritt.
> 2. Was kann ich dagegen tuen?
>
> vielen Dank!
>
> Hans

Hallo Hans,
teste mal die 12Bit-Auswertung


#define DS1631_W &H9E                                       ' Schreibadresse
#define DS1631_R &H9F                                       ' Leseadresse

Sub DS1631_READ()
Dim Counter, Slope, DS1631Byte1, DS1631Byte2 As Byte
Dim T As Integer
      I2C_Start()
      I2C_Write(DS1631_W)
      I2C_Write(&HEE)
      I2C_Stop()
      I2C_Start()
      I2C_Write(DS1631_W)
      I2C_Write(&H22)
      I2C_Stop()
      I2C_Start()
      I2C_Write(DS1631_W)
      I2C_Write(&HAA)
      I2C_Stop()
      I2C_Start()
      I2C_Write(DS1631_R)
      DS1631Byte1 = I2C_Read_NACK()
      I2C_Stop()
      I2C_Start()
      I2C_Write(DS1631_W)
      I2C_Write(&HA8)
      I2C_Stop()
      I2C_Start()
      I2C_Write(DS1631_R)
      Counter = I2C_Read_NACK()
      I2C_Stop()
      I2C_Start()
      I2C_Write(DS1631_W)
      I2C_Write(&HA9)
      I2C_Stop()
      I2C_Start()
      I2C_Write(DS1631_R)
      Slope = I2C_Read_NACK()
      I2C_Stop()
      Slope = Slope
      DS1631Byte2 = (((Slope - Counter) * 100 / Slope * 100) / 100) / 10
      If (DS1631Byte1 And 128) = 0 Then
         T = DS1631Byte1 * 10 + DS1631Byte2
      Else                                      'bei negativer Temperatur
         DS1631Byte1 = (Not DS1631Byte1) + 1    'bilde Zweier Komplement
         DS1631Byte2 = 9 - DS1631Byte2
         T = DS1631Byte1 * 10 + DS1631Byte2
         T = - T
      End If


T ist dann in 1/10°C  200 ^= 20,0°C

GruÃ? Daneie


    Antwort schreiben


Antworten:

Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Hans - 7.10.2015 16:52)
    Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Torsten - 11.10.2015 10:43)
        Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Hans - 11.10.2015 17:06)
            Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Torsten - 13.10.2015 19:35)
                Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Hans - 15.10.2015 16:39)
                    Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Torsten - 17.10.2015 11:02)
                       Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Hans - 17.10.2015 19:03)
                          Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Hans - 17.10.2015 19:04)
                             Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Torsten - 18.10.2015 9:34)
                                Re: Erster Messwert falsch, 196°, falsche Messwerte (255°) unter -6 und über 37° (von Hans - 18.10.2015 11:36)
                                   340? (von Hans nochmal - 6.12.2015 13:50)