Sonarmodul an einem HK 328P FC with FTDI and DSM2 Port anschließen

Zuse

Erfahrener Benutzer
#2
meines Wissens - ich lasse mich liebend gerne anders belehren - wird das Sonar von der MultiWii noch garnicht unterstützt.
Zum reinen Spazierenfliegen wäre es dann egal, ob und wie angeschlossen :)

btw: ich suche auch schon länger sachdienliche Hinweise zum Thema Sonar bzw. HC-SR04 ...

Manfred
 

m2m

Erfahrener Benutzer
#4
btw: ich suche auch schon länger sachdienliche Hinweise zum Thema Sonar bzw. HC-SR04 ...
Vielleicht kann dir das helfen...

Tiny-GPS integrated into Multiwii (GPS/Sonar/Optical to I²C)
http://www.multiwii.com/forum/viewtopic.php?f=8&t=1549

wertarbyte/tiny-gps
https://github.com/wertarbyte/tiny-gps

"...Additionaly, a sonar device can be connected to PD2 (trigger) and PD6/ICP
(echo): when configured, the controller continuously uses the ultrasonic sensor
to measure the distance to any obstacle in direction of the device, which is
offered via TWI and presented in cm...
"

Auch wenn ich kein Sonar habe, konnte ich damit ein altes 1Hz serielles GPS an ne Multiwii anschliessen.
 
Zuletzt bearbeitet:

Nighthawk

Neuer Benutzer
#5
aber warum steht das Sonar in der config.h ?
siehe

/*************************** independent sensors ********************************/
/* leave it commented if you already checked a specific board above */
/* I2C gyroscope */
//#define WMP
//#define ITG3200
//#define L3G4200D
//#define MPU6050 //combo + ACC

/* I2C accelerometer */
//#define NUNCHUCK // if you want to use the nunckuk connected to a WMP
//#define MMA7455
//#define ADXL345
//#define BMA020
//#define BMA180
//#define NUNCHACK // if you want to use the nunckuk as a standalone I2C ACC without WMP
//#define LIS3LV02
//#define LSM303DLx_ACC
//#define MMA8451Q

/* I2C barometer */
//#define BMP085
//#define MS561101BA

/* I2C magnetometer */
//#define HMC5843
//#define HMC5883
//#define AK8975
//#define MAG3110

/* Sonar */ // for visualization purpose currently - no control code behind
//#define SRF02 // use the Devantech SRF i2c sensors
//#define SRF08
//#define SRF10
//#define SRF23

/* Generic sonar: hc-sr04, srf04, dyp-me007, all generic sonar with echo/pulse pin
default pulse is PH6/12, echo is PB4/11
*/
#define SONAR_GENERIC_ECHOPULSE
#define SONAR_GENERIC_SCALE 58 //scale for ranging conversion (hcsr04 is 58)
#define SONAR_GENERIC_MAX_RANGE 500 //cm (could be more)

/* ADC accelerometer */ // for 5DOF from sparkfun, uses analog PIN A1/A2/A3
//#define ADCACC

/* enforce your individual sensor orientation - even overrides board specific defaults */
//#define FORCE_ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = Y; accADC[PITCH] = -X; accADC[YAW] = Z;}
//#define FORCE_GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] = X; gyroADC[YAW] = Z;}
//#define FORCE_MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = Z;}

/* Board orientation shift */
/* If you have frame designed only for + mode and you cannot rotate FC phisycally for flying in X mode (or vice versa)
* you can use one of of this options for virtual sensors rotation by 45 deegres, then set type of multicopter according to flight mode.
* Check motors order and directions of motors rotation for matching with new front point! Uncomment only one option! */
//#define SENSORS_TILT_45DEG_RIGHT // rotate the FRONT 45 degres clockwise
//#define SENSORS_TILT_45DEG_LEFT // rotate the FRONT 45 degres counterclockwise
 

Kayle

Erfahrener Benutzer
#6
aber warum steht das Sonar in der config.h ?
siehe

/*************************** independent sensors ********************************/
/* leave it commented if you already checked a specific board above */
/* I2C gyroscope */
//#define WMP
//#define ITG3200
//#define L3G4200D
//#define MPU6050 //combo + ACC

