PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Temperaturen aus DS1621 mit PC-I2C-RN-Adapter auslesen



E-Donni
16.10.2006, 21:14
Temperaturen aus DS1621 mit PC-I2C-RN-Adapter auslesen

Hallo!

Bevor ich die dazugehörige Schaltung aufbaue, möchte ich gerne wissen, ob mit folgenden in Visual-Basic geschriebenen Programmzeilen der an dem PC-I2C-Roboternetz-Adapter angeschlossene Temperatursensor DS1621 ausgelesen werden kann. Falls in den Programmzeilen Fehler enthalten sind, wäre ich für Nachricht sehr dankbar!
Vielen Dank!

Gruß
E-Donni



Private Sub TempMessung(temperatur As Double)
Dim adresse As Byte
Dim MSByte As Byte
Dim LSByte As Byte

'Initialisierung des PC-I2C-RN-Adapters:
RS232_I2C_MSComm1.CommPort = 1
RS232_I2C_MSComm1.PortOpen = True
i2c_init
ZeigePegel

'Adresse des Interfaces:
adresse = 90

'I2C-Befehle an den Temperatursensor DS1621 senden:
i2c_start
i2c_SendByte (adresse) 'Adresse des Temperatursensors senden
i2c_SendByte I2cdaten(&HEE) 'Temperaturmessung anstoßen
delay
i2c_stop

i2c_start
i2c_SendByte (adresse) 'Adresse des Temperatursensors senden
i2c_SendByte I2cdaten(&HAA) 'Temperaturmessung Lesekommando
delay
i2c_stop

delay

i2c_start
i2c_SendByte (Adresse + &H1) 'Beim Lesen ist ID immer eins höher
'als beim Senden
delay
MSByte = i2c_EmpfangeByte '1. Byte empfangen, MS-Byte
delay
i2c_ack (True)
delay
LSByte = i2c_EmpfangeByte '2. Byte empfangen, LS-Byte
delay
i2c_ack (False)
delay
i2c_stop

ZeigePegel

'Aus den übergebenen Bytes die Temperatur des abgefragten
'Sensors ermitteln:
If Wert < 128 Then 'positive Temperatur, gleich oder höher als 0°C
temperatur = MSByte + (LSByte / 128) * 0.5
Else 'negative Temperatur, unter 0°C
temperatur = MSByte - 256 + (LSByte / 128) * 0.5
End If

'Terminalisierung:
set_sda (1)
set_scl (1)

End Sub

JuergenHrob
12.11.2006, 10:31
Hallo E-Donni,

für einen DS1621 hatte ich mal vor Jahren einen Code für einen 8051er geschrieben, der die Temperatur auf 1/100 Grad ausliest. Leider ist der Code in 8051er-Assembler. Wenn du magst, schicke ich ihn dir gerne.

Den DS1621 solltest du möglichst nicht mehr verwenden, da gab es eine Fehlermeldung des Herstellers, dass sich das Ding immer mal wieder selber aufhängt. Einzige Lösung: Versorgungsspannung kurz unterbrechen. Besser ist der DS1631.

Gruß

Jürgen

E-Donni
19.11.2006, 19:39
Hallo Jürgen!

Wäre super, wenn Du mir den Assembler-Code zusenden könntest, würde mir sehr helfen. Ist die Aussenbeschaltung des DS1631 identisch mit derjenigen für den DS1621?

Vielen Dank für Deine Hilfe!

Besten Gruß
E-Donni