PICでシリアル送信機能付の気圧・温度・湿度計を作った

※記事内に商品プロモーションを含む場合があります

本体はLPS331交換の記事などで登場しています。

SCP1000で作った気圧計はSPIとI2Cバスで8ピンすべて使い切っているので
拡張性がなく、I2C経由でArduinoへの送信も失敗したので
新たに作ることにしました。

SCP1000で作った気圧計は、単4電池で動作しますが1週間ほどで電池が切れます。
なので今度は、充電池を使いました。

PIC12F683だとプログラム領域も一杯なのでピンもプログラム領域も多いのと
ソフトI2CではLPS331と通信できなかったのでハードウェアI2Cがある
PIC16F1827を使用しました。

IMG_6709

電源部

電池は単四のニッケル水素充電池を3セル、3.6Vを搭載して、
PICやセンサー用の電源電圧3.3Vは秋月電子通商で売っている
低損失CMOS三端子レギュレータ 3.3V150mA XC6202P332TB
を使用しました。

充電はマイクロUSB経由で、準定電圧充電にしました。
一応、2SC1815でスイッチを付けて一定の電圧以上になったら充電をカットできる様にしました。

PICマイコン

SCP1000ではHi-TECH Cコンパイラを使用しましたが、今回はXC8を使用しました。

機能的にはほとんど一緒だと思いますが、多少異なる点があるかもしれません。

今回はすべてのデバイスとの通信が、I2Cで行っています。

タクトスイッチを付けて、画面の切り替えが出来る様にして
現在の所、電池電圧を表示出来る様にしました。

電源電圧はレギュレータで降圧されているので電源電圧以上の電池電圧を測定するには
分圧抵抗が必要です。

今回はそんなに電圧に違いは無いので半分び分圧して入力しました。
半分に分圧するには同じ抵抗(1KΩなど)を電池-測定端子、測定端子-GNDに接続します。

ただ、テスト時は電圧がうまく表示されていましたが、
電池電圧を分圧したら、測定端子の電圧がほぼ0Vになり測定できません。
かなり悩んだ結果、TRISの設定が出力になっていました。
また、すべてのピンを0にする様になっていたのでPICに引っ張られて
電圧が下がっていたのだと思われます。

 センサー

気圧の取得にはLPS331を、
気温と湿度の取得にはAM2321を使用しました。

どちらもI2C接続です。

LPS331上のLEDは気圧の誤差の原因や消費電力を増やす要因となるので
ボード上の電流制限抵抗を取り除いて光らなくしました。

近くにはI2Cバス用のプルアップ抵抗もあるので
プルアップを使う際は要注意です。

液晶

液晶は秋月で売っているAQM0802A-RN-GBWを使いました。
この液晶は小型で消費電力が1mA以下と、とても省エネです。

ただし、ガラスで出来ているので割れることもあるので注意です。

この液晶は普通のユニバーサル基板にはささらないので
秋月で売っているI2C接続小型LCDモジュール用ピッチ変換基板
を使うと必要なコンデンサも基板に実装されているので便利です。

セットで買った方が割安です。

ストロベリーリナックスでも同じ物があります。

まとめ

今回はケースには入れず、基板だけにしてみました。

また、測定データのシリアル送信機能もあるので
arduinoで作ったシリアルSDロガーで測定データをロギンク出来ます。

ソフトの方を充実させたいのですが、プログラム領域が30%しか空いてないので
空き容量を見つつプログラムを作って行きたいと思います。

まだ、開発中なのでソースは公開しませんが、欲しい方はメールフォームより
連絡してください。