■気の迷い メニューに戻る■
各種電池の比較実験や、放電器の製作、ほか記事は↑↑↑




《《PIC使用小ネタ集 》》
ラジコンサーボ"2位置"コントローラ
ラジコンサーボ"低速変化"コントローラ

* 記事を掲載 2008/10/19

 『探求: 電撃 蚊取りラケット』の実験の際に「タクトスイッチを何度も何度も押すロボットを作る」という目的でPICでラジコン用サーボを動かすパーツを作成しました。
 《《PIC使用小ネタ集 》》の第一弾として、製作記録を掲載します。
 
 またその後知り合いのF氏の依頼で作った「サーボ低速変化(遅延)コントローラ」もあわせて掲載します。
 
 《《PIC使用小ネタ集 》》ではあくまで自分用の製作の記録的な面や小ネタ扱いのページとして、あまり突っ込んだ説明や詳細な部分まで解説していません、ご了承ください。


■ ラジコンサーボ"2位置"コントローラ

 「ラジコンサーボ2位置コントローラ」とは、サーボの動作位置を2箇所プリセットしておいて、デジタル入力信号に応じてそのどちらかの位置にサーボを動作させるコントローラです。

 基本的にはサーボを指定位置に動かすだけの機能に限定しています。
 後で述べますがPICの入力端子やプログラムエリアに空きがありますので、タイマー動作プログラム等を組み込んで独立動作をさせる拡張も可能です。

● 回路図

 8ピンPIC 12F675[データシートPDF]を使用したとても簡単な回路です。
 2つの位置プリセット用にはA/Dコンバータ入力に半固定抵抗を繋いだ直感的な設定が可能なアナログ回路としています。
 どちらの位置に移動させるかはGP3に入力するデジタル信号のH/Lで選択します。

 サーボを接続していればサーボホーン(腕木)が動くので動作は一目瞭然ですが、基板単体でも動作確認を行う為にGP4に接続しているLEDを「位置が左側ではゆっくり」「位置が右側では速く」点滅させる事で確認ができるようにしています。

● 完成基板

 8ピンPICを使用して、他の部品も少ないので基板はコンパクトです。

 写真の基板には入力信号を別回路から入れなくても単体テストが行えるようにタクトスイッチ(とプルダウン抵抗)をつけています。

 サーボは基板上のヘッダーピン(3P)にコネクタを差し込みます。

● プログラム

 PICに書き込む用のHEXファイルと、ソースファイルを置いておきます。

HEXファイル SERVO_2C.HEX ソースファイル SERVO_2C.asm
HEXファイル SERVO_2C_180.HEX ← 180度拡張版HEX
※ ソースはTAB=4です。TAB=8で見ると桁揃えが崩れて見えます。

 サーボ信号の作成(送出)は20mSecのタイマー割り込みルーチン内で行います。
 サーボのコントロール信号についてはここで改めて解説しなくても、ネット検索でもすれば沢山のページに載っていますのでここでは割愛します。

 A/D入力ポートも読み込みもタイマー割り込みで順次行います(ポーリング)。A/D変換完了割り込みは使用していません。

 メインルーチンは単に「入力ポートのH/Lによって、どちらの位置のアナログデータを使うか」の判定だけしかしていません。あまりに単純すぎて・・・

 通常のままアセンブルすると、サーボ可動角は標準の90度で動作します。

 プログラム冒頭の設定部の
  _WIDTH180   EQU   0   ; 180度に対応させるか? (0:通常90度, 1:180度対応)  

  _WIDTH180   EQU   1   ; 180度に対応させるか? (0:通常90度, 1:180度対応)  
に変更してアセンブルすると「180度拡張版」として動作します。

 ラジコン用では通常は90度の幅で回転すれば良いのですが、最近流行のロボット用途のように180度まで回さなければならないような場合は拡張版を使用します、

 今回の使用目的では2つの位置を切り替える信号は「蚊取りラケット試験機」から送り出されます。
 PIC16F88を使用した、ありていにいえば「マルチ放電コントローラー」のプログラムを書き換えて基板・回路をそのまま流用しただけのものです。
 ある時間設定・あるパターン設定で蚊取りラケットのタクトスイッチを押して劣化を調べる動作を行うロボットをこれらの基板・装置の組み合わせで実現しました。

