Fischertechnik Ultraschallsensor am Arduino auslesen

Alles rund um COMPUTING inkl. Microcontroller & Co.
Everything about COMPUTING incl. Microcontrollers
Forumsregeln
Bitte beachte die Forumsregeln!

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon MasterOfGizmo » 16 Apr 2017, 14:29

Na wenn Du sich verändernde Werte hast bist Du doch echt nah dran. Dann kommen jetzt die üblichen verdächtigen wie andere Interrupt-Routinen oder Du triggerst nicht auf beide Flanken (dazu musst du m.E. im ISR die Polarität umschalten). Oder Du gibst die Werte während des Empfangs aus und verpasst die Hälfte, weil die Ausgabe natürlich mit 9600bit/s eeeeewig dauert .... aber der Uart sollte eigentlich am besten geeignet sein.
MasterOfGizmo
 
Beiträge: 924
Registriert: 30 Nov 2014, 08:44

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon ski7777 » 16 Apr 2017, 14:37

Wie sieht denn dein aktueller Schaltplan und das Skript aus? Vielleicht könnte ich so auch mal versuchen die richtigen Werte zu bekommen.

Raphael
ski7777
 
Beiträge: 596
Registriert: 22 Feb 2014, 15:18
Wohnort: Saarwellingen
Alter: 15

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon davidrpf » 16 Apr 2017, 20:36

Hallo zusammen,

Ich denke den Grund gefunden zu haben, weshalb es die ISR unzuverlässige Werte anzeigt. Nick Gammon beschreibt auf seiner Website (http://gammon.com.au/interrupts), dass das bloße Starten und Beenden einer ISR auf einem 16Mhz Board etwas mehr als 5µs erfordert. Dazu kommt die Zeit des Zugriff auf die Long Variable micros, der nochmals mehrere Takte des Prozessors in Anspruch nimmt. Bei etwa 8,5µs pro Bit ist eine solche Ungenauigkeit fatal und die ISR disqualifiziert sich zur Auswertung. In der Vergangenheit hat auch die serielle Datenübertragung bei einer Baudrate von 115200 häufig Probleme bereitet.
Ich werde die Auswertung nochmals in Angriff nehmen, sobald ich ein schnelleres Board habe. Angesichts der Komplexität des ft Ultraschallsensors denke ich, dass man mit einem hc-sr04 bei Arduino Boards in einem 3d gedruckten Gehäuse besser bedient ist.

Trotzdem vielen Dank für eure Hilfe.

@ ski7777: Ich schicke eine PN

David
davidrpf
 
Beiträge: 106
Registriert: 14 Jul 2015, 14:27

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon davidrpf » 20 Apr 2017, 14:29

Hallo zusammen,

nach etwas Probieren hat die Dekodierung des Sensor funktioniert!

Versuchsaufbau: Die 16 MHz Arduinos sind für 115200Baud zu langsam, nicht aber ihr UART / USB Wandler. Daher triggert ein Arduino den Sensor, ein zweiter Arduino gibt seine TX Datenleitung frei. Putty empfängt das UART Signal bei 115200 Baud 8n1, der OUTPUT sieht so aus (Anhang).
Interpretation des Output: Das Pixelwirrwarr ist für mich wertlos, es kommt auf die Buchstaben bzw. Zeichen an. Man kann sie in einer Unicodetabelle http://www.utf8-chartable.de/ nachschlagen, ihren HEX-Code in einen Dezimalwert umrechnen und siehe da, das Ergebnis gibt die Entfernung in cm an.

Edit: es gibt noch zwei Probleme:
1. Da die UTF8 Tabelle erst mit 0x20 beginnt, können kleinere Werte aus den Buchstaben nicht interpretiert werden (Abhilfe schafft ein HEX-Editor, das ist aber mehr Aufwand)
2. Selbiges gilt für den Zahlenbereich jenseits von 0x7e (größere Werte)

Konstruktive Grüße
David
Dateianhänge
PuttyOutputUltraschallsensor.jpg
Puttyausgabe
davidrpf
 
Beiträge: 106
Registriert: 14 Jul 2015, 14:27

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon ski7777 » 20 Apr 2017, 15:09

Könntest du mal einige Werte vom UART Wandler mit dem Maß in cm hier posten?

Raphael
ski7777
 
Beiträge: 596
Registriert: 22 Feb 2014, 15:18
Wohnort: Saarwellingen
Alter: 15

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon davidrpf » 20 Apr 2017, 15:27

ski7777 hat geschrieben:Könntest du mal einige Werte vom UART Wandler mit dem Maß in cm hier posten?


Du musst nur den Putty-Screenshot anschauen. Die Buchstaben kannst du in einer UTF8 Tabelle nachschlagen, der HEX-Wert in Dezimal umgerechnet entspricht der Entfernung in cm. Die Genauigkeit unterscheidet sich nicht zu TX(T) Messungen

David
davidrpf
 
Beiträge: 106
Registriert: 14 Jul 2015, 14:27

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon ski7777 » 20 Apr 2017, 15:28

Ich brauche aber immer zwei Bytes
ski7777
 
Beiträge: 596
Registriert: 22 Feb 2014, 15:18
Wohnort: Saarwellingen
Alter: 15

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon davidrpf » 20 Apr 2017, 15:54

Okay, hier ist ein Screenshot aus dem HEX Editor

David
Dateianhänge
hex.png
Hex-werte
davidrpf
 
Beiträge: 106
Registriert: 14 Jul 2015, 14:27

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon MasterOfGizmo » 20 Apr 2017, 17:58

Der UART des Arduino sollte mit 115200 bit/s halbwegs klarkommen. Bei der Datenrate liegt er zwar wegen seines 16Mhz-Quarzes ein paar Prozent daneben, aber das sollte nicht dazu führen, dass Du gar nichts empfängst.
MasterOfGizmo
 
Beiträge: 924
Registriert: 30 Nov 2014, 08:44

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon H.A.R.R.Y. » 21 Apr 2017, 08:36

Hallo zusammen,

ich lese hier ja schon ein Weilchen mit. Euer Problem mit der einen Leitung verstehe ich nicht ganz. Auch nicht warum ein zweiter Arduino her muß. Mein Vorschlag (wenn der Arduino die Ressourcen her gibt, ich nehme für sowas gerne den "nackten" AVR):
Die Datenleitung zum/vom US-Sensor an den RXD des AVR anhängen. Hardware UART aktivieren und notfalls den Quarz austauschen um die 115200 hinzubekommen (da gibt es im Datenblatt jedes AVR so eine Tabelle).
Eine zweite Leitung irgendeines Ports wird mit dieser RXD-Leitung verbunden. Im Datenrichtungsregister des Ports schreibt man eine '0' an die entsprechende Stelle und im Datenregister eine '1' (Reihenfolge ist wichtig). So ist die Leitung als 'Pullup' konfiguriert. Zum Start der Messung schreibt man in dann eine '0' ins Datenregister und eine '1' ins Datenrichtungsregister. Jetzt zieht er runter. Nach einer kurzen Zeit schaltet man auf 'Pullup' zurück. Da ich meist keine Lust auf die Hantiererei an Datenregister plus Datenrichtungsregister habe, spendiere ich einen externen Pullup-Widerstand. Im Datenregister steht fix '0' auf dem entsprechenden Bit und die Schalterei (auf GND ziehen / hochohmig) erledige ich ausschließlich im Datenrichtungsregister. Diese Lösung geht eigentlich immer.

Eventuell ist es beim AVR im Arduino auch möglich den Port an den auch der RXD des UART geht per Software zu schalten wenn der UART aktiviert ist. Extern den Widerstand dran und der Rest s.o.

Für die AVRs gibt es auch libs mit denen man Variablenwerte (also deren Bitmuster) wunderschön in Klarschrift ans Terminal schicken kann. Nehmt ihr C? WinAVR?

Gruß
H.A.R.R.Y.
SURVIVE - or die trying
H.A.R.R.Y.
 
Beiträge: 692
Registriert: 01 Okt 2012, 08:38
Wohnort: Westpfalz

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon davidrpf » 21 Apr 2017, 12:16

H.A.R.R.Y. hat geschrieben:Auch nicht warum ein zweiter Arduino her muß.


Du hast recht, der zweite Arduino ist wirklich nicht nötig. Mein Ansatz war eben, den UART auf USB Wandler des Arduinos zu benutzen, mit Putty den Sensor auszulesen. Und dann hab ich nachträglich mit einem anderen Arduino den Sensor auf 0 V geschalten, um den Versuchsaufbau nicht zu verändern müssen. Das kann ich aber auch mit einem Arduino umsetzen.

Gruß, David
davidrpf
 
Beiträge: 106
Registriert: 14 Jul 2015, 14:27

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon H.A.R.R.Y. » 21 Apr 2017, 12:33

Ach so!
Du hast den USB-2-RS232-TTL (einzeln heißt sowas RS232-Dongle) vom Arduino "ausgeliehen" und der Sensor schickt direkt zum USB. Ah, jetzt ja. Dann nutzen irgendwelche AVR-libs à la printf("%n",variable) natürlich nix.

Was für ein AVR sitzt auf dem Arduino? Einer der eventuell 2 UARTs an Bord hat?
Oder Du koppelst zwei Arduinos per SPI. Einer unterhält sich mit dem Sensor und schiebt die Daten rüber, der andere unterhält sich mit dem PC und konvertiert die Daten in Klarschrift bevor er sie auf die Reise schickt. Dann wird das mit dem Sensor auslesen per PuTTy auch angenehmer. Nur falls das noch interessant ist. An sich ist die Frage nach dem "Wie" ja schon von euch geklärt worden.

Gruß
H.A.R.R.Y.
SURVIVE - or die trying
H.A.R.R.Y.
 
Beiträge: 692
Registriert: 01 Okt 2012, 08:38
Wohnort: Westpfalz

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon MasterOfGizmo » 21 Apr 2017, 16:04

H.A.R.R.Y. hat geschrieben:USB-2-RS232-TTL (einzeln heißt sowas RS232-Dongle)


RS232 _oder_ TTL. Genau das sollte man nicht verwechseln. RS232 bedeutet +/-12V. Wenn man das an den FT-Sensor anschließt macht man ihn ggf kaputt.
MasterOfGizmo
 
Beiträge: 924
Registriert: 30 Nov 2014, 08:44

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon H.A.R.R.Y. » 21 Apr 2017, 20:58

MasterOfGizmo hat geschrieben:RS232 _oder_ TTL. Genau das sollte man nicht verwechseln. RS232 bedeutet +/-12V. Wenn man das an den FT-Sensor anschließt macht man ihn ggf kaputt.

Grundsätzlich und uneingeschränkt richtig. Und außerdem sind die Pegel dann obendrein auch noch invertiert! '1' = -12V und '0' = +12V. Selbst wenn der µC die Mißhandlung überlebt wird das nicht funktionieren.

Nur ist mittlerweile im 'Neusprech' auch die Bezeichnung "RS232-TTL" eingebürgert. Soll auf die Art andeuten, daß es sich um die serielle Schnittstelle aber mit Logikpegeln anstelle den +/-12V handelt. Bei UART denke ich immer sofort an die Hardware-Baugruppe der AVRs.

Gruß
H.A.R.R.Y.
SURVIVE - or die trying
H.A.R.R.Y.
 
Beiträge: 692
Registriert: 01 Okt 2012, 08:38
Wohnort: Westpfalz

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon ski7777 » 10 Mai 2017, 21:25

Könntest du mal Werte von 4m bis 1cm posten? Also die Maximalwerte und einige dazwischen (am Besten mit grober Angabe in cm). Vielleicht lässt sich ja ein Zusammenhang feststellen.
ski7777
 
Beiträge: 596
Registriert: 22 Feb 2014, 15:18
Wohnort: Saarwellingen
Alter: 15

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Beitragvon davidrpf » 11 Mai 2017, 18:05

ski7777 hat geschrieben:Könntest du mal Werte von 4m bis 1cm posten? Also die Maximalwerte und einige dazwischen (am Besten mit grober Angabe in cm). Vielleicht lässt sich ja ein Zusammenhang feststellen.


Ich habe im Moment keinen geeigneten Versuchsaufbau, um die Messreihe zu starten. Ich werde die Werte posten, sobald ich sie mit einem schnelleren Arduino nochmals ausgelesen habe.

Gruß
David
davidrpf
 
Beiträge: 106
Registriert: 14 Jul 2015, 14:27

Vorherige

Zurück zu Robo Pro / Computing / Software

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast