久しぶりの実用品。秋月の商品を見ていて、8文字*2行の小型の液晶を見つけたのでこれを使って3代目のタイマーを作ることにした。温度と湿度を測れるセンサーも購入したので、これも組み込む。
液晶は8文字*2行のもので、I2Cでマイコンにつなぐ。マイコンは20pinの18F14K50を使いたかったが、デバッガを使えないと新しいデバイスを使うのは難しいので、28pinの18F24K20にした。温度・湿度センサはAM2321というものだが、使えるようになるまでえらく苦労した。
基板は小型にするため、47*72mmのICB288Gとした。2代目の半分の大きさにできた。
電源は液晶が3V以上でないと動かないことが判明したので、ステップアップレギュレータを8pinのパッケージに組み込んだモジュールを秋月から購入して使うことにした。これで3.3Vが出てくる。電池ケースは手元に単3電池2本用のものしかなかったので、これを使う。ICB288Gの基板に取り付け、タイマー基板の裏側に重ねて取り付けた。
液晶はマニュアルに従ってコーディングし、I2C経由で問題なく動くことが確認できた。次に温度・湿度センサを動かそうとしたが、マニュアルが中国語のものしか見つからない。I2Cと単線接続の2通りの方法があるらしいが、単線接続の方はマニュアルの英語の図を見てなんとかできそうなので、まずこちらをトライしてみた。オシロで見るとそれらしいデータが出力されているようなので、これをマイコンで取り込もうとしたが、データの取り込みのために80μsec毎に割り込みを処理する必要があることが判明。PICのクロックを最高の16MHzにしたがまだ追いつかない。割り込み処理で、それぞれの割り込みのイネーブルとフラグをチェックしていたが、高位の割り込みはセンサの入力だけにし、チェックなしで処理するようにしてなんとかデータを取り込むことができるようになった。
下の図の上側はセンサからの入力波形、下側は割り込みの入り口でLEDをオンにし、出口でオフにした波形。センサの信号の立ち上がりで割り込みをかけている。
次にI2C接続を調査。ネットで探して見たら「デジタル温度・湿度センサーAM2321を制御する」で丁寧に説明してくれている。この説明とPICのマニュアルを読み、I2C経由の読み込みのコーディングを行い、なんとか使えるようになった。
下の図の上側はI2Cのクロック、下側は割り込み中LEDをオンにした波形。
動作モードは温度・湿度表示、タイマー、メトロノームの3つとする。操作子はタクトスイッチ3ヶとボリューム1ヶ。Sw1はモード切替(1回押しで温度、2回押しでタイマー、3回押しでメトロノーム)、Sw2はスタート/ストップ(トグル)、Sw3は値を変更するパラメータの切り替え(トグル)、ボリュームは値の変更(右に回すと+、左に回すと-)。
温度・湿度は10秒ごとに測定し、上の行に温度、下の行に湿度をどちらも小数点付きで表示する。
タイマーは99分59秒まで設定でき、上の行に分、下の行に秒を表示する。値の変更はSw3を押すと選ばれた方の行の先頭にカーソルが表示される。Sw2を押すとスタートし、時間が来ると「ピピピッ・ピピピッ」と音で知らせる。
メトロノームはテンポ(60~250bpm)とコーラス数(1~32)を設定でき、上の行にテンポ、下の行にコーラス・小節が表示される。Sw2を押すとスタートし、まずイントロ1小節分「キッコッコッコー」と音が鳴り、続いて1小節目から「キッコッコッコッ」と繰り返し、4小節ごとに「キッコッコッコー」と4拍めが長く鳴る。設定したコーラス数が終わると動作が終了する。
温度の時間系列データをとりたいです。
返信削除データロガーが欲しい。
(ご参考)
PICを使ったデータ・ロガーの製作
ISBN978-4-7898-1251-1
これを参考に作れとは言いませんが。
PCとつなぐ手段はできてるので、今度作ったような温度計とつなぐ作業とPC側のソフトを用意すれば使えるようになるはず。時間あるときにトライしてみましょう。
返信削除