Oneshot125-Support in Baseflight

Status
Nicht offen für weitere Antworten.
#1
Es war etwas zäh, aber mit ein wenig Überzeugungsarbeit ist es mir gelungen, Oneshot-Support in den Baseflight master zu mergen ;)

Hierbei ist allerdings zu beachten, dass ich den "Oneshot"- und den "125"-Teil nach Simons Empfehlung in 2 Features aufgeteilt habe. (Mehr Infos dazu hier https://github.com/sim-/tgy/commit/6dbc056a71161593cc8eaf08f8959cf4ea6e4ce6)

Oneshot, also die Synchronisierung des PWM-Outputs mit dem Main-Loop knipst man in der CLI (sorry, Configurator-Support folgt noch) mit "feature SYNCPWM" an und die 1/8 Pulslänge mit "feature FASTPWM".
SyncPWM sollte mit jedem ESC funktionieren. Für FASTPWM empfiehlt es sich einen ESC mit Hardware ICP wie AfroESC oder eben KISS/UESC zu verwenden.

Firmware kann entweder unter http://firmware.baseflight.net heruntergeladen oder über den Configurator geflasht werden (neueste development firmware).

Wäre natürlich für jedes Feedback dankbar ;)
 
#3
Hallo,

Ist das auch in der Dev 14.03.2015 mit drinne ? Ich möchte das morgen mit den KISS 18A mal testen und gerne berichten !

Gruß
Matthias
Da ist es auf jeden Fall mit drin, ja ;-)

Für deine Kiss:

feature SYNCPWM
feature FASTPWM
set looptime=2000
save

Meine Testflüge damit liefen super heute.

Freue mich auf Dein Feedback!

P.S.: Vergiss nicht, die Lötjumper für Oneshot auf Deinen KISS auch zu schließen ;)
 
Zuletzt bearbeitet:
#4
Andreas,
vielen Dank für Deine (Überzeugungs)Arbeit. Und es ist schon gut das es in zwei Teile nach dem Vorschlag von Simon Kirby aufgeteilt ist. Auch in TauLabs kann man Oneshot aktivieren das die Ausgänge an die MPU Rate in diesem Fall sogar koppelt und beliebige Pulsweiten einstellen. Das gibt auch den Benutzern von anderen nicht OS125 fähigen ESC´s die Möglichkeit das zu Nutzen. Ich hatte dann Gestern gesehen über Deine Links das wohl auch die SimonK Firmware in Richtung OS125 unterwegs ist.

Ich habe Gestern gleich mal die Dev vom 14.3. auf einen Hero32 aufgespielt. Nach Aktivieren von SyncPWM die Ausgänge alle synchron startend und nicht leicht versetzt wie vorher. Auch nach Eingabe von FastPWM. Nach setzen der Looptime auf 0 eine Loopfrequenz von ca 1.5kHz mit sehr geringem Jitter (<1%) Und nach setzen der Looptime auf 1000 sogar kleiner 0,5%.
Da fehlt jetzt eigentlich nur noch die Bindung an den MPU Int.
Auf einem MW32 bzw Flip32 auch gleichzeitig startende Ausgänge. Allerdings bei Looptime 0 Schwankungen von ca 1200 - 1400µs. Bei Looptime 2000 reduzieren sich die Schwankungen auf ca 3%.
Es ist schon heftig um wie viel langsamer der Auslesevorgang über den I2C Bus im Gegenzug zum per SPI angebundenen MPU6500 Sensor der Hero32 stattfindet.
 
#5
Da ist es auf jeden Fall mit drin, ja ;-)

Für deine Kiss:

feature SYNCPWM
feature FASTPWM
set looptime=2000
save

Meine Testflüge damit liefen super heute.

Freue mich auf Dein Feedback!

P.S.: Vergiss nicht, die Lötjumper für Oneshot auf Deinen KISS auch zu schließen ;)
Moin moin,

Erstmal danke ! Bin heute fünf Akkus randalieren gegangen. 230 Quad T-Motor 2204 6x3 Schraube an 3S, die Performance ist grandios. Der kleine fliegt wie auf Schienen und klebt angenagelt in der Luft. Ich hatte extrem drehende Winde und es war böhig bei ca. 3 Windstärken, echt klasse ! Der Performance unterschied zu Turnigy Plush 12A mit BlHeli war deutlich ! Ich habe festgestellt, wenn die Naze disarmt ist drehen ein bis zwei Motoren in gewissen Zeitabständen immer ca. 1/4 Umdrehung, mal rechts mal links. Von den winzigen SMD Kondensatoren kann das wohl nicht kommen :eek: hast du ne Lösung ?

Gruß
Matthias
 
#6
Hi Matthias,

freut mich, dass es gut fliegt!
Ohne da jetzt zu große Theorien aufzustellen: Damit es bei mir sauber lief, musste ich ein Mal die KISS neu anlernen.

Also:
* Props ab
* USB ans naze
* Motor Test Tab auf
* Alle vier Slider auf Maximum
* LiPo dran
* Alle Slider auf Minimum
* Neustart

minthrottle ist bei mir auf 1070, maxthrottle kann laut Felix ruhig auf 2000.


Gruß
Andreas
 
#7
Hallo Andreas,

min Throttle ist bei mir 1050 und max 1950. Soll ich die Regler im Oneshot modus anlernen ? Laut KISSS Anleitung sollen die doch im PWM Mode angelernt werden !?

Gruß
Matthias
 
#8
Andreas,
vielen Dank für Deine (Überzeugungs)Arbeit. Und es ist schon gut das es in zwei Teile nach dem Vorschlag von Simon Kirby aufgeteilt ist. Auch in TauLabs kann man Oneshot aktivieren das die Ausgänge an die MPU Rate in diesem Fall sogar koppelt und beliebige Pulsweiten einstellen. Das gibt auch den Benutzern von anderen nicht OS125 fähigen ESC´s die Möglichkeit das zu Nutzen. Ich hatte dann Gestern gesehen über Deine Links das wohl auch die SimonK Firmware in Richtung OS125 unterwegs ist.

Ich habe Gestern gleich mal die Dev vom 14.3. auf einen Hero32 aufgespielt. Nach Aktivieren von SyncPWM die Ausgänge alle synchron startend und nicht leicht versetzt wie vorher. Auch nach Eingabe von FastPWM. Nach setzen der Looptime auf 0 eine Loopfrequenz von ca 1.5kHz mit sehr geringem Jitter (<1%) Und nach setzen der Looptime auf 1000 sogar kleiner 0,5%.
Da fehlt jetzt eigentlich nur noch die Bindung an den MPU Int.
Auf einem MW32 bzw Flip32 auch gleichzeitig startende Ausgänge. Allerdings bei Looptime 0 Schwankungen von ca 1200 - 1400µs. Bei Looptime 2000 reduzieren sich die Schwankungen auf ca 3%.
Es ist schon heftig um wie viel langsamer der Auslesevorgang über den I2C Bus im Gegenzug zum per SPI angebundenen MPU6500 Sensor der Hero32 stattfindet.
Hallo und danke für das fundierte und ausführliche Feedback ;)
Ich habe ein naze mini/Hero32 hier. Hätte nicht gedacht, dass mit dem MPU6500 so einen großen unterschied macht.
Das mit dem Jitter der cycle time kann man mit Oneshot/SyncPWM tatsächlich gut sehen: https://www.dropbox.com/s/kve7m20qm84autv/IMG_20150310_231332.jpg

MPU INT wäre definitiv noch eine Maßnahme. Verbunden isser ja ;)


Gruß
Andreas
 
#11
Hallo Andreas,

Hast recht, hatte da wohl Tomaten auf den Augen !:rolleyes: Ich werde die mal nach deiner Anleitung neu anlernen. Wird der Oneshot support auch in die Stable Version mit einfließen ?

Nochmals Danke !

Gruß
Matthias
Hallo Matthias,

definitiv. Wir warten noch auf einen Patch für den neuen Servomixer, damit das Servo-Tab im Configurator auch endlich wieder gescheit funktioniert ;)

Ich rechne damit, dass es nächste Woche ein neues stable release geben wird.


Gruß
Andreas
 

brm

