Flash PICの起動

 【18】デジタルは5Vだけではあらず・デジタル出力編

ひと口に出力といっても、いろいろな意味合いがあります。デジタルの世界だけで大別すると、

パワー出力
 何かの装置、あるいは部品を駆動する電気エネルギーを出す。
データ出力
 メッセージを次の回路に与える。
アナログ出力
 などが思いつきます。
 アナログ出力は後ほどということにして、今回はデジタルだけに絞ります。


▽電圧の異なるパワー出力回路△

まず最初はパワー出力ですが、その前に──。

 『出力』というと、電流が出てくるようなイメージを受けますが、電流を引き込むような場合もあります。入ってくるので『入力』と勘違いしそうですが、これは0V(に限りなく近い)を出していると考えると、やはり『出力』になります。


 PICを使った電子工作でデータ信号だけを扱うということは稀なようで、必ずその先には何かを駆動するような出力回路に行き着くと思います。
 たとえば、LEDをひとつ光らせるだけでもパワー出力回路が必要です。

 しかしFlash PICのボード1の回路図を見ていただいてもお解かりのように、とくにLEDと抵抗以外、何も使われていません。
 下記はFlash PICのボード1のLED点灯回路と7セグメントの駆動回路の抜粋です。



 これはシミュレーション用の回路だから省略されているのではなく、実際にPICで駆動できます。
 ただ説明を解りやすくするために、すべてH出力でLEDを点灯させるようにしています。

 PICのポートがHになると、5Vが出力されるので、抵抗を通って電流がLEDを通過してGNDへ流れ出すので、明るく点灯するという仕組みです。

 何も部品が必要ないのは、PICのポート自身がパワー出力回路を内蔵しているからです。1ピンあたり25mAの電流を取り出せます。
 ただし、全出力すべてから25mA出せるわけではありません。詳しくは【4】ハードウエアが先かプログラムが先か・・・密接した関係の真ん中あたりで説明しています。

 これはLEDが低消費電流の部品だから可能なだけで、2個並列につなごうとすると、途端に怪しくなります。25mAという限界値に近づくからです。3個並列となればもう、限界を超えてしまいます。

 それに駆動させたいものは何もLEDばかりではありません。DC24Vモーターや、クルマの12Vの電球だとか、大きなリレーを駆動させる必要に迫られることも、ふつうに起きます。

 ちなみにFlash PICはシミュレーターですが、一応本物の回路構成をしています。こんな空想のものにも駆動させたいものがあり、ちゃんと出力回路が含まれています。
 駆動させるものというと『ちきどん』です。
 『ちきどん』はACモーターで回っていることになっています。電圧計の目盛りは200Vまであるので、なんとAC200V仕様なんですね。
 ──驚きました。(笑)
 Flash PICでは、それをリレーで駆動させています。

 このように、いざ何か作ってみようとすると、
 5V以外の電圧の電球やモーター、リレー類を制御しなければいけません。
 よく使われる5V以外の電圧は12V、24V、48V、AC100Vではないでしょうか。

 ところがPICは5Vで動いていますから、出せる電圧は当然5Vまでとなります。
 このままでは12Vのものを駆動できないということになります。

 それなら、こんなのはどうでしょうか。逆に出力ポートを『L』にして電流を流し込んで駆動するというアイディアです。
 先に書きました、『0V』を出力するのです。

 どのようなものか、例えばクルマ用の12Vの電球で考えてみましょう。
 12Vに接続すると、400mAの電流が流れて光るとします…。ルームランプぐらいのものを想像してください。
 12V電源側はそのまま繋いでおいて、GND側をPICでON/OFFさせようという考えです。

 ちなみにいまは、パワーLEDに替わりつつあります。3.3V700mAでヘッドライト並に、とんでもなく明るく光ります。
 LEDの場合は抵抗を通して、12Vにつなぎます。抵抗値の計算は【4】ハードウエアが先かプログラムが先か・・・密接した関係の真ん中あたりで説明していますが、とりあえずパワーLEDの話は後序します。

 ここは例ですので何でもいいわけでして。
 とりあえずこの電球をPICに繋いでみましょう。



 ポートC(RC0)をLにすると、点灯するような気がします。
 しかし、おそらく電源を繋いだ途端。PICから煙が出て、一瞬でご臨終となるでしょう。

 PICが出力H状態の端子は内部部品から約5Vが供給されますが、その先は電球を通って12V電源に繋がっています。当然12Vの方が電圧が高いので低い5Vへ電球を通って、電流が流れて行きます。この時点でPIC内部の回路がどうなるか。
 実際のPICの内部回路はもっと複雑になっていて、いろいろな場所で抵抗やスイッチングモジュールで5V電源に繋がっていますので、想像するだけで寒気がしますね。

 次にPICが出力L状態(0V)になると、今度は電球を通して12Vから怒涛の如く電流が流れ込みます。PICのシンク(吸い込み)電流は5V25mAまでです。恐らく瞬時にPICは真っ黒けになると思われます。

 先ほどの回路は、PIC内部の5V回路と12V回路をごちゃ混ぜにして、電流値の限界も計算していない誤ったものでした。

 ではどうするか──。

 仲立ちする回路を入れればよいのです。
 できれば少ない電流で大電圧・大電流をコントロールすれば、PICの負担は小さく、コントロールは大きく、ということができます。
 そこで出てくるのが、トランジスタを利用したスイッチ回路です。

 先ほどの電球の例で考えてみました。
 例にした電球が12V400mAという比較的電流を食うものですので、小型のトランジスタではちょっと電流不足でした。そこで、なんでもござれのリレーをさらにあいだに入れたのが、下記の2SC1815というトランジスタを利用した、リレーコントロール回路図です。



 12V電圧で動くリレーをON/OFFして、大きな電流をコントロールさせていますので、電球以外のものでもコントロール可能です。
 このようなトランジスタを利用した回路をスイッチング回路とか、別の部品を駆動させるのでドライバ回路と呼びます。
 そして、GNDとスイッチングして電流を流し込む制御をしますので、シンク(流し込み)ドライバともいいます。


 NPN型のトランジスタ(2SC~2SDタイプ)はB(ベース)にわずかな電流を流すと、その何十倍~何百倍もの電流がC(コレクタ)から、E(エミッタ)へ流れ、リレーのコイルを電磁石にして接点を引き付けて、その接点に接続された電球が光ることになります。
 リレーに並列に取り付けてあるダイオードの働きはサージを吸収させるためです。
 詳しくは、【4】ハードウエアが先かプログラムが先か・・・密接した関係の最後の方をご覧ください

 この回路では、PICがコントロールに必要な電流値は数mAです。トランジスタがその仲立ちをして、約100mAほどのコントロールが可能になります。そしてリレーの接点容量が許す限りのモノの駆動が可能になります。上記の回路では電球です。

 先ほどの12Vと5V混在の間違った回路と、シンクドライバとの大きな違いは電流がたくさん流せるようになった。だけではありません。
 間違い回路の大きな問題点は電流値がPICを超えた…だけではないのです。5V回路と12V回路が直結されていた、というところです。

 トランジスタはベースにほんのちょっとの電流を流すと、その何百倍もの電流がC→Eを流れるようなスイッチの役割をさせることができます。5Vで12Vの回路をコントロールしているところに注目してください。

 電流が流れ込んで来るので、『入力』じゃないか、と思われがちですが、ベース電流をコントロールしてC、E間に流れ込む電流を制御しているのです。ただデジタル回路ですので、増幅器のようにアナログ的な値として、どれぐらい流すか変化させることはできません。デジタルは2値です。つまり、『流すか』、『流さない』のどちらかです。なら、流すならできるだけたくさん流したいです。

 ベースに電流をどんどん流していくと、C、E間の流れる電流が多くなり、どんどんコレクタの電圧が低くなます。それがついに、0V=GNDと同じになり完璧なスイッチ状態に……はなりません。

 リレーの接点の場合は銅線で繋いだようなものですので、限りなくGNDと同電位になりますが、トランジスタの場合は0Vにはならず、わずかに電圧が残ります。これを飽和電圧と呼んで、規格表に書かれている、『VCE(sat)』という電圧です。2SC1815だと約0.3Vほどです。
 飽和電圧以下にはなりませんので、そのときのベース電流が頂上です。そこが、PICからベースへ流す電流の上限です。それ以上流しても無駄どころか寿命を縮めるだけです。
 このように、トランジスタを増幅回路として使わず、限界までC、E間に電流を流して、スイッチング素子として使うのが、デジタル回路でのトランジスタの役どころです。

 コレクタが0.3Vまで下がれば、じゅうぶん12V400mA電球が光ると思われそうですが、流せる電流にも限界があります。リレーの接点に流せる限界があるように、トランジスタにも存在します。
 規格表によりますと、150mAとなっています。そこで100mA流すにはベース抵抗は約8~9kΩあたりになります。で、もうちょいということで、4.7kΩにしました。
