中野島ロボット

小さなロボットの自作記事を書いています。

6日でできる! 吉野式ロボット 市販のサーボコントローラを使うには

はじめに

Appendix2: 吉野式ロボットに市販のサーボコントローラを使うには

吉野式ロボットのコントローラ基盤は、Arduino Nano の自作のロボットシールドを、秋月電子の片面ユニバーサル基板 Dタイプ(47x36mm)を使って作りますが、はんだ付けが必要です。

 秋月電子 http://akizukidenshi.com/catalog/g/gP-08241/

 はんだ付けが苦手だけど、二足歩行ロボットを作ってみたい、すぐに遊びたいと言う人には、機体だけ作ってArduino Nano用の拡張シールドを付けるか、市販のサーボコントローラを購入する手があります。

 これから紹介するのは、自作のロボットシールドを作るまでに、機体の動作確認に実際に使ったもので、その簡単な使い方と使い勝手を説明します。

  

 1. Arduino Nanoプロトタイプシールド

基板サイズ:55 × 55mm

 

 これは、Audino Nano 専用の拡張シールドで、基板にサーボやセンサーが繋げられるように、3ピンのヘッダが取り付けれられているので、Arduino Nanoを搭載して、サーボモータやセンサが直接取り付けられます。

サーボモータを複数動かしたときに、動作が不安定になるようなら、コンデンサを電源とグランドの間に接続しましょう。

 基板サイズが少し大きいので、機体に積むには大きいですが、モーターや頭部のセンサ基盤の動作確認に使えます。

プログラムは、Arudino IDEで行います。

 

注意事項
ピンヘッダが、ロボット基板と逆(基板外側が信号ライン)になっているので、接続には注意が必要です。

真ん中が電源なので逆接続で発火したりすることは無いと思いますが、最悪の場合どちらも壊れる可能性があるので、注意して接続してください。

また、つないだサーボモータやセンサが動かない場合は、まず接続の向きを確認して下さい。

  

 2. Arduino IOシールド
基板サイズ:55 × 38mm

 

 端子のはんだ付けは必要ですが、基板にコネクタを半田付けするだけの簡単なものです。

サーボモータのケーブルを切って、電源とグランドを繋ぎ、信号線をD2~D9のねじ込み式の端子に繋げれば、サーボモータを動かすことができます。

 基板サイズは秋月電子のD型基板とほぼ同じなので、ほぼ同じように搭載できます。

サーボモータの配線を切ってしまうので、ピンヘッダを使わずArduino Nanoを直接半田付けして、背中をスッキリさせても良いと思います。

 こちらも、動作が不安定になるようなら、コンデンサを電源とグランドの間に接続しましょう。

プログラムは、Arudino IDEで行います。

 

 3. ミニマエストロ 12CH USBサーボコントローラ

基板サイズ:28 × 36 mm

 

 Pololu のサーボコントロール基盤を使います。こっちの方が秋月電子のD型基板よりサイズが小さいです。

また、動作も安定しています。 

https://www.pololu.com/product/1352

 

プログラミング環境と動作確認用機能が一緒になったソフトウェアがダウンロード出来るので、インストールしてMini-B のUSBケーブルをつなげば、繋いだサーボモータを画面からコントロールすることができ、機体を動かすことができます。

簡単なプログラムも行うことができ、自律動作や音を鳴らしたり、LEDを付けたりすことができます。 

マニュアルが英語なので、

 https://www.pololu.com/docs/0J40

以下に簡単な使い方を紹介します。

 

1.インストール
プログラムをWindows10にインストールするには、.NET3.5が必要となります。
インストールされると Pololuのマークのプログラムがインストールされます。 

 

2.接続
PCとミニマエストロをMini-BのUSBケーブルで接続して、インストールしたプログラム起動します。 

Status画面の Connected to: でコンボボックスからボードを選択して通信が確立すると ファームウェアのバージョンを表示し、0から11までのチャンネルが表示されます。 

Channel Settings画面でチャンネルを設定し、 右下の Apply Settings を押し記憶させます。

 

3.サーボモーターを動かす
Status画面に戻り、動かすサーボの Enable をチェックし、スライダーを動かすと、サーボモータが動きます。
各サーボモーターの位置を順番に動かして、ロボットの姿勢が決まったら、左下のSave Frame フレームを押しセーブします。フレームとは、一回分のロボットの姿勢のことです。
このフレームをコマ送りのようにつなぎ合わせることで、一連の動き(モーション)を作って行きます。 

 

