Select Your Language

免責事項

  • 本サイトの情報の利用、内容、サービスによって、利用者にいかなる損害、被害が生じても、著者は一切の責任を負いません。ユーザーご自身の責任においてご利用いただきますようお願いいたします。

    本サイトで頒布している基板およびキットは、技術者、またはそれに準ずる電気的知識をお持ちの電子工作ファンの方のためのものです。一般のオーディオファンの方のためのものではありません。
    また、頒布基板およびキットは、いかなる条件でも動作を保証するものではございませんので、あらかじめご了承ください。

    電子工作では、火傷、感電、火災などの可能性があります。十分に注意をして作業して下さい。

    営利目的のご使用は認めておりません。 記事の転載や、基板・キットの商用利用の方は、ご連絡ください。学生やサークルの学習目的でまとめてご購入する場合は特別価格でご提供させていただきます。
無料ブログはココログ

スポンサー

« 第3回 HPA-1000用のRコアトランスの希望者募集について | トップページ | 久しぶりの散歩 »

2021年2月21日 (日)

ArduinoによるOLED表示機 電流削減に挑戦してみました

先日作ってみたArduino promini互換基板と小型OLEDによる表示機の電流は常時27mAほど流れていて、ちょっと多いなという印象でした。こういったデジタル回路が大きな電流を消費する=ノイズ発生が大きいので、オーディオ機器にはあまり好ましくありません。

調べてみるとArduinoをスリープモードにして電流を減らすことが出来るようなので試してみました。

Arduino_oled_2

 

本当はArduino単体で測定すれば分かりやすくなるのですが、OLEDの電源を外すとI2C通信ができなくなりArduinoの動作も止まってしまうことがわかり、OLEDを含めた電流で測定しています。OLEDの電流は、表示する文字や輝度に影響されますが大体10mA程度の電流を消費します。

 

結果は、こちらの動画をどうぞ。

UART信号が入ってきたらスリープを解除して画面を更新します。画面更新が終ったらまたスリープする。というざっくりした動作です。

Arduinoのスリープ解除条件は、リセット、外部割込み、ウォッチドックタイマーの3つしかないため、UARTのRX信号をint0にも入れて外部割込みとしてスリープを解除するようにしました。抵抗が1本不自然についているのがint0へ繋いでいる配線です。

 

RX端子-->int0(デジタル信号の2番)へ 1kΩの抵抗で接続しています。ダイレクト接続でも大丈夫だと思いますが、何となく保護抵抗的な意味で1kを使ってみました。

Arduino_oled_2c

 

 

プログラムはこちら。

ダウンロード - oled_disp_promini2.zip

スリープモードへの移行は、ラジオペンチさんのブログを参考にソースコードを(勝手に)使わせて頂きました。

Arduino_oled_2b

詳しい説明はしません。というか、ちゃんと調べずにラジオペンチさんのコードでスリープさせています。

 

ちょっと変えたのは

set_sleep_mode(SLEEP_MODE_PWR_DOWN); // パワーダウンモード

から

set_sleep_mode (SLEEP_MODE_STANDBY); // スタンバイモード(クロック止まらない)

に変更したくらいです。

 

ArduinoのUART受信は、表に見えていないけど割込みを使っていてバックグラウンドでデータを受信しています。しかし、クロックを止めるパワーダウンモードだとint0外部割込みで復帰した瞬間の受信に失敗してしまうのです。

スタンバイモードなら、int0で復帰した直後でも受信できています。

スリープからの復帰は、int0割込みとウォッチドックタイマー割込みの2パターンがあり、バックグランドで受信しているUARTを取りこぼさないようにしています。

 

 

結果として、画面更新していない普段の消費電流を大幅に抑えることができました。

ただ 電流の増減が激しいので注意が必要ですね。Aruduino側に電解コンデンサを追加するなど・・・

Arduino_oled_2d
  < 電流プローブで観測 4回ほど画面更新した瞬間 >

1回の画面更新で40msほど時間がかかっている様子が判りますね。

更新しているときは平均値が25mAから27mAくらいで、ピークは40mAに達しています。

スリープ時の平均値は7~10mAほど。電流プローブ自体のノイズもありますが、OLED表示機のノイズは思っていたよりも多いみたいです。パスコンを各所に入れて対策しないといけないですね。

 

