Multiwii Copter mit Sonar SR04

hanswerner1

Erfahrener Benutzer
#1
Hallo zusammen,

ich möchte meinen Quadcopter mit Sonar aufrüsten. Weis aber nicht genau wie ich das hinbekomme.

Ich habe ein Mega Board von diymulticopter.com mit I2C GPS. Als Sonar habe ich bereits einen SR04 mit folgenden Anschlüssen: VCC,GND, ECHO, TRIGGER. Als Software ist die Multiwii 2.1 dev 1240 auf dem Board. Ich habe irgendwo gelesen, das das Sonar folgendermassen angeschlossen werden soll:
VCC -> 5V
GND -> GND
ECHO -> D8
TRIGGER -> D12

Ist das richtig ?

Was muss ich in der Software noch einstellen ?

Ich habe im Sketch nichts von SR04 gefunden, nur SRF02, SRF08, SRF10 und SRF23

Ich habe bereits in verschiedenen Foren gesucht, aber noch nichts gefunden was mir konkret weiterhilft.

Vilele Grüße
HW1
 

hanswerner1

Erfahrener Benutzer
#3
Danke für die Info, hatte den Thread auch schon gefunden, leider komme ich da mit meinen Englischkenntnissen nicht richtig weiter.
 

Oti47

Erfahrener Benutzer
#4
Hi Hanswerner1,
ich versuche mich auch gerade an dem Thema.
Es scheint zwei Varianten zum Anschluss zu geben, einmal wie oben beschrieben direkt seriell und noch per I2C Bus.

Die Jungs aus dem Englischen Forum scheinen ein speziellen Sketch entwickelt zu haben.

Auszug: Du sollst aufpassen die Konfiguration gehört zu seinem Copter.
>updated code to r1240 with sr04/dypme007/echo-trigger generic driver
>be carefull, this is my current config.h, so check each define to adapt to your config
>if you want to merge change, take care of crappy piece of code added to "emulate" Baro mode presence without baro

Link auf den Sketch:
http://www.multiwii.com/forum/download/file.php?id=1616

Ich hab es noch nicht Ausprobiert.

Gruß
Oti
 

eXc

Erfahrener Benutzer
#5
Guten Morgen,

das mit den 2 Varianten ist richtig. Ich habe von ca. 1 Monat versucht das Sonar mit in den Sketch einzubinden und habe hierfür erstmal verschiedene Releases getestet. Leider habe ich mit meinem SR04 'im Flug' nicht das hinbekommen was am Boden funktionierte.
Bin dann wieder auf die offizielle 2.1 Version umgestiegen und werde demnächst nochmal einen Anlauf wagen. Eins kann ich dir aber direkt sagen, mit einem SR04 (der mit der Funktion //#define SONAR_GENERIC_ECHOPULSE angesprochen wird) wirst du nicht viel Freude haben, da es bei der seriellen Auswertung der Daten doch derbe zu Lags kommt.
Als nächstes probiere ich lieber einen SR08 aus, ist per I2C leichter einzubinden und resourcenschonender.

mfg Christian
 

hanswerner1

Erfahrener Benutzer
#6
Hi Chrstian,

du meinst das es mit einen SR04 keinen Sinn macht Sonar einzubinden und ich es lieber mit einer I2C Sonar versuchen soll.
Wie binde ich einen neuen Code in den Sketch ?

Gruß HW1
 

eXc

Erfahrener Benutzer
#7
Hi Chrstian,
du meinst das es mit einen SR04 keinen Sinn macht Sonar einzubinden und ich es lieber mit einer I2C Sonar versuchen soll.
Wie binde ich einen neuen Code in den Sketch ?
Gruß HW1
Sinn, weiß ich nicht. Klar kann man es damit machen, schon alleine weil das SR04 viel günstiger ist als die I2C Modelle. Werde mal versuchen in dieser Woche das auch in meinen aktuellen Code einzubinden. Dazu programmiert man das entweder selber, oder man vergleicht die Sketche und frickelt sich das zusammen.

mfg Christian
 
#8
Ich weiß altes thema aber mich würde brennend i teressieren ob ihr einen funktionstüchtigen code für das sr04 gebastelt habt ;)

Hat jemand einen code parat mit dem es zuverlässig funktioniert?


mal kurz noch ne verständnisfrage:
Ist das sonar dauerhaft am messen und es wird im althold modus aktiv für die höhenregulierung genutzt sobald das sonar werte aus dem definitionsbereich liefert?
werde aus dem code nicht recht schlau was es wann tut.

Beste grüße
 

cesco1

Erfahrener Benutzer
#9
Das wictige beim 04'er sonar ist es nicht auf das echo zu warten. Wenn man wartet funktioniert der flugcode nicht mehr.
Deshalb wird "echo" an einen pcint angehängt und die zeit wird mit micros() gemessen. Das funktioniert ganz gut.

Mein code: http://bcas.tv/paste/results/9IDp9g25.html

Braucht pin7 trig out, pin4 echo in. PPM oder serialrx, sonst kommen sich die pins in die quere. Distanz wird angezeigt, nicht für althold verwendet. Das war ein 328 oder ein 32u4 board, hab isch vergessen
 
#10
Hi vielen dank für die antwort.
würde das warten eine pause des gesamten rechenaparats bedeutet oder warum funktioniert der dann nicht mehr?

Was genau ist der pcint?

Schaue mir deinen code morgen mal genauer an;)
 
FPV1

Banggood

Oben Unten