2016-06-29 15:24 | カテゴリ:PIC応用回路
先日完成した、PICでジョイスティック入力を赤外線信号に変換して、それを送信し、RCサーボを自在に制御するプログラムが出来ました。
動画を撮影しました。
もう、お腹一杯ですよね。

電源を入れてしばらくして、サーボの制御が出来るようになります。
手元のVRが小さいので、細かな調整が出来ませんので、サーボは、キッキッと動きますが、じんわりとジョイスティックを動かすとそれなりにサーボも動きます。
できれば小さなプラモデルの戦車や車に使いたいですね。

【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(4)
2016-06-24 23:36 | カテゴリ:PIC応用回路

リモコンとしてある程度実用に供する
EEPROMを使う



PICの電子工作をしていると、ちょっとしたデータを電源OFFしても記憶しておきたい時がありました。

先日から製作しているVRを利用したジョイスティックの、実際の動作範囲や補正係数を電源投入後に内部で計算し、それに基づいて、内部処理をするのですが、電源をOFFにしてしまうと、それらのデータもリセットされ、再び電源を入れた際に、また同じ事をしなければなりません。
もし、この様な補正データなどをPICの中に記憶して、次回起動したときにそれが利用できればありがたいです。

実は、ある種類のPICには、内部にEEPROM(不揮発性の読み書き可能なROM)があり、そのデータは、電源を切っても保持されているので、これを利用すれば上記の目的がかないます。
PICの製造元であるマイクロチップ社のWEBを見ていたら、このEEPROMにアクセスする方法が書いてありましたので、ひょっとして皆さんのお役に立つかと思いまとめてみました。

EEPROMに読み書きするには、いくつかの方法が用意されています。
簡単な方法では、XC8には、EEPROMに書き込む関数や読み出す関数がちゃんと用意されています。
しかし、EEPROMのどの部分(アドレス)に書き込むのか?また、どのデータを読み出すのかなど、アドレスをちゃんと管理しなければならず、面倒です。

eeprom01.jpg

eeprom02.jpg

eeprom03.jpg

eeprom04.jpg

そこで、私が利用した方法は、EEPROM Qualifierという方法です。

これは、プログラム内で使用する変数の定義を、EEPROM内に記憶領域をとるという方法で、非常に簡単です。
プログラム中では、EEPROMを意識する必要は無く、通常の変数として、扱います。
電源を再投入したときには、値がちゃんと保持されています。

これが実際の私のプログラムで使用した部分です。(これだけです)
通常の変数と同様に読み書きできます。(たぶん実行速度は遅くなると思いますが)

eeprom_EXA.jpg

実際に詳細はこちらを御参照ください。

http://microchip.wikidot.com/faq:36


と言う訳で、EEPROMの利用により、補正値の長時間保持にも成功し、当初考えていた赤外線リモコンの送信機がやっと出来ました。

左右二組のXY軸のジョイスティックと、左右にプッシュボタンを備え、毎秒約20回程度の頻度で、各ジョイスティックのAD変換値とプッシュボタンの状態を赤外線RS232通信で送信する仕様です。
初回のみ電源投入後、黄色LEDが早く点滅している間、左右のジョイスティックをゆっくり、ぐりぐり回転させます。
LEDの点滅が終了したら、OKです。





実際の使用では、単に電源を入れて1-2秒待って、ジョイスティックを動かすと赤外線通信がなされ、PCに表示されます。
現時点のプログラムは、動作確認用のため、一連のデータ通信には、3秒の「待ち時間」が挿入されています。




最終的なプログラムはここです。(動作確認用のDelay3秒が入っています)

Prog030.txt


これで、完成です !!
お付き合いいただいて、ありがとうございました!
【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(4)
2016-06-22 18:19 | カテゴリ:PIC応用回路

回路を自作して赤外線リモコンに仕上げる

ブレッドボード上の回路で動作が確認できましたので、一連のハードを汎用基板に組み込みました。
使用する部品はこちらです。

joy07.jpg

続きは、、、
【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(2)
2016-06-20 18:26 | カテゴリ:PIC応用回路

最近製作しましたPICを使用してLEDの点滅やRCサーボの制御を行うプログラムですが、RCサーボの接続と動作に多少の制限があり、思うような動作が出来ない場合があるとのコメントをいただいていました。
原因は、サーボを制御する関数内で、現在のサーボの位置やサーボ動作を規定する動作ステップ値を記憶する変数を一組しか設定していなかったからなんですが、これをサーボの数だけ増やしてやれば、それぞれのサーボを自由に動作・停止させることが出来ます。
一方で、今回使用しているPIC 16F876は、内蔵のメモリー(RAM)にかなり制限があって、配列変数を多く取れません。
そこで、ポートAに動作指定用のSWを2個、LEDポートを11個(RA2-4)と(RB0-7)、じわり点滅のPWM用のLEDを1個(RC2)、そしてサーボを4個(RC4-RC7で専用)という仕様でプログラムを見直しました。

変更点は、新たにデータ保存用の配列を定義し、

newDefine.jpg

新たにサーボを接続するポートCをON/OFFできるように、ポートON、OFFの関数を修正、

newsv.jpg

new_on.jpg

また、配列の初期のセットアップデータもデモ用で変更しました。

initial.jpg

回路を組み上げて、テストしました。
LEDは、順次点滅、定期点滅、ランダム点滅をしつつ、RCサーボが、SWのON/OFFに合わせて、動作します。
SWを押すタイミングや、サーボの動作方向に制限はありません。
また、複数サーボの動作のために、MAINルーチンのdelay関数を20msecから5msecに変更しました。10msecでもかまいません。

