STorM32 BGC: 3-Achsen STM32 Brushless Gimbal Controller

STorM32-NT, getting rid of I2C errors, and other cool advantages … see here 🙂

T-STorM32, encoders for the STorM32 … see here 🙂

Ich stelle hier das STorM32 Projekt vor. Es handelt sich um einen Kontroller für Brushless Gimbals mit 3-Achsen, welcher auf einem STM32 32-bit Mikrokontroller basiert.

Eigentlich besteht das Projekt aus drei Komponenten, dem STorM32 Kontroller Board, der Firmware o323BGC für dieses Board, und der Windows GUI o323BGCTool:

  • Kontroller Board STorM32
  • Firmware o323BGC
  • Windows GUI o323BGCTool
(open source, siehe hier)               
(free, siehe hier) („free“ wie in „free beer“, und nicht nur wie in „freedom“)
(open source, siehe hier)




von_oben_highres_pano_snapshot-kl-002 olliw
(by sepper, see here, VonOben.tv)
(by GekoCH, QuadCam.ch)

Neuigkeiten

  • 17. Mai 2020: Firmware v2.53 released
  • 20. April 2020: Firmware v2.52 released
  • 8. August 2018: Firmware v2.40 released
  • 11. Nov. 2017: STorM32 v3.3 Controller Board und NT Motor Modul v2.5E released, für T-STorM32
  • 30. July 2017: Firmware v2.30 released
  • 9. Mar. 2017: T-STorM32 Motor Module v2.4E released, für Encoder
  • 12. Jan. 2017: Neues Board STorM32 v2.4 released, speziell designed für NT
  • 30. Dez. 2016: Firmware v2.20 released
  • 12. Apr. 2016: Firmware v2.03 released
  • 30. Mar. 2016: Firmware v2.01 released
  • 19. Mar. 2016: Firmware v0.96 released
    Note: This will be the last version which includes both the I2C and NT firmware branches (see also here).
  • 10. Jan. 2016: Firmware v0.90 released
  • 13. June. 2015: Firmware v0.80 released
  • 5. Apr. 2015: Firmware v0.70 released
  • 28. Mar. 2015: Firmware v0.68 released
  • 28. Nov. 2014: Firmware v0.56 released
  • 10. Okt. 2014: Firmware v0.51 released
  • 1. Okt. 2014: Firmware v0.46 released
  • 19. June. 2014: Firmware v0.33 released
  • 28. Mai. 2014: Firmware v0.31 released
  • 21. Mar. 2014: Neues Board STorM32 v1.3 released (das wird nun wirklich für ne ganze Weile das “Endgültige” sein)
  • 20. Mar. 2014: Firmware v0.25 released
  • 20. Feb. 2014: Wiki erstellt für die Dokumentation: http://www.olliw.eu/storm32bgc-wiki
  • 19. Feb. 2014: Das neue Board STorM32 v1.2 ist heute gekommen, und es funktioniert absolut perfekt! 🙂
  • 6. Feb. 2014: Die Entwicklung geht weiter, neues Board STorM32 v1.2 bestellt
  • 11. Jan. 2014: Board STorM32 v1.1 funktioniert!
  • 2. Dez. 2013: GitHub Repository erstellt: https://github.com/olliw42/storm32bgc
  • 26. Nov. 2013: Bluetooth Modul HC06 eingebaut, funktioniert wie gewünscht, Windows GUI um Autokonfigurationstool erweitert
  • 21. Nov. 2013: Es geht los, der erste Batch an Platinen des STorM32 v0.17 ist angekommen

Nützliche Links

STorM32-BGC Vorstellung

storm32 bgc v017 test microgimbal olliw
(Testaufbau mit Mikrogimbal und STorM32 v0.17 Kontroller Board, und erstes Demovideo damit)


(Demovideo um den Sinn einer 2ten Imu zu zeigen.)

Ausgewählte User-Videos


Danksagungen
Glücklicherweise konnte ich Martinez dafür gewinnen, das Layout des (ersten, v0.17) STorM32 Boards zu zeichnen. Ich ‚durfte‘ auch einige Leiterbahnen mitverschieben, aber der schwierige Teil des Routens kam voll und ganz von Martinez, und er hat wahrlich phantastische Arbeit geleistet!
Spezieller Dank geht auch an hexakopter/Dario, für die unendlichen Stunden an Fehlersuche.
Weiter möchte ich mich bei einigen Kollegen für Unterstützung in verschiedenster Form bedanken: erickwesz, KingDaKa, Marc, yang/wdaehn, careyer&TheBlindHawks, Greg Covey, fpvberlin, GekoCH.


I. STorM32 BGC: Konzeption

Grundsätzlich wurde das Board für „größere Aufgaben“ konzipiert. Hardwaremässig bietet der STorM32 Kontroller diese, teils innovativen, Features (es wird sich auf die aktuelle Version v1.3 bezogen):

Prozessor: 32-bit Mikrokontroller STM32F103RC o. STM32F103RB o. STM32F405RG
Das Board ist so ausgelegt, dass es mit den 32-bit Mikrokontrollern STM32F103RC oder STM32F103RB, welche mit 72 MHz laufen, sowie dem STM32F405RG, welcher mit 168 MHz läuft und eine Floating-Point-Unit enthält, bestückt werden kann. Im Moment wird der STM32F103RC empfohlen.

Motor-Treiber: TC4452
Bei den TC4452 Treibern handelt es sich eigentlich um Mosfet-Treiber, aber es hat sich gezeigt, dass sie für unsere Zwecke gut geeignet sind. Sie erlauben eine maximale Spannung von 18 V, und damit den Betrieb an bis zu 4S. Der maximale Strom ist mit 13 A Peak und 2.6 A Dauer pro Motorphase angegeben, aber das ist in der Praxis unrealistisch (Wärme!). Realistisch sind maximal 1.5 A pro Motor (für DFN8 Packages); mehr wird glücklicherweise auch selten benötigt. Der Nachteil der Treiber ist die Begrenzung auf 18 V bzw. 4 S. Der große Vorteil ist jedoch, gegenüber z.B. diskret aufgebauten Treibern, dass sie sehr sicher im Betrieb sind (oder, wie es so nett im Datenblatt steht: „These devices are essentially immune to any form of upset.“).

Schnittstellen: USB, UART, und Bluetooth
Der USB Anschluss wird als Virtual Com Port angesprochen. Es steht auch die übliche serielle TTL Schnittstelle (UART) zur Verfügung (zum Anschluss an den Computer wird ein USB-TTL Adpater benötigt). Zusätzlich kann das Board mit einem HC06 Bluetooth Modul bestückt und somit wireless angesprochen werden (das ist cool!).

Ein/Ausgänge: PWM, Sum-PPM, Spektrum, Futaba S-Bus, IR Led, Joystick, Button, AUX
Es stehen 7 Ports (3 Ports bei STM32F103RB) zur Verfügung, welche als Eingänge und/oder Ausgänge für RC Signale (PWM/Sum-PPM) benutzt werden können. Diese Ports sind 5 V tolerant. Es wird der Anschluss eines Spektrum Satelliten sowie der Futaba S-Bus unterstützt. Es sind 3 weitere Ports (7 Ports bei STM32F103RB) als allgemeine Ein/Ausgänge vorhanden (ebenfalls 5 V tolerant). Dann gibt es noch 3 Analogdigitalwandler-Eingänge (3.3 V maximal), für z.B. einen Joystick. Ein weiterer Port is zum Anschluss eines Tasters vorgesehen. Schlussendlich gibt es einen Port zum Anschluss einer IR-Led.

