ArduinoによるOLED表示機 電流削減に挑戦してみました
先日作ってみたArduino promini互換基板と小型OLEDによる表示機の電流は常時27mAほど流れていて、ちょっと多いなという印象でした。こういったデジタル回路が大きな電流を消費する=ノイズ発生が大きいので、オーディオ機器にはあまり好ましくありません。
調べてみるとArduinoをスリープモードにして電流を減らすことが出来るようなので試してみました。
本当はArduino単体で測定すれば分かりやすくなるのですが、OLEDの電源を外すとI2C通信ができなくなりArduinoの動作も止まってしまうことがわかり、OLEDを含めた電流で測定しています。OLEDの電流は、表示する文字や輝度に影響されますが大体10mA程度の電流を消費します。
結果は、こちらの動画をどうぞ。
UART信号が入ってきたらスリープを解除して画面を更新します。画面更新が終ったらまたスリープする。というざっくりした動作です。
Arduinoのスリープ解除条件は、リセット、外部割込み、ウォッチドックタイマーの3つしかないため、UARTのRX信号をint0にも入れて外部割込みとしてスリープを解除するようにしました。抵抗が1本不自然についているのがint0へ繋いでいる配線です。
RX端子-->int0(デジタル信号の2番)へ 1kΩの抵抗で接続しています。ダイレクト接続でも大丈夫だと思いますが、何となく保護抵抗的な意味で1kを使ってみました。
プログラムはこちら。
ダウンロード - oled_disp_promini2.zip
スリープモードへの移行は、ラジオペンチさんのブログを参考にソースコードを(勝手に)使わせて頂きました。
詳しい説明はしません。というか、ちゃんと調べずにラジオペンチさんのコードでスリープさせています。
ちょっと変えたのは
set_sleep_mode(SLEEP_MODE_PWR_DOWN); // パワーダウンモード
から
set_sleep_mode (SLEEP_MODE_STANDBY); // スタンバイモード(クロック止まらない)
に変更したくらいです。
ArduinoのUART受信は、表に見えていないけど割込みを使っていてバックグラウンドでデータを受信しています。しかし、クロックを止めるパワーダウンモードだとint0外部割込みで復帰した瞬間の受信に失敗してしまうのです。
スタンバイモードなら、int0で復帰した直後でも受信できています。
スリープからの復帰は、int0割込みとウォッチドックタイマー割込みの2パターンがあり、バックグランドで受信しているUARTを取りこぼさないようにしています。
結果として、画面更新していない普段の消費電流を大幅に抑えることができました。
ただ 電流の増減が激しいので注意が必要ですね。Aruduino側に電解コンデンサを追加するなど・・・
1回の画面更新で40msほど時間がかかっている様子が判りますね。
更新しているときは平均値が25mAから27mAくらいで、ピークは40mAに達しています。
スリープ時の平均値は7~10mAほど。電流プローブ自体のノイズもありますが、OLED表示機のノイズは思っていたよりも多いみたいです。パスコンを各所に入れて対策しないといけないですね。
また、動作検証時間が短い中、一度、リセットを繰り返す状態に陥ったことがありました。
何かソフトウェア的な不具合を抱えている可能性もあります。電源の入れ直しで復帰して、それ以降はリセット繰り返し現象は出ていません。
ご利用は自己責任でお願いします。
参考にさせて頂いたサイト様
Arduino 入門 番外編 13 【スリープモードによる消費電力の低減】
Arduino 日本語リファレンス attachInterrupt(interrupt, function, mode)
にほんブログ村
ブログランキングに参加中です。 めざせ1位!
もしよろしければ「ぽちっと」お願いします。
« 第3回 HPA-1000用のRコアトランスの希望者募集について | トップページ | 久しぶりの散歩 »
「電子ボリューム」カテゴリの記事
- MUSES72323 Balanceボリュームの表示機追加について(2022.12.24)
- MUSES72323 バランスボリュームもうじき頒布開始(2022.11.26)
- MUSES72323バランスボリューム基板 進捗(3)(2022.05.14)
- MUSES72323バランスボリューム基板 進捗(2)(2022.05.08)
- MN型ボリュームとは(2022.05.03)
「Arduino」カテゴリの記事
- MUSES72323 Balanceボリュームの表示機追加について(2022.12.24)
- BlueSnowDACにIRリモコンを増設する方法 Seeeduino XIAO(メニュー操作編)(2021.11.27)
- BlueSnowDACにIRリモコンを増設する方法 Seeeduino XIAO(ソフトウェア編)(2021.11.24)
- BlueSnowDACにIRリモコンを増設する方法 Seeeduino XIAO(準備とハードウェア編)(2021.11.23)
- ArduinoによるOLED表示機 電流削減に挑戦してみました(2021.02.21)
運営管理者様
突然のご連絡となり恐れ入ります。Eleven Tenths 板野と申します。
弊社はWebマーケティング、コンテンツ制作を事業としており、現在、イギリス・欧州を中心にオンラインで電子部品の販売を行う企業様と協業をしております。
貴サイトを拝見させていただき、その影響力の観点から、日本市場に向けた顧客サイトの被リンクにご協力をいただけないかと考え、ご連絡致しました。
可能であれば既存のブログ記事内、または今後新規作成される記事内にて、弊社顧客である電子部品の販売を行う会社の情報、または被リンクの追加をお願い出来ないかと思いご連絡させて頂きました。
バナー広告ではなく、既存記事の本文中にバックリンクとしてURLの記載を頂きたく考えております。
もしも、リンクをウェブサイトに掲載して頂けました際は、もちろんこちらから掲載料をお支払い致します。
ご検討頂ける場合、改めて以下の詳細をご連絡させていただきたく存じます。
・弊社概要
・過去の記事掲載事例 (メーカー、出版社、情報メディア、NPO、個人サイト様の掲載実績がございます)
・貴サイトへの被リンク内容
・お取引内容
お忙しいところお時間をお取りして申し訳ございませんが、ご検討頂けますと幸いです。
何卒宜しくお願い申し上げます。
Eleven Tenths 板野
投稿: 板野 | 2021年2月23日 (火) 10時20分
運営管理者様
突然のご連絡となり恐れ入ります。Eleven Tenths 板野と申します。
弊社はWebマーケティング、コンテンツ制作を事業としており、現在、イギリス・欧州を中心にオンラインで電子部品の販売を行う企業様と協業をしております。
貴サイトを拝見させていただき、その影響力の観点から、日本市場に向けた顧客サイトの被リンクにご協力をいただけないかと考え、ご連絡致しました。
可能であれば既存のブログ記事内、または今後新規作成される記事内にて、弊社顧客である電子部品の販売を行う会社の情報、または被リンクの追加をお願い出来ないかと思いご連絡させて頂きました。
バナー広告ではなく、既存記事の本文中にバックリンクとしてURLの記載を頂きたく考えております。
もしも、リンクをウェブサイトに掲載して頂けました際は、もちろんこちらから掲載料をお支払い致します。
ご検討頂ける場合、改めて以下の詳細をご連絡させていただきたく存じます。
・弊社概要
・過去の記事掲載事例 (メーカー、出版社、情報メディア、NPO、個人サイト様の掲載実績がございます)
・貴サイトへの被リンク内容
・お取引内容
お忙しいところお時間をお取りして申し訳ございませんが、ご検討頂けますと幸いです。
何卒宜しくお願い申し上げます。
Eleven Tenths 板野
投稿: 板野 | 2021年2月23日 (火) 10時21分
板野様
大変嬉しいお誘いありがとうございます。
私のブログでは、幅広い電子工作ではなく、自作オーディオに特化してニッチなものだけをやっており、お役に立てるかどうか良くわかりません。
その点をご理解いただけましたら、下記メールアドレスまでご連絡ください。
new_western_electric@yahoo.co.jp
よろしくお願いいたします。
投稿: たかじん | 2021年2月27日 (土) 09時38分
たかじんさん
少し気になって、「Eleven Tenths 板野」をググってみました。電子工作とは関係の無いブログにも投稿されていたりして、ちょっと正直胡散臭いように思います。是非、お気を付け下さい。
福島のmomo
投稿: | 2021年3月 1日 (月) 20時49分