動作状況は、こちらです。



最終プログラミングは、こちらです。

Prog101.txt

是非、使用されて感想など頂ければ幸いです。


【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(10)
2016-06-17 11:56 | カテゴリ:PIC応用回路

実際にシリアル通信信号に変調をかけてみる


PWMの発信も上手くいきましたので、次はこれを利用して、シリアル送信信号を変調します。
まず、通信速度ですが、後述のPWMで変調をかけると、変調の周波数が38KHz程度のため、高速のRS232通信は出来ません。
2400bps程度の速度で設定して、様子を見ることにします。

その部分のプログラムを変更しました。

NewRS232.jpg


続きはこちら、、、、、

【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(7)
2016-06-14 19:53 | カテゴリ:PIC応用回路

AD変換した値を赤外線で送る


小物工作とプログラムを続けています。(模型製作はちょっと休憩です!)
前回は、AD変換した値をRS232のシリアル通信で、PCに送信するテストまで行いました。
9600bpsのシリアル送信でちゃんと遅れたことが確認できました。
今度は、このシリアル通信(有線方式)を赤外線通信(無線方式)で送ろうと、試みました。

赤外線通信(IR)は、TVのリモコンなどで幅広く実用になっています。
TVリモコンでは、メーカーによって、動作コマンドのコードが決められていますが、通信の基本は共通です。

つまり、赤外線のON/OFFをシリアル通信の様に断続して行い、受信側では、それを元の信号に戻すわけです。
ポイントは、赤外線のONの際に約38KHz(周期26.3マイクロ秒)で変調が掛けられていると言うことです。
したがって、送信回路側では、この変調をかけて、赤外線LEDを点滅させなければなりません。

一方、受信側では、この変調を元に戻す(復調)作業は、実は、赤外線受信モジュール内で自動的に行ってくれています。

IR_Sens.jpg
IRS.jpg

続きは、、、、、
【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(7)
2016-06-10 19:00 | カテゴリ:PIC応用回路
前回は、浮動小数計算でてこずりましたが、今回は、スムースでした。

まず、AD変換の入力部のジョイスティックの精度がイマイチだったので、水平型のXY入力VRを用いて、簡易コントロールボックスを製作しました。
この水平型XYジョイスティックも、以前、秋月さんから購入していました。

JS001.jpg

JS002.jpg

テストするまでも無く、10KオームのB型と書いてあります。

続きは、、、
【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(4)
2016-06-07 22:28 | カテゴリ:PIC応用回路
AD変換した値をちゃんと利用する。


前回、AD変換を確認・テストするために、手持ちの廃品利用でジョイスティックもどきを製作しました。
これを利用すれば、PICでAD変換を利用した工作の試験が便利に出来そうです。

JS06.jpg

続きは、、、、
【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(4)
2016-06-03 16:00 | カテゴリ:PIC応用回路
最近PICの電子工作をしていて、ちょっとふべんだなぁ、と感じることがあったので、工夫してみました。


一つは、デバッグなどでポートの出力を確認したいときに良く使用するLEDと抵抗のセットですが、ブレッドボードで、多くのポートの出力を確認しようとすると、結構、ボード上のスペースを食います。
ここをLEDセットの小物で簡単にしたいというのが、アイデアです。

まず、手持ちの10LEDアレイ(緑x5、黄x3、赤x2)が有りましたので、これに適当な抵抗を半田付けし、一方に、ブレッドボード用のジャンパー線を半田付け。

LED01.jpg

このジャンパー線ですが、秋月で二回購入した物の最近の分でしたが、リード線と差込ピンのプラモールド部分とリード線が断線しやすく、ここの保護の為、瞬着や、ヒシチューブで保護しておきました。

LED02.jpg

実際の使用状況です。

LED03.jpg

耐久性は?ですが、役に立ちそうです。



もう一つは、アナログ入力用のVRです。
最近のPIC工作でも使用しましたが、動作させる際は、必ず、両手で持つか、片手でも廻すのに苦労します。
二つのVRだと同時動作は無理です。

そこで、何か良い方法が無いかと、部品箱をあさっていると、昔購入したゲーム機のパドルに内蔵されているジョイスティックのBRが出てきました。

JS01.jpg

これは、上下左右に自由に動作しますので、2CHのVR変化をPICに入力するのにはもってこいです。
しかし、これを上手く収納するケースがありません。
何か無いかと家中探して、昔、息子が使用していた整髪量の空き瓶が見つかりました。

JS04.jpg

これはちょうどおあつらえ向きの形です。
しかも大きな加工無しでいけそうです。
色々考えて、こんな形で取り付けて見ました。

JS02.jpg

JS05.jpg

JS06.jpg

これでAD入力のテストも簡単に出来そうです。
【ジャンル】:趣味・実用 【テーマ】:ホビー・おもちゃ
コメント(4)
2016-06-01 17:00 | カテゴリ:ヘリコプター

先日来、組み立て、調整をしているヒロボー社製のRCヘリのSDXですが、オプションパーツ他、新規パーツを搭載しました。

今回調達したのは、

* SDXオプションボディー(カウル)
* SDXオプション・メインギア
* JR製、6CH受信機(最新ダイバーシティーアンテナタイプ)
* JR製、回転センサー

です。

SDX_parts.jpg


つづきは、、、