Sicherheit
Die Motortreiber, die Belegung der Mikrokontroller Ports, und die Spannungsversorgung ist für einen sicheren Betrieb ausgelegt, inkl. Verpolungsschutz. Zudem ist ein Spannungsteiler zum Messen der Lipospannung vorhanden; bei zu geringer Spannung werden z.B. die Motorausgänge abgeschaltet.

On-Board 6DOF IMU
Der STorM32 Kontroller hat einen extra 6DOF IMU Chip MPU6050 fest auf dem Board integriert (zusätzlich zu dem an der Kamera befindlichen MPU6050 Modul). Alternativ kann eine zweite IMU über einen zusätzliche I2C Port angeschlossen werden. Damit sollten sich tolle neue Möglichkeiten realisieren lassen.

NUTZUNGSBEDINGUNGEN / TERMS OF USAGE
The STorM32-BGC board is open source hardware, under the terms of the TAPR Open Hardware License as published by the Free Hardware Foundation, see http://www.tapr.org/ohl.html. Die Eagle und Gerber Dateien stehen unten zum Download zur Verfügung. Die TAPR Lizenz erlaubt explizit eine kommerzielle Verwendung, allerdings unter (leicht zu erfüllenden) Bedingungen, wie z.B. das Copyright Vermerke nicht entfernt werden. Bezüglich der Lizenz bzw. ‚Terms of Usage‘ für die Firmwares/Softwares gelten die jeweils dort angegebenen Bedingungen.

Datenblätter
STM32F103RB, STM32F103RC, STM32F405RG, TC4452, MPU6050, HC06, HM10


II. STorM32 BGC: Board v3.3

Dieses Board wurde speziell für NT und T-STorM32 designed!

Spezifikationen

● Prozessor: STM32F103RC mit 72 MHz
● keine Motortreiber on-board, zur Verwendung mit NT Motor Modulen
● on-board 6DOF IMU (MPU9250 oder ICM20602), SPI
● rauscharmer 5 V, 0.6 A Schaltregler, mit genügend „Saft“ zur Versorgung des NT Buses
● 2 NT Ports und 1 NT-X Port
● CAN Port für CAN Bus Kommunikation
● ESP Port zum Anschluß eines ESP8266 Wifi Moduls
● Futaba S-Bus
● Spektrum-Satellit Unterstützung (kein extra Port)
● bis zu 4 PWM/Sum-PPM Eingänge/Ausgänge
● Joystick für zwei Achsen
● 2 Aux-Ports
● BUT Port
● Spannung: 6 – 27 V, bzw. 2 – 6 S
● Motor Strom: hängt ab von den verwendeten Motormodulen
● Dimensionen: 40 x 25 mm2, Löcher Ø3 mm, Abstand 35 mm
● Gewicht: ca 6 g

storm32 v33m olliw

Schaltplan und Platinenlayout

storm32 nt bgc v330m scheme1 olliw storm32 nt bgc v330m scheme2 olliw

Änderungsliste
v3.3:

  • Board speziell für NT und T-STorM32 designed
  • Motortreiber entfernt
  • rauscharmer 5 V, 0.6 A Schaltregler
  • Anordnung der UART und RC Ports optimiert
  • CAN Port, zur Kommunikation via CAN Bus
  • ESP Port zum Anschluß eines ESP8266 Wifi Moduls
  • Borddimensionen 40 mm x 25 mm

v2.4:

  • Board speziell für NT designed (Dieses Board wurde ausgemustert!)
  • nur Motortreiber für Yaw on-board
  • 3 NT Plugs, um mehrere NT Module anzuschliessen
  • NT-X Plug, beinhaltet Batteriespannung
  • 5 V Spannungsversorgung mit genügend „Saft“
  • Rx & Tx Pins vertauscht, um NT Module ohne Kabelkreuzung anzuschließen
  • Support zum Anschluß eines Hochstrom-Erweiterungsboards
  • MPU9250 on-board, SPI (kein I2C)
  • uart1 für UART Port, vereinfacht Firmwareflashing
  • zusätzlicher UART#2 Port, für zukünftige Erweiterungen
  • kein BOOT0 Taster, kleinerer RESET Taster
  • nicht alle Ports verfügbar, aber die Wichtigsten
  • 0402 SMD Bauteilgröße
  • Borddimesnionen so schmal wie es mir mit 2 Lagen möglich war: 40 mm x 25 mm
  • Befestigungslöcher Ø3 mm, Abstand 35 mm

