![見出し画像](https://assets.st-note.com/production/uploads/images/103456713/rectangle_large_type_2_057e62a99d11bb49da61680724dfe8ad.jpeg?width=1200)
Arduinoでロボット用サーボモーター KRS-3301 ICS をシリアルインターフェース(I/O 1本)で動かす方法
近藤科学のロボット用サーボモーターは、サーボホーン位置制御をエンコーダーで高精度に行い、シリアル通信で制御可能です。
2足歩行ロボットの脚部に使用する為に
〇トルクが大きい(6kg・cm)
〇稼働範囲が270°と広い(ラジコン用は120°)
〇同じトルクのラジコン用サーボに比べて消費電流が小さい
などレスキュー競技の被災者救出用アームに向いています。
KRS-3301 ICS が生産中止品になり、現在バルク品が2,000程度で販売されています。
※タイトル画の左がバルク品です。御覧の通り”箱なし付属品なし”です。
付属品の”ZH 接続ケーブル2A (300mm )×1 本”、”ZH 接続ケーブル2B (300mm)×1 本”、”M3×6 低頭ホーン止めビス ×1 本”は別途購入が必要です。
サーボホーンは元々付属しませんので用途にあったものを選んでください。
因みに私は”小径ホーンB”を購入しました。
Arduinoで使用するには、ICS変換基板の購入とTX、RX、EN用の3本のI/Oが必要になります。
ICS変換基板 | 近藤科学 (kondo-robot.com)
ここでは、ICS変換基板なし、1本のI/Oで動作させる方法について解説します。
ICS変換基板の使用有無に関係なく、オプションフラグを初期値から”シリアル専用”に変更する必要があるので、Dual USBアダプターHS
を購入し、ICSシリアルマネージャーをダウンロード&インストールする必要があります。※購入時には電源立ち上がり時に信号を読み取ってPWM制御かシリアル制御かを自動判別する設定になっています。
そのままでも動作するのですが、誤判別のリスクを除く為に”シリアル専用”への変更を必須としました。
ICSシリアルマネージャーの使い方などは、近藤科学のHPを御覧下さい。
ICS変換基板なし、1本のI/Oで動作させるには先ず下図の様に”Option Flags”の”シリアル専用”、”スレーブ”にチェックを入れて”書込み”をクリックします。
”EEPROM:書き換え成功”を確認したら準備完了です。
![](https://assets.st-note.com/img/1681913695642-10JY0cBc4t.png?width=1200)
サーボモーターをスレーブに設定する事によって、サーボモーター側からの送信がなくなり、ICS変換基板のTX-RX切替機能を使わずに接続が可能となります。
プログラム
#include <IcsSoftSerialClass.h>
const byte S_RX_PIN = A6;
const byte S_TX_PIN = 2;
const byte EN_PIN = A7;
const long BAUDRATE = 115200;
const int TIMEOUT = 200; // softSerialは通信失敗する可能性があるため短めに
IcsSoftSerialClass krs(S_RX_PIN, S_TX_PIN, EN_PIN, BAUDRATE, TIMEOUT); //RX,TX,ENピンおよびUARTの設定、softSerial版
void setup()
{
krs.begin(); // サーボモータの通信初期設定
krs.setPos(0, 7500); // 位置指令 ID:0サーボ中央:7500 指定範囲:3500~11500(10ステップ指定)
delay(3000);
}
void loop()
{
krs.setPos(0, 3500); // 位置指令 ID:0サーボ反時計回り最大:3500
delay(2000); // 2秒待つ
krs.setPos(0, 7500); // 位置指令 ID:0サーボ中央:7500
delay(2000); // 2秒待つ
krs.setPos(0, 11500); // 位置指令 ID:0サーボ時計回り最大:11500
delay(2000); // 2秒待つ
krs.setPos(0, 7500); // 位置指令 ID:0サーボ中央:7500
delay(2000); // 2秒待つ
}
※IcsSoftSerialClass krs関数はTX、RX、ENを指定を省略できません。
そこでArduinoUNOのI/Oには無い”A6”、”A7”をRXとENに割り当てる事で実質的にサーボに割り当てるI/Oを1本にする事ができます。
QIコネクタが直接挿せるので気に入っているArduinoUNO互換ボード"Freaduino UNO"にて動作確認しました。
![](https://assets.st-note.com/production/uploads/images/103478614/picture_pc_8ba657c2c113593e7f15a2d5040d051c.gif)
マイコンボードの5Vからサーボモーターに給電するのでラジコン用ハイトルクサーボモーターの場合は、動かした瞬間にマイコンが暴走したり、リセット動作になったりしますが、KRS-3301 ICSは安定して動作します。
但し、負荷が大きくなるとサーボモーターの電流が増えるので、お手持ちのマイコンボードの電流定格を確認して他のセンサーの消費電流など、サーボを動かす際の余裕度を検討して下さい。
マイコンボードを自作される方はバッテリーから直接供給する事をお勧めします。
KRS-3301 ICSは2セルLi-Fe6.6V及び6セルNi-MH7.2Vに対応しています。(ラジコン用サーボは基本的に定格電圧6Vなので6V以上のバッテリーに繋ぐと壊れる可能性があります。)
いつもサポートありがとうございます!いただいたサポートは新しい記事の糧となります。 製作記事は部品購入が必要ですので大変助かります!