/* I2C accelerometer */
//#define NUNCHUCK // if you want to use the nunckuk connected to a WMP
//#define MMA7455
//#define ADXL345
//#define BMA020
//#define BMA180
//#define NUNCHACK // if you want to use the nunckuk as a standalone I2C ACC without WMP
//#define LIS3LV02
//#define LSM303DLx_ACC
//#define MMA8451Q

/* I2C barometer */
//#define BMP085
//#define MS561101BA

/* I2C magnetometer */
//#define HMC5843
//#define HMC5883
//#define AK8975
//#define MAG3110

/* Sonar */ // for visualization purpose currently - no control code behind
//#define SRF02 // use the Devantech SRF i2c sensors
//#define SRF08
//#define SRF10
//#define SRF23

/* Generic sonar: hc-sr04, srf04, dyp-me007, all generic sonar with echo/pulse pin
default pulse is PH6/12, echo is PB4/11
*/
#define SONAR_GENERIC_ECHOPULSE
#define SONAR_GENERIC_SCALE 58 //scale for ranging conversion (hcsr04 is 58)
#define SONAR_GENERIC_MAX_RANGE 500 //cm (could be more)

/* ADC accelerometer */ // for 5DOF from sparkfun, uses analog PIN A1/A2/A3
//#define ADCACC

/* enforce your individual sensor orientation - even overrides board specific defaults */
//#define FORCE_ACC_ORIENTATION(X, Y, Z) {accADC[ROLL] = Y; accADC[PITCH] = -X; accADC[YAW] = Z;}
//#define FORCE_GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] = X; gyroADC[YAW] = Z;}
//#define FORCE_MAG_ORIENTATION(X, Y, Z) {magADC[ROLL] = X; magADC[PITCH] = Y; magADC[YAW] = Z;}

/* Board orientation shift */
/* If you have frame designed only for + mode and you cannot rotate FC phisycally for flying in X mode (or vice versa)
* you can use one of of this options for virtual sensors rotation by 45 deegres, then set type of multicopter according to flight mode.
* Check motors order and directions of motors rotation for matching with new front point! Uncomment only one option! */
//#define SENSORS_TILT_45DEG_RIGHT // rotate the FRONT 45 degres clockwise
//#define SENSORS_TILT_45DEG_LEFT // rotate the FRONT 45 degres counterclockwise
Hi,

das haste aber gelesen:

/* Sonar */ // for visualization purpose currently - no control code behind

Das Sonar hat keine Funktion außer das es Dir in der GUI angezeigt wird.

Gruß Kayle
 

Nighthawk

Neuer Benutzer
#9
Ja hab ich gelesen, dass es nur erst mal nur für die GUI ist.
aber wie in dem Link von m2m zu lesen ist tüfteln ja schon so einige an einem funktionierendem Code.
hab ja schon ein paar Nächte in den ganzen Beiträgen verbracht.
aber ich hab nichts über den Hardwaremäßigen Anschluss des Moduls auf mein Board gefunden.
wenn das ding endlich am Board hängt könnte ich mich auch mal um den Code kümmern.
 

Zuse

Erfahrener Benutzer
#10
moin,
ich habe gestern abend die Infos im Link von m2m mehr quer gelesen;
hängen geblieben ist erst einmal, dass die üblichen Standardroutinen für das Sonar, so wie sie allerortens im Netz herumgeistern, im Timing kritisch sind, wenn dann noch die eigentliche Aufgabe einer FC, das Stabilisieren, erledigt werden soll ...
erst die interruptgesteuerte Behandlung des Trigger- bzw. des Echo-Pins kann hier für klare Zeitverhältnisse sorgen.
An welchem Pin des Atmega 328 nun steigende und fallende Flanken interruptauslösend sind und ob diese Pins z.B. auf meiner MWC Flip 1.5 überhaupt (noch) zur Verfügung stehen, muss ich mir erst "erarbeiten".
Btw: im Arduinoumfeld gab es schon frühzeitig die Feststellung, dass der HC-SR04 erst mit interruptgesteuerten Routinen den vollen Messumfang liefern kann.

