
Arduino Mega ADKでは、LCD、SDカードと言った
Peripheralデバイスを中心にヘビーに使ってみたが
手軽でなかなか良かった。
そこで今回は、格安でUnoをGetできたので
サーボモータをあれこれ動かしてみることにした。
概略は以下の通り。
1.Unoとサーボモータの接続
2.サーボモータの基本動作
3.サーボモータの速度制御
4.サーボモータの連続回転動作
詳細は以下の通り。
■使用機材一覧
1.Unoとサーボモータの接続
a)PWM信号線の接続について
ArduinoのLibraryにあるServoモジュールでは,PWM出力ポートは9,10の2つ
に決まっているらしい。
そこで先ずは9番ピンを使用する。
b)サーボモータの電源供給について
今回使用するサーボモータはKONDO製 KRS786ICSと
ちと古いが、電源電圧は9-12Vと標準的なもの。
別電源を用意するのも面倒なので、取り合えずUnoの5Vを
使うことにした。
Unoとサーボモータの配線図は以下となる。

c)Unoへの電源供給について
今回はお試しなので、外部電源は用意せず、USB経由でPCから供給することにした。
2.サーボモータの基本動作
Arduinoでサーボモータの基本動作と言えば、LibraryのServoクラスを使っての
回転角度指定動作になるでろう。
ここで、模型用のサーボモータについて簡単に説明すると
・サーボモータには角度制限タイプと連続回転タイプの2種類がある。
・動作角度は180度、270度(±135度)、320度など機種により異なる。
・動作電圧も機種により様々。
・角度制限タイプは連続回転タイプに改造できる。
等々・・・
さて、プログラムの準備は以下の通り。
1)Unoとサーボモータを接続する。
2)UnoとPCをUSBケーブルで接続する。
3)IDE(Arduino.exe)を起動する。

4)スケッチを選択する。
メインメニューのファイル -> スケッチの例 -> Servo -> Knob/Sweepの
いづれかを選択する。
・Knobはアナログポートに接続したボリュームの回転に合わせて サーボモータが回転するプログラム。
・Sweepは0-180度の間を往復回転し続けるプログラム。無限ループなので少々面倒。
ここはKnobを選択した方が無難。

このコードに基本動作のコーディングが全て含まれている。とてもシンプル・・・
まとめると、
1)Servo.hをインクルードする。
2)Servoクラスのインスタンスを生成する。
3)Servoクラスのwriteメソッドで目標の角度を指定する。>>これで動作開始。
4)プログラムの書き込み
→ボタンをクリックすると、ビルドから書き込みまで自動で行ってくれる。
エラーが出たら修正。
5)実行
プログラムは書き込みが終わると自動的に実行が開始される。
キー入力待ちにした場合は、ツールのシリアルモニタを起動して入力する。
ServoクラスにはwriteMicroseconds()というメソッドがあるが、値の範囲が異なる以外には
write()と同じ動作となった。
3.サーボモータの速度制御
ここまでで十分な場合も多々あるかと思うが、速度指定もできないと何かと不便である。
そこで、簡単な解決策としてLibraryを導入してみたので、手順を以下にまとめた。
1)VarSpeedServoのインストール
ダウンロード先URL:https://github.com/netlabtoolkit/VarSpeedServo
画面中央緑色ボタン(Clone or download)をクリックしzipファイルをダウンロードする。
2)LibraryをIDEへインストール
トップメニューのスケッチ-> Include Library -> Add .ZIP Library...を選択し、
ダウンロードしたVarSpeedServo-master.zipを指定する。
3)ライブラリの確認
トップメニューのスケッチ-> Include Libraryで表示されるリストの最下行に
VarSpeedServo-masterがあることを確認。
4)ソースコード作成
新規で作成しても良いが、2の基本動作で読み込んだKnobをベースに改造してみる。
基本はServoクラスをVarSpeedServoクラスに置き換えるだけ。
#include
VarSpeedServo testservo;
void setup()
{
Serial.begin(9600);
testservo.attach(9);
}
void loop()
{
testservo.write(0, 30, true); // 原点復帰
delay(500);
testservo.write(180, 100, true); // 180度回転
delay(500);
testservo.write(0, 30, true); // 原点復帰
exit(0); // 終了
}
4.サーボモータの連続回転動作
サーボモーターはステッピングモーターとは違い、回転範囲に制限がある。
一般的なものは0-180度、特殊なものでも320度位までの様だ。
ロボットの関節動作ならそれでも良いが、やはり連続回転して欲しい事もある。
今回、実は角度指定付き連続回転動作が欲しいのだが、手持ちのアイテムで何処までできるか
トライしてみた。
恐らく、この手のニーズは多々あると思うので、詳細を別記事としてまとめたので参考にされたし!
>>記事はこちら!
以上・・・
Peripheralデバイスを中心にヘビーに使ってみたが
手軽でなかなか良かった。
そこで今回は、格安でUnoをGetできたので
サーボモータをあれこれ動かしてみることにした。
概略は以下の通り。
1.Unoとサーボモータの接続
2.サーボモータの基本動作
3.サーボモータの速度制御
4.サーボモータの連続回転動作
詳細は以下の通り。
■使用機材一覧
PC OS | Windows7 SP1 |
IDE環境 | Arduino Ver1.6.2 |
Board | Arduino Uno R3 |
Servo Motor | KONDO KRS786ICS |
PC-Board I/F | USB 2.0 |
1.Unoとサーボモータの接続
a)PWM信号線の接続について
ArduinoのLibraryにあるServoモジュールでは,PWM出力ポートは9,10の2つ
に決まっているらしい。
そこで先ずは9番ピンを使用する。
b)サーボモータの電源供給について
今回使用するサーボモータはKONDO製 KRS786ICSと
ちと古いが、電源電圧は9-12Vと標準的なもの。
別電源を用意するのも面倒なので、取り合えずUnoの5Vを
使うことにした。
Unoとサーボモータの配線図は以下となる。

