2010年4月21日水曜日

Arduinoのリセット回路

Arduino Duemilanoveの回路図を始めて見てから、ずっとひっかかっていたことがある。リセット回路だ。

IDEからスケッチをアップロード時に、ブートローダを起動 するためのオートリセット機能として、FT232の DTR出力を使ってリセット制御している。DTR出力をコンデンサを介して接続し、充放電回路となってリセットパルスを作っている。実際にはDTR出力がローになる時にリセットパルスが発生するが、ひっかかっていたの はハイに戻る時である。

チャージポンプの理屈通り、ハイパルスは 10Vにまで逹している。通常 ICの入力電圧上限は、電源電圧+0.5V程度と規定されている。5Vで使用すれば 5.5Vだから、10Vではちょっとオーバーどころではない。
しかし、これが問題かというと、実は重大な問題ではなかった。調べてみると、ATmegaのリセット入力だけは最大 13.0Vまでと規定されていた。重大ではない問題としては、推奨範囲はやはり電源電圧+0.5Vということだ。

そういうことならば、とりあえずこれで OKかというと、そうでもない。他のデバイスと組み合わせた場合に問題となる。たとえば Ethernet shieldと組み合わせると、こうなる。

単体の場合よりもピーク電圧が低く 7.5Vとなっているのは、Ethernet shield上の W5100の入力保護等の影響だろう。しかし W5100の最大入力電圧は 5.5V、これはマズいだろう。

というわけで対策を考えるが、よくやる簡単な方法、ダイオードクランプで試してみた。手持ちのショット キーダイオードを使ったところ、こうなった。
ピーク電圧 5.2V。これならばなにも心配はない。次は通常の小信号用といわれる一般的なダイオード。多少電圧は上がるかもしれない。
ピーク電圧 5.6V。これなら、まず問題はないだろ う。

Arduinoは手軽にシールドを組み合せて使えるところも、人気になっている要因と思う。だから組合せによっては壊してしまう可能性 が潜んでいるというのは、ちょっと残念だ。部品の干渉や、必要なコネクタを省略してしまって組み合せられない等の問題は、もう少し考慮されてもいいと思う。

リセットの件は、せめて国産互換機は対策されているといいな、と願う。

0 件のコメント:

コメントを投稿