初心者向け Arduino サーボ 制御を基本から実践する配線とコードの作り方

0
16
初心者向け Arduino サーボ 制御を基本から実践する配線とコードの作り方

サーボモーターを取り付けると、Arduinoで作った工作が急に「動くもの」らしくなります。箱のふたを開ける、針を動かす、ロボットアームを曲げる。Arduino サーボ 制御は、LEDを点滅させる次に挑戦しやすく、プログラムと機構のつながりを手で確かめられるテーマです。

ここでは、もっとも一般的な小型サーボモーターをArduino Unoで動かす手順を中心に、配線、基本コード、電源の考え方、失敗しやすい点まで順番に扱います。まずはサーボ単体を確実に動かしてから、3Dプリントやレーザーカットした部品と組み合わせて作品に育てましょう。

サーボモーターは「角度」を指定して動かせる

DCモーターは電圧をかけると回り続けます。一方、一般的なホビー用サーボモーターは、内部にモーター、ギア、角度を測る部品、制御回路を持っています。Arduinoから「90度へ動いて」と信号を送ると、サーボは目標の角度まで回って止まろうとします。

この性質は、決まった位置で止めたい工作に向いています。たとえば給餌器のレバー、からくりの腕、ミニチュアのドア、センサーに反応する看板などです。ただし、製品名に「360度サーボ」とある連続回転タイプは別物です。連続回転サーボでは角度ではなく回転方向と速度を指定します。購入前に、可動範囲が約180度の位置制御型かを確認してください。

用意するものと Arduino サーボ 制御の配線

最初の実験には、Arduino Uno互換機、180度動く小型サーボモーター、ジャンパーワイヤー、USBケーブルを用意します。小型のSG90系サーボであれば、無負荷の短い確認ではArduinoの5V端子から給電できる場合があります。ただし、これは動作確認向けです。腕や歯車などを付けて負荷が増えると、電流不足になりやすくなります。

サーボには通常3本の線があります。色はメーカーで例外があるため、説明書や本体表示も確認してください。一般的には、茶色または黒色がGND、赤色が電源プラス、オレンジ色または黄色が信号線です。

Arduino Unoでは、GNDをArduinoのGNDへ、赤線を5Vへ、信号線をデジタル9番ピンへ接続します。Servoライブラリは多くのデジタルピンで使えますが、まずはD9に決めると配線とコードを追いやすくなります。ブレッドボードを使う場合も、電源レールの途中が切れていないか確認しましょう。

外部電源を使う場面

サーボが震える、Arduinoが再起動する、USB接続が切れるといった現象は、プログラムではなく電源が原因のことが少なくありません。特に金属ギアのサーボ、大型サーボ、複数のサーボでは、サーボ用に安定化された5Vから6V程度の外部電源を用意するのが基本です。

外部電源のプラスはサーボの赤線へ、マイナスはサーボのGND線へつなぎます。そして重要なのが、外部電源のマイナスとArduinoのGNDを接続することです。これを共通GNDと呼びます。信号の基準が共有されないと、サーボはArduinoからの指示を正しく受け取れません。

一方で、外部電源のプラスをArduinoの5V端子へそのまま入れる配線は、電源の種類やArduinoの状態によって危険になることがあります。まずはArduinoをUSB給電、サーボを外部電源に分け、GNDだけを共通にする構成から始めると安全です。

最初に書くサーボ制御コード

Arduino IDEを開き、次のスケッチを書き込みます。ServoライブラリはArduino IDEに標準で含まれているため、通常は追加インストール不要です。

“`cpp #include

Servo myServo;

void setup() { myServo.attach(9); }

void loop() { myServo.write(0); delay(1000);

myServo.write(90); delay(1000);

myServo.write(180); delay(1000); } “`

`#include `はサーボを扱うための機能を読み込む命令です。`Servo myServo;`で、サーボを操作するための名前を用意しています。`attach(9)`は「このサーボの信号線はD9につながっている」とArduinoに伝える設定です。

`write(90)`の数字は目標角度です。0から180までの値を指定できますが、すべてのサーボが物理的に正確な180度まで動くわけではありません。無理に端まで動かすと、ギアに負担がかかり、うなり音が続くことがあります。初回は0度、90度、180度を試し、端で苦しそうな音がするなら、たとえば10度から170度の範囲に狭めて使いましょう。

角度をゆっくり変えて動きを観察する

サーボの動きは、角度を少しずつ変えると見やすくなります。次のコードでは、0度から180度まで1度ずつ動かし、元へ戻します。

“`cpp #include

Servo myServo;

void setup() { myServo.attach(9); }

void loop() { for (int angle = 0; angle <= 180; angle++) { myServo.write(angle); delay(15); }

for (int angle = 180; angle >= 0; angle–) { myServo.write(angle); delay(15); } } “`

`delay(15)`を小さくすると速く、大きくするとゆっくり動きます。ただし、これはサーボの本来の速度を超えて動かすものではありません。サーボが実際に角度へ到達する時間より短く指定しても、速さには限界があります。機構を作るときは、見た目の速さだけでなく、部品がぶつからず、安全に停止できる時間も考えます。

動かない、震える、角度が合わないとき

配線とコードが一見正しくても、サーボは電気的な条件や機械的な負荷の影響を受けます。まずはサーボホーン、つまり軸に取り付ける白い部品を外して試すと、機構の干渉と電気の問題を分けて考えられます。

動かない場合は、信号線がD9につながっているか、GNDが共通か、`attach(9)`の数字が実際のピン番号と一致するかを確認します。サーボの線色を思い込みで接続するのも危険です。メーカー資料を確認し、不明なら通電前に調べましょう。

小刻みに震える場合は、電源容量不足、配線の接触不良、負荷のかけすぎが候補です。USB給電だけで試しているなら、サーボ用外部電源へ切り替えてください。長い細いジャンパーワイヤーや、ゆるいブレッドボード接続も電圧低下の原因になります。

指定した角度とホーンの向きが合わない場合は、いったんコードで90度へ動かし、その状態でホーンを取り付け直します。リンク機構では、ソフトウェアで補正する前に、部品を中立位置で組み立てることが大切です。`write(90)`が機構の中央になるように設計すると、左右の可動範囲を使いやすくなります。

デジタル工作へ発展させる

サーボ単体が動いたら、次は「何を動かすか」を考える段階です。レーザーカッターで切り出したアームをホーンにねじ止めすれば、軽いリンク機構を作れます。3Dプリンターなら、サーボ本体を固定するマウント、軸に合うレバー、配線を隠すケースを自作できます。

設計では、サーボの軸に横方向の大きな力をかけないこと、可動部が端まで行ったときに部品同士が衝突しないことを確認します。サーボのトルクは「重い物を持ち上げられる量」だけでは決まりません。アームが長いほど先端にかかる力は小さくなるため、最初は短いアームと軽い素材で試作するのが確実です。

ボタン、距離センサー、光センサーと組み合わせれば、入力に応じて動く仕掛けになります。完成形を急がず、まずは紙や厚紙で機構の寸法を試し、次にアクリルや3Dプリント部品へ置き換えると失敗を減らせます。コードが動かす角度と、手で作った部品の動きがぴたりと合う瞬間を、ぜひ何度も観察してみてください。