では、実際にデジタル入力とデジタル出力を繋いでみます。
例として使用するのはArduino UNO
https://store.arduino.cc/usa/arduino-uno-rev3
0.資料の入手
まず何はともあれ必要なドキュメントを入手します。
上記サイトの
DOCUMENTATION → SCHEMATICS IN .PDF から回路図を
DOCUMENTATION → PIN MAPPING ATmega328P からpin配置を
入手してください。
pin配置の図にはAtmega168となっていますが、Atmega328Pと同じ配置なので気にする必要はありません。
http://www.atmel.com/ja/jp/devices/atmega328p.aspx
次に上記のサイトからAtmega328Pのデータシートを入手します。
ATmega328/P Complete の横のアイコンをクリックして入手してください。
ATmega328PというのがArduino UNOで使用されているマイコンです。
回路図の右側の大きな四角(ZU4)がそれに当たります。
データシート等を入手するときは回路図に記載された部品の名前を検索するといいでしょう。
デジタルピン0, 1は他のICが繋がっていてややこしいので、
今回はデジタルピン2(PD2)と3(PD3)を繋いでデジタル信号をやり取りするケースを考えます。
1.内部回路
図18-1が内部回路の等価回路です。
ATmega328Pはプログラムで入力/出力を切り替えられるのでPD2もPD3も同じ回路と考えてください。
Pxnと書かれた四角がICの内部から外部に繋がる個所、
また右側のLogicと書かれた個所がICのさらに奥に繋がる個所です。
これより先は特に気にする必要がないため記載がありません。
右のRpuがプルアップ抵抗
プログラムから使用/未使用を切り替えられるのでFETがついています。
今回はおそらくプッシュプルの出力のため使用しません。
Cpinは高速でHi/Loを切り替えるようなときに影響してきます。
コンデンサに電荷をチャージする分、切り替えが遅れます。
今回は気にしなくても大丈夫です。
左のダイオード二つは静電気等から守るためについています。
電源電圧5Vよりも高い電圧やGNDよりも低い電圧が入力された場合、ダイオードを通して電流が流れることで回路の破損を防ぎます。
常に大きな電流を流していいようなダイオードではないため、長時間流れると壊れてしまいます。
続いて表18-1
プログラム内部でどのように設定するとどのような動作をするか記載されています。
HiもLoも出力でき、Hi-Zも設定できることがわかります。
つまり入力側でプルアップ抵抗を設定しなくとも動作します。
今回はプルアップ抵抗なしで設計します。
2.外部回路
前述のとおりプルアップ抵抗は不要ですので、そのまま繋げるだけとなります。
これで内部回路も含めて回路が明らかになったと思います。
わかりづらい場合、入出力をつなげた回路を紙に書き出してみるといいかもしれません。
3.絶対最大定格
32.1 Absolute Maximum Ratingsが絶対最大定格です。
Voltage on any Pin except RESET with respect to Ground が各ピンに入力してもよい電圧となります。
-0.5V から VCC+0.5V まで入力しても大丈夫です。
VCCは電源電圧で回路図のVCCと書かれたピンに入力された電圧です。
出力ピンの出力電圧は表32.2からVOL(Output Low Voltage)およびVOH(Output High Voltage)を確認します。
VOLの下限、VOHの上限が規定されていませんので内部回路から想像してGND, VCCまで出力されると考えてください。
絶対最大定格に対して-0.5V, +0.5Vの余裕があるため問題なしです。
入力側のICと出力側のICの電源が違う場合や6Vなど絶対値で規定されている場合は電源の精度も含めて計算してください。
DC Current per I/O Pin が各ピンが出力していい電流になります。
DC Current VCC and GND Pins にも注目してください。
こちらは電源ピンの電流の規定となります。
40mAの出力を5本利用したとしましょう。
合計は200mAとなりますが、この電流は電源ピンから入ってくるため、電源ピンの電流は200mA+αとなり絶対最大定格を超えてしまいます。
今回は出力にはデジタル入力が接続されているだけですので
プルアップ抵抗などがある場合はそちらに流れる電流も計算します。
表32.2からIIL(Input Leakage Current I/O Pin), IIH(Input Leakage Current I/O Pin) を確認します。
それぞれLo, Hiの時の入力電流となります。
ともに1uAなので問題ありません。
4.入力閾値
絶対最大定格を確認した時に使用したVOH(4.1V~VCC), VOL(GND~1.0V)がVIL, VIHの範囲内に入っているか確認します。
このとき、電流の条件が合わない場合、条件の悪い方に合わせます。
条件が記載の条件より悪い場合や設計が成り立たない場合は33項以降のグラフから値を補正します。
(今回は問題がなく、説明もややこしいので今回は割愛)
Loと認識する範囲はVILから-0.5V~0.3VCC
Hiと認識する範囲はVIHから0.6VCC~VCC+0.5V
その中間の値はどちらでもない、どちらと判定されても文句言えない範囲と認識してください。
ここでVCCの精度を調べる必要がありますが、説明の簡略化のため5V±0.1Vとします。
VCC=4.9Vとすると
VILは-0.5V~1.47V
VIHは2.94V~5.4V
VOH, VOLはVIH, VILの範囲に入っているので問題ありません。
VCC=5.1Vとすると
VILは-0.5V~1.53V
VIHは3.06V~5.4V
同様に問題ありません。
これでとりあえず動くレベルの回路計算は完了です。
業種に寄りますが実際は省略する部分もあります。
(理解していないと省略もできないですが)
0 件のコメント:
コメントを投稿