Grundlegendes #
Quad 66 hat eine sehr anschauliche Erklärung auf Youtube hochgeladen.
DShot idle gibt normalerweise die niedrigst erlaubte Drehzahl der Motoren an. Langsamer dürfen sich die Propeller nicht drehen, da sonst der Quadcopter instabil werden kann. Je langsamer die Propeller drehen, desto länger benötigen sie auch beim Beschleunigen um wieder Schub aufzubauen. Die „spool up time“ wird länger.
DShot Idle ohne Dynamic Idle: (Betaflight Standard) Freestyler möchten eine lange hang time bei inverted yaw spins und stellen hier gern 3-4% ein. Racer möchten sofort Schub bei Bewegung des Throttle Sticks und stellen 6-12% ein. Wenn zum Beispiel ein Roll nach links bei 0% Throttle gefordert wird drehen die rechten Motoren hoch und die linken bleiben bei Ihrer Drehzahl. Hier steckt die Leistungsreserve die Dynamic Idle aktiviert.
Dynamic Idle lässt die Propeller in dieser Situation noch langsamer drehen als die von DShot Idle vorgegebene Mindestdrehzahl, da es Betaflight erlaubt auch Drehzahlkommandos von 0 an den ESC zu senden. Dadurch wird zusätzliche Bremswirkung (Drehmoment) nutzbar gemacht, aber nur wenn das für ein Flugmanöver sinnvoll ist. In unserem Beispiel drehen also bei korrekter Einstellung die rechten Motoren hoch und die linken bremsen ab. Die Rolle wird optimal ausgeführt und die Motoren effizient genutzt statt die Bremswirkung (braking power = dampening power = damping power) der linken Motoren zu verschenken. Damit können bei extremen Manövern schnellere Rates abgefordert werden ohne die Motoren ans Limit zu trieben. Freestyler müssen jetzt nicht mehr mit dem Leistungsknick bei 0-10% Gashebelstellung leben. Racer können engere Kurven fliegen.
Ein Problem ist aber Motor-Stalling. Ist die Drehzahl zu niedrig blockieren die Motoren kurzzeitig. Wenn man auf der Werkbank die Motoren per ESC-Steuerung langsam anfährt kann man das gut beobachten. Im Flug wirkt der Luftstrom bremsend auf die Motoren und das Stalling tritt auch bei wesentlich höheren Drehzahlen auf.
Dynamic Idle aktivieren #
Voraussetzung 1: BiDirektional DShot ist Pflicht, da der Flightcontroller die aktuelle Motordrehzahl kennen muss. Ggf. muss die Firmware des ESC aktualisiert werden. Für BlHeli_32 ESCs siehe hier, für BlHeli_S ESCs siehe hier.
Voraussetzung 2: Das transient throttle limit muss 0 sein. Ist es bei default aber vielleicht hat ein Preset oder ihr das geändert, daher mal nachschauen:
set transient_throttle_limit = 0
Voraussetzung 3: Aktivieren von dynamic idle im Konfigurator oder per CLI. Ein guter Startwert für 5 Zoll Quadcopter ist 30-40.
Voraussetzung 4: Ihr dürft kein 3D-Mode fliegen.
Dynamic Idle tunen #
Meistens reicht es Dynamic Idle einfach mit den empfohlenen Wert von 30-40 zu aktivieren. Ein Tuning ist meist nicht nötig. Die verbesserte Kurvenlage, Stabilität beim Fallen bei 0% Gashebelstellung und Redukton von Desyncs ist meist sofort bemerkbar.
Startet mit dem empfohlenen Wert und stellt diesen schrittweise runter. Zum Testen einfach auch eine Mindesthöhe steigen und das Gas vollständig weg nehmen (flat drop). Kommt es zu Instabilitäten ist Dynamic Idle zu niedrig und sollte leicht erhöht werden.
Einstellungen für Betaflight 4.2 oder ungewöhnliche Quadcopter in 4.3 #
Wer ungewöhnliche Quadcopter fliegt deren Propellerdrehzahl stark vom standard 5 Zoll Quadcopter abweicht, der sollte den Startwert von Dynamic Idle wie folgt einstellen:
- Props off!, Lipo mit Lagerungsspannung (3,85V pro Zelle) anstecken
- Im Motor-Tab alle Motoren langsam mit der Pfeiltaste hochfahren
- Die Motoren beginnen zu starten, stallen aber ständig (bleiben kurz stehen)
- Motoren bis zum DShot Idle hochfahren, Bsp: 5,5% = 1055 Throttle-Wert
- RPM Zahl ablesen
- set idle_min_rpm = RPM / 100 * 0,8
Beispiel: angenommen bei 1055 Throttle Input drehen die Motoren mit 2000rpm: 2000 / 100 * 0,8 = 16
Der Wert sollte per Motor-Tab ermittelt werden, da hier kein PID-Controller aktiv ist. Dieser würde auch beim idlen nach dem armen schon die Drehzahl ändern. Setzt den errechneten Wert lieber etwas höher an. Absenken könnt ihr ihn anschließend immernooch
Feintuning #
Fleigt auf eine Mindesthöhe und macht einen flat drop. Zeichnet dies im Dynamic Idle Blackbox debug mode auf und achtet auf folgende Eigenschaften.
0: motorRangeMinIncrease * 1000
1: targetRpsChangeRate (simple RPM error * idle_adjustment_speed)
2: error (amount of error to fix)
3: minRps (lowest current motor rpm, in revolutions per second *10 )
minRps 500 ergibt 50.0 * 60 = 3000rpm revolutions per minute
Dyamic Idle wird seit Betaflight 4.3 von einem PID-Kontroller gesteuert. Diesen könnt ihr in der CLI einstellen „get dyn_idle“:
get dyn_idle dyn_idle_min_rpm = 30 Allowed range: 0 - 100 Default value: 0 dyn_idle_p_gain = 50 Allowed range: 1 - 250 dyn_idle_i_gain = 50 Allowed range: 1 - 250 dyn_idle_d_gain = 50 Allowed range: 0 - 250 dyn_idle_max_increase = 150 Allowed range: 10 - 255
Oszilliert die Drehzahl (Debug-Trace 3) senkt den dyn_idle_p_gain und dyn_idle_i_gain etwas ab, zum Beispiel 40. Dies wird für leistungsstarke 6S Racequads empfohlen.
dyn_idle_d_gain sollte erhöht werden wenn die minRps zu weit nach unten fällt. Kommt es zu Desyncs oder die Motoren haben Probleme hoch zu drehen erhöht den Wert etwas. Fallt die RPM zu langsam kurz nach der Gaswegnahme ab kann der Wert etwas gesenkt werden.
dyn_idle_max_increase – beschriebt wie viel die Motordrehzahl erhöht werden darf um bei einem Desync gegenzusteuern (Bsp: 150 = 15%). Erhöhen kann bei Quads mit schlechtem Schub-Gewichtsverhältnis helfen die mit Desyncs zu kämpfen haben.
Etwas höhere PIDs werden für leistungsarme Quadcopter (Whoops, Longrange, XClass) empfohlen.
Siehe auch den Eintrag im Github Wiki, Tuning Notes 4.3 und wirklich tiefgründige Infomationen im PR 10294.