(hFE=200 VBE=0.6としました)
 アナログの増幅回路と異なり、デジタル回路の抵抗値が意外とアバウトなのは、飽和電圧になるベース抵抗の数値から、そのトランジスタが壊れる限界の抵抗値までに、かなりの幅があるためです。なので、この部分はだいたいのトランジスタで同じで、10kΩ~1kΩでもそれほど変わらないということになります。

 ただし10kΩと1kΩでは消費電流は10倍も差があります。でも後序するデータ出力回路では、ノイズに強くなるように、というおまじない的な効果で低い抵抗値を選ぶということもあり、少し笑っちゃいます。

 それよりも──。

 GNDは5V回路と同じになっていますが、トランジスタのコレクタが5V回路と別物になっているのがミソです。コレクタがフリーになっています。このような回路をオープンコレクタと言います。

 コレクタがフリー状態になっているので、別電圧のコントロールができるのです。



 PICの回路から分離されて、コレクタの耐圧、2SC1815の場合は約60Vまでで、流せる電流は150mAとなっています。この範囲内なら自由なものをPICで制御できます。
 もちろん大型のトランジスタを使えば400mAの電球もリレー無しで光らせることができます。

 PICのポートはいくつもあります。8個のポートにトランジスタのスイッチング回路を8個作って並べたら、たくさんのLEDを点滅させることができますが、抵抗の数も増えて回路が煩雑になります。そこで色々と便利な部品があります。


