気の向くままに辿るIT/ICT/IoT
IoT・電子工作

Arduinoとジョイスティックでサーボモータ2軸制御

ホーム前へ次へ
Arduinoって?

Arduinoとジョイスティックでサーボモータ2軸制御

Arduinoとジョイスティックでサーボモータ2軸制御

2018/04/01
Arduinoとジョイスティックで2軸のサーボモータを操作

 Arduinoとジョイスティックでサーボモーター2個を操作してみるページ。

 ただサーボモータを並べただけでは余りにつまらないので何かないかと探した結果、何かのオマケのようなLR44電池駆動の超小型LEDサーチライト?マグライトっぽいやつ?で縦横無尽に照らしてみることにしました。

[追記]100均にもある「5LEDミニライト」なるものらしい。

 土台にしたのは、100均のミニバイス、そこに一方のサーボを固定、このサーボのホーンに他方のサーボをビニールテープで留め、後者のホーンはサーボにビス留めの上、このホーンにサーチライトをビニールテープで固定しただけ。

 1軸のサーボモーターについては、光センサ(CdSセル)を使ったものですが、昨日、ソーラートラッカーのデモでやってみました。

[2020/03/05] ブラウザからWiFi越しにWebカメラをパン・チルトできるようにしてみました。

回路

 スケッチは後述するとして、機嫌が良い時は、この動画のようにサクサク、キビキビ動作し、ちょっと感動。

 結構前に先走って10個入りのサーボを買って動作確認もしていたものの、実用品を思いつかず、あまり興味のなかった自身でも、なんですぐにやってみなかったんだろ?、今すぐにでも何かロボット作ってみちゃう...?って気分にさせられそうなほど。

 1軸と2軸でこんなにも違いある...んじゃなくて、そっか、ソーラートラッカーと違ってジョイスティック操作だと機敏だからね...。

 必要となるのは、Arduinoボード、ジョイスティックモジュール、ブレッドボード、サーチライト、ミニバイス各1個とサーボモータ、コンデンサを各2個、ジャンパワイヤ適量。

 今回、Arduinoボードには、Nano互換機、サーボモータには、プラスチック製ギアSG-90、ジョイスティックは、37センサーキットに入っていたジョイスティックモジュール、コンデンサには、電解コンデンサ47μFを使いました。

 サーチライトと(108円の)ミニバイスを除くとAmazon、Amazonマーケットプレイス価格で単価割すれば、1200〜1300円前後かと。

スケッチ

#include <Servo.h>
 
Servo tilt, pan;
 
int joystickX = A0;
int joystickY = A1;
int x, y;
 
void setup()
{
 pan.attach(9);
 tilt.attach(10);
}
 
void loop()
{
 x = analogRead(joystickX);
 y = analogRead(joystickY);
 x = map(x, 0, 1023, 0, 255);
 y = map(y, 0, 1023, 0, 255);
 pan.write(x);
 tilt.write(y);
 delay(10);
}

 スケッチは、これだけ。

備考

 本来は、別電源としたいところですが、横着してArduinoボードの5Vから入力、手持ちのサーボモータドライバPCA9685も使いませんでした。

 よって今回は、ジョイスティックもサーボも電源とGNDは、Arduinoボードの5V/GNDからですが、サーボのVCCとGNDの間にコンデンサを噛まし(てみましたが、ノイズ対策として、あってるよね?)、2個のサーボの信号線は、それぞれD9/D10、ジョイスティックのVRx/VRyは、A0/A1に接続。

 ただ、別電源にしなかったからか、操作できるまで10〜20秒ほど(時には、それ以上)かかったり、ジョイスティックモジュールに起因するのか、操作時、反応が鈍いことがあります。

 こうした症状の一方、電圧が不安定なのか、コンセント+USB充電器から直だとうまく動きませんが、PCから(USB)電源を取ると、よりマシというか、比較的安定しました。

 また、一方のサーボのみ、他方のサーボがビビり(ブレ)つつ、連動して振動したりしながら、動いたりと動作不安定だったため、ノイズか?とコンデンサを入れてみたら、完全に解消したわけではないものの、だいぶ改善はしたように見受けられた気はしますが、もしかして、これも、別電源にすれば解消する?

 微妙な結果だったため、別電源で電圧を安定させてみることにしました。

 つまり、Arduinoボードまとめて(NanoなのでUSBではなくVinピンから、ジョイスティックのみArduinoボードの5Vから電源をとるものとして)ACコンセントにDC19V出力ACアダプタ〜可変安定化電源から電源をとり、調整してみたところ、利用した安定化電源のボリュームの関係で微調整は難しいですが、6.58Vあたりでブレもなく、電源投入後、即機能し、全くストレスなく、動作が安定しました。

 よって、やはり、電圧・電流不足だった模様。

 ただ、Arduinoボードはともかく、SG90の仕様を改めて確認してみると、操作電圧が、3.0〜7.2Vとか、4.8V〜5.0Vとか、4.8V〜6.0Vとかいろんな情報が錯綜していますが...、4.8V程度が無難らしい。

 安定した4.8Vだからその他諸々が加わるArduinoボードの5Vからでは、厳しく、今回、外部電源から安定した電圧6.58V供給したからこそ、Arduinoボード+オンボードチップ+ジョイスティックに加え、サーボ2個分の電圧を安定して与えることができたと考えて良さそう。

 ちなみにジョイスティックの方がリアルタイムでより楽しいですが、シリアルモニタから入力を要するものの、サーボドライバの動作確認で参照させて頂いたライブラリも面白いです。

 エイプリルフールだからって嘘だよんなんてオチはない。

ホーム前へ次へ