Active High と Active Low
タイトル画像はLEDを駆動する回路です。PICに限らずマイコンのI/O出力電流の最大定格の範囲で直接LEDを駆動出来ない場合はトランジスタで駆動します。
LEDの場合、ほとんどのマイコンが直接駆動可能だと思いますが、LEDに直列に接続する電流制限抵抗の値を変えて最大定格の範囲で電流(∝ 輝度)を調整して使います。
タイトル画像のLEDと電流制限抵抗の位置は入れ替わっても同様に機能します。私はタイトル画像のように、LEDのアノードをVcc、またはLEDのカソードをGNDに接続して使っています。
動作中のLED端子電圧(Vf)を測定し易いと思うからです。
Activeとは
制御対象や目的によって変わりますが、ここではLEDが点灯している状態をActive(な状態)として説明します。
Active High と Active Low どちらを選択するべきかですが、目視確認用のLEDではどちらでも大丈夫です。
一方でソレノイドやモーターを駆動する場合は、電源リセット時など不安定期間に意図しない動作をさせないように工夫することがあります。
Active High
出力(I/O端子)がHighの時にActiveになるようにした制御です。
出力(I/O端子)をHighにしてLEDに直接、またはNPNトランジスタのベースに電流を流し込むことでActiveな状態を作ります。
Active Low
出力(I/O端子)がLowの時にActiveになるようにした制御です。
出力(I/O端子)をLowにしてLEDに直接、またはPNPトランジスタのベースからI/O端子に電流を引き込むことでActiveな状態を作ります。
取り違え
ソフトウェアがActive Highを想定したのに、ハードウェアがActive Low を想定してしまった場合はLEDが点灯すべき時に消灯し、消灯すべき時に点灯します。
ソフトウェアまたはハードウェアを変更して正しく動作させる必要があります。
回路によってはフェールセーフやリセット時の挙動を考慮してハードウェアを変更することもありますが、多くの場合、ソフトウェアを変更する方が低コストで対策出来ると思います。
今後とも宜しくお願いします。