
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
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 |