拡張とか・・・

 まだまだプログラムサイズには余裕がありますので、外部入力で動くのではなく、本体内にタイマープログラム等を組み込んで一定時間おきに左右にホーンを振る装置などにもできます。
 アナログ入力が1CH余っていますので(プログラムでは読み込んでいます)、タイマー時間を半固定抵抗で自由に調節するような使い方もできますね。

 また、次の「ラジコンサーボ"低速変化"コントローラ」の機構を組み込んで、設定した2位置間を回転するスピードを調節するようにするのも面白いかもしれません。
 その場合はA/D入力の3CH目は遅延スピードの調整用に使用します。


■ ラジコンサーボ"低速変化"コントローラ

 F氏からの依頼で「リトラクタブルヘッドライトをゆっくり動かしたい」という回路を作りました。

 リトラクタブルヘッドライトはふだんはボンネットの中に格納されていて、ライトONの際にモーターでせり上がってくるヘッドライトですね。
 これをプロポの3CH目を利用してスイッチ操作でサーボが動いてせり上がったり下がったりを操作したいというわけですが、そのままだとスイッチをパチッ!と切り替えるとプロポ側の2つの設定位置の間を一瞬で移動してしまうため、実車のようにゆっくりせり上がったり下がったりせずに「パタッ!」と一瞬で動くのは嫌という事です。
 プロポ側で何か設定があればいいのですが、さすがに高性能CPU内蔵のコンピュータプロポでもそういった設定は無いようで、ならば受信機とサーボの間にPICを入れて指示された位置までサーボをゆっくり回すプログラムを書けばよいだけ!という事でこの回路を作りました。

● 回路図

 「ラジコンサーボ2位置コントローラ」とほぼ同じ構成で、8ピンPICを使用して他の部品も少ないので基板はコンパクトです。

 こちらでは入力信号はラジコン受信機からのサーボコントロール出力信号を受け付けてキャプチャします。
 電源も受信機と接続するケーブルで受信機から供給されます。

 アナログ入力と半固定抵抗の組はスピードコントロール(遅延時間の設定)だけですので1組だけです。
 この半固定抵抗の調節で最低は「蟻が歩く程度のスピードで回転」から最高「通常のサーボ本来の最高速」の間で回転速度を任意に調節できます。

 受信機からの電源にモーターノイズ等が乗っていると、電源を分圧しているA/D変換の入力電圧にもノイズが乗りますので、「ラジコンサーボ2位置コントローラ」では付けていなかった0.1μのリップル除去用コンデンサをA/D入力端子につけています。

 LEDは「遅延動作で移動中(回転中)」に点灯します。

● 完成基板

 1/10のボディに乗せるのでそれほど極端に小さく作る必要も無いので、これくらいで。

 右側のケーブルが受信機に差し込む入力と電源ケーブル。サーボは左側のピンヘッダに挿します。

 実際に積み込む際には絶縁の為に全体をシュリンクされるそうです。

● プログラム

 PICに書き込む用のHEXファイルと、ソースファイルを置いておきます。

HEXファイル SERVO_SLOW.HEX ソースファイル SERVO_SLOW.asm
※ ソースはTAB=4です。TAB=8で見ると桁揃えが崩れて見えます。

 こちらのプログラムではタイマー割り込みは使用せずに、信号送出タイミングは入力信号タイミングに同期して処理するようにしています。

 入力信号があればそれをキャプチャし位置情報を解析、それと現在位置(以前にキャプチャした位置)との比較を行ってサーボを低速動作する位置情報を計算します。

 こちらは180度の拡張動作には対応させていません。ラジコンで使用する目的なので90度信号以上は来ないという事で。

 「リトラクタブルライトのスロー制御」という目的を達成できればいいのでかなり手抜きをしています。特定の受信機との組み合わせでは右端まで回した位置ではオーバーフローするかもしれません。(手元に有る物の組み合わせでは動作OK)

 写真は受信機の代わりに「ラジコンサーボ"2位置"コントローラ」を信号源としてテストしている様子。
 1つ作っておけばサーボのテストや色々な用途に応用できるので便利です。




