MultiWii Reset beim Flug

MoD

User
Hallo liebe Kopter-Freunde,

ich habe nach mehr als fünzig erfolgreichen absturzfreien Flügen leider eine kleine Pechsträhne.
Mittlerweile hat sich mein Kopter (MultiWii Vers. 1.9) zum dritten mal im Flug abgeschaltet.
Alle vier Motoren gingen aus und die "Segelflugphase" begann. Zum Glück war der Acker immer
Weich und es sind nur Propeller kaputt gegangen und sonst nichts, auch wenn man bei
dem ein oder anderen Einschlag schon schlimmeres vermutet hätte.

Nach dem zweiten Absturz habe ich den Arduino Pro Mini getauscht und das BEC eines
anderen der vier Regler verwendet. Leider brachte dies keine Besserung,
denn heute ist er wieder runter gekommen.

Eben wurde dann die Elektronik über einen separaten LM7805 direkt aus dem Akku versorgt
und das BEC aus dem Regler abgeklemmt. Die Regler sind jetzt nur noch über die Signalleitung
mit der Elektronik verunden und haben Masse über den Akkuanschluss.
Sämtliche Lötstellen wurden nachgelötet, der Beschleunigungssensor BMA020 wurde ausgebaut.
Mit laufenden Motoren wurde geschüttelt, gerüttelt und geklopft.
Selbst der Reset-Button auf dem Arduino wurde ausgelötet (etwas paranoid, aber sicher ist sicher).
Das Verhalten bei Ausfall des WiiMotionPlus Gyros wurde durch Ablöten während des "simulierten" Fluges
getestet. Ergebnis war weiterhin laufende Motoren und Reaktion auf Steuerbefehle.
Aufgebaut ist der Kopter sehr sauber!

Merkwürdigerweise lagen zwischen den Aufällen immer zwei bis drei erfolgreiche Flüge ohne Fehler,
dann kam der Reset in der Luft. Bei einem Ausfall fiel er direkt auf die Kufen und konnte OHNE Abstecken
des Akkus direkt wieder gestartet werden (weiterer Flug dann in Kniescheibenhöhe).

Nach meine heutigen Änderungen habe ich vor der Dunkelheit zwei sehr schöne Flüge absolviert.
Hoffentlich ist der Fehler nun weg, aber da er nur sporadisch aufgetreten ist, kann ich mir noch nicht sicher sein.

Kennt jemand von euch ein ähnliches Verhalten/Fehler?
Kann es eventuell auch eine Fehler in der Software sein?
Würde mich über Tipps freuen.
 

Crizz

User
Hast du am Boden bei deinen Tests mal den PC angeschlossen gehabt und die GUI beobachtet, ob in Debug2 die Fehlerzahl hochläuft ? Dann wäre ein Fehler auf dem I2C-Bus vorhanden, den es zu finden gilt.
Wie hast du den Copter eingestellt ? So das die Motoren beim schrafschalten laufen oder erst wenn auch etwas Gas gegeben wird ?

Ich stelle diese Fragen um ausschließen zu können, das du bei einem Manöver versehentlich den Copter "unscharf" geschaltet hast, so das die Motoren ausgegangen sind.
 

kalle123

User
Du hast sowas auf dem copter, wenn du fliegst?!
 

Anhänge

  • alarm.jpeg
    alarm.jpeg
    7,2 KB · Aufrufe: 36

MoD

User
Hallo Crizz,
der I2C Bus ist vollkommen i.O. Die Fehlerzahl bleibt brav bei 0.
Die Motoren laufen, sobald man durch Gas auf 0 und Gier auf voll rechts scharf schaltet.
Beim ersten Ausfall war der Gasknüppel auf etwa 3/4 der Maximalstellung,
daher kann ein versehentliches Abschalten ausgeschlossen werden.
 

hebo

User
Hast du mal deinen Empfänger Überprüft ?
Fliegst du mit oder ohne Fail-Safe?
Wenn die Ursache am Empfänger liegt und kein Fail-Safe Eingestellt ist, dann war es bei mir so das bei Empfangsverlust zuerst eine Kurzen Gas Schub gab und dann die Motoren Abgeschaltet haben, der Rest ist dann wenig Segelflug und Viel Einschlag

Gruß
Elmar
 

kalle123

User
Elmar, das wäre eine mögliche Ursache.

Vielleicht verrät uns der thread Starter, welches Equipment er verwendet.

Reichweitentest!?

Gruß KH
 

MoD

User
Hallo HK, hallo Elmar,

leider liegt es nicht am Failsafe. Ich benutze eine Multiplex 3030 mit M-Link 2,4 GHz.
Dazu passend ein M-Link Empfänger RX-6 DR light ebenfalls von Multiplex.
Failsafe wurde bewußt nicht am Empfänger aktiviert, denn die MultiWii Software merkt den Empfangsverlust
und schaltet bei vorhanden ACC den stabilen Modus ein. Wurde eben von mir getestet.

Code:
/* Failsave settings - added by MIS
   Failsafe check pulse on THROTTLE channel. If the pulse is OFF (on only THROTTLE or on all channels) the failsafe procedure is initiated.
   After FAILSAVE_DELAY time of pulse absence, the level mode is on (if ACC or nunchuk is avaliable), PITCH, ROLL and YAW is centered
   and THROTTLE is set to FAILSAVE_THR0TTLE value. You must set this value to descending about 1m/s or so for best results. 
   This value is depended from your configuration, AUW and some other params. 
   Next, afrer FAILSAVE_OFF_DELAY the copter is disarmed, and motors is stopped.
   If RC pulse coming back before reached FAILSAVE_OFF_DELAY time, after the small quard time the RC control is returned to normal.
   If you use serial sum PPM, the sum converter must completly turn off the PPM SUM pusles for this FailSafe functionality.*/
#define FAILSAFE                                  // Alex: comment this line if you want to deactivate the failsafe function
#define FAILSAVE_DELAY     10                     // Guard time for failsafe activation after signal lost. 1 step = 0.1sec - 1sec in example
#define FAILSAVE_OFF_DELAY 200                    // Time for Landing before motors stop in 0.1sec. 1 step = 0.1sec - 20sec in example
#define FAILSAVE_THR0TTLE  (MINTHROTTLE + 250)    // Throttle level used for landing - may be relative to MINTHROTTLE - as in this case

Angeschlossen ist der Empfänger mit einzelnen Servo-Patchkabeln.
Habe eben noch zwei Flüge gemacht und hatte keine Probleme.
Das Ärgerliche ist, dass die Fehlerursache nicht genau bekannt ist,
denn eine Rekonstruktion des Herganges war mir nicht möglich.
Ich habe immernoch das BEC des Reglers Suppo 25A unter Verdacht,
auch wenn ich zur Versorgung des Arduinos nacheinander zwei verschiede
Regler verwendet habe. Wie weiter oben beschrieben, übernimmt diese Arbeit
jetzt ein eigener Spannungsregler LM7805 mit ordentlicher Beschaltung
(Keramikkondensatoren und Elektrolytkondensatoren).
Dieser liefert die 100 mA für Arduino, WiiMotion+ und Empfänger und
erwärmt sich nur leicht.

Die momentane Kälte hatte ich auch schon unter Verdacht, aber nach 20 Minuten
Flugzeit bei heute etwa 0 °C war kein Fehler zu erkenne. Die Kälte hat da
eher dem Piloten zugesetzt.

Gruß Gerd
 

ronco

User
Hallo Gerd,

hast du die 5v vom spannungswandler an RAW oder vcc?
wenn du dir sicher bist das es nie mehr als 5V sind würde ich den arduino über vcc versorgen..

da bei RAW ja noch ein 5v spannungswandler im spiel ist.

gruß Felix
 

MoD

User
@Felix
Der Arduino ist über RAW versorgt (ist so auf dem Warthox Board vorgesehen).
Auf dem Arduino Pro Mini arbeitet ein MIC5205 als Spannungsregler.
Im Datenblatt findet man folgendes:

very low dropout voltage (typically 17mV at light loads and 165mV at 150mA

Diesen sehr geringen Spannungsabfall konnte ich auch messen und war zuerst überrascht.
Daher macht es in unserem Fall kaum einen Unterschied ob RAW oder VCC verwendet wird.
Falls Spannungsspitzen entstehen, sollten diese zusätzlich durch den MIC5205 gedämpft werden.

@Kayle
Die Regler sind natürlich auf NiMh programmiert und die Abschaltschwelle auf ganz niedrig gesetzt.
Versuche mit einem NiCd-Akku ergaben, dass die Regler bis zum Schluss die Motoren laufen lassen
und keine Abschaltung erfolgt.

LG Gerd
 

MoD

User
Ich habe leider keine definitive Lösung, aber bisher waren 8 Flüge ohne Reset.
Am Wahrscheinlichsten ist für mich die eigene Stromversorgung mit z.B. einem uBEC die Lösung.

Weiter oben habe ich diese LiPo-Alarmschaltung verlinkt. Ich würde dringend davon abraten
den Buzzer direkt an einen Pin des Arduinos zu hängen. So ein Summer zieht je nach Fabrikat
auch gerne mehr als 40 mA und könnte den Mikrocontroller überlasten.
Daher wäre die Verwendung einens FETs sinnvoll (http://sprut.de/electronic/switch/nkanal/nkanal.html).
Zwischen dem Gate-Anschluss und den Mikrocontrollerausgang wäre noch ein 100 Ohm Widerstand einzubauen.
Ein Pulldown vom Gate richtung Masse ist optional.

Der Summer ist dann bei mir auch eine 12 V Version, welche nach meiner Meinung etwas lauter und durchdringender ist.
 

Crizz

User
wenn du nen 12 V Summer via FET / MOSFET mit einem ca. 5V Pegel ansteuerst verbrätst du über den FET aber massig Energie und es kommen auch keine 12 V auf den Verbraucher, da gehört ne Treiberstufe davor, damit der FET richtig durchgeschaltet wird. Von daher kannste das auch gleich über ne normale OpenCollector Transistorstufe machen, wenn der eine ausreichend hohe Belastbarkeit hat.
 

MoD

User
Das Zauberwort ist Logic Level MOSFET. ;) Zum Beispiel diesen IRLML2402.
Schaltet schon bei weit uner 5 V ordentlich durch. Transistorstufe ist natürlich auch möglich.
Das ganze ist hinten direkt ohne Platine auf den Summer gelötet und dann mit Gießharz versiegelt.
Aus dem Summer kommen jetzt drei Adern. VCC, GND und EN (enable).
 

Crizz

User
Auch nicht schlecht, die mit höherer Leistung wäre ne Alternativlösung für ein anderes Projekt von mir gewesen, da mußte ich auf ne Treiberstufe zurückgreifen weil ich nen 30 A HexFET brauchte. Werd ich mir aber mal für LowPower-Anwendungen speichern, danke für den Tipp !
 
Ansicht hell / dunkel umschalten
Oben Unten