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-BGC 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-BGC Kontroller Board, der Firmware o323BGC für dieses Board, und der Windows GUI o323BGCTool:

  • Kontroller Board STorM32-BGC
  • 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)

„STorM32-BGC“ bezieht sich also strikt genommen nur auf die Hardware, aber ich werde es auch als Label für das ganze Projekt benutzen.

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

Neuigkeiten

  • 9. Mar. 2017: T-STorM32 Motor Module v2.4E released, für Encoder
  • 12. Jan. 2017: Neues Board STorM32-BGC 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-BGC 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-BGC v1.2 ist heute gekommen, und es funktioniert absolut perfekt! 🙂
  • 6. Feb. 2014: Die Entwicklung geht weiter, neues Board STorM32-BGC v1.2 bestellt
  • 11. Jan. 2014: Board STorM32-BGC 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-BGC v0.17 ist angekommen

Nützliche Links

STorM32-BGC Vorstellung

storm32 bgc v017 test microgimbal olliw
(Testaufbau mit Mikrogimbal und STorM32-BGC 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-BGC 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. Die aktuelle Firmware schöpft die Möglichkeiten noch nicht voll aus, aber das Projekt ist ja auch noch nicht am Ende 🙂 (bitte seht die aktuelle Featureliste). 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 v2.4

Spezifikationen

Prozessor: STM32F103RC mit 72 MHz
Motortreiber: TC4452VMF, nur Yaw Achse
on-board 6DOF IMU (MPU9250), SPI
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
2 NT Ports und 1 NT-X Port
Spannung: 6 – 18 V, bzw. 2 – 4S
Motor Strom: max. 1 A (die on-board Motortreiber für die Yaw Achse sind nicht für Hochstrom-Anwendungen vorgesehen, in diesem Fall sollte ein NT Motor Module benutzt werden)
Dimensionen: 40 x 25 mm2, Löcher Ø3 mm, Abstand 35 mm
Gewicht: ca 6 g

storm32 bgc v242 board olliw

Schaltplan und Platinenlayout

storm32 bgc v242 scheme sheet1 olliw storm32 bgc v242 scheme sheet2 olliw
storm32 bgc v242 top bottom olliw

Aufbau
Die Bestückung des Boards lässt sich dem folgenden Bild entnehmen. Es sind die Werte der Widerstände und Kondensatoren mit angegeben. Die anderen Bauteile sind nicht weiter benannt da bei ihnen eine Verwechslung bzw. Unklarheit nicht zu befürchten ist.

storm32 bgc v242 values olliw

Änderungsliste
v2.4:

  • Board speziell für NT designed
  • 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 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-BGC Eagle und Gerber Dateien
storm32-bgc-v242-files-20170112 [zip] (5.2 MB)
storm32-bgc-v130-eagle-gerber-files-20140322 [zip] (2.5 MB)
storm32-bgc-v1202-eagle-gerber-files-20140311 [zip] (2.5 MB)
storm32-bgc-v110-eagle-gerber-files-20131227 [zip] (1.8 MB)
storm32-bgc-v017-eagle-gerber-files-20131120 [zip] (1.5 MB)

storm32-bgc-mpu-module-v009-eagle-gerber-files-20140506 [zip] (1.3 MB)

Achtung: Seit der Firmwareversion v0.96 sind die i2c-basierte und NT Firmwarezweige getrennt, siehe hier. Firmwares mit einer Versionsnummer v2.xx beziehen sich auf den NT Zweig, und sind nicht für Setups mit i2c-basierter Kamera-IMU verwendbar.

o323BGC Firmware und o323BGCTool Dateien, v2.xx Zweig
o323bgc-release-v220-v20161230 [.zip] (10.1MB)
o323bgc-release-v203-v20160412 [.zip] (8.6MB)
o323bgc-release-v201-v20160330 [.zip] (8.6MB)

NTLoggerTool
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 Zweig
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)


239 Kommentare

  1. Jens Menke sagt:

    Hallo OlliW,
    erst einmal Danke.
    Alles läuft prima, auch wenn die Einarbeitung ein paar Stunden brauchte.
    Leider habe ich mir bei der Montage am Gimbal einen Baustein zerstört. Die kleine Diode des Yaw-Motors die sehr dicht an der Bohrung liegt.
    Ich kann leider nicht finden, welcher Baustein das ist. Einen neuen anlöten kann ich wohl, wenn ich den Ersatz habe.
    Vielen Dank für die Hilfe und meine ruhige Kamera.
    Jens

    • OlliW sagt:

      wenn es ein v1.31 Board ist, schau mal bitte in den rcgroups Thread, dort wurde das mehrmals identifiziert (sollte ein Kondensator sein, und keine Diode)

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.