これまでにArduinoを用いていくつかの工作をしてきました。 円高とはいえArduino Unoは1個3000円程度で、 別の目的の工作を作る度に買い換えるのはもったいないですね。 今回は安上がりに工作をするために、 Arduino Unoを単なるプログラムの書き込み機として用い、 実際の応用ではIC素子(ATmega328)のみ単独で動作させる方法を調査しました。
本手法を用いて 低消費電力のデータロガーを作りました。
買ってきたばかりのATmega328には何も書き込まれておらず、 このままではArduinoのボードに差してもプログラムを書き込むことはできません。 マイコンに詳しい方は、自分でブートローダーを書き込んで使える状態に できるそうなのですが私は経験がありません。(検索するといくつかの手法が見つかります。)。 そこで、Arduino用に の ブートローダーを書き込んだATmega328をスイッチサイエンスから 購入することにいたしました。350円、高いか安いか良く分かりませんね。 でも、毎回3000円払うよりは良いですし、環境に優しいですね。
追記:[Aruidno duemilanoveを 用いてATmega328ブートローダーを書き込む]で簡単にブートローダーを書き込む方法を示しました。
クロック用の水晶発振子が必要となりますので 標準の 16 Mhzを用意いたしました。これを変えてしまうと delayなどの時間に関係する関数が全てシフトしてしまいます。 Atmega328が350円、水晶発振子とセラミックコンデンサは50円程度ですので Arduino Unoを1台持っていれば、500円で作成可能ですね。
以上の準備が出来たら、残りは簡単です。
Arduino Unoには新たに買ってきたAtmega328を差しこんでおけば 新品同様に使えます。(ブートローダーの書き込みは必須です)。
小さいマイナスドライバーを差しこんでゆっくりと持ち上げれば 簡単に外すことが出来ます。
ATmega328の端子番号をチェックして水晶発振子とコンデンサを取り付けます。
単三電池4本からの、安定化されていない電圧でも正常に動作しました。
アナログ入力端子5番から電圧を読んで、
それに応じた周波数で赤LEDを点滅させました。
ATmega328のデータシート(簡易版)などを参照しますと
周波数に対して必要な電圧が指定されています。今回のような外部クロックを用いる場合には
4 MHzでは1.8 V, 10 MHzでは2.7 V, 最大の20 mhzで4.5 Vのようです。今回試した限りではVcc=3.3 Vでは16 MHzでの動作は出来ず、5 Vが必要でした。
3.3 Vで走らせるためには、クロックを半分の8MHzなどとすると良いかもしれませんね。
(この後チェックで、AVccへの電力供給がなされていないミスが見つかりました。
3.3 Vでも16 MHzで動作するようです。)
ここで公開するアイデア/装置は安全性を保障しておりません。 用途に応じた設計を行い、十分な安全検査を行ってからご利用ください。 本サイトの情報の営利目的での利用はご遠慮ください。 本サイトの内容の無断転載を禁じます。© 2011 TYK