Erfahrener Benutzer
#13
Hallo und danke für das fundierte und ausführliche Feedback ;)
Ich habe ein naze mini/Hero32 hier. Hätte nicht gedacht, dass mit dem MPU6500 so einen großen unterschied macht.
Das mit dem Jitter der cycle time kann man mit Oneshot/SyncPWM tatsächlich gut sehen: https://www.dropbox.com/s/kve7m20qm84autv/IMG_20150310_231332.jpg

MPU INT wäre definitiv noch eine Maßnahme. Verbunden isser ja ;)


Gruß
Andreas
nö - der mpu interrupt hilft nicht viel.
man muss die zeiten schon besser synchronisieren.
ich bin bei bei plus minus 1us bei 500hz.

bei test mit 'synced' pwm ausgängen starten bei mir nicht alle motoren.
weiss nicht ob es an den motoren oder mickriger esc firmware liegt.
 
#14
Aber der MPUInt wäre mal der erste Schritt dafür zu sorgen das die Messwerte nicht mehr jittern und die Unterschiede in den Frequenzen von MPU und CPU harmonisiert werden.
Was hast Du den für ESC´s ? Hatte Gestern mal versucht 18A Plush mit OneShot125 zu betreiben ging aber nicht.
Dafür habe ich es heute hinbekommen KISS zum Desync zu bekommen. erst ist es im Flug passiert und das jetzt sogar mit dem Kopter in der Hand weiß ich wie ich es hinbekomme. Das werde ich die nächsten Tage mal untersuchen.

2. Bemerkung gelöscht falschen Thread erwischt
 
Zuletzt bearbeitet:

brm

Erfahrener Benutzer
#15
Aber der MPUInt wäre mal der erste Schritt dafür zu sorgen das die Messwerte nicht mehr jittern und die Unterschiede in den Frequenzen von MPU und CPU harmonisiert werden.
Was hast Du den für ESC´s ? Hatte Gestern mal versucht 18A Plush mit OneShot125 zu betreiben ging aber nicht.
Dafür habe ich es heute hinbekommen KISS zum Desync zu bekommen. erst ist es im Flug passiert und das jetzt sogar mit dem Kopter in der Hand weiß ich wie ich es hinbekomme. Das werde ich die nächsten Tage mal untersuchen.

Mario, gute Arbeit das mal zusammenzufassen.
der mpu int wird ausgeführt wenn änderungen anstehen.
es ist die zeit die mit jitter behaftet ist und nicht die messwerte.
kommt lange kein interrupt von der mpu hast du massive probleme mit antialiasing.

frage, welchen film willst du haben?
 
#16
Liege ich damit falsch das die MPU im open run ist und je nach vorgegebener Rate Ihre Messungen macht und nach Berechnung der Messwerte, des Filterns eventuell, sie in Ihre Register schreibt und dann einen Int auslöst?
 

schmiernippel

Erfahrener Benutzer
#17
Wenn man nur das syncpwm aktiviert, muss man dann auch die PID Werte neu einstellen und/oder die Looptime ändern ? Sorry für die vll blöde Frage, aber das Oneshot Thema durchblicke ich noch nicht so ganz :)

MfG
 
#18
Wenn man nur das syncpwm aktiviert, muss man dann auch die PID Werte neu einstellen und/oder die Looptime ändern ? Sorry für die vll blöde Frage, aber das Oneshot Thema durchblicke ich noch nicht so ganz :)

MfG
Hi,

mit SyncPWM kannst Du auf jeden Fall niedrigere looptimes ausprobieren. Ich habe mit looptime=2000 gute Erfahrungen gemacht. Du könntest definitiv probieren P ein wenig höher zu schrauben, wenn Du SyncPWM aktiviert hast.

Gruß
Andreas
 
#20
Hallo zusammen, ich versuche gerade einen 3D Quad zu bauen. Regler sind Kiss mit one Shot aktiviert.
Funktioniert alles bestens, bis auf die Tatsache dass bei Disarm die Motorchannels nicht auf 1500 fahren sondern auf 1460.
Somit laufen die Motoren mit wenig Drehzahl weiter.
Kann mir das Problem jemand beheben oder ist es ein Bug in der aktuellen Version?

Vielen Dank für die Hilfe

Grüße Michael
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten