メインコンテンツまでスキップ

オープンループ制御

このチュートリアルでは、開ループ制御を使用して BLDC モーターを回す方法を紹介します。

事前準備​

このチュートリアルでは、以下の機器を使用します。

ファームウェアをボードにアップロードするには、ST-LINK V2 クローンが必要です。安価なクローン ST-LINK V2 は 5 ドル以下で購入できます。

USB シリアル変換アダプター​

Aotenjo One ボードには USB ポートがないため、シリアル経由でボードと通信するには USB シリアル変換アダプターが必要です。 このチュートリアルでは、BlackPill STM32 ボードを USB シリアル変換アダプターとして使います。市販の USB シリアル変換アダプターや、対応する別の開発ボードでも代用できます。

ヒント

次の開発ボードを USB シリアル変換アダプターとして使用できます。

  • BlackPill STM32 ボード
  • BluePill STM32 ボード
  • ESP32-DevKitC

USB シリアル変換アダプターの図

BlackPill STM32 ボードを USB シリアル変換アダプターとして使用する方法がわからない場合は、シリアル通信チュートリアル を参照してください。

注意

BLDC モーターの内部抵抗が 10Ω より大きいことを確認してください。そうしないと、ボードが焼損する可能性があります。

測定方法は内部抵抗の測定方法を参照してください。

開発環境の準備​

VSCode と PlatformIO​

PlatformIO は、VSCode 拡張機能マーケットプレイスからインストールできます。

STM32CubeProgrammer​

ファームウェアを基板に書き込むためのツールです。

リポジトリの取得​

git clone https://github.com/aotenjo-xyz/one.git
cd one

開ループ制御のサンプルコードは examples/openloop ディレクトリにあるため、Linux または macOS を使用している場合は、次のコマンドを実行してサンプルコードを src ディレクトリにコピーします。

rm src/*
cp examples/open_loop/main.cpp src/
cp examples/open_loop/platformio.ini platformio.ini

Windows の場合、ファイルを手動でコピーできます。

クイックスタート​

  1. Aotenjo One ボードを ST-LINK V2 書き込み器に接続します。

    ST-LINK V2 <-> Aotenjo One
    3.3V <---> 3.3V
    GND <---> GND
    SWDIO <---> SWDIO
    SWCLK <---> SWCLK
    RST <---> NRST
    備考

STM32G4 シリーズでは、BlackPill と異なり、基板の NRST ピンも ST-LINK V2 に接続する必要があります。 あるいは、アップロード中に Aotenjo One ボードの NRST ボタンを押し続けると、同じ効果が得られます。 ::: 2. ST-LINK V2 書き込み器を PC に接続します。 3. VSCode でプロジェクトフォルダーを開きます。 4. 左側のサイドバーの「PlatformIO」タブをクリックし、「Upload」ボタンをクリックしてファームウェアをボードにアップロードします。

  1. ST-LINK V2 書き込み器を取り外し、電源と BlackPill STM32 ボードを Aotenjo One ボードに接続します。最後に、BlackPill STM32 ボードを PC に接続します。

    Power Supply <-> Aotenjo One
    12V <---> VCC
    GND <---> GND

    Aotenjo One <-> Blackpill STM32
    TX <---> PA3 (RX)
    RX <---> PA2 (TX)
    GND <---> GND

    Blackpill STM32 <-> Computer
    USB <---> USB

オープンループ制御セットアップ 6. 左側のサイドバーにある [PlatformIO] タブをクリックし、[Monitor] ボタンをクリックしてシリアルモニターを開きます。 PlatformIO モニター

  1. 電源をオンにし、シリアルモニターに次のコマンドを入力して Enter キーを押します。
    T1

モーターが一定の速度で回転します。T1 は目標速度を指定するコマンドです。数値を変えると、回転速度を調整できます。 たとえば、T6.28 と入力すると、目標速度が 6.28 rad/s に設定されます。これは、モーターが 1 秒あたり 1 回転することを意味します。 T-6.28 のように負の値を入力すると、モーターを逆方向に回転させることもできます。

シリアルモニター出力

動作の様子は、次の動画で確認できます。

BLDC モーターのオープンループ速度制御

Commander で操作する​

このコードでは SimpleFOC ライブラリを使用してモーターを制御しているため、Commander インターフェイス を使用してモーターを制御できます。 以下に便利なコマンドをいくつか示します。

  • T<value>: 目標速度を設定します (rad/s 単位)。
  • L<value>: 目標電圧を設定します (V 単位)
  • ?: 利用可能なコマンドを取得します

シリアルモニターに ? と入力すると、使用可能なコマンドのリストが表示されます。

T:target velocity
L:target voltage

シリアルモニターに T を入力すると現在の目標速度が表示され、L と入力すると現在の目標電圧が表示されます。

参考文献​