v1.3:

  • Spannungsregler in DPak/TO-252 Gehäuse
  • AUX2 anstatt von 3.3V beim AUX Port
  • Löt-Jumper zum Ausschalten der Bluetooth Led
  • Werte der Widerstände R12, R13, R22 geändert (unkritisch)

v1.2 rev2:

  • Stencil-Pad zu den DFN Packages hinzugefügt
  • Silk für DFN Packages etwas verbessert

v1.2 rev1:

  • Wert von R11 auf 1.5k geändert

v1.2:

  • Fehlerchen der v1.1 korrigiert (Pinreihenfolge des I2C#2 Port umgedreht, SWD Port Beschriftung korrigiert, Stop-Maske bei Batterie-Lötlöchern korrigiert)
  • USB Disconnect-Netzwerk geändert (wie von ala42 kommentiert, DANKE!)
  • XOR Gate zum RC-0 Pin hinzugefügt um Futaba S-Bus zu unterstützen
  • Spektrum Satelliten-Anschluss hinzugefügt
  • „Kühlfläche“ für LDO hinzugefügt
  • VBat Schutzdiode wieder hinzugefügt wie in v0.17, nun jedoch kleinere Dioden
  • alle Bauteile vernünftig benannt/bewertet um eine gute Teileliste zu erhalten
  • weitere kleinere Änderungen im Schaltplan und Layout

v1.1:

  • Verpolungsschutz mit p Kanal Fet (SOIC8)
  • große Lötflächen und Lötlöcher für Batterieanschluss
  • Layout erlaubt TC4452 Motortreiber im DFN8 Package
  • I2C#2 Anschluss
  • high-side open collector (pnp) Port zum Anschluss einer IR Led
  • Reihenfolge der Pins beim RC und SWD Port geändert
  • weitere kleinere Änderungen im Schaltplan und Layout

Ältere Boards

STorM32 BGC v2.4

STorM32 BGC v1.3

STorM32 BGC v1.2

STorM32 BGC v1.1

STorM32 BGC v0.17


III. Firmware o323BGC

Zur Benutzung der Firmware siehe das STorM32-BGC Wiki. Im Folgenden sind nur einige technische Infos angegeben.

Meines Wissens nach ist die o323BGC Firmware/STorM32-BGC Board Combo der einizge funktionale freie/open source 3-axis Gimbalkontroller mit den folgenden Features:

Firmware Features (v0.46):

  • einzigartige* Unterstützung einer 2te IMU, entweder on-board oder extern, für erweitereten Winkelbereich, verbesserte Präzision, und ultimative Stabilität auch in den Pan Modi
  • einzigartige* adaptive Beschleunigungskorrektur zur Minimierung einer Horizont-Drift in schnellen Manövern
  • das ist mit eines der besten Features: die Motorrichtung wird automatisch eingestellt… das vermeidet ein Vielzahl von Problemen beim Einstellen insbesondere der Yaw-Achse
  • das IMU/MPU6050 Modul kann in jeder der 24 möglichen Lagen eingebaut werden, mit der GUI ist das Einstellen der Konfiguration sehr einfach
  • Bluetooth: die Firmware zusammen mit der GUI bietet ein Autokonfigurationstool, mit dem das optionale on-board Bluetooth Modul mit einem Klick konfiguriert werden kann
  • Batteriespannungsmessung: dies wird für eine Liposchutzfunktion benutzt (auf welche ich nicht mehr verzichten mag), sowie für eine automatische Spannungsabfallkompensation des PID Reglers
  • Pan/Follow-Mode für jede Achse; kann für jede Achse unabhängig voneinander gewählt werden, und es kann jederzeit („during a shoot“) zwischen den Modi gewechselt werden
  • Kameraorientierung ist in allen drei Achsen durch externe RC Signale (PWM, Sum-PPM) und/oder einem Joystick steuerbar
  • die Steuerung der Kameraorientierung kann sehr feinfühlig eingestellt werden, Geschwindigkeits- als auch Beschleunigungsgrenzen können gewählt werden
  • IR-Led Auslöser für die Kamera: Shutter, Shutter delayed, Video on/off, Zeitsequenzen
  • Mavlink-artige Befehle zur „Fernsteuerung“ der Kamera z.B. über eine App
  • die Initialiserungsphase umfasst einen speziellen „Null-Schwingung“-Detektionsmechanismus, was für eine gute Gyrokalibrierung insbesondere der Yaw Achse sehr wichtig ist (minimiert Drift in der Yaw Achse)
  • Quaternionen-basierter IMU Algorithmus (vom Mahony Typ), mit einzigartigen* Mechanismus zur Unterdrückung der Yaw-Drift ohne Magnetometer

* „einzigartig“ bedeutet, dass der entwickelte Algorithmus so in anderen DIY/Open-Source Projekten nicht zu finden ist, und bessere Performance bietet.

Motor PWM Frequenz: 23.4 kHz
Der STM32 ermöglicht es, die Motor PWM Frequenz in einem releativ weiten Bereich frei zu wählen. Ich habe etwas willkürlich 23.4 kHz gewählt. Das entspricht einer Auflösung des PWM Signals von 10.5 Bit.

Wiederholrate: 0.67 kHz
Die Hauptschleife wird alle 1.5 ms durchlaufen.

Winkel Auflösung: 10 Bit
Diese Zahl hängt ein bischen davon ab wie man rechnet, im Vergleich zu 8-Bit BGC Boards ist die Winkelauflösung jedenfalls erheblich größer.

NUTZUNGSBEDINGUNGEN / TERMS OF USAGE
The o323BGC firmware is free (but not open source). Besides unlimited private use you are also granted the permission to use it for commercial purposes under the condition that (1) you don’t modify the firmware, e.g. remove or change copyright statements, (2) provide it for free, i.e. don’t charge any explicit or implicit fees to your customers, and (3) correctly and clearly cite the origin of the firmware and the project web page in any product documentation or web page.


IV. Windows GUI o323BGCTool

Für die Beschreibung der Windows GUI o323BGCTool siehe das STorM32-BGC Wiki. Hier sind nur ein paar „Teaser“-Screenshots einer Vorabversion gezeigt, um die Anzahl an Features anzudeuten.

0323bgctool setupmain olliw 0323bgctool datadisplay olliw
0323bgctool setupgimbal olliw 0323bgctool setuprcinputs olliw 0323bgctool setupexpert 0323bgctool configureimu olliw
0323bgctool configuremotors 0323bgctool flashfirmware olliw 0323bgctool btconfigtool olliw

NUTZUNGSBEDINGUNGEN / TERMS OF USAGE
The o323BGCTool software is open source (but see below). Besides unlimited private use you are also granted the permission to use it for commercial purposes under the condition that (1) you don’t modify the software, e.g. remove or change copyright statements, (2) provide it for free, i.e. don’t charge any explicit or implicit fees to your customers, and (3) correctly and clearly cite the origin of the firmwares and the project web page in any product documentation or web page. Die GUI Software basiert auf Libraries, welche ich seit nahezu 10 Jahren benutze und im Lauf der Zeit an einigen mir nicht mehr erinnerlichen Stellen geändert habe. Zusätzlich ist sie in Perl geschrieben und verwendet Win32::Gui, welches nicht mehr gepflegt wird. Es würde mich viel Zeit kosten eine funktionierende Distribution zusammenzustellen. Daher veröffentliche ich nicht die komplette Software sondern nur die „Master“-Perl-Source-Datei, welche allerdings allen relevanten Code enthält.


V. Downloads

Die Dateien stehen auch im GitHub Repository https://github.com/olliw42/storm32bgc zur Verfügung.
Im Post #1 des rcgroups Threads findet Ihr Hinweise auf eventuelle Beta-Releases.
Lest bitte auch die dort verlinkten jeweilgen Release Notes bzgl eventueller bekannter Bugs.

STorM32 Eagle und Gerber Dateien
Sind im GitHub Repository zu finden: https://github.com/olliw42/storm32bgc

BITTE UNBEDINGT LESEN
Die v1.x STorM32 Controller können mit zwei unterschiedlichen Typen von IMU Modulen verwendet werden, NT IMUs und I2C IMUs, und dementsprechend gibt es zwei Firmwares. Es ist wichtig die richtige Firmware zu benutzen; andernfalls wird der Controller und das Gimbal nicht funktionieren. Für eine Erklärung der Unterschiede lese [1].
Seit der Firmwareversion v0.96 sind die I2C IMU und NT IMU Firmwarezweige getrennt, siehe [2]. Firmwares mit einer Versionsnummer v2.xx beziehen sich auf den NT Zweig, und sind für Setups mit einer I2C Kamera-IMU nicht verwendbar.

o323BGC Firmware und o323BGCTool Dateien, v2.xx Firmmware für NT IMUs
o323bgc-release-v253-v20200517 [.zip] (12.2MB)
o323bgc-release-v240-v20180807 [.zip] (11.0MB)
o323bgc-release-v230-v20170803 [.zip] (10.3MB)
o323bgc-release-v220-v20161230 [.zip] (10.1MB)
o323bgc-release-v203-v20160412 [.zip] (8.6MB)
o323bgc-release-v201-v20160330 [.zip] (8.6MB)

For beta releases see the wiki download page or the github repository.

NTLoggerTool
ntloggertool-release-v041-v20180609 [.zip] (230MB)
ntloggertool-release-v040-v20180225 [.zip] (130MB)
ntloggertool-release-v039-v20170318 [.zip] (156MB)    NTLoggerTool v0.39 [.msi] (156MB)
ntloggertool-release-v037-v20161230 [.zip] (156MB)    NTLoggerTool v0.37 [.msi] (156MB)
ntloggertool-release-v030-v20160416 [.zip] (155MB)
ntloggertool-release-v029-v20160412 [.zip] (155MB)
ntloggertool-release-v026-v20160401 [.zip] (154MB)

o323BGC Firmware und o323BGCTool Dateien, v0.xx Firmware für I2C IMUs
o323bgc-release-v096-v20160319 [.zip] (9.4MB)
o323bgc-release-v090-v20160110 [.zip] (10.1MB)
o323bgc-release-v080-v20150613 [.zip] (8.5MB)
o323bgc-release-v070-v20150405 [.zip] (8.6MB)
o323bgc-release-v068-v20150328 [.zip] (8.4MB)
o323bgc-release-v056-v20141128 [.zip] (6.6MB)
o323bgc-release-v051-v20141010 [.zip] (4.8MB)
o323bgc-release-v046-v20141001 [.zip] (4.6MB)
o323bgc-release-v033-v20140619 [.zip] (4.9MB)
o323bgc-release-v031-v20140528 [.zip] (4.7MB)
o323bgc-release-v029-v20140518 [.zip] (4.5MB)
o323bgc-release-v028-v20140511 [.zip] (4.3MB)
o323bgc-release-v025-v20140320 [.zip] (4.2MB)
o323bgc-release-v024-v20140316 [.zip] (16.0MB)
o323bgc-v20140122 [.zip] (3.1MB)
o323bgc-v20140117 [.zip] (2.9MB)


250 Kommentare

Hinterlasse einen Kommentar