4.モーションを確認する
タブを Sequenceに切替て、記録したフレームの順番や時間を調整しモーションを編集します。
Play Sequenceを押すと、記録したフレームの順番に再生して行きます。Play in a loop をチェックすると、最後のフレームを再生すると最初から繰り返し再生します。

 Move Frame で、フレームの順番を動かします。
Duration では、フレームの持続時間をしていします。
Copy all Sequence to script でスクリプトにモーションがコピーされます。

コピーしたモーションは、テキストファイルに書き出して、再度読み込むことが可能です。

  

5.スクリプトを使って動かす
モーションを保存すると、スクリプトがテキストファイルに落とせます。
このテキストファイルを編集して、動作をプログラミングすることができます。
一つのサーボモータの位置を記述するのに、11バイト必要で、8Kバイトのメモリが搭載されているので、最大で744のサーボモータの位置を覚えさせることができます。
8個のモーターを使うので、最大で93の姿勢を覚えさせることができ、スクリプトに分割して再生したりすることができます。

 

その他に
・LEDをつける。(単色なら)

・距離センサー値を読み取る。(赤外線方式のアナログ式なら)

・Ch.8のPWMを使って、圧電素子で音を鳴らす。

等ができるので、このボード単体でも二足歩行ロボットを組んで、動かすことはできます。 

このボードのスクリプトだけでプログラムを組むのは大変なので、このボードを使ってモーションを確認したら、本格的にプログラミングを行うのはArduino IDEを使った方が良いと思います。 

 

注意事項
サーボモータへの指示が、角度指定ではなくパルス幅指定なので、変換しながら設定する事になるので少し面倒です。

  

 4.PCA9685 I2Cモジュール

基板サイズ:62.5mm x 25.4mm 
これは購入したのですが、使う事はありませんでした。このボードは12bitでパルス幅を決めるので、25msec(40Hz)の場合は1bitが6.1usecとなり、SG90の1度(5.6usec)を超える精度でしか制御できません。実際には数ビットの誤差が発生するので、数度の制御が必要な二足歩行ロボットには向かないと判断しました。
(使い方が悪いのかもしれません。)

 

 基板サイズが大きいのも避けた理由ですが、そもそもI2Cを使うのが難しく、コンデンサを付けてもフラッタ(サーボがなにもしなくてもプルプルする)は出るわ、パルス幅は足りないわで、4.8V駆動の二足歩行ロボットを制御するのは難しいと判断しました。

 

おわりに

機体だけを先に作って、とりあえずのプログラミングを始めるならここで紹介した方法を先に試しても良いのではないでしょうか。 

 

購入品情報

・Arduino Nanoプロトタイプシールド ¥250/一枚当たり

二足歩行ロボットのテスト時に使用中 

 Audino Nanoを乗せ、電源を繋ぐだけで、サーボモータを最大12個つなぐことができます。
また、I2Cやシリアル、アナログピン等全て引き出されているので、センサ基盤の動作確認等に使えます。
SG-90サーボモーターなら、PCからの給電だけでも二個くらいなら動かせます。
SG-92は外部給電しないと動かせませんでした。
二つセットですがどちらも動作しています。 

 

・Arduino IOシールド ¥250/一枚当たり

コネクタのみでも、基板だけでも使い道あり

 サイズは秋月電子のD型基板より、一回り大きいくらいです。
Arduino Nanoを直接半田付けしても使えます。
端子コネクタを付けなくても、直接ラインをはんだ付けしても使えます。

 

・ ミニマエストロ 12CH USBサーボコントローラ ¥3,900
二足歩行ロボットの機体動作確認に使用できます

 Amazonでは現在在庫切れですが、スイッチサイエンスにはまだ在庫があるようです。

https://www.switch-science.com/catalog/1092/

 

このモデルは、12チャンネルまで入出力が設定できます。
SG90サーボモーターを8個つないで、自作した二足歩行ロボットの機体確認に使っています。
USBからの給電だけでも、SG90なら2個まで同時に動かせます。
4個以上大きく動かそうとしたり、サーボモーターがロックしたときには、リセットがかかったりするので外部電源が必要です。

 (気が付けば、家に三枚もある・・・・小さいので他のロボットに使おう。)