これは株式会社ACCESS Advent Calendar 2019 15日目の記事です。
(当日投稿に間に合いませんでした。。)
ACCESS Advent Calendarに似合わず、ハードウェアの「サーボモーター」の話です。
本記事は「入門」記事です。浅く話ですので、御了承ください。
サーボモーター
サーボモーターというのは、こんなやつです。
(出典)
ロボット、ラジコンなどに使います。通常のDCモーターと違って、以下の機能があります。
- ギアを内蔵
- 指示した確度(位置)・電流・トルクを目指して動作する機構
- (一部のサーボ)現在の確度・電流・トルクの取得
ようは、タミヤの以下のようなギア付きモーターに、センサーが付いていて、Arduinoなどのマイコンボードから、指定した位置(または電流・トルク)に動かすことができるものと思うと良いと思います。
聞いただけでも色々使えると思いませんか?
例えば、こういった歩行ロボットはサーボモーターの塊です。全ての関節がサーボでできていて、それを連結して、歩行が実現できます。
もしこれをサーボモーターを使わずに作ったら、全ての間接にロータリーエンコーダをつける必要があり、工作がとても大変になります
用語
サーボの用語説明をします。
サーボホーン・サーボアーム
上記で白い部分をサーボホーンと言います。サーボアームと言ったりもします。形は色々ありますが、単に、サーボモーターの軸に取り付けるジョイントが、サーボホーンです。
ブラケット・サーボマウント
サーボを取り付ける金具をブラケットと言います。単に取り付け金具という意味で、サーボマウントあるいは、単にマウントとも言います
以下のような形が典型的です。
どのように繋ぐのかはこの動画を見るとイメージできると思います。
以下のように単なる固定金具の場合もあります
制御方法
制御方法は、大きく2つあります。
1つは、PWM制御で、古典的な手法です。これは、単に、制御値を送る事しかできません。
2つ目は、シリアル、または、TTL、メーカーによっては、ICSなどと言われる手法です。こちらは、メーカーが決めた信号をシリアルで送ると、そのようにサーボが動くタイプです。双方向で、サーボの状態の取得もできるタイプが多いです。
PWM制御
Arduinoで、標準のServoライブラリを使うとこの制御になります。
詳しくは説明しませんが、DCモーターの制御でよく使うPWMの波長の長さを変える事で、制御値を送ります。
以下に詳しい説明があります。
https://monoist.atmarkit.co.jp/mn/articles/1605/12/news007.html
シリアル、TTL、ICS
メーカーが決めた信号をシリアルで送ると、そのようにサーボが動くタイプです。双方向で、サーボの状態の取得もできるタイプが多いです。
Futabaと近藤科学を見てみます。
Futaba
Futabaはラジコンパーツの老舗です。
RS304MDというサーボが安価で使い勝手が良いです。
以下のサイトのPDFを見るとコマンドが分かります。
以下のようなバイナリをTTLで送るとサーボが動きます。
上記のように、コマンドには、IDをふることができます。
そのため、複数のモーターを繋いで、制御が可能です。
基本的にマニュアルに書いてるとおり、コマンドを送れば動きます
なお、Futabaは、データの取り出しには、TTLを半二重にする回路を組む必要があります。
以下に詳しいです。
制御のプログラムを簡単にPyhtonで書きました。(動作は一部しか確認していません。)
https://gist.github.com/ikeyasu/64a4847dea67220491289ac5f4d03f49
近藤科学
近藤科学も安いサーボがあります。
KRS-3301です。
こちらは「デイジーチェーン」つまり、数珠つなぎをすることができる特徴があります。
そのため、多関節のロボットでは、配線がしやすいです
近藤科学のコマンドはICSと呼びますが、以下で見ることができます。
こちらは、接続には簡単な回路を組む必要がありますが、以下のような変換基板を使うと便利です。
近藤科学の製品は近藤科学のWebShopに種類が豊富に揃っています。