工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ServoTimer2ライブラリ完全ガイド - サーボスイープ制御の基本

必要な部品と材料

サーボモーター(Tower Pro MG996R等) ×1
Arduino UNO ×1
ジャンパーワイヤー ×1セット

プロジェクト概要

はじめに

最近ヒューマノイドロボットを作っていて、サーボモーターを多用していました。すべて順調でしたが、ロボットに「喋らせよう」としたとき問題が発生。TMRpcmライブラリ(音声再生用)を使おうとしたら、サーボが動かなくなったのです。

原因はタイマー競合。Servo.h(標準サーボライブラリ)もTMRpcmもVirtualWireも、すべてArduinoのTimer1を使用します。同じタイマーを2つのライブラリで同時に使うことはできません。

解決策はTimer2を使うサーボライブラリを使うこと。それがServoTimer2です。しかしネット上にわかりやすいチュートリアルが見つからなかったため、自分でまとめました。この記事では1つのサーボでシンプルなスイープ(往復運動)を実現します。

Step 1: 部品と組み立て

メイン部品はサーボモーター。ここではマイクロサーボSG90を使用しますが、どのモデルでもOKです。

サーボホーンを厚紙に貼り付け(角度が見やすくするため)、サーボに取り付けます。

ServoTimer2ライブラリ完全ガイド - サーボスイープ制御の基本

Step 2: ServoTimer2ライブラリのインストール

  1. GitHubからダウンロード: https://github.com/nabontra/ServoTimer2
  2. Arduinoのライブラリフォルダに解凍して配置
  3. Arduino IDEで「スケッチ」→「ライブラリをインクルード」→「.ZIP形式のライブラリをインストール」で追加

Step 3: 簡単な回路を作る

最も簡単な部分です。

ServoTimer2ライブラリ完全ガイド - サーボスイープ制御の基本

Step 4: コードの解説

まず、標準のServo.hライブラリでのスイープコードを見てみましょう。

#include 
Servo servo1;

void setup() {
  servo1.attach(6);
}

void loop() {
  servo1.write(0);   delay(1000);
  servo1.write(90);  delay(1000);
  servo1.write(180); delay(1000);
}

標準ライブラリではwrite(角度)で直接角度(0〜180度)を指定できます。

一方、ServoTimer2ではパルス幅(マイクロ秒)で指定します。一般的に:

※ 正確な値はサーボによって異なります。実際に動かして確認してください。多少範囲外でもサーボが壊れることはありません。

ServoTimer2での同等コード:

#include "ServoTimer2.h"
ServoTimer2 servo1;

void setup() {
  servo1.attach(6);
}

void loop() {
  servo1.write(750);  // 約0度
  delay(1000);
  servo1.write(1500); // 約90度
  delay(1000);
  servo1.write(2250); // 約180度
  delay(1000);
}

Step 5: 実験と調整

Arduinoに電源を入れ、角度スケール(プロトラクター等)を当てて、どのパルス幅で何度動くか確認します。私のサーボでは2700μsまで行きました。各サーボで実測し、自分のプロジェクトに合う値を見つけてください。

ServoTimer2ライブラリ完全ガイド - サーボスイープ制御の基本

スケッチ(標準Servo.h版とServoTimer2版)

標準 Servo.h スイープ

#include 
Servo servo1;

void setup() {
  servo1.attach(6);
}

void loop() {
  servo1.write(0);   delay(1000);
  servo1.write(90);  delay(1000);
  servo1.write(180); delay(1000);
}

ServoTimer2 スイープ

#include "ServoTimer2.h"
ServoTimer2 servo1;

void setup() {
  servo1.attach(6);
}

void loop() {
  servo1.write(750);  // 最小パルス幅 ≈ 0度
  delay(1000);
  servo1.write(1500); // 中央パルス幅 ≈ 90度
  delay(1000);
  servo1.write(2250); // 最大パルス幅 ≈ 180度
  delay(1000);
}

回路図

ServoTimer2ライブラリ完全ガイド - サーボスイープ制御の基本

GitHubリポジトリ: https://github.com/ashraf-minhaj/Arduino-ServoTimer2-basic-sweep-/tree/code-sweep

製造プロセス

  1. Raspberry Pi と Arduino を連携させてロボットを自作:ステップバイステップガイド
  2. シンプルPiロボット - Raspberry Piで2WD自律ローバーを構築
  3. サーミスタを使った温度測定: Arduinoステップバイステップガイド
  4. SolidWorksでプログレッシブカットアウェイアニメーションを作成: ステップバイステップチュートリアル
  5. カッターグラインダー技術の習得:実践ガイド
  6. 勝利するプロトタイプ構築:ラピッド製品開発ステップバイステップガイド
  7. モリブデンが現代産業を形作る仕組み:用途、利点、需給動向
  8. ガラス繊維製造の完全ガイド
  9. C言語のrealloc()活用ガイド:構文、ベストプラクティス、実例
  10. C言語free()関数完全マスター:実践ガイドと例
  11. VHDL関数マスター:効率的な設計のための実践ガイド