「迷い箱」は各ページの記事用と、項目別の総合投書ページがあります。
このページの記事内容に関するご意見・ご質問、談話等はこのページに、
このページに直接関係の無い話題は↓の各項目別に投書してください。
回路・デンキ・改造 電池・バッテリー・充電器
ライト・ランプ・LED 一般「迷い箱」過去ログ

【投稿受付終了】
 本ページ(この記事専用)の『迷い箱』(投稿コーナー)の受付は終了しました。
 現在は過去の投稿の閲覧のみ可能です。

 サーボ回転角180度仕様について。
 だいたい20msの周期に1ms〜2msのHiのみでサーボの角度は決まりますが、180度拡張は90度版とプログラム的にどのように違うのでしょうか?Hi2msを超える設定とか?教えてください。よろしくお願い致します。
miki 様
お返事  時間を広げているわけですが・・・

 「プログラム的にどう違う?」というご質問ですが、プログラムを全公開しているのになぜそういうご質問が出るのか理解に苦しみます。
 プログラム・ソースリストをご覧になればおわかりになるかと思いますが、何も包み隠さずに全て載せているのですが、「それでもわからない」という意味でしょうか?

 パルス幅の調節方法についても全てプログラムソースに記述していますので、ソースリストをご覧ください。
 上にも書いていますが、《《PIC使用小ネタ集 》》ではあくまで自分用の製作の記録的な面や小ネタ扱いのページとして、あまり突っ込んだ説明や詳細な部分まで解説していません(解説する予定もありません)。そのかわりにソースは全公開していますのでプログラムに興味のある方はソースを見て理解してください。

 何も書いていなくてご質問を受けるなら私のほうに非がありますが、全て公開している部分(数値についても全て書いています)に付いてご質問をされるとは思っていませんでした。
お返事 2009/3/5
 
 メーカーに居たときは、耐久試験器にはエアシリンダーを使ったメカやロータリーソレノイドを使いましたが、ラジコンサーボなら安くて便利ですよね。
 大昔に、この2位置コントローラと同じ機能をワンショットマルチ2つで作ったことを思い出しました。
kazz 様
お返事  エアや油圧シリンダーが本格的で良いのですが、個人でそれを何個も持っている人は少ないでしょうね。
 モーターと低速ギヤ・カム等を組み合わせて「腕木」が動くだけの装置を作ればそれぞれ専用の試験機が作れるでしょうけど、ラジコンサーボにはそれらの必要なメカが詰まっているので非常に便利です。
 しかもそういうメカが詰まって安い物なら一個1000円くらいと安価。

 本格的なメーカーの耐久試験機としては、ラジコンサーボの耐久性のほうが問題になるでしょうから、あまり本格的な商用装置には使えませんが、ちょっとした実験用には良い物が簡単に手に入り、またコントローラもディスクリで作らなくてもこんな8ピンのPIC一個でできるのは凄い技術の進歩ですね。
お返事 2008/10/24
 
 あの蚊取りラケットのスイッチをテストされたのはこの方だったんですか。

(電気回路的な耐久テストも大変だと思いますが、ハードの物理的な耐久テストは更に超大変ですよね。)

 最少部品で作り易く汎用性があって、もくもくと活躍してくれるロボット君はえらい。
(愛称をつけたくなりますよね。)
みじんこ 様
お返事  ごはん(電気)さえ与えておけば、黙々と作業をこなすたいへん働き者のロボット君です。名前はまだ無いです。

 「ロボット」と言えば電子ホビーの世界では人型の二足歩行ロボットが脚光を浴びていますが、工場の生産ライン等でただひたすら作業をこなしている産業用ロボット達のほうがはるかに数が多いはずです。

 人を助けてくれるメカはたいへん貴重な存在ですので感謝しなければなりませんね。
お返事 2008/10/23
 

■ 「気の迷い」気になる実験・報告一覧ページに戻る

(C)「気の迷い」 Kansai-Event.com
本記事の無断転載・転用などはご遠慮下さい