チラシの裏の電子工作

電子工作、PC関係の備忘録というか、チラシの裏

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

カテゴリ:スポンサー広告

Arduinoの参照電圧

ひょんな事から、ArduinoのADコンバータを使いたくなった時に困ったのでメモ。

内部参照電圧の1.1Vでは低すぎるし、電源電圧だと電源によって安定しない。
内部参照電圧に合わせて分圧してもいいけど、もっと正確な電圧が欲しい…

しかしそのまま3.3Vとかを繋いで良いのだろうか…?
と言うわけで、

Arduinoの日本語リファレンスを見てみると
  • arefに入力できる電圧は0V~電源電圧までよ
  • 5kΩの抵抗を入れなさいよ
  • マイコン内蔵の抵抗で分圧されるので、入力電圧きっちりにはならないよ
  • analogReadする前に、analogReference(EXTERNAL)しないと壊れるかもよ

よく解らないけど、壊れるってのは穏やかじゃないですね。

詳しく調査されている方がいました。
『PIC AVR 工作室 ブログ』さんのarduinoのADコンバーター参照電圧について
  • ArduinoではanalogReference(DEFAULT)がデフォになってるよ
  • DEFAULTのままarefに参照電圧流すと壊れるかもよ、ってデータシートに載ってるよ


以上で、気になった記述…
『analogReadする前にEXTERNALにしないと壊れるかも』ってのは、
逆に言えば『EXTERNALにさえしておけば壊れない』って事?

で、調べてみた。
自分の環境はarduino0023なので、最新とは違うかもしれませんが、
hardware\arduino\cores\arduino\wiring_analog.c

void analogReference(uint8_t mode)
{
    // can't actually set the register here because the default setting
    // will connect AVCC and the AREF pin, which would cause a short if
    // there's something connected to AREF.
    analog_reference = mode;
}

ああ、analogReferenceは今のモードを覚えておくだけで、レジスタ書き換えたりしてないのね。
コメントにもそのように書いてあります。

int analogRead(uint8_t pin){
 ~中略~
    ADMUX = (analog_reference << 6) | (pin & 0x07);
 ~中略~
}

Analogポートのマルチプレクサを設定するのと同時にモードも設定してるっぽい?
取り敢えず、モードをDEFAULTにしたからといって即座に回路がショートするわけではなさそう。

しかし、5kΩの抵抗を入れてね、ってありますが…
5kΩの根拠がよく解りませんね。
抵抗なしで直接arefにレギュレータの3.3Vを接続してる作例もあるようだし…

スポンサーサイト

カテゴリ:電子工作 - テーマ:ハードウェア - ジャンル:コンピュータ

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。