オープンループ制御
このチュートリアルでは、開ループ制御を使用して BLDC モーターを実行する方法を検討します。
前提条件
このチュートリアルでは、次のハードウェアが使用されます。
- 青天井ワンボード MCU: STM32G431CBU6 バージョン: 青天井 One V1.4
- ST-LINK V2 クローン
- BlackPill STM32 ボード
- BE4108 75T ジンバルモーター
- 電源(12V)
ファームウェアをボードにアップロードするには、ST-LINK V2 クローンが必要です。安価なクローン ST-LINK V2 は 5 ドル以下で購入できます。
USB - シリアルアダプター
Aotenjo One ボードには USB ポートがないため、シリアル経由でボードと通信するには USB - シリアル アダプターが必要です。 このチュートリアルでは、Blackpill STM32 ボードを USB - シリアル アダプターとして使用して Aotenjo One ボードと通信しますが、安価な USB - シリアル アダプターや Blackpill などの別の STM32 ボードを USB - シリアル アダプターとして使用することもできます。
次の開発ボードを USB - シリアル アダプターとして使用できます。
- BlackPill STM32 ボード
- BluePill STM32 ボード
- ESP32-DevKitC

BlackPill STM32 ボードを USB - シリアル アダプタとして使用する方法がわからない場合は、シリアル通信チュートリアル] を参照してください。
BLDC モーターの内部抵抗が 10Ω より大きいことを確認してください。そうしないと、ボードが焼損する可能性があります。
参照。 内部抵抗の測定方法
インストール
VScode と PlatformIO
PlatformIO は、VSCode 拡張機能マーケットプレイスからインストールできます。
STM32CubeProgrammer
これはファームウェアをボードにフラッシュするために必要です。
クローンを作成 リポジトリ
git clone https://github.com/aotenjo-xyz/one.git
cd one
LED 点滅のサンプル コードは examples/openloop ディレクトリにあるため、Linux または macOS を使用している場合は、次のコマンドを実行してサンプル コードを src ディレクトリにコピーします。
rm src/*
cp examples/open_loop/main.cpp src/
cp examples/open_loop/platformio.ini platformio.ini
Windows の場合、ファイルを手動でコピーできます。
クイックスタート
-
Aotenjo One ボードを ST-LINK V2 プログラマに接続します。
ST-LINK V2 <-> Aotenjo One3.3V <---> 3.3VGND <---> GNDSWDIO <---> SWDIOSWCLK <---> SWCLKRST <---> NRST備考
blackpill ボードとは異なり、NRST ピンを STM32G4 シリーズの ST-LINK V2 プログラマに接続する必要があります。
あるいは、アップロード中に Aotenjo One ボードの NRST ボタンを押し続けると、同じ効果が得られます。
:::
2. ST-LINK V2 プログラマをコンピュータに接続します。
3. VSCode でプロジェクト フォルダーを開きます。
4. 左側のサイドバーの「PlatformIO」タブをクリックし、「Upload」ボタンをクリックしてファームウェアをボードにアップロードします。
-
ST-LINK V2 プログラマを取り外し、電源と BlackPill STM32 ボードを Aotenjo One ボードに接続します。最後に、BlackPill STM32 ボードをコンピュータに接続します。
Power Supply <-> Aotenjo One12V <---> VCCGND <---> GNDAotenjo One <-> Blackpill STM32TX <---> PA3 (RX)RX <---> PA2 (TX)GND <---> GNDBlackpill STM32 <-> ComputerUSB <---> USB
6. 左側のサイドバーにある [PlatformIO] タブをクリックし、[Monitor] ボタンをクリックしてシリアル モニターを開きます。

- 電源をオンにし、シリアル モニターに次のコマンドを入力して Enter キーを押します。
T1
これで、モーターが一定の速度で回転していることがわかります。値 T1 はターゲット速度を表し、モーターの速度を制御するために調整できます。
たとえば、T6.28 と入力すると、ターゲット速度が 6.28 rad/s に設定されます。これは、モーターが 1 秒あたり 1 回 転することを意味します。
T-6.28 のように負の値を入力すると、モーターを逆方向に回転させることもできます。

ビデオデモンストレーションは次のとおりです。
指揮官
このコードでは SimpleFOC ライブラリを使用してモーターを制御しているため、Commander インターフェイス を使用してモーターを制御できます。 以下に便利なコマンドをいくつか示します。
T<value>: ターゲット速度を設定します (rad/s 単位)。L<value>: ターゲット電圧を設定します (V 単位)?: 利用可能なコマンドを取得します
シリアル モニターに ? と入力すると、使用可能なコマンドのリストが表示されます。
T:target velocity
L:target voltage
シリアルモニタに T を入力すると現在の目標速度が表示され、L と入力すると現在の目標電圧が表示されます。
