www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DS1621 Temp Sensor will nicht


Autor: Markus Fröhlich (megavolt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Zuge eine Diplomarbeit mit dem Tini DS80C400-KIT habe ich ein paar 
Grundlegende fragen:
Ich möchte ganz einfach, mittels eine Java Programmes die Temperatur von 
einem DS1621 auslesen. Die read und write Befehle kenne ich und Java 
Grundkenntnisse sind auch vorhanden. Ich habe mit dem Board schon ein 
LCD Display erfolgreich angesteuert, also der I²C Bus funktioniert.
Leider bekomme ich keine Daten vom Temp Sensor.

Code auszug:
I2CPort port = new I2CPort();
port.slaveAddress = (byte)0x48;
port.setClockDelay((byte)2);
byte[] b = new byte[2];
b[0] = (byte)0xEE;
if (port.write(b,0,1) < 0)
{
System.out.println("Fehler beim Temperatur Konvertieren");
return;
}
b[0] = (byte)0xAA;
if (port.write(b,0,1) < 0)
{
System.out.println("Fehler beim Lese Kommando");
return;
}
if (port.read(b,0,2) < 0)
{
System.out.println("Fehler beim lesen");
return;
}
Sensor ist sicher richtig angeschlossen:
A0,A1 und A2 sind alle auf GND, T0 (Thermostat) ist NC
SDA ,SCL und Vcc sind auch richtig angschlossen.

Ich weiss nicht mehr wo der Fehler sein kann, hab schon 3 gleich 
Sensoren ausprobiert. Beim Display funktioniert alles.
Ich glaub es kann nur mehr am .setClockDelay((byte)2); liegen.
Ist das bei jedem IC anders?
Der Board Hersteller hat bei seinem Test Programmen auch 2 genommen.
Das Display läuft auch ohne Probleme mit 2.
MFG Markus

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1/ Ich denke die slaveAddress stimmt nicht und der Code findet den 
DS1621 nicht. In meiner letzten Fehlersuchorgie 
(Beitrag "Atmega8 - DS1621 auslesen ( über TWI[ i2c])") hatte ich bei /A0,A1 und 
A2 sind alle auf GND/ die Basisadresse

#define DS1621_Write  0x90
#define DS1621_Read   0x91

2/ Du gibst nur eine Adresse an - möglicherweise machen die Funktionen 
write/read der I2CPort Klasse selbst eine passende Zuordnung auf den 
Basiswert. Wenn nicht, müsstest du vor dem Read slaveAddress anders 
setzen. Näheres sollte in der Doku zur I2CPort stehen. Dort auch 
nachlesen, ob die Sequenz für STOP/ACK/NAK eingehalten wird, so wie es 
im Datenblatt des DS1621 steht.

Autor: Markus Fröhlich (megavolt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm..
Morgen kauf ich mal einen LM75..mal schauen was der so macht.
Adressen sollten stimmen. Hab ich aus dem Datenblatt.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus Fröhlich wrote:

> Adressen sollten stimmen. Hab ich aus dem Datenblatt.

Ich lese da was anderes...
http://pdfserv.maxim-ic.com/en/ds/DS1621.pdf

Seite 8:

Slaveaddress:

MSB                     LSB
1  0  0  1  A2  A1  A0  R/W

Bei A2 = A1 = A0 = GND = 0

=>

#define DS1621_Write  0x90
#define DS1621_Read   0x91

Autor: Markus Fröhlich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast schon recht. Aber bei Java ist es so das man die Slave einmal 
einstellt und die read und write befehler das restliche steuer.
Der LM 75 ist ganz leicht zum handhaben: einfach die Temp lesen
Der DS1621 is da anders.
1.) Befehl zum Temp Convertieren schicken
2.) Befehl schicken damit man Lesen darf
3.) lesen

2 und 3 düfen in einer schleife sein damit man immer die aktuelle temp 
angezeigt bekommt
mein fehler war das 1 auch in der schleife war.
Den Convert befehl darf man nur einmal schicken.

Hoff das is richtig so. Bei mir funktionieren jetzt beide.
Hab auch für beide Sensoren ein jeweilige Java Klasse erstellt.
Wer sie will einfach PM.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.