Cp340 Dallas Sensoren

MichaelHuf

Level-2
Beiträge
58
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich versuche gerade Dallas 1820 Sensoren über eine Cp340
auszulesen.Bekomme es aber nicht hin.

Ist dies überhaupt möglich , brauche ich eine andere Schnittstelle ?
Hat jemand so was schon gemacht?

Laut Internet kann man diese per Acsii auslesen.
Schnittstelle hab ich schon zusammengebaut,und funktioniert unter Windows/Linux einwandfrei.

CPU 614,CP340,Step75.3Sp3


MGF
Michael Huf
 
.... auch wenn das Thema schon alt ist, möchte ich es mal fortsetzen.
Hat jemand schon die Temperatursensoren von Dallas erfolgreich mit einer S7 (welche auch immer) verbunden? Ich überlege gerade, ob ich auf analoge Sensoren zurückgreife, oder diesen Weg gehe.
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die DS1820 kannst du nicht direkt an eine RS232-Schnittstelle anschließen, denn die Sensoren laufen mit dem 1-Wire Bus der nicht kompatibel ist.
Es gibt aber von Dallas entsprechende Pegelwandler von RS232 auf 1-Wire (DS9097U), und ich habe auch schon Selbstbaulösungen gesehen. Ich kann aber nicht berichten wie gut diese funktionieren, da ich die Dallas Sensoren bisher nur über einen Mikrocontroller direkt über 1-Wire angesprochen habe.

Aber du wirst trotzdem noch einen Großteil der Kommunikation in der SPS ausprogrammieren müssen (Stichwort ROM-Codes der Sensoren auslesen, speichern etc.).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke,
das mit dem Schnittstellenumsetzer war mir bewusst. Bei den Sensor-IDs wollte ich "faul" sein, und vorher alles über den Rechner machen und in einem DB ablegen. "Nur" noch den Datenempfang soll die SPS übernehmen.
Schnittstellenwandler werd ich mir nen fertigen kaufen(kost ja nicht die Welt) und mal rumprobieren. CPU hätte ich erstmal ne 314ifm mit nem 340er RS232 CP.
Thomas
 
Hallo Thomas,

gibt's denn bei dir schon Erfolgsmeldungen betreffend deiner 1-Wire Sensoren.
Ich Arbeite auch seid kurzem wieder an einer Lösung über einen DS9097-U Adapter.Der auch soweit funktioniert wenn du ihn mit einer externen Spannung speist.Die einzigen Probleme die ich noch lösen muss sind,
1. beim auslesen kommt immer in 1. u 2.Byte AA 00 heist 85°C
(alles probiert parasitär und mit extern 5V)
2. das Schreiben in den REAL Wert , steh da gerade etwas auf dem Schlauch weil ich alles in SCL geschrieben habe.

Mein Ablauf sieht bis jetzt so aus:

1. SEND E3 C5 //RESET
RECV CD
2. SEND E1 CC 44 E3 C5 // TEMP-CONVERT
RECV CD
3. SEND E1 55 10 E1 08 01 00 22 17 22 // READ ID
RECV 55 10 E1 08 01 00 22 17 22
4. SEND BE FF FF FF FF FF FF FF FF FF // TEMPERTUR AUSLESEN
RECV BE AA 00 4B 46 FF FF 0C -> 85°C
dann geht von vorne los.

Verwende eine Cp340 mit Ascii Protokoll
9600 Baudrate
8Bit
1 Stopbit
keine Parität



Gruss Michael
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mein Ablauf sieht bis jetzt so aus:

1. SEND E3 C5 //RESET
RECV CD
2. SEND E1 CC 44 E3 C5 // TEMP-CONVERT
RECV CD
3. SEND E1 55 10 E1 08 01 00 22 17 22 // READ ID
RECV 55 10 E1 08 01 00 22 17 22
4. SEND BE FF FF FF FF FF FF FF FF FF // TEMPERTUR AUSLESEN
RECV BE AA 00 4B 46 FF FF 0C -> 85°C
dann geht von vorne los.

Was ist das denn für ein Ablauf? Ich habe meine DS1820 folgendermaßen ausgelesen (ohne parasite Power, mehrere DS1820 am Bus):

1. Master Reset
2. MATCH_ROM (0x55) senden
3. Seriennummer (8 Bytes) des gewünschten Sensors senden
4. CONVERT_T (0x44) senden
5. Warten bis Pin auf 1 wechselt, dann ist die Wandlung fertig
6. Master Reset
7. MATCH_ROM (0x55) senden
8. Seriennummer (8 Bytes) des gewünschten Sensors senden
9. READ (0xBE) senden
10. 8 Bytes vom Slave empfangen, Temperatur steht in den ersten beiden Bytes

Punkt 5 kannst du wahrscheinlich über deinen RS232-Wandler nicht durchführen, vielleicht mal probehalber eine kleine Verzögerungszeit einbauen?
 
Hallo ,

erstmal Danke für deinen Tip , ich hab auf die Aussage von dem aufgebaut.
http://www.ip-symcon.de/forum/f41/wago-1-wire-8880/index4.html

Ist den auch die aussage von dem Sendearray auch falsch ?
Für RESET
SENDEARRAY[1] := b#16#E3;
SENDEARRAY[2] := b#16#CD;
Sendelänge := 2;

oder TEMP_CONVERT
SENDEARRAY[1] := b#16#E1;
SENDEARRAY[2] := b#16#CC;
SENDEARRAY[3] := b#16#44;
Sendelänge := 3;

Und noch eine Frage, weil ich jetzt das ganze in Frage stelle.
Ich hab meinen Adapter genau so angschlossen wie bei einer WAGO
http://www.magnia.de/images/fbfiles/images/Skizze_Wago_750-530_auf_DS9097.png
Hab jetzt auch mal den Ablauf von dir genommen, kommt aber auch nur AA 00 raus.
Wäre schön wenn du mir da weiter helfen könntest.

Gruss Michael
 
Wie oben schon geschrieben spreche ich die Sensoren direkt an, ohne Umweg über diesen Umsetzer.
Gibt es denn entsprechende Steuerzeichen mit denen der Umsetzer z.B. ein Master-Reset erzeugt (bei dir 0xE3 0xCD)?

Mein beschriebener Ablauf steht auch so im Handbuch des DS1820.
Was mich stuztig macht ist dies hier:
Code:
4. SEND BE FF FF FF FF FF FF FF FF FF // TEMPERTUR AUSLESEN

Warum werden denn nach dem Read Befehl (0xBE) noch die 9 Bytes 0xFF gesendet? Naja, wenn es bei den anderen Leuten funktioniert scheint das wohl irgendeinen Sinn zu haben.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie oben schon geschrieben spreche ich die Sensoren direkt an, ohne Umweg über diesen Umsetzer.
Gibt es denn entsprechende Steuerzeichen mit denen der Umsetzer z.B. ein Master-Reset erzeugt (bei dir 0xE3 0xCD)?

Mein beschriebener Ablauf steht auch so im Handbuch des DS1820.
Was mich stuztig macht ist dies hier:
Code:
4. SEND BE FF FF FF FF FF FF FF FF FF // TEMPERTUR AUSLESEN
Warum werden denn nach dem Read Befehl (0xBE) noch die 9 Bytes 0xFF gesendet? Naja, wenn es bei den anderen Leuten funktioniert scheint das wohl irgendeinen Sinn zu haben.

Die FFs könnten reine Pausenfüller sein, wenn sie vom DS1820 ignoriert werden; also so eine Art definierte Wartezeit. Aber sicher bin ich da nicht.
 
Hallo,
im DS9097U ist ein DS2480B als Wandler eingebaut demzufolge ist im Datenblatt des DS2480 alles beschrieben.
Aber nun zu den 16#FF nach 16#BE:
mit 16#BE (Read Scratchpad) wird eine Leseanforderung gestartet und jedes 16#FF sagt, dass ein Byte gelesen werden soll , wenn du nur die Temperatur lesen möchtest, dann genügen 2 x 16#FF wenn du aber die CRC-Prüfsumme auswerten möchtst (oscat lib!), dann müssen 9 Byte gelesen werden also 9 x 16#FF.

mfg.
Rayk
 
Hallo,

ich hatte die wartezeit zu klein eingestellt steht jetzt auf 600ms.

Wenn ich euch noch um einen Gefallen bitten dürfte,
Ich scheitere immer noch beim schreiben in meinen DB als Real.
Geht das überhaupt mit SCL, es gibt gar kein DBD.

Wie kann man den so was umsetzen?

Sensordaten [Zeiger_Sensor].Temperatur:= Sensordaten [Zeiger_Sensor].Temperatur -0.25 + ((Empfangsdaten[7] - Empfangsdaten[6]) / Empfangsdaten[7]);

Gruss Michael
 
Hi,

wäre es möglich wenn es zu dem Thema eine kleine Anleitung (HowTo) als Zusammenfasung vom Thread-Ersteller zu bekommen?

Gruß.
 
Zuletzt bearbeitet:
Zurück
Oben