多くのArduinoボードは基本的に5Vロジックで動作し、動作クロックは16MHzで動いています。
これはボードにもよりますが、Arduino UnoやNanoなどではATmega328PというAVRマイコンが搭載されていて上記動作電圧及びクロック周波数で動くように設計されています。
一部のArduinoボード、例えばArduino Pro MiniではUnoやNanoと同じATmega328Pが使われていますが、5V 16MHzで動作するボードと3.3V 8MHzで動作する2つのタイプのボードが存在するものもあります。
Arduino Unoを例に見てみると、UnoのボードにはATmega328Pチップの外部クロック用端子(XTAL1/XTAL2)に16MHzのクリスタル(発振器)と22pFのコンデンサが繋がれています。(Nanoでも同様です)
このように基本的にArduinoではATmega328Pに16MHzの外部クリスタル(発振器)を接続して5V 16MHzで動作させるのが一般的です!
しかしATmega328Pには内部オシレータ(チップに内蔵されている発振器)として8MHzの発振器が内蔵されています。
これを使えば、外部に接続する発振器が必要なくATmega328Pチップ単体で8MHzのクロック周波数で動作させることも出来ます。
動作周波数を16MHzから8MHzに落としてArduino(ATmega328P)を動かすメリットってあるのか?
実のところこれはArduinoを開発ボードとして使う場合あまりメリットはないと思いますが、ATmega328Pチップを単体で動かしテストする場合や自作基板にATmega328Pを使う場合などで有効な手段となる場合もあります。
ATmega328Pの動作電圧およびクロック周波数
ATmega328Pの動作周波数は電圧に依存します。
下図にあるようにATmega328Pを16MHzで通常動作させるには最低3.7V以上の駆動電圧が必要となってきます。
ATmega328Pには先述のように8MHzの内部発振器が内蔵されています。
この内部発振器を使いATmega328Pを8MHzの動作クロックに落とすことにより、3V程度の電圧でも駆動することが出来るようになります。
この場合外部クリスタルが必要なくなるので完全にATmega328Pチップ単体でArduinoのように動かすことができ、乾電池や18650といったリチウムイオン電池からの駆動も容易に出来るようになります。
Arduinoをボードレベルで使用する場合動作周波数を落とすメリットはあまりないと思いますが、ATmega328Pを使い自作基板を作るなどの用途では重宝する事もあります。
駆動電圧や消費電力を下げることができ、また他のデバイスとの電圧を合わせるといった事が出来たりと・・・便利に使える場面は多いと思います。
Arduino(ATmega328P)を内部クロック8MHzで動作させるには、対応したブートローダーの書き込み(ヒューズの書き換え)作業が必要となってきます。
また、既にATmega328Pに16MHzの外部クロックで動作するブートローダーが書き込まれている場合、内部クロック8MHzで動作するヒューズの書き換え時に外部クリスタルが必要となります。
詳しくはこちらの記事を参考にして頂ければと思います。


















コメントを残す