デバイスとAVRマイクロコントローラーの入出力ポートの操作。 パート2

LEDをI / Oポートラインに接続する

多数の例を使用してすべてが非常に詳細かつ詳細に説明されているこの資料を学習すると、AVRマイクロコントローラーの入力/出力ポートを簡単に習得およびプログラムできます。


ATMega8マイクロコントローラーの例を検討します。

Atmel Studio 6.0でプログラムを作成します。

Proteus 7 Professionalで回路をエミュレートします。

マイクロコントローラの研究における最初の例は、LEDの接続と制御です。これは最も単純で最も明白な例です。 この例は、他のプログラミング言語を学習する際の「Hello World!」プログラムのように、マイクロコントローラーを学習する際の古典になりました。
各入出力ポートが通過できる最大電流は40 mAです。
I / Oポートの各ラインが通過できる最大電流は20 mAです。
LEDを含む負荷をI / Oポートラインに接続する前に、I / Oポートラインの許容負荷を超えてマイクロコントローラーを焼き付けることができることを知っておく必要があります。
マイクロコントローラーの入力/出力ポートのラインを流れる電流を制限するには、抵抗を計算して接続する必要があります。



図:LEDの固定。



図:LEDアノードをマイクロコントローラーに接続。



図:LEDカソードをマイクロコントローラーに接続。

LEDが接続されているときにI / Oポートラインに接続されている電流制限抵抗器の抵抗は、式によって計算されます:



ここで:
-Vsは電源の電圧です。
-Vsp-入力/出力ポートのラインでの電圧降下。
-Vd -LEDの直接電圧降下。
-Id -LEDの直流;
-KnはLEDロボットの信頼性係数です。

例:
-電源電圧-5V
-LEDの直接電圧降下-2V LED のデータシートから取得) ;
-LEDの直流-10mA( LED のデータシートから取得) ;
-LEDロボットの信頼性係数-75% (データシートからLEDに変換) ;
-入力/出力ポートのラインでの電圧降下-0.5V (データシートからマイクロコントローラに送られます:Vol(出力低電圧)-電流が流れ込む場合、およびVoh(出力高電圧)-電流が流れます) ;



したがって、抵抗の値はR = 166.66 Omであり、最も近い抵抗値が選択されます。

LEDの順方向電圧が不明な場合、抵抗はオームの法則に従って計算できます。



ここで:
-Uは、回路のセクションに印加される電圧です。
-I -I / Oポートラインの定格電流。

例:
-回路部に印加される電圧は4.5Vです。
-入出力ポートラインの定格電流は20mAです。



抵抗Rの値を決定したら、回路に電流が流れるときに熱の形で、抵抗で放出されるワットで測定される電力Pを計算する必要があります。



ここで:
-Uは、回路のセクションに印加される電圧です。
-I -I / Oポートラインの定格電流。

例:
-回路部に印加される電圧は4.5Vです。
-LEDの直流-20mA



抵抗器に割り当てられた電力を計算したら、抵抗器の電力の最も近い値を選択します。 抵抗器の消費電力が不十分な場合、抵抗器が故障する可能性があります。

-低電力LEDアノードを入力/出力ポートのラインに接続:



//    #include <AVR/io.h> #include <stdint.h> //   int main(void) { //   / DDRC = 0b11111111; //       "" PORTC = 0b11111111; //    C  .«1» (    Vcc) //   while (1) { } } 


-低電力LEDカソードを入力/出力ポートのラインに接続:



 //    #include <AVR/io.h> #include <stdint.h> //   int main(void) { //   / DDRC = 0b11111111; //       "" PORTC = 0b00000000; //    C  .«0» (     GND) //   while (1) { } } 


-低電力LEDをアノードとカソードで入力/出力ポートのラインに接続:



 //    #include <AVR/io.h> #include <stdint.h> //   int main(void) { //   / DDRD = 0b11111111; //    D   "" PORTD = 0b11111111; //    D  .«1» (     Vcc) DDRC = 0b11111111; //    C   "" PORTC = 0b00000000; //    C  .«0» (     GND) //   while (1) { } } 

Source: https://habr.com/ru/post/J253961/


All Articles