システム開発

mmsy2005-02-20

最近忙しくほとんどバイトのシステム開発に時間を割けず、そろそろまずいなぁと焦り始めたので今日一日PICのお勉強をしました。
アナログ部分の回路はほとんど決まっていて、こまごまとした定数を決定するだけで、(たぶん後で修正が必要なんだろうけど)あとはPICのプログラムさえわかれば何とかなるだろうとプログラムの簡単な構成だけ電車の中で考えていました。ただ、PICの(というかアセンブラ)プログラムは組んだことがない(正確にはZ80のシミュレータは実習でやったけど忘却の彼方)ため、一から勉強することにしました。
ということなので、今日の目標としては、PIC16F877Aを使用することに決めているので、これを使ってLCDへの文字表示とA/Dを使って簡単な電圧計を作ることにしました(無茶か?)。
まず最初にLCDモジュールの説明書を読んで、ある程度の流れをつかみました。でも、なんだかよくわからないのでとりあえず簡単な文字表示をすることにしました。
・・・と思ったのですが最低限回路を構成しなくてはならないので、PICとLCDモジュールを配線したのですが、VddとVssをつけ間違えて(最低な間違い)電源を入れてしまいました。幸い過電流保護が働いて壊れませんでした。焦りました。
てきとーに自分の名前が出るようにプログラミング。アセンブラってめんどいけど完全に動作の流れが読めるからそれはそれで面白いのかなぁと思いつつ書きました。
・・・うーん、我ながらスバラシイ。問題なく(多分)表示させられました。いろいろな文字を各ラインに(このLCDは4ライン×20文字)移動させながら書いてみたりしてみました。これは一気にA/Dに手を出してみよー。公称10ビット精度なので、まぁあんまり期待しないで8〜9ビット程度かなぁ?これくらいあれば今回のシステムでは問題ないと判断しているのですが不安なのでとりあえず電圧計作ってみて誤差がどれくらいか見てみよう。
・・・あぁ、やっぱりというか、結構めんどくさい・・・・。とりあえず1ポート分だけにしよう(実際4ポーと使わなきゃいけないのだけど)。
・・・二時間くらいかけてあーでもないこーでもないとやっていきながら、何とかプログラムを焼きこむ。スイッチを入れると・・・動きましたよー。かなりウレシイ。それでもって自分が持ってるデジタルマルチメータ使って比較してみる。デジマルもあまり高くないものなので精度的にはびみょーなんだろうけど、とりあえずこれをリファレンスにして誤差比較。うーん。大体あってるなぁ。量子化誤差で10mVの誤差はあるはずだから(今回はめんどくさくて9ビットで演算した)、20mVくらいの誤差はよしとします(どっちの誤差かわかんないし)。システムの測定でもあまり問題にはならんでしょう。
今日の目標は達成したのでこれくらいにしておきます。ただ、ひとつ誤算だったのは、湿度センサのために交流信号が必要みたいで、さらに対数増幅器が必要だってことに今日気づき(今日まで説明書読んでなかった)、また買い物に行かなければならなくなってしまいました。湿度センサ導入はまたあとにしてもいいかも・・。