PIC16F1454でサーモスイッチを作ってみた。

以前に投稿したATtiny85版をPIC16F1454に移殖してみた。

ATtiny85版で対応したセンサー(LMT01, LM35, LM60, LM61)がどれもあまり芳しくなかったため今回はAliexpressで500円程度で購入可能なSONOFFのDS18B20温度センサーとAM2301(DHT21)温湿度センサーに対応してみた。DS18B20は初めて使ってみたが校正精度や安定性は他のセンサーとは比べ物にならないほど優秀だ。それに比べるとAM2301は校正精度や安定性で若干劣るようだ。

ついでにPIC16F1454のUSB機能を利用し仮想COMポート(CDC-ACM)経由でPC側から温度を取得できるようにしたり、USBの電源制御、PWM機能を追加したりした結果、ほぼコード領域一杯という前回の投稿に引き続きお腹一杯プロジェクト第二弾になってしまった。(笑)


SONOFFセンサー(DS18B20 or AM2301)と接続し動作する仕様であるが、2.5mmのイヤホンジャックにセンサーを抜き差しすると電源ラインが一時的にショートすることが判明。その保護のため電源ラインに100Ωの抵抗を追加し対策。イヤホンジャックは意外に扱いが面倒だ。
内部の様子。
ケース上部には、穴が開いておりDS18B20を直接させるようになっている
DS18B20を基板にさしている様子。

足を適切な長さに切りつめるとケースにピッタリ収まるようになる。

ちなみにセンサー用の電源電圧は5V。他社の安い模造センサーも出回っているが3.3V仕様のものもあるので注意すべし。また、DS18B20直刺しとSONOFFセンサーの同時接続はできない。

回路図

その他、[Microchip:mla][USB Device – CDC – Basic]に含まれる下記ソースが必要。

下記ソースも必要。

Using the PIC16F1XXX High-Endurance Flash (HEF) Block

コード領域の最後の1ページをeeprom代わりに使用しているためブロジェクトのプロパティページにて次の設定が必要。

PC側で動作するコマンドライン・ツールのサンプルコード。windowsはmingw、linuxはgccでコンパイルする。参考まで。