Davon ganz abgesehen:
selbst wenn das Sonar dann irgendwann saubere Messwerte liefert, egal wie und an welchen Pins angeschlossen, weiß ich hier und jetzt noch nicht, wo der Meßwert dann zur Höhenregelung einfließt und ob für das ganze Prozedere grundsätzlich auch ein Barometer mit dabei sein _MUSS_ ...
Und das gilt ebenso für mein einzelnes Exemplar eines HC-SR04 mit I2C-Backplane, auf der die gesamte Signalverarbeitung unabhängig von der FC erledigt wird.

Schönen Sonntag (und alle südlich vom Main: wählen nicht vergessen :) )
Manfred
 

Roberto

Erfahrener Benutzer
#11
.... wo der Meßwert dann zur Höhenregelung einfließt und ob für das ganze Prozedere grundsätzlich auch ein Barometer mit dabei sein _MUSS_ ...
Manfred
Und das ist m.E die entscheidene Frage. Wie hätte man es denn gern von der Logik umgesetzt? Hüpfen über Bäume? Wenn das einmal klar ist, ist das in 3 Tagen inkl. Testen programmiert. Da Mwii das aber schon 1,5 Jahre lang nicht erledigt hat, besteht dort kein Interesse.
 

Zuse

Erfahrener Benutzer
#12
Und das ist m.E die entscheidene Frage. Wie hätte man es denn gern von der Logik umgesetzt? Hüpfen über Bäume? Wenn das einmal klar ist, ist das in 3 Tagen inkl. Testen programmiert...
hallo Robert,
schön, dass Du Dich hier auch noch herumtreibst :)

Hast Du dieses Thema nicht schon in 32Bit im "Naze-Umfeld" längst erledigt?
Wenn ja, wie ist dort welche Logik umgesetzt?

Du schriebst:
Da Mwii das aber schon 1,5 Jahre lang nicht erledigt hat, besteht dort kein Interesse.
selbst wenn _dort_ vorgeblich kein Interesse besteht, schliesst es doch nicht aus, es trotzdem anzupacken, oder? :)

Gruss
Manfred
 

Roberto

Erfahrener Benutzer
#13
@Zuse: Ich hatte mir verschiedene Logiken angeschaut, aber irgendwie war das nicht so dass, was mir vorschwebte.
Die Idee war eigentlich mit dem Sonar das bestehende Baro/Acc Gefüge zu erweitern und das Sonar als "Stand alone" nicht zu berücksichtigen.
Die Umsetzungs ist eigentlich nicht sonderlich kompliziert.
Wenn ein solider Sonarkontakt vorliegt (bei mir >550ms - muss grösser sein, als die Überbrückungszeit s.u), dann errechne einen Offset zur aktuellen Baro/Acc Höhe - dann kann man direkt die Sonardaten(offset korrigiert) mit der Barohöhe zusammenwürfeln (mit einem Gewichtungsfaktor) und in den Mittelwertfilter geben. Bei Sonarkontaktverlust werden maximal 5 fehlerhafte Durchläufe mit den letzten intakten Sonardaten Daten überbrückt (für maxbotix sind das 100ms * 5 = 500ms, das HC ist schneller, hat aber andere Nachteile), bevor wieder auf die Baro/Acc Höhe umgeschaltet wird (Sinn: kurzer Signalverlust über Grass usw). Dadurch ist der Übergang fliessend und es entstehen keine krassen Sprünge. Wenn ein Sonarkontakt besteht, wird nicht gesprungen und der Oberfläche so weit gefolgt (z.B Treppensteigen, Flug über Hausdach) bis der Sonarkontakt wieder abreisst, dann geht es einfach mit dem Baro weiter (kein Sprung).
Tja, das ist auch schon die simple Logik dahinter.
EDIT: Die Autolandung wird auch durch das Sonar unterstützt, ist aber nicht unbedingt erforderlich. Die angegebenen Maximalhöhen beim Sonar sind theoretisch, praktisch kann man mit einer brauchbaren Funktion bis halber Maximalhöhe rechnen.
EDIT:EDIT: Leider habe ich keine Mwii mehr flugfähig am Start.

LG
Rob
 
Zuletzt bearbeitet:
FPV1

Banggood

Oben Unten