PIC
12F675を使った計測アダプター
|
2004年12月6日
機能説明
秋月電子に立ち寄ったところ、フラッシュROM搭載の新しいPICマイコンが店頭に並んでいたので思わず買って帰りました。
僅か8pinでありながら10BitのADコンバータを搭載。しかも4MHzのクロックを内蔵していて、外付け部品は殆どいらない。お値段も150円と聞けば、何だか嬉しくなってしまいます。
テストに何か書き込んでみようと思ったら、秋月電子のPICライターのVer.3では、このマイコンはサポートしていないことを、後になって知りました。この際なので、再度秋月電子でバージョンアップキットを買いました。
使い方もADコンバータの設定は、16F873などと同じでIOポートの名称が違うくらいです。
今回まず手始めに、ADコンバータを動かして見ることから始めますが、結果を見る手段としては、ポート数の制約でシリアル通信しか方法がありません。
そこでパソコンアダプターにしてシリアル通信で、データを検証してみることにしました。
せっかくなので、PICからデータを送信するだけでなく、パソコンからのコマンドでPICを動かすようにしました。
秋月電子で発売されている「PIC−ADC超小型計測アダプタキット」を真似てみることにしました。
回路図は、図1の通りです。
|
【図1 PIC計測アダプター回路図】 |
GP3ポートは、マイコンハードウエアの制約でInputポートにしか設定出来ません。
また、RSポートの受信には、タイマー割り込みを使用する関係で5PinのGP2(TO1)を使用しなければならず、
アナログポート2は使用できませんのでアナログ入力ポート3ポート,デジタルインプットが1ポートの計4ポートを使用します。
また、電源は、PCのRSポートからの電源をダイオードで整流後、ツエナーダイオードで5Vを取り出します。
自作のデスクトップPCだと、RS信号は10V程出力しますが、ノートPCだと、7V程しか出ず、PICを駆動すると、ツエナー出力も4V程に落ち込みます。
3Vまで落ちてもPICの方は問題なく動きますが、本機からのTXDのレベルが低すぎて、PC側が認識してくれないようです
電流は思った程取れないようです。
抵抗値を大きめに調整して、電流消費を抑え、何とか、ノートPCでも動作するようになりました。
ADコンバータの入力には、掛け時計に付いていたサーミスターと湿度センサーを繋いでみました。
また、GP3には、テスト用にプッシュスイッチを繋ぎます。
R6,R7は使用するセンサーによって、AD入力端子に適当な電圧が入るように抵抗値を調整します。
組み立てたセットはチップ部品を使用し出来るだけ小さく纏めてみました。
|
|
サーミスター(手前)と湿度センサー(奥) |
GP3にテスト用にプッシュスイッチを取付けます。 |
ソフトウエア
ソフトは、MPLABでアッセンブルしています。
尚、本プログラムでは、内蔵RCクロックを使用している関係で発振精度のズレでBITTMRと、BITTMR1値の調整が必要な場合もあります。
ダウンロード |
パソコンとのシリアル通信部のプログラムは、ここにある通信ソフトをモジュールとして使用させて貰いました。http://www.picfun.com/
変更点はクロックを10MHzから4MHzにすることまた、計算値と実際の波形を見ると、大分差が発生し、上手く送受信出来ませんでしたので、タイマー0のカウント数を調整しました。
Pcから本機へのデータ受信は、最後まで苦慮しましたがWDTの検出タイミングを立下りクロックで検出するようにしたところ、漸く送受信とも上手く出来るようになりました。
PIC内蔵RC発振機が、どの程度の精度になっているのかが判らず、タイマーの補正値をカット・アンド・トライでオシロスコープの画面を見ながら、調整しました。
コマンドリファレンス
セットが完成したら、PCのRS端子に本機を差込み、Hyper-Terminnalを起動します。
パソコンとの通信は、9600BPS、Nonパリテイ、スタートビット1、ストップビット1で設定します。
パソコンとのコマンドは全てASCIIコードにのみのテキスト送受信で行います。
本機のコマンドは図1の通りです。
PCからのコマンド |
内容 |
PCへの戻りデータ |
r |
Reset(ソフトリセット実行要求) |
Power-ON時の状態に戻る。(ADチャンネルは0chに戻す) |
v |
Version(バージョンNo要求) |
ソフトウエアのバージョンをPCへ戻す |
l |
Load(AD変換実行) |
現在設定されているADチャンネルのAD変換を実行し値をASCIIコードで”000”〜”3FF”の値にしてPCへ送信する。 |
c |
Channel(ADチャンネル要求) |
現在設定されているADチャンネルを0ch,1ch,3chのいずれかをPCへ送信する。 |
w※ |
Write Channel |
Wの後に0,1,3のいずれかのADチャンネル番号を入力すると、そのADチャンネルに切り替える。 |
p |
Port Moniter |
現在のGP3の状態を”Hi”又は”Lo”で返す。 |
s |
Load AD on Switch |
GP3がLoになった時のAD値を返す。※本コマンドの停止は、GP3をLoにするか、ハードリセット操作のみである。 |
e |
Every Time(AD値の連続要求) |
本コマンド受信後、現在設定中のADチャンネルの変換データを連続してPCへ送信する。※本コマンドの停止は、ハードリセット操作のみである。(電源をCOMポートから貰っているので、実際にはCOMポートを一旦CLOS-OPENで復帰可能。) |
動作確認方法
@ 製作した計測アダプターをRSポートに接続します。
A Windowsに付属のハイパーターミナルを起動する。
B 新しい接続で適当な名前とアイコンを選ぶ。
C 接続方法のところでポート番号を選ぶ。
D
プロパテイ画面で図2にように設定し、OKで保存する。
【図2 ポート設定画面】
E 通信が開始され “>”が表示されれば、パソコンとの送信はOKです。
【図3 起動時の初期画面】
F
リセットのタイミングによっては何も表示されない場合もあります。
この場合には、図3の電話ボタンまたは、メニューから通信→切断、通信→電話を実行し、再度確認してみてください。
G次に“v”(半角小文字のv)をキーボードから入力します。
ファーウエアのバージョンが表示されます。
【図4 バージョン表示】
G “c”(半角小文字のc)をキーボードから入力します。
現在の有効なADコンバータのチャンネルが表示されます。
デフォルトは0Chとなっております。
【図5 ADチャンネル表示】
H 入力チャンネルを変更する場合には”w”の後にADチャンネル番号を入力します。
例)ADチャンネルを1にする場合には”w1”
”w0””w1”,”w3”の3つから選びます。(w2指定時ははエラーとなります。)
計測アダプターからは設定したADチャンネル番号を返します。
送信した番号が無効な場合は現在の設定チャンネル番号を返します。
【図6 ADチャンネル変更】
I “l”(半角小文字のL)をキーボードから入力します。
現在の有効なADコンバータのチャンネルからのAD変換値を2桁のASCIIコードで返します。
値は0000〜03FFです。
図7は、チャンネル0とチャンネル1に繋いだセンサー値(021A,03CD)を返した例です。
【図7 AD変換値表示】
J “e”(半角小文字のE)をキーボードから入力します。
AD変換値を連続で送信します。
中止するには、電話ボタンまたは、メニューから通信→切断、通信→電話を実行し、強制リセットを掛けます。
・実際には、ポートが閉じられると、RTSからの電源供給が絶たれ、PICマイコンへの電源がOFFし、
再度ポートを開くことで、ハードリセットが掛かります。
【図8 AD変換値連続表示】
参考文献:トランジスタ技術2004年9月号,ファンコントローラ