Jump to content

RS232 mit Ultraschallsensor


gus484
 Share

Recommended Posts

Hallo,

 

ich möchte meine Geräteschuppen-Temperaturüberwachung erweitern und den Füllstand der eingegrabenen Zisterne messen. Dazu habe ich entsprechende Ultraschallsensoren gefunden und zwar konkret den MaxBotix MB7369. Der Sensor hat eine RS232-Schnittstelle, welche sich prima mit dem entsprechenden Bricklet verbinden ließe. Allerdings bin ich mir nicht ganz sicher, ob das wirklich kompatibel ist, weil in der Beschreibung des Sensors etwas von "inverted serial output" und einem IC Max232 steht und ich damit nicht viel anfangen kann. Hat jemand schon mal so einen Sensor angeschlossen oder kann einen kurzen Blick darüber werfen, ob es zusammen funktioniert?

 

Datenblatt

Schnittstellen-Beschreibung

 

Viele Grüße

gus484

Link to comment
Share on other sites

Richtiges RS232 arbeitet mit bis zu +15V und -15V für 0 und 1. Es gibt dann noch RS232 für TTL mit 0V für 0 und +3,3V oder +5V für 1. Der MAX232 IC kann dazwischen umwandeln. Das RS232 Bricklet kann mit beidem umgehen, es hat so einen Umwandler-IC integriert.

 

Wenn ich das richtig verstehe, dann spricht der MB7369 vereinfachtes RS232 mit +15V für 0 und 0V für 1. Die Beschreibung spricht da von Invertieren, weil RS232 +15V für 0 und -15V für 1 verwendet, RS232 für TTL 0V für 0 und +3,3V oder +5V für 1.

 

Du solltest den MB7369 einfach an den D-Sub 9 Stecker oder die Schraubklemmen anschließen können. Du brauchst in keinem Fall einen MAX232 IC für die Verwendung mit dem RS232 Bricklet.

Link to comment
Share on other sites

  • 2 months later...

Hallo,

 

inzwischen habe ich den Sensor bekommen und an das RS232-Brickelt angeschlossen. Soweit funktioniert alles wie gewünscht und ich bekomme die Distanz-Werte :) Beim Proggen ist mir allerdings etwas aufgefallen. Mein Programm wird jede Stunde automatisch gestartet (Sensor und Bricklet laufen permanent) und wenn ich dann mit read() die Nachricht vom Bricklet lese, befinden sich dort noch alte Messwerte drin. Es scheint, als werden sie solange im Speicher gehalten, bis ich sie alle gelesen habe. Ich habe es erst einmal so gelöst, dass ich vor jeder Messung solange read() rufe, bis keine Nachrichten mehr vorhanden sind, also read() die Länge 0 liefert. Danach warte ich einen Augenblick und hole mir mit read() die aktuellen Daten. Gibt es eine Möglichkeit, durch einen Funktionsaufruf auf dem Bricklet alle gespeicherten Nachrichten zu löschen? In der Api(Python) habe ich dazu nichts entdeckt.

 

Viele Grüße

gus484

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...