Seite 1 von 3

Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 15 Apr 2017, 11:35
von davidrpf
Hallo zusammen,

im Rahmen meines Projekts, die Arduino Platform zur Steuerung von ft-Hardware zu benutzen (https://youtu.be/UdzuQfM4sNw) stellt sich mir die Frage, wie man die Fischertechnik Ultraschallsensoren auslesen kann. Ich besitze sowohl die erste, als auch die zweite Generation.

Zur Verschaltung (alte Generation mit zwei Steckern): Wie schließt man die an?

Zur Verschaltung (neue Generation mit +, - und Signalleitung: + / - ist klar, wird mit 5V / Ground verbunden und die Signalleitung wahrscheinlich mit einem GPIO (muss dieser analog sein?)

Zum Programm: Ich habe bereits einen Ultraschallsensor vom Typ HC-SR04 erfolgreich ausgelesen, das wird im Internet ja auch ausführlich dokumentiert. Ein GPIO wird zum Senden eines kurzen Pulses, der andere zum Empfangen des Pulses verwendet. Es gibt auch eine Variante, bei der man nach dem Senden von Output auf Input wechselt und so nur einen GPIO benötigt. Zumindest die neue Generation ähnelt von der Verschaltung her dem Typ HC-SR04. Wie liest man den ft-Sensor aus? Liefert er ein codiertes digitales oder analoges Ausgangssignal oder muss man am Arduino Differenzzeiten messen und diese in den Weg umrechnen wie beim Typ HC-SR04?

Hat jemand die Auslesung des Sensor schon einmal probiert? Für mich wäre es im Prinzip egal, ob es mit der alten oder der neuen klappt.

Konstruktive Grüße
David

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 15 Apr 2017, 15:14
von MasterOfGizmo
Das habe ich mich neulich auch gefragt, als ich den Ultraschallsensor am Bluetooth Smart Controller anschliessen wollte.

Man hört am TXT das regelmässige Messen des Sensors nur, wenn man auf Entfernungsmessung stellt. Es gibt nicht so schrecklich viel, was ein TXT aktiv an einem Eingang machen kann. Eigentlich kann er nur den Pullup aktivieren. Hast Du in Deinem Arduino die ft-üblichen zuschaltbaren Pullups? Kannst Du z.B. darüber eine Messung auslösen?

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 15 Apr 2017, 15:15
von ski7777
Dass es eine Initialisierung gibt, ist mit auch aufgefallen. Das Protokoll sieht nach UART aus.

Raphael

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 15 Apr 2017, 15:45
von MasterOfGizmo
"UART" hätte ich es zwar nicht genannt, aber ich denke ich weiss, was Du meinst. Es ist ein serielles digitales Signal. Wie bist Du denn darauf gekommen?

Der TXT aktiviert wie erwartet den Pullup und kurze Zeit später zieht der Sensor das Signal aktiv auf Masse und darauf scheint ein digitaler Messwert mit besagen ~8.5us/Bit zu folgen. Das ist zumindest was ich aus dem errate, was ich eben auf dem Oszilloskop gesehen habe. Raphael, wie hast Du das rausbekommen?

Edit: ~8.5us sind reichlich nah an 115200bit/s. Von daher ist tatsächlich auf Sensorseite ein UART im Spiel. Da frage ich mich ja noch mehr, wie Du drauf gekommen bist ....

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 15 Apr 2017, 21:44
von MasterOfGizmo
Hier mal zwei Screenshots vom Oszilloskop. Im ersten Bild war die Entfernung "maximal", also 1023cm, im zweiten war es irgendwas nahes.

Man sieht ganz links noch kurz, wie der Pegel auf ca. 3 Volt liegt, das scheint der Sensor zu machen. Dann schaltet der TXT seinen Pullup ein und das Signal geht auf gute 5V hoch. Dann passiert gute 100us nichts, bevor jemand das Signal auf Masse zieht. Das kann der TXT selbst m.E. nicht. Das muss dann also der Sensor sein. Nach 60-70us wird das Singnal wieder losgelassen. Nach nochmal 100us zieht es der Sensor wieder auf Masse. Was jetzt folgt sieht nach 115200 Bit/s aus.

Die Cursor befinden ich m.E. links eines Start und eines Stop-Bits, das wären 19 Bits bei 115200bit/s. Gehen wir von 8N1 aus, dann befinden sich zwischen beiden Cursor ein ganzes Byte (1 Start-, 8 Daten-, 1 Stoppbit) und eines ohne Stopp-Bit, weil das Stoppbit rechts des rechten Cursors ist. Also sendet der Sensor zwei Bytes. Also ich würde mal versuchen, den Sensor an den UART des Arduino anzuschließen.
ultrasonic_1023cm.jpg
ultrasonic_close.jpg

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 08:11
von chehr
Anbei Link mit ähnlichen Ergebnisse

viewtopic.php?f=8&t=2191&p=13729

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 09:46
von ski7777
Es ist kein Pullup, sondern eher ein Pulldown. bis ganz GND. Wenn man den Sensor mit Strom verbindet und das Datenkabel kurz an GND hält knackt er, wie im Betrieb.

Raphael

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 10:37
von davidrpf
Vielen Dank für die Antworten
ski7777 hat geschrieben:Es ist kein Pullup, sondern eher ein Pulldown. bis ganz GND. Wenn man den Sensor mit Strom verbindet und das Datenkabel kurz an GND hält knackt er, wie im Betrieb.
Diesen Eindruck habe ich auch. Ich habe am Arduino den Pin auf LOW geschaltet, dann kam eine Antwort, mit der ich bis jetzt aber noch nichts anfangen kann.

David

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 10:38
von ski7777
Kannst du mal versuchen die Daten als UART(115299,8,n,1) einzulesen und hier posten?

Raphael

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:09
von davidrpf
ski7777 hat geschrieben:Kannst du mal versuchen die Daten als UART(115299,8,n,1) einzulesen und hier posten?
Da der Sensor nur eine Ausgangsleitung hat, ist mir nicht ganz klar, wie ich ihn an RX/TX anschließen soll und welche Befehle zum Auslesen benötigt werden. Wie hast du das gemeint?

David

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:16
von ski7777
Du musst den Pin kurz auf Low setzen, dannach wieder open drain und dann per serial/softserial zwei bytes lesen.

Raphael

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:26
von MasterOfGizmo
Es gibt alles nötige Know-How in den Oszilloskop-Screenshots. Man muss den Sensor an einen Uart-Eingang am Arduino anschliessen, dann einen Pullup-Widerstand aktivieren, den uart des Arduino auf 115200 bit/s schalten und lesen.

Da wir alles aus den Screenshots ablesen können sollten wir m.E. auf das Know-How aus FT- und Knobloch-internen Dokumenten verzichten.

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:33
von davidrpf
MasterOfGizmo hat geschrieben:Da wir alles aus den Screenshots ablesen können sollten wir m.E. auf das Know-How aus FT- und Knobloch-internen Dokumenten verzichten.
Gibt es denn solche, die der Fangemeinde offenliegen?
Ich habe den Sensor geöffnet, um nach einer Artikelnummer zu suchen. Außer Knobloch.ws steht da aber nichts verwertbares.

David

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:35
von MasterOfGizmo
Ah, der TXT zieht den Eingang selbst gegen Masse? Dass das der TXT macht kann man aus den Screenshots leider nicht sehen. War mir auch nicht klar, das der TXT das kann.

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:37
von MasterOfGizmo
davidrpf hat geschrieben:Gibt es denn solche, die der Fangemeinde offenliegen?
Ja, diie Screenshots. Sie enthalten alles was man über die Datenübertragung wissen muss. Und wie man die Messung startet habt ihr ja auch heraus bekommen.

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:38
von davidrpf

Code: Alles auswählen

void setup() {
  Serial2.begin(115200);  
  Serial.begin(9600);
}

void loop() {
  // Pin 17 = RX Serial2 Arduino Mega
  pinMode(17, OUTPUT);
  pinMode(17, LOW);
  delay (10);
  pinMode(17, INPUT);
  i=0;

  if (Serial2.available() >= 1)
  {
    Rx_DATA[i++]=(Serial2.read());  
  }
  
  for (int j = 0; j < 16; j++)
  {
    Serial.print(Rx_DATA[j]);
  }
  Serial.println();

  delay(1000);
}
Ausgabe: 00000000 00000000

Was mache ich falsch?

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:43
von ski7777
Die 10 ist deutlich zuviel. Der Impuls sollte viel kürzer sein. Danach fängt der Sensor sofort an zu sprechen.

Raphael

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:45
von davidrpf
Es funktioniert auch mit deutlich kleineren Zeiten nicht (z.B. mit den 60-70 µs aus den Screenshots)
David

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:47
von ski7777
Kannst du mal versuchen, was passiert, wenn du beim serial einen pullup aktivierst?

Re: Fischertechnik Ultraschallsensor am Arduino auslesen

Verfasst: 16 Apr 2017, 11:52
von davidrpf
Gleiches Ergebnis.

Ich hab mal eine ISR geschrieben, die ähnlich wie das Oszilloskop die Zeiten zwischen den Flankenwechseln misst. Der Output sieht so aus (in Mikrosekunden)
104 (HIGH)
12 (LOW)
12 ...
44
20
16
16
16
12
20

Vertraut man auf die 115200, sollten der GGT aller Zeiten etwa 8,5µs sein, die gemessenen Zeiten Vielfache des GGTs. Doch schon allein das stimmt hier nicht.

Edit: Immerhin verändern sich die Werte, wenn man einen Gegenstand vor den Sensor hält: (bei 4cm)

100 (HIGH)
68 (LOW)
20 ...
16
16
44


David