Fischertechnik Ultraschallsensor am Arduino auslesen
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
Fischertechnik Ultraschallsensor am Arduino auslesen
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
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
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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?
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?
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Dass es eine Initialisierung gibt, ist mit auch aufgefallen. Das Protokoll sieht nach UART aus.
Raphael
Raphael
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
"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 ....
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 ....
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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.
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.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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
Raphael
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Vielen Dank für die Antworten
David
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.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.
David
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Kannst du mal versuchen die Daten als UART(115299,8,n,1) einzulesen und hier posten?
Raphael
Raphael
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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?ski7777 hat geschrieben:Kannst du mal versuchen die Daten als UART(115299,8,n,1) einzulesen und hier posten?
David
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Du musst den Pin kurz auf Low setzen, dannach wieder open drain und dann per serial/softserial zwei bytes lesen.
Raphael
Raphael
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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.
Da wir alles aus den Screenshots ablesen können sollten wir m.E. auf das Know-How aus FT- und Knobloch-internen Dokumenten verzichten.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Gibt es denn solche, die der Fangemeinde offenliegen?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.
Ich habe den Sensor geöffnet, um nach einer Artikelnummer zu suchen. Außer Knobloch.ws steht da aber nichts verwertbares.
David
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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.
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
- MasterOfGizmo
- Beiträge: 2720
- Registriert: 30 Nov 2014, 07:44
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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.davidrpf hat geschrieben:Gibt es denn solche, die der Fangemeinde offenliegen?
Arduino für fischertechnik: ftDuino http://ftduino.de, ftDuino32 http://ftduino.de/32
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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);
}
Was mache ich falsch?
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Die 10 ist deutlich zuviel. Der Impuls sollte viel kürzer sein. Danach fängt der Sensor sofort an zu sprechen.
Raphael
Raphael
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Es funktioniert auch mit deutlich kleineren Zeiten nicht (z.B. mit den 60-70 µs aus den Screenshots)
David
David
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
Kannst du mal versuchen, was passiert, wenn du beim serial einen pullup aktivierst?
Re: Fischertechnik Ultraschallsensor am Arduino auslesen
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
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