○ 抵抗部分を内蔵したオープンコレクタタイプのデジタルトランジスタ。
  DTC123ESA
  図と同じようにベース抵抗とプルダウン抵抗のペアで、抵抗値2.2kΩがパッケージされたものです。形もトランジスタと同じで3本足で、 出力電流(流れ込み)は100mAまでです。

○ 増幅率の高いダーリントン接続したオープンコレクタ回路を7個詰め込んだトランジスタアレイ。
  TD62003

○ 同じく8個詰め込んだトランジスタアレイ。
  TD62083

  などが有ります。
 これを使えば、面倒な配線も大幅に省略できます。下記はTD62003という7個搭載のトランジスタアレイの例です。




 このトランジスタアレイにはサージ吸収用のダイオードも内蔵されていますので、リレーを配線しても図のようにダイオードの省略まで可能になりますし、面倒なベース抵抗などの計算もしなくてよいので重宝します。

 各素子は500mAまで流せますが、全素子同時では、そんなに流せません。周りの温度とON/OFFの繰返し速度などで限界があります。全素子ONしたままで周辺温度が85度になると100mA流せなくなりますが、そんな無茶な使い方はしないと思いますので、これは結構使い道のある部品だと思います。

 トランジスタアレイの入力端子はそのままPICのポートに接続可能で、何も部品がいりません。
 入力端子を5V(H)にすると内部のトランジスタがONになり、GNDとスイッチングされます。LにするとOFFとなり、GNDから切断状態になります。

 シンクドライバとは反対に、電流を吐き出す、ソースドライバ(吐き出し電流型回路)というのもあります、TD62783などがそれです。これはVCC端子に接続した電圧が出力端子に出てきます。

 この部品とTD62003をペアで使うと、7セグメント表示器のダイナミック点灯回路が簡単にできます。
 TD62783をソースドライバとして、7セグメントのコモン切り換え側に使い、シンクドライバ、TD62003をセグメント点灯用のスイッチングに使用すれば、電流制限用の抵抗が必要ですが、すっきりとした回路ができます。


▽もっとパワーを…△

トランジスタアレイを使用すると、5Vのコントロールで、12V~40Vほどの制御ができますが、流し込める電流は最大でも500mAほどでした。

 最初に出てきました3WクラスのパワーLEDなら700mAを超えますので、トランジスタアレイでは無理です。リレーでON/OFFさせてもいいのですが、LEDの点滅にリレーを使うのは、あまりスマートとは言えません。そこで、もっと電流の流せるトランジスタを安全に制御するために、2段構成のソースドライバはどうでしょうか。



 PNP型のトランジスタ(2SB1020A)の場合、図のようにエミッタに12Vを掛けるとベースを5V回路(PIC)でコントロールできません。先の12V回路と5V回路の混在になります。
 実は何故GNDとスイッチングするシンクタイプの出力回路が多いのかというと、ここに理由があります。オープンコレクタで動くNPNのトランジスタが重宝されるのです。

 そんな理由から、前段に2SC1815を入れてPICでコントロールさせます。2SC1815が使えるということは、トランジスタアレイを使って、たくさんの大電流LEDのコントロールもできるようになります。
 ちなみに2SB1020Aは7Aクラスのトランジスタです。


 2SC1815のベースをHにすると、2SB1020AのベースがLになり、電流がLEDへ流れ込み点灯します。電流制限の抵抗で3.3VのパワーLEDを点灯させますが、抵抗だとワット数も大きくなりますし、周囲温度で電流値が変化して、LEDの明るさが変わってきますので、できれば定電流回路でLEDを点けたいものです。



