Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: I2c, DS 1621 Kategorie: C-Control I V1.1 (von Thomas B - 15.02.2011 9:26)
 Als Antwort auf Re: I2c, DS 1621 von Jens - 9.06.2010 16:19
> Hallo Thomas!
>
> > Ich habe einen DS1621 mit der Adresse 000 an den i2c Bus angeschlossen...........
>
> Du meinst sicher die Adress-Pins vom DS1621, die Du alle gegen Masse geschaltet hast. In dem Fall ist die I2C-Bus Adresse des DS1621 dezimal 144. Danach kannst Du wie folgt vorgehen:
>
> Variabeln definieren
> Define DS1621_Temperatur Byte
> Define DS1621_Kommastelle Byte
> Define Tmp Byte
> Define Grad Word
> Define Counter Word
> Define Slope Word
>
> 1.) Temperaturmessung starten
> I2C_Start
> I2C_Write(144)   ‘ Adresse
> I2C_Write(238)   ‘ Temperaturmessung anstoßen
> I2C_Stop
>
> 2.) Kurze Zeit warten
> Pause 10
>
> 3.) Temperaturmessung anhalten
> I2C_Start
> I2C_Write(144)   ‘ Adresse
> I2C_Write(34)   ‘ Temperaturmessung stoppen
> I2C_Stop
>
> 4.) Temperatur einlesen
> I2C_Start
> I2C_Write(144)   ‘ Adresse
> I2C_Write(170)   ‘ Temperaturmessung Lesekommando
> I2C_Start
> I2C_Write(144+1)   ‘ Adresse lesen
> Grad = I2C_Read(no ACK)
> I2C_Stop
>
> 5.) Kommastelle einlesen
> I2C_Start
> I2C_Write(144)   ‘ Adresse
> I2C_Write(168)   ‘ Counter Lesekommando
> I2C_Start
> I2C_Write(144+1)   ‘ Adresse lesen
> Counter = I2C_Read(no ACK)
> I2C_Stop
> I2C_Start
> I2C_Write(144)   ‘ Adresse
> I2C_Write(169)   ‘ Slope Lesekommando
> I2C_Start
> I2C_Write(144+1)   ‘ Adresse lesen
> Slope = I2C_Read(no ACK)
> I2C_Stop
>
> 6.) Kommastelle berechnen
> DS1621_Temperatur = ((Grad*100-25)+((Slope-Counter)*100/Slope*100)/100)/100   ‘ Formel Temperatur
> DS1621_Kommastelle = ((Grad*100-25)+((Slope-Counter)*100/Slope*100)/100) % 100   ‘ Formel Kommastelle (zweistellig)
> ‘ Kommastelle auf einstellug einstellen
> Tmp = DS1621_Kommastelle % 10   ‘ MOD Kommastelle
> DS1621_Kommastelle = DS1621_Kommastelle / 10   ‘ Kommastelle durch 10 teilen (einstellig)
> if Tmp >= 5 Then DS1621_Kommastelle + 1   ‘ wenn MOD größer 5, dann aufrunden
>
> 7.) Temperatur anzeigen
> Print "Temperatur: ",DS1621_Temperatur,",",DS1621_Kommastelle," °C"
>
> Damit kann der DS1621 die Temperatur auf 0,1°C genau anzeigen. Wenn Dir eine Auflösung von 0,5°C ausreicht, dann kannst Du Counter und Slope weg lassen und die Kommastelle direkt auslesen...
>
> LG Jens

 Antwort schreiben

Bisherige Antworten: