SRF10 Ultraschall Entfernungssensor bestellt
Hi,
ich habe im Moment keinen GAIN vorbelegt.
Da sthet der SRF10 jetzt auf Standard.
Ich habe super Werte zwischen 34cm und 6cm
Da ich den Sensor aber mitten auf den Bot setzen will, relativiert sich der untere Bereich gegen 0.
Ich muss gleich erstmal zum Elektronik Dealer
Ich brauche eine Lochraster und ein paar Gewindebolzen.
Meine Idee, die vom Display weg machen, und statt des jeweils 3 kurze Bolzen einbauen, dann kann ich eine LP dazwischen bauen.
In die kommt dann mein Servo von Conrad und der I2C Bus.
Nach unten werde ich dann die Bolzen auch noch bauen, und auf dieser Ebene passt dann super mein Akku-Pack (eine Ebene) von Conrad.
Dann komme ich auch besser an den Maussensor
Gruß
Carsten
ich habe im Moment keinen GAIN vorbelegt.
Da sthet der SRF10 jetzt auf Standard.
Ich habe super Werte zwischen 34cm und 6cm
Da ich den Sensor aber mitten auf den Bot setzen will, relativiert sich der untere Bereich gegen 0.
Ich muss gleich erstmal zum Elektronik Dealer

Ich brauche eine Lochraster und ein paar Gewindebolzen.
Meine Idee, die vom Display weg machen, und statt des jeweils 3 kurze Bolzen einbauen, dann kann ich eine LP dazwischen bauen.
In die kommt dann mein Servo von Conrad und der I2C Bus.
Nach unten werde ich dann die Bolzen auch noch bauen, und auf dieser Ebene passt dann super mein Akku-Pack (eine Ebene) von Conrad.
Dann komme ich auch besser an den Maussensor

Gruß
Carsten
Wie funktioniert der Sensor denn? Sendet und empfängt der dauerhaft?3D kannst Du vergessen.
Der Schall wird sich überlagern.
Man könnte sonst doch 2 Sensoren abwechselnd toggeln, dass also immer nur einer zur Zeit sendet und empfängt. Und diesen einen fragt man ab, da der andere nur Schrott liefern würde.
Hi,
das könnte ein Weg sein.
Man muss die Messung auslösen.
Dazu schreibt man z.B. 0x51 (für cm) ins Regiester 0.
Dann muss man 65ms warten und kann aus Register 2 und 3 dann die Ergebnisse abholen.
Aber für 3D? Ich habe keine Vorstellung wie das gehen könnte!?!?
Gruß
Carsten
PS: Man kann (wenn man das Geld dafür hat) 16 SRF10 betreiben.
das könnte ein Weg sein.
Man muss die Messung auslösen.
Dazu schreibt man z.B. 0x51 (für cm) ins Regiester 0.
Dann muss man 65ms warten und kann aus Register 2 und 3 dann die Ergebnisse abholen.
Aber für 3D? Ich habe keine Vorstellung wie das gehen könnte!?!?
Gruß
Carsten
PS: Man kann (wenn man das Geld dafür hat) 16 SRF10 betreiben.
vermutlich geht das mit dem srf10 nicht
wir haben damals an de runi einen anderen benuzt.
der dauerhaft empfängt und sendet
und als result liefert der einen graphen an dessen kurve man objekt oberflächen erkennen konnte das ganze mit 2 sensoren
einen vertical und einen horizontal die 60 ° schwenken
wenn man nun alle graphen übereinander legt hat man eine art bild
vieleicht haben das manche schonmal in ner doku gesehen wo die den meeresboden vermessen
so als würde man nen maßband nehmen und von sich 10000 punkte messen und die entpunkte in ein koordinatensystem eintragen , natürlich unter der berücksichtigung des winkels damits korrekt bleibt ;D
wir haben damals an de runi einen anderen benuzt.
der dauerhaft empfängt und sendet
und als result liefert der einen graphen an dessen kurve man objekt oberflächen erkennen konnte das ganze mit 2 sensoren
einen vertical und einen horizontal die 60 ° schwenken
wenn man nun alle graphen übereinander legt hat man eine art bild
vieleicht haben das manche schonmal in ner doku gesehen wo die den meeresboden vermessen
so als würde man nen maßband nehmen und von sich 10000 punkte messen und die entpunkte in ein koordinatensystem eintragen , natürlich unter der berücksichtigung des winkels damits korrekt bleibt ;D
SRF10, I2C und Pull-up Widerstände
Hallo zusammen,
ich plane, mir ebenfalls einen SRF10 und evtl. ein SP03 zuzulegen. Nun lese ich in den Anleitungen folgendes: "Bei Verwendung des I2C-Bus ist darauf zu achten das ein Board am Bus über zwei Pullup-Widerstände (ca. 4,7k bis 10k) die Leitungen SCA und SDA auf High Pegel ziehen. SRF10 besitzt keine solchen Pullup-Widerstände...". Beim SP03 findet sich ähnliches. Dazu habe ich zwei Fragen:
1. Muss ich diese Widerstände irgendwo vorsehen und wenn ja, wo?
2. Wenn ich beide Module über den I2C-Bus betreiben will, wie müsste dann die Schaltung aussehen?
Viele Grüße, Marinero
ich plane, mir ebenfalls einen SRF10 und evtl. ein SP03 zuzulegen. Nun lese ich in den Anleitungen folgendes: "Bei Verwendung des I2C-Bus ist darauf zu achten das ein Board am Bus über zwei Pullup-Widerstände (ca. 4,7k bis 10k) die Leitungen SCA und SDA auf High Pegel ziehen. SRF10 besitzt keine solchen Pullup-Widerstände...". Beim SP03 findet sich ähnliches. Dazu habe ich zwei Fragen:
1. Muss ich diese Widerstände irgendwo vorsehen und wenn ja, wo?
2. Wenn ich beide Module über den I2C-Bus betreiben will, wie müsste dann die Schaltung aussehen?
Viele Grüße, Marinero
Hallo marinero,
auf dem c't-Bot befinden sich bereits die beiden Pull-Up Widerstände (R3 und R4 der LCD Porterweiterung).
Die Anbindung des SP03 erfolgt parallel an den gleichen Pins wie beim SRF-10 an J8 (I2C) und J3 (Stromversorgung).
siehe Bild
Gruß marvin
EDIT:
Ein weiteres Bild aus meiner Galerie zeigt die Verkabelung des SRF10 Sensors von oben.
Bild
auf dem c't-Bot befinden sich bereits die beiden Pull-Up Widerstände (R3 und R4 der LCD Porterweiterung).
Die Anbindung des SP03 erfolgt parallel an den gleichen Pins wie beim SRF-10 an J8 (I2C) und J3 (Stromversorgung).
siehe Bild
Gruß marvin
EDIT:
Ein weiteres Bild aus meiner Galerie zeigt die Verkabelung des SRF10 Sensors von oben.
Bild
Hallo zusammen,
so, der SRF10 ist montiert. Ich habe nun die neuesten Quellen aus dem CVS gezogen und SRF10_AVAILABLE gesetzt. Auf Screen 2 des Displays kann man dann ja unter US einen Wert ablesen. Der war zunächst immer 0 bei mir. Dann habe ich mal in srf10.c in [syntax="c"]srf10_get_measure()[/syntax] die Verzögerung von 10 auf 65 hochgesetzt: [syntax="c"]delay(65);[/syntax], d.h. das erste Warten nach der Messung bevor die Werte ausgelesen werden. Das hatte den Effekt, dass der Wert ab und zu von 0 auf einen Messwert springt. Ist das bei Euch auch so? Die Messwerte sind bis ca. 30 cm ok, dann eher unwahrscheinlich. Mein höchster Wert war bisher 60 cm, der Sensor soll ja bis 6 m messen können. Ist das bei Euch auch so? Kann man nicht auch größere Entfernungen messen?
Viele Grüße,
Marinero
so, der SRF10 ist montiert. Ich habe nun die neuesten Quellen aus dem CVS gezogen und SRF10_AVAILABLE gesetzt. Auf Screen 2 des Displays kann man dann ja unter US einen Wert ablesen. Der war zunächst immer 0 bei mir. Dann habe ich mal in srf10.c in [syntax="c"]srf10_get_measure()[/syntax] die Verzögerung von 10 auf 65 hochgesetzt: [syntax="c"]delay(65);[/syntax], d.h. das erste Warten nach der Messung bevor die Werte ausgelesen werden. Das hatte den Effekt, dass der Wert ab und zu von 0 auf einen Messwert springt. Ist das bei Euch auch so? Die Messwerte sind bis ca. 30 cm ok, dann eher unwahrscheinlich. Mein höchster Wert war bisher 60 cm, der Sensor soll ja bis 6 m messen können. Ist das bei Euch auch so? Kann man nicht auch größere Entfernungen messen?
Viele Grüße,
Marinero
Hi,Marinero hat geschrieben: Die Messwerte sind bis ca. 30 cm ok, dann eher unwahrscheinlich. Mein höchster Wert war bisher 60 cm, der Sensor soll ja bis 6 m messen können. Ist das bei Euch auch so? Kann man nicht auch größere Entfernungen messen?
du mußt ein wenig mit den parametern spielen.
Den optimalen habe ich auch noch nicht.
In der Anleitung sthet wo du drehen kannst.
Allerdings reicht mir der Wert, da ab 30cm, die vorhanden Sensoren ja gut arbeiten!
Gruß
Carsten
Hallo Carsten,
ich habe mal ein wenig herumexperimentiert.
Ergebnisse:
1. Ich habe nun dauerhaft Werte im Display, d.h. sie springen nicht mehr auf 0 zurück. Um das zu erreichen, habe ich in srf10_read_register ein while eingefügt, das das Programm warten läßt, bis die I2C Kommunikation erfolgreich war. Nicht schön, aber hilft erst einmal.
2. Ich habe in der bot-local.c zwei neue Konstanten für gain und range eingefügt. Der Sensor wird dann mit Hilfe dieser in bot_sens_init() in sensor-low.c initialisiert.
Die Änderungen am Code poste ich mal (patch).
Bilder zu meinen Versuchen habe ich in meiner Galerie abgelegt hier
und hier.
Bzgl. der Messung längerer Entfernungen muss man den Sensor wohl mit Tüllen versehen, da ansonsten Schall vom Boden reflektiert wird, der die Messung beeinflusst. Steht zumindest in dem Beitrag auf den die Spec. von Devantech hinweist.
Viele Grüße,
Marinero
ich habe mal ein wenig herumexperimentiert.
Ergebnisse:
1. Ich habe nun dauerhaft Werte im Display, d.h. sie springen nicht mehr auf 0 zurück. Um das zu erreichen, habe ich in srf10_read_register ein while eingefügt, das das Programm warten läßt, bis die I2C Kommunikation erfolgreich war. Nicht schön, aber hilft erst einmal.
2. Ich habe in der bot-local.c zwei neue Konstanten für gain und range eingefügt. Der Sensor wird dann mit Hilfe dieser in bot_sens_init() in sensor-low.c initialisiert.
Die Änderungen am Code poste ich mal (patch).
Bilder zu meinen Versuchen habe ich in meiner Galerie abgelegt hier
und hier.
Bzgl. der Messung längerer Entfernungen muss man den Sensor wohl mit Tüllen versehen, da ansonsten Schall vom Boden reflektiert wird, der die Messung beeinflusst. Steht zumindest in dem Beitrag auf den die Spec. von Devantech hinweist.
Viele Grüße,
Marinero
- Dateianhänge
-
- ct-Bot-patch-srf10.zip
- (1.51 KiB) 685-mal heruntergeladen