0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

前回のの続きです。

Visual Studio Codeの機能拡張、Teleplotでグラフ表示をします。

Arduino IDE 2.0のプロット表示に相当します。

インストール

VSCodeの機能拡張からTeleplotを検索することで簡単に見つけられます。ボタンを押してインストールします。

teleplot-marketplace.png

使い方

使い方は非常に簡単で、Arduinoのloop関数でシリアルにプロットしたい数値をprintします。

基本は下の例のように書きます。書式外の文字列はTeleplotのコンソールに表示されます。

loop() {
  ...

  Serial.print(">sin:");
  Serial.println(sin(i));

  ...
}

Arduinoに実行イメージをアップロードしリブートしたら、Teleplot画面を表示します。左下のTeleplotの文字をクリックします。

teleplot-btn.png

タブが開き、初期画面が現れます。

teleplot-start.png

シリアルデバイスとボーレートを選択し、Openボタンを押すとグラフがリアルタイムに表示されます。

teleplot-run.png

UDP対応しています。複数グラフを1つに重ねて表示したり、文字列を送信することができます。

画面レイアウトをjson形式でエクスポート・インポートできるので、jsonファイルを直接編集すると、線の色を変えるとか細かい指定ができました。

詳細は割愛します。シンプルなのでちょっと試しに操作してみれば、すぐに理解できると思います。

SimpleFOCの場合のコーディング方法

SimpleFOCでは、角度や速度等の表示にmonitor機能を使ってきました。これをやめてTeleplotのフォーマットで出力してあげます。

自前で実装してもよいのですが、すでに用意されているのでそちらを使います。

これまで使っていたSimpleFOCライブラリのライブラリにはありません。SimpleFOCDriversの方に入っているので、PlatformIOのLibrariesからインストールします。

リポジトリArduino-FOC-driversをみると、追加のモータードライバやエンコーダが多数ありますが、それ以外の追加機能が入っていることがわかります。ここで使うのは TeleplotTelemetry です。

ヘッダファイルをincludeし、グローバルにインスタンスを作ります。

#include <comms/telemetry/TeleplotTelemetry.h>

TextIO io = TextIO(Serial);
TeleplotTelemetry telemetry = TeleplotTelemetry();

setup関数では、表示したい項目を登録し初期化します。

  telemetry.addMotor(&motor);
  uint8_t reg[] = { REG_TARGET, REG_ANGLE, REG_VELOCITY };
  telemetry.setTelemetryRegisters(3, reg);
  telemetry.init(io);
  telemetry.downsample = 100;

ちなみにsetTelemetryRegisters関数の書き方で、下記の書き方だとエラーになりました。Arduino Uno R4に乗っているRenesas RA4M1のtoolchainがGCC 7.2.1でした。この書き方ができる前のGCCのバージョンのようです。ESP32やNucleoとかなら大丈夫なのかもしれません。

  telemetry.setTelemetryRegisters(3, { REG_TARGET, REG_ANGLE, REG_VELOCITY });

loop関数では、run関数をコールするだけでシリアルにプリントされます。

void loop()
{
  motor.loopFOC();
  motor.move();
  // motor.monitor(); // telemetryと同時に使わないので消します。
  telemetry.run();
  command.run();
}

ビルド、アップロードしたら準備完了です。

Teleplotでモーターの状態表示

Teleplot画面を開き、ポートを設定しOpenボタンを押せばグラフが表示されると思います。あとは使いやすいように画面レイアウトをカスタマイズしましょう。コンソールからCommanderへ司令することもできます。

teleplot-run2.gif

おわりに

Teleplotを使えばPIDの調整がしやすくなったかと思います。

次回は、今回使用した磁気エンコーダについて少し書いてみます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?