以前に、ATmega328を使って、各種の情報を電圧として読み取り、 SDカードへ保存するデータロガーを報告いたしました。 (低消費電力のデータロガー) 今回は、動作クロックを外部発振の16 MHz (8 MHz)から ATmega328の内部発振の128 kHzへと下げることで、 消費電力をさらに低減したデータロガーを作製しました。 長時間の動作が可能になったため、日照量(明るさ)と温度を長時間連続して記録するシステムを作製しました。 単三電池2本で、平常時に0.86 mA、SDカード書き込み時には1.1 mA程度の消費電流 でしたので、およそ2000時間 (83日)の連続測定が可能です。 ブレッドボードで配線して100円ショップのお弁当箱に入れれば完全防水です。 Sep 4, 2011.
作製は以下の3段階の手順に分けることができます。電子工作が初めての人は かなり時間がかかる可能性もあります。また、情報が不足している可能性もあります。
AVRのプログラマーを使用しますので、 慣れている方はプログラムを Arduinoベースで書く必要はありませんが、 私は初心者ですので上記方法をとりました。 では、順に追って方法を解説いたします。
以下からコピーしてお使いいただければ幸いです。 私の環境では動作しておりますが、使用環境によっては 動かない可能性もあります。適宜修正してください。 バグに関してはお伝えいただければ幸いです。 void setupの冒頭でアナログ電圧の読み取り用の基準電圧を決定しています。 今回は1.1 vを用いましたが、お使いのセンサーの最大値に併せて 3.3 Vや外部基準などに変更してください。
Arduinoを用いた日照計、温度計のスケッチ(プログラム)
以下の写真のようにコネクターを作製し、 ブレッドボード上のAVRプログラマー mkIIとATmega328を接続します。
クロックを内部125 kHzに変更するのは簡単です。
1、AVR Studioを立ち上げます。
2、tool-program AVR-Auto Connectを選択します。
3、うまくいかないときには接続方法を確認します。 Platform: AVRISP mkII, Port:USBです。
4、通信の周波数を100 Hzに落とします。 main-ISP mode-Settingsで変更できます。 128 kHzに設定しますと32 kHz程度でしか 通信が出来なくなります。元に戻したいときに エラーが発生することを防ぐため通信のクロックを下げておきます。 数ビットの書き換えですから100 Hzでも全く気になりません。
5、SUT_CKSELで、Int. RC Osc. 128 kHzに変更します。
ここまでで、@マイコンはプログラムが書き込まれ、 A外部の水晶発振子なしで128 kHzで動作する状態になっています。 続いてセンサー類を接続します。
下記の回路図のように配線します。 単純ですのでブレッドボード上でも十分ですね。 ここでは小型のブレッドボードを2枚使っています。 照度センサーは照度に比例した電流を流しますので 100Ω程度の抵抗で電圧に変換して読み取ります。
実際に、一週間連続して照度と温度を計測しました。 この間、電池は交換しておりません。 直射日光は浴びませんが、設置しだ台(エアコンの室外機)が 日光を浴びていますので、計測された温度は気温でありません。 単純にセンサーの温度となります。 内臓RC動作はやはり水晶発振子と比べて 安定度にかけ、時間の変動が大きいことがわかります。 (24時間を正確に測定で来ていません。)今回は 日の出と日の入り時刻で補正できるので大きな問題はありませんが、 正確な時間が必要な用途には不向きですね。
ここで公開するアイデア/装置は安全性を保障しておりません。 用途に応じた設計を行い、十分な安全検査を行ってからご利用ください。 本サイトの情報の営利目的での利用はご遠慮ください。 本サイトの内容の無断転載を禁じます。© 2011 TYK