▽もっと高電圧を△

AC100VをON/OFFしたい場合などは先ほどのリレーを介してコントロールする方法と、次のトライアックを利用する方法もあります。

 高電圧の部分がありますのでご注意ください。また自己の責任において作業を行ってください。万が一損害が発生しましても、責任は負いかねますのでご了承ください。






 S12MD3というのはトライアックカプラではありません、サイリスタカプラを2個挿入した古い部品です。それをトライアックカプラとして利用しています。現在はトライアックカプラとしてTLP560Gの方がすっきりすると思われます。

 フォト・トライアックカプラを通して、AC100Vの電球をAC03というトライアックでON/OFFする回路です。
 S12MD3の3番ピンをLにすると、電球が点灯しますが、単純にH/Lだけでなく、交流波形の周期を読み込めるようにして、ゼロクロス点からLにする期間を調整するようなプログラムを組めば調光器も可能になるのではないでしょうか。








補足:モータードライブ
2012.05.03

ディスクリートでモータードライブを作るといってもなかなか面倒で、そしていいものができません。しかしいまは、それらをIC化した、性能のよい部品がたくさん出回っています。
 ちなみにディスクリートとは、トランジスターやコンデンサ、抵抗など単体の部品を差します。

○ TA8429
 12ピンのモータドライブICです。ピン間ピッチが1.778mmで、通常のユニバーサル基板に差し込みにくい形ですが、うまく曲げて差し込めば問題なく使えます。

 出力電流3A、瞬間なら4.5Aの大容量で、正転、逆転はもちろんブレーキも掛けれます。
 モータードライブで意外とやっかいなのがこのブレーキです。
 DCモーターをリレーで制御したときなど、停止させたときに惰性で少し回って止まります。特にそれで問題がない場合はいいのですが、即座に止めたいときは困ります。

 そこで、停止させるときはモーターの両端子をショートさせる回路を作ります。





 このようにしますと、惰性で回っているモータの発電力をショートさせてブレーキを掛けることができます。
 モーターを手で回転させると発電機になることはご存知だと思いますが、逆にこの発電力を利用してブレーキを掛けています。
 この方法でも、ほんのわずかですがモーターは惰性で回ります。それが問題になる場合は、止めたい位置で瞬時に回転を反転させる回路を組んだりしますが、こうなるとだんだんとモーター駆動回路が複雑になっていきます。それを解決してくれるのが、このモータードライブICです。





 端子のIN1、IN2,STの組み合わせで、各出力状態になります。VccはIC内部の制御回路へ与える電圧で、7~27Vを供給します。そしてVs端子がモーターへ与える電源です。27Vまでいけますので、Vsを7V以上で使用するのなら、Vccをそこへ直結しても問題ありません。

 スタンバイ時の出力が "ハイインピーダンス状態" と書かれていますが、これについては次の入力編で出てきます。デジタル回路は、"H" と"L" の状態がある──、と説明しましたが、実はもうひとつの状態があったのです。

_______________________________________________________



PICを12Vで駆動させたら…
2012.05.04

PICのポートに12Vを流したら真っ黒けになる、と書きましたが、実際はたぶん変化はなく、そのまま静かにご臨終されると思います。
この手の失敗はよくやる私です…恥ですが、5V電源に12Vを流したことが何度かあります。その瞬間、7セグ表示器がフラッシュしたように瞬間光り、PICは瞬時に黙り込みました。そして二度動きませんでした。

 たとえ一瞬でもアウトのようです。お気をつけください──。

 ちなみに24Vになると、瞬時に弾け飛びます。
 もうひとつオマケに、AC100Vになると基板全部が吹っ飛びます。ぜったい真似しないでください。
_______________________________________________________



 順番で行けば次回はデータ出力になるのですが、データ信号は入力と出力の両方を考えますので、さきに入力編を済ませることにします。

2012.05.03