また、動作検証時間が短い中、一度、リセットを繰り返す状態に陥ったことがありました。
何かソフトウェア的な不具合を抱えている可能性もあります。電源の入れ直しで復帰して、それ以降はリセット繰り返し現象は出ていません。

 

ご利用は自己責任でお願いします。

 

 

 

 

参考にさせて頂いたサイト様

消費電流が激減! delayWDT関数を作ってみた

Arduino 入門 番外編 13 【スリープモードによる消費電力の低減】

Arduino 日本語リファレンス attachInterrupt(interrupt, function, mode)

 

 

 

にほんブログ村 PC家電ブログ PCオーディオへ にほんブログ村

ブログランキングに参加中です。 めざせ1位! 

もしよろしければ「ぽちっと」お願いします。 

 

« 第3回 HPA-1000用のRコアトランスの希望者募集について | トップページ | 久しぶりの散歩 »

電子ボリューム」カテゴリの記事

Arduino」カテゴリの記事

コメント

運営管理者様
突然のご連絡となり恐れ入ります。Eleven Tenths 板野と申します。
弊社はWebマーケティング、コンテンツ制作を事業としており、現在、イギリス・欧州を中心にオンラインで電子部品の販売を行う企業様と協業をしております。
貴サイトを拝見させていただき、その影響力の観点から、日本市場に向けた顧客サイトの被リンクにご協力をいただけないかと考え、ご連絡致しました。
可能であれば既存のブログ記事内、または今後新規作成される記事内にて、弊社顧客である電子部品の販売を行う会社の情報、または被リンクの追加をお願い出来ないかと思いご連絡させて頂きました。
バナー広告ではなく、既存記事の本文中にバックリンクとしてURLの記載を頂きたく考えております。
もしも、リンクをウェブサイトに掲載して頂けました際は、もちろんこちらから掲載料をお支払い致します。
ご検討頂ける場合、改めて以下の詳細をご連絡させていただきたく存じます。
・弊社概要
・過去の記事掲載事例 (メーカー、出版社、情報メディア、NPO、個人サイト様の掲載実績がございます)
・貴サイトへの被リンク内容
・お取引内容
お忙しいところお時間をお取りして申し訳ございませんが、ご検討頂けますと幸いです。
何卒宜しくお願い申し上げます。
Eleven Tenths 板野

運営管理者様
突然のご連絡となり恐れ入ります。Eleven Tenths 板野と申します。
弊社はWebマーケティング、コンテンツ制作を事業としており、現在、イギリス・欧州を中心にオンラインで電子部品の販売を行う企業様と協業をしております。
貴サイトを拝見させていただき、その影響力の観点から、日本市場に向けた顧客サイトの被リンクにご協力をいただけないかと考え、ご連絡致しました。
可能であれば既存のブログ記事内、または今後新規作成される記事内にて、弊社顧客である電子部品の販売を行う会社の情報、または被リンクの追加をお願い出来ないかと思いご連絡させて頂きました。
バナー広告ではなく、既存記事の本文中にバックリンクとしてURLの記載を頂きたく考えております。
もしも、リンクをウェブサイトに掲載して頂けました際は、もちろんこちらから掲載料をお支払い致します。
ご検討頂ける場合、改めて以下の詳細をご連絡させていただきたく存じます。
・弊社概要
・過去の記事掲載事例 (メーカー、出版社、情報メディア、NPO、個人サイト様の掲載実績がございます)
・貴サイトへの被リンク内容
・お取引内容
お忙しいところお時間をお取りして申し訳ございませんが、ご検討頂けますと幸いです。
何卒宜しくお願い申し上げます。
Eleven Tenths 板野

板野様

大変嬉しいお誘いありがとうございます。
私のブログでは、幅広い電子工作ではなく、自作オーディオに特化してニッチなものだけをやっており、お役に立てるかどうか良くわかりません。

その点をご理解いただけましたら、下記メールアドレスまでご連絡ください。
new_western_electric@yahoo.co.jp

よろしくお願いいたします。

たかじんさん

少し気になって、「Eleven Tenths 板野」をググってみました。電子工作とは関係の無いブログにも投稿されていたりして、ちょっと正直胡散臭いように思います。是非、お気を付け下さい。

福島のmomo

コメントを書く

(ウェブ上には掲載しません)

« 第3回 HPA-1000用のRコアトランスの希望者募集について | トップページ | 久しぶりの散歩 »

サイト内検索(new)

2024年11月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30