c)Unoへの電源供給について
今回はお試しなので、外部電源は用意せず、USB経由でPCから供給することにした。
2.サーボモータの基本動作
Arduinoでサーボモータの基本動作と言えば、LibraryのServoクラスを使っての
回転角度指定動作になるでろう。
ここで、模型用のサーボモータについて簡単に説明すると
・サーボモータには角度制限タイプと連続回転タイプの2種類がある。
・動作角度は180度、270度(±135度)、320度など機種により異なる。
・動作電圧も機種により様々。
・角度制限タイプは連続回転タイプに改造できる。
等々・・・
さて、プログラムの準備は以下の通り。
1)Unoとサーボモータを接続する。
2)UnoとPCをUSBケーブルで接続する。
3)IDE(Arduino.exe)を起動する。

4)スケッチを選択する。
メインメニューのファイル -> スケッチの例 -> Servo -> Knob/Sweepの
いづれかを選択する。
・Knobはアナログポートに接続したボリュームの回転に合わせて サーボモータが回転するプログラム。
・Sweepは0-180度の間を往復回転し続けるプログラム。無限ループなので少々面倒。
ここはKnobを選択した方が無難。

このコードに基本動作のコーディングが全て含まれている。とてもシンプル・・・
まとめると、
1)Servo.hをインクルードする。
2)Servoクラスのインスタンスを生成する。
3)Servoクラスのwriteメソッドで目標の角度を指定する。>>これで動作開始。
4)プログラムの書き込み
→ボタンをクリックすると、ビルドから書き込みまで自動で行ってくれる。
エラーが出たら修正。
5)実行
プログラムは書き込みが終わると自動的に実行が開始される。
キー入力待ちにした場合は、ツールのシリアルモニタを起動して入力する。
ServoクラスにはwriteMicroseconds()というメソッドがあるが、値の範囲が異なる以外には
write()と同じ動作となった。
3.サーボモータの速度制御
ここまでで十分な場合も多々あるかと思うが、速度指定もできないと何かと不便である。
そこで、簡単な解決策としてLibraryを導入してみたので、手順を以下にまとめた。
1)VarSpeedServoのインストール
ダウンロード先URL:https://github.com/netlabtoolkit/VarSpeedServo
画面中央緑色ボタン(Clone or download)をクリックしzipファイルをダウンロードする。
2)LibraryをIDEへインストール
トップメニューのスケッチ-> Include Library -> Add .ZIP Library...を選択し、
ダウンロードしたVarSpeedServo-master.zipを指定する。
3)ライブラリの確認
トップメニューのスケッチ-> Include Libraryで表示されるリストの最下行に
VarSpeedServo-masterがあることを確認。
4)ソースコード作成
新規で作成しても良いが、2の基本動作で読み込んだKnobをベースに改造してみる。
基本はServoクラスをVarSpeedServoクラスに置き換えるだけ。
#include
VarSpeedServo testservo;
void setup()
{
Serial.begin(9600);
testservo.attach(9);
}
void loop()
{
testservo.write(0, 30, true); // 原点復帰
delay(500);
testservo.write(180, 100, true); // 180度回転
delay(500);
testservo.write(0, 30, true); // 原点復帰
exit(0); // 終了
}
4.サーボモータの連続回転動作
サーボモーターはステッピングモーターとは違い、回転範囲に制限がある。
一般的なものは0-180度、特殊なものでも320度位までの様だ。
ロボットの関節動作ならそれでも良いが、やはり連続回転して欲しい事もある。
今回、実は角度指定付き連続回転動作が欲しいのだが、手持ちのアイテムで何処までできるか
トライしてみた。
恐らく、この手のニーズは多々あると思うので、詳細を別記事としてまとめたので参考にされたし!
>>記事はこちら!
以上・・・
※コメント投稿者のブログIDはブログ作成者のみに通知されます