MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
Arduinoの基礎 - サーボモータのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
Arduinoの基礎 - サーボモータ
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == ここでは、Arduinoを使用して、サーボモータを駆動させる方法を記載する。<br> <br> サーボモータは、模型の車や飛行機、あるいはロボット等の遠隔操作に使用される。<br> <br> サーボモータは信号を受信すると、信号に応じた角度にスプライン軸が動く。<br> 一般的に、軸にはサーボホーンと呼ばれる部品が取り付けられる。<br> <br><br> == サーボ制御信号 == サーボモータには、ワイヤが3本接続されており、そのうち2本は駆動用の電源、残りの1本が信号を受信する。<br> 一般的に、PWM信号を受信して、それに応じた切れ角に動作する。<br> <br> (1) 基本となる周期は、20[ms](50[Hz])で約1.5[ms](1500[µs])のパルス信号を受信すると、軸は中立位置に動く。<br> (2) 2[ms]のパルス信号を受信すると、約90[度]時計回りに動く。<br> (3) 1[ms]のパルス信号を受信すると。約90[度]反時計回りに動く。<br> [[ファイル:Arduino Servo 1.png|フレームなし|中央]] <br> 実際の製品において、周波数は50[Hz]から200[Hz]のものがあり、中立となるパルス幅は1520[µs]となるなど、製品によって仕様の違いがある。<br> <br><br> == サーボモータの制御 == Arduinoでは、サーボモータ制御用ライブラリが使用できる。<br> そのため、設計者自身が特定のパルス幅の信号を生成する必要はない。<br> <br> 下図のように可変抵抗を接続して、実際に、ツマミの動作量とサーボモータの切れ角を同期させる。<br> [[ファイル:Arduino Servo 2.png|フレームなし|中央]] <br> Arduinoのサンプルコードを以下に記述する。<br> <br> 可変抵抗からの電圧を、アナログ信号の1番ピンで読み取る。<br> <code>analogRead</code>関数は、0から1023までの値を返すため、0を-90[度]、1023を+90[度]に対応させる。<br> ここでは、0から1023までの値を0から180に対応させるため、<code>map</code>関数を使用している。<br> <br> サーボモータは<code>Servo</code>クラスで実装されており、サーボモータの切れ角は<code>Servo.write</code>メソッドに0から180で指定する。<br> 中立位置は、90である。<br> <source lang="c++"> #include <Servo.h> Servo servo; const int PIN_SERVO = 10; const int PIN_POT = 1; void setup() { servo.attach( PIN_SERVO ); } void loop() { int i = analogRead( PIN_POT ); int angle = map( i, 0, 1023, 0, 180 ); servo.write( angle ); delay(15); } </source> <br> 実際に、サーボモータへの出力をオシロスコープで確認すると(下図を参照)、20.0[ms]周期のPWM信号が送信されている。<br> [[ファイル:Arduino Servo 3.png|フレームなし|中央]] <br><br> __FORCETOC__ [[カテゴリ:Arduino]]
Arduinoの基礎 - サーボモータ
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse