活動日誌の写真

近藤科学のKRSサーボをマイコン(ESP32)で動かす

こんにちは。26代電装設計の目黒です。

サーボに流そうとした11Vの電流を、間違ってパソコンに流して、ぶっ壊した私は、二度と同じことが起こるまいと、ここに近藤科学のKRSサーボをESP32で制御する方法を記します。

サーボモータを使う目的

少し話がずれますが、サーボを何に使うかというと、人力飛行機の尾翼を動かすためです!この記事の読者に、きっとgoogle検索でこの記事をクリックしてくれた鳥界隈以外の人もいると思うので、一応紹介します!

人力飛行機ってのは、その名の通り、人力で飛ぶ飛行機です。私たちは、皆さんおなじみ、鳥人間コンテストの人力プロペラ機部門に出場しています。

人力なのに、モータなんて使っていいの?という疑問があると思いますが、人力「プロペラ」機部門です。いいんです。

チームでやっているのですが、その中にもいろいろな班があって、私が所属する電装班というところが、毎年、ここら辺のサーボや、あとはパイロットが見るための計器、さらに、飛行データを保存するためのロガーを製作しています。

うちでは、こういうふうに、4節リンク機構という機構を用いて、サーボモータで尾翼(エレベータとラダー)を動かしています。

ちなみに、こうやって、電気的に尾翼を動かす方法を、FBW(フライバイワイヤ)、逆に、紐で引っ張って物理的に尾翼を動かす方法をWL(ワイヤーリンケージ)と呼びます。

それぞれ、メリット・デメリットがあり、私のチーム(TBT)では、来年どちらを採用するかという論争が起こっているのですが、その話はまた今度にして、今回はとりあえずサーボの使い方を記します。

用意するもの

KRS-6003HV ICS Red Version

商品URL

部室で偶然見つけた、近藤科学製のサーボモータです。既に生産終了しちゃってるみたい、、、

最大トルク67.0kgf・cmで、人力飛行機界隈では、トルク大きめの部類になります。9~12Vの電圧で動作し、通信規格にICS3.0を利用しています。

近藤科学のサーボの良いところは、自分で、動作温度制限を変更できることです。このサーボの場合、デフォルトだと75℃なのですが、設定変更することで、120℃以上にもできます。設定変更の方法は、また別の記事で書こうかなと思います。

ICS変換基板

商品URL

ESP32などのマイコンで、KRSのサーボを動かすのには、これが必要。マイコンの通信規格であるUARTを、サーボの通信規格であるICSに変換できます。

ESP32

商品URL

みなさんおなじみESP32。Arduinoに似ているが、標準でwifiやbluetoothといった無線通信の機能が備わっており、しかも安くて高性能。TBT電装班御用達のマイコンです。

今回はこのマイコンにArduino IDEで書いたプログラムを書き込み、サーボモータを制御していきます。

3S 11V リポバッテリー

商品URL

サーボモータを動かすためのバッテリー。今回のサーボは、動作電圧が9~12Vなので、3Sの11.1Vリポバッテリーを使うことにしました。3300mAhです。

バッテリーとサーボモータを繋げばいいだけなんですが、私は配線を間違えて、パソコンのUSB-Aに11Vの電流を流してしまいました。結果パソコンが壊れました。

配線する!

準備ができたら、配線をしていきます。会社のホームページのマニュアルには、サンプルとして、マイコンの電源供給も、サーボの電源供給も、11Vのバッテリーで行うものが書いてあったのですが、私はそれをしようとして失敗して、自分のパソコンを失ったので、ここでは、サーボは11Vのバッテリー、マイコン(ESP32)はパソコンからの給電で、サーボモータを制御する配線を紹介します!

配線は以下のような感じ。あくまでこれは、以下の配線をしたら動いたというだけで、本当に正しいやり方なのか保証はできません♡

全体像がこれ。

拡大したのがこれ。

文章で書くと、ICS変換基板のTXをESP32のRX、ICS変換基板のRXをESP32のTX、ICS変換基板のENをESP32の19番ピンに繋ぎます。写真少し見えにくいですが、GNDではありません!!!

そして、サーボモータと繋いだHV接続ケーブル(黒と赤と白のやつ)を、ICS変換基板の(上の写真でいう)左上の、6つピンがあるうち、右の縦3個に、黒の線が一番上になるように差し込みます。

ICS変換基板上に、赤色のスイッチがありますが、今回は(上の写真でいう)上側にして実験しました。下にすると速さが変わるみたい?です。

さらに、バッテリーの11.1vをICS変換基板のPOW、バッテリーのGNDをICS変換基板のGNDに挿し込みます。バッテリーのコネクタ(黄色のやつ)と、ICS変換基板のコネクタ(白のやつ)は全然違う形なので、はんだ付けして変換頑張りましょう!

ESPから右方向にのびているmicro USBは、パソコンのUSBやモバイルバッテリーのUSBとつないで、ESPの給電に使います。

プログラムを書く

プログラムは、会社のホームページに書いてあったサンプルプログラムを少しだけ改変して、以下のものを利用しました!

数秒ごとに、ゆっくりとサーボが動くようになっています。

#include <IcsBaseClass.h>
#include <IcsHardSerialClass.h>

const byte EN_PIN = 19;
const long BAUDRATE = 115200;
const int TIMEOUT = 25;

IcsHardSerialClass krs(&Serial,EN_PIN,BAUDRATE,TIMEOUT);

void setup() {
  krs.begin();
  krs.setPos(0,6200);
}

void loop() {
  for(int i = 6200;i <= 6800;i += 15){
    krs.setPos(0,i);
    delay(25);
  }  
  delay(2000);
  for(int i = 6800;i >= 6200;i -= 15){
    krs.setPos(0,i); 
    delay(25);
  }
  delay(2000);
 
}

Arduino IDEで書いて、コンパイルしてUSB経由でESP32に書き込みます。

IcsBaseClass.hとIcsHardSerialClass.hの2つのライブラリをパソコンにダウンロードしておく必要があるのでお忘れなく。

ライブラリのダウンロード方法と使い方は、公式のこちらの記事を参考にするとわかりやすいです。

動かしてみる

いよいよ、プログラムと配線が出来上がったので、サーボを動かしていきます!

が、あれ?動かない、、、

裏を見たら、ブレッドボードの+-が、途中で途切れていました。誰得やねん!(この原因に気付くのに1か月かかりました)

気を取り直してもう一度、、、(先ほど紹介した配線は、既に修正済みのやつです)

動いた!!!!!

なんで、サーボの先にダンベルが付いているのかとかは、次回以降の記事で話そうと思います。

あ、あと、あたかも私が実験して動かしてみた、かのように書いていますが、ほとんど電装班員のたかし君がやってくれたやつです。ありがとう。

ということで今回は、近藤科学のサーボをマイコンのESP32で動かしてみました。次回の活動日誌では、このサーボの温度制限を変更する方法と、その目的を紹介しようかなと思います。

引き続きよろしくお願いいたします!