マイコンやホームページなど勉強していきます。

僕と一緒にマイコンを勉強していきましょう。

arduino

3Vで動かすシステムを作りたい。

投稿日:

電流値

どうしても、3VでArduinoを動かいたい!!

 

理由は、長時間電池だけで動かしたいからです。

通常の16MHzから8MHzでのクロックで動かせば、色々なメリットがあります。

まずその前に、Arduinoは、ATmega328Pという高性能、低消費Atmel® AVR® 8ビット マイクロ コントローラです。

僕は以前(15年以上前)、このAtmelという会社のFLASHを使ったことがあって、今回Arduinoの仕様を調べるときにあのAtmelがマイコンを設計しているんだぁと、少々懐かしさを覚えました。

マイコンでも、メモリでも、抵抗でも、水晶でも仕様書をちゃんと見ないと思い通りに動いてくれません。他の人がこうすれば良いとネットで教えてくれるので、基本的にその通りにすれば良いのですが、誰もやっていないことのトライしようと思ったら、マニュアルの隅から隅まで見るしかありません。

でも、その仕様を理解できてその通りに動いたら、これ以上の至福の時はありません。

話を戻します。

8MHzにするとどんなメリットとデメリットがあるか、考察してみましょう。

まず、USBから電流を供給されて動くシステムなら、16MHzのままで何の問題もありません。でも、電池で動かしたい場合には何日でも電池交換をせずに駆動させたいですね。

長時間電池を保たせる方法も色々あります。

1.電池の容量を大きくする。単3より単1です。電池を増やしても良いです。9V電池を使う手もあります。

この場合も色々考えないといけません。マイコンが動く電圧は仕様で決まっています。これも後で説明します。

2.水晶振動子の周波数を小さくします。

ただ、小さくすれば良いというものでもありません。周波数を小さくすると1秒間で動く命令数が減ってしまいます。これも最適化ということを考えれば良いことです。ATmega328Pは4MHz〜20MHzで動作します。

下の図を見て下さい。マニュアルに書かれていますが、クロック周波数を8MHzにすれば2.4Vでも動作します。元々Arduinoに付いている16MHzから考えると、1/2の速度になるので不安を覚えるかもしれませんが十分早いです。僕は8MHzでATmega328Pを動かそうと思っています。何故なら電源を9Vの乾電池(角型9V)にして、3Vのレギュレータを使って動作させようと思っているからです。

このマイコンが1命令何マシンで動くか調査していませんが、もし1つの命令を2マシン(2クロック)で動作するなら、8MHzではどうなるか計算してみましょう。

8MHz=0.125us  2クロックで1命令動くとすると0.25usで1命令動くことになります。

この0.25usというのは、1秒間で400万の命令を実行することが出来ます。余談ですが、昔は時計は32KHzのクロックで動くマイコンで設計されていました。1命令が60usくらいでした。そのうちマイコンの動き(どのように動いているか)について書きたいと思います。

話を戻します。この命令でどれくらいの処理ができるか考えてみて下さい。

普通に外部に繋がっているスイッチを取り込んで、HighかLowか判断してLEDを点灯したり消灯したり。ざっくりですが、精々20〜30命令で処理が終わります。もちろん、処理終了後に低消費状態になったり、ポートの状態を保存したりと色々プラスαでやることもあるでしょうから、100命令を実行するとしますと、8Mkzの場合で以下の式になります。

0.25us(1命令実行時間) ☓ 100命令 ≒ 25us

プログラムを作る上で大事なのは応答時間です。

入力があってLEDが点灯するまでの時間は、人が直ぐに効いていると感じる時間以内に収めないといけません。

これは、100ms以内です。早ければ早いほうが良いと考えるかもしれませんが、スイッチの入力があった後でチャタリング処理という、入力時のノイズを除去する処理も必要になります。これも別の機会に説明したい思います。取り敢えずは、簡単にスイッチ入力があったら100ms以内にLEDを点灯させることとします。

100msというのは、100ms ÷ 0.25us =400,000命令(@8MHz)もあります。

余裕のよっちゃんです ^^;(オヤジギャグです)

キー入力

ということで、8MHzでも結構早いということがお分かりになったと思います。

後もう一つ、8MHzにするメリットがあります。3Vのレギュレータを電源とするため、消費電流が格段に減らせることができます。

 

 

※mega328P.pdfのマニュアルは「mega328P 日本語マニュアル」で検索して下さい。秋月電子通商さんが著作権を持ています。なのでリンクを貼れなくて申し分ありません。

電流値

Power Supply Currentを見ていただきたのですが、5Vの8MHzだと6.8mAですが、3Vの4MHzだと1.9mAになります。3Vの8MHzだと3〜4mAでしょうか。電流というのは「チリも積もればなんとやら」でどんどん大きくなります。後注目したいのが、3V時のPowerーdown mode(WDT disable時=タイマを使わないシステム)が0.18uAになります。はっきり言って、ここでいくら省電力にしても、レギュレータ等々で使ってしまいますが、電池で長時間動作させるようなマイコンでのシステムでは、こういった箇所に注意を払う必要があります。どれくら電池が持つかということに付いても、また別の機会に書きたいと思います。

消費電流

こうやって、マニュアルを見ていくと色々と大事な情報が書かれています。メーカーによっていは分かりにくい場合もありますが、消費電流はマイコンの重要項目なので必ず記載されていると思います。

さて、以上から何故僕が8MHzで動かしたいか分かって頂いたでしょうか。それは、3Vでマイコンを動かしたいからです。

以上

 

 

 

 

-arduino

Copyright© 僕と一緒にマイコンを勉強していきましょう。 , 2024 All Rights Reserved Powered by STINGER.