理系的な戯れ

理工学系とくにロボットやドローンに関する計算・プログラミング等の話題を扱って、そのようなことに興味がある人たちのお役に立てればと思っております。

STM32を用いたモータ速度過渡応答取得

はじめに

こんにちは、こうへいです。

3連休も今日で終わりです。この連休も理系的な活動が充実しました。 今年の成人式は無事に終わったのかな?

慣れないSTM32で、周期的にモータからの角度情報を得られる様になったので、 当初の目的の1724モータ速度応答とシミュレーション結果との比較をしてみたいと思います。

回転速度取得実験

f:id:kouhei_ito:20200113141634j:plain
モータ速度取得実験装置

取得実験のあらまし

速度実験は上図の様な環境で行いました。 安定化電源からの5Vでモータを駆動します。ブレッドボードにはFETのスイッチング回路を設け、NUCLEO-F446E上のタクトスイッチを押すと、モータをオンします。それと同時にシリアル通信でPCへ速度情報を送信し、PCのターミナルで受け取ることとしました。

ボタンの取得

GPIOを入力として使う話題に触れていませんでしたが、STM32CubeMXで入力にするピンを決めてコードを更新した後、次のコードで読み取れます。プルアップ設定もできる様ですが、ボードのボタンはプルアップ抵抗が接続されています。

//PC13を読み取る場合
HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);
MacBookでシリアル通信

WinならTeraTermを使えば良いのですが、Macでは定番がないみたいのので端末でscreenコマンドでやります。 操作方法ですが

  • 終了 ctrl+a k
  • ログの取得 ctrl+a H (大文字のHなので通常はシフト押しながらh)

バイスが/dev/tty.usbmodem14103となっているSTM32に通信速度115200で接続するには

screen /dev/tty.usbmodem14103 115200
実験諸元
  • 入力 ステップ入力 5V
  • 入力印加時間 任意 (5秒ぐらい)
実験手順
  1. 機器の接続をする
  2. 安定化電源のスイッチを入れる
  3. 端末を立ち上げ古いログファイルを削除する
  4. screenコマンド実行
  5. screen上でログをとる操作をする
  6. NUCLEO-F466ボードの青ボタンを押して計測開始
  7. 青ボタン長押しでモータ停止

シミュレーション

前に1717モータのシミュレーションをやりましたが1724T006SRモータはスペックが違います

f:id:kouhei_ito:20200113143437p:plain
1724モータ仕様

以上から以下の数値で計算を行いました。

  • R=3.41
  • K=6.59e-3
  • L=75e-6
  • D=0
  • J=1e-7

実験結果

実験とシミュレーションの結果は次の様になりました。

f:id:kouhei_ito:20200113145601p:plain
モータ過渡応答実験とシミュレーション比較

速度の定常値がほぼ一致しまして、自分でやったのにもかかわらず、ずいぶんとうまく行ったなと思っております。 実験の方が少し遅いですね。

理系的な戯れとしては、モータのデータシートの値をそのまま使用しても、現象を捉えるだけなら十分に使えると思いましたが 最小二乗法によるシステム同定を後日に楽しんでみようかなと思っています。


1724モータ速度過渡応答取得試験 2020/1/13

おわりに

正月休みから取り掛かった、モータのシミュレーションとSTM32による計測実験もひとまず終了です。 このプロジェクトで次の成果が得られたのかなと自己満足しています

  • シミュレーション用の関数を試作して今後につなげられる形にした
  • STM32の開発環境を整え、現代風の基本的な開発の流れを掴んだ
  • モータの実物とシミュレーションに関しては概ね一致するする事が判った
  • 開発日記、開発日報としてブログを活用する事ができた

一番最後のは趣味の活動を活発にするにはやはり良いものだと、思います。 習慣にできれば良いのですがね。

これからは、ADコンバータの使い方を学んでセンサについても考えてみたいと思います。 加えて、センサについては目指すマイクロマウス 動力学シミュレータのためにレイトレーシングを 勉強したいと思います。