↑LEDを点灯する回路。抵抗とLEDは、上下入れ替わってもかまわない。
電流制限抵抗(R)は、「R[kohm]=(E[V]−VF[V])÷I[mA]」で計算することができます。計算した抵抗値から、手持ちの抵抗でいちばん近いものを使用すると良いでしょう。
なお、人間や機械と同じように、LEDも定格いっぱいで使えば壊れやすく、寿命が短くなります。LEDは定格の半分程度でも十分に光りますので、少し抑えめに使うように心がけましょう。
なお、もう少し詳しく書いたコラムを用意しました。是非ごらんください。
「H」=オン ロジックICやマイコンの中で、VDD(+、VCC)につなぐ
「L」=オフ ロジックICやマイコンの中で、VSS(−、GND)につなぐ
という意味になります。
ちなみに「Z」「∞(無限大)」というのもありますが、これらはロジックICやマイコンの中ではどこにもつながないという意味になります(難しい言い方をすると「ハイ・インピーダンス」といいます)。
(※1)一般的なパワー・パック(電源回路)の概念図。
↑(※2)本書のパワー・パックの概念図。
2-3、2-4章で取り上げたシリーズ・レギュレータ式のパワー・パックですが、
1:2-5章のスイッチング・レギュレータ式パワー・パックと回路を同一にするため
2:ゲートに静電気をかけると壊れると書きましたが、一般的な回路ですと点検時などに蓋を開けた時、ゲートがソース電位より浮いている状態になり、触ると壊れる可能性がある
という2つの理由で、一般的ではないマイナス側制御の回路を採用しました。しかし、モータ制御用の抵抗は、モータに直列に入っていれば制御できるため、このような回路でも問題はないと考えています。
↑信号機の、タイマ部分の回路図。
[警報音サンプル](WAVE形式 8,000kHz 16bit MONO)
踏切の音質は、VR2とR5とC6、VR3とR7とC9で設定しています。通常ですとVR2とVR3を回せば音は変わるのですが、もう少し動かしたい場合はR5やR7を取り替えてみてください。抵抗を大きくすれば音は低くなり、逆に小さくすれば音は高くなります。また、単音にしたい場合はC11を取り外します。なお、回路図中のC14は、手持ちの都合で積層セラミックコンデンサを使用しましたが、ここは電解コンデンサでも問題なく動作します。向きは、IC2(U2/4584)のある方がプラス、その反対側がマイナスになります。
踏切の信号機には、非安定マルチバイブレータという回路を使用しています。この回路は様々な作例で頻繁に紹介されるため、とりかかりやすいのが特徴ですが、その一方で、部品の相性や定数(たとえばコンデンサや抵抗の大きさ)、負荷(たとえば電球よりもはるかに負荷の軽いLEDに置き換えた場合)などによって、動作がおかしくなる場面があります。
実際、今回の踏切信号機(警報機)の電球をLEDに取り替えますと、動く場合と動かない場合があります(私の手元では12Vでは動きましたが、読者の方より誤動作の情報を頂き、電圧を落として再度実験したところ、読者の方と違う現象ですが誤動作しました)。もしも動かないような場合や、はじめからLEDの踏切信号機にされる場合は、Tr2とTr4(図中、Q2とQ4)を省略した回路図を掲載しますので、お試しいただければ幸いです。
なお、点滅の具合が気に入らない場合は、警報音で使用している4584を使用した回路を紹介しますので、お試しください。
↑4584を使用したLED踏切警報灯回路の例。安定して動作します。
ただし、確実に書き込みたいという方、製作にあまり自信がないという方は、先に紹介したPICデュアルライタ(エレキジャックNo.2掲載/プリント基板付属)をお試しいただくか、PICkit3などの純正プログラマ、またはパーツ・ショップ等で販売されているプログラマ・キット(秋月電子通商「AKI-PICプログラマVer.4」等/書き込み方は異なります)をお求めいただいた方が確実です。
このように、5Vは3端子レギュレータで作り、12VはACアダプタから直結とすることができ、回路が簡単になります。Writer509はファームウェアさえ用意できれば安価に製作できますので、このような電源違いの回路を試してみるのも面白いと思います。
もしもPICkit2 Starter Kitが入手できない場合は、PICkit2本体またはPICkit3本体のいずれかと、共立電子産業の「ケイシーズ」「共立エレショップ」で販売している「PICkit2用書込アダプタ / PK2ADP」を組み合わせることで、同じように書き込みをすることができます。なお、この書き込みアダプタにはゼロ・プレッシャー・ソケットが採用されているので、PICの取り付け・取り外しが簡単で便利です。
まず、MPLAB X IDEのインストールを予定されている方は、MPLAB X IDEのほかにMPLAB XC8コンパイラのインストールも併せてお願いします(MPLAB X IDEのパッケージにはコンパイラが含まれていません)。そして、「#include」文にある「pic.h」を「htc.h」に変えてコンパイルをお試しください。 なお、現行版ではなく、旧版(書籍のバージョン等)もマイクロチップのサイトからダウンロードできます。
→MPLAB X IDEダウンロードサイト(マイクロチップ・テクノロジ)
↑最新版はページ下方の「Download」タブの中に、旧版は「Download Archive」の中にあります。
→MPLAB XCコンパイラダウンロードサイト(マイクロチップ・テクノロジ)
↑最新版はページ下方の「Download」タブの中にあります。
この項の参考文献:電子工作のためのPIC16F1ファミリ活用ガイドブック(後閑哲也著・技術評論社)
書籍では、PIC12F629やPIC12F675を使用する際には「OSCCAL=_READ_OSCCAL_DATA();」を記述して、内部クロックの補正データを読み出すように書きましたが、現在のHI-TECH Cではこの記述は必要ないとのことです。なお、記述したままでもWarning(警告)は出ますが、正常にコンパイルできます。
まず、ポート2本を駆使して4ポジション動作としています。本来ならポート数の多いPIC16F819やPIC16F690などを使用するとわかりやすいのですが、パーツが高くなってしまうのと、こういう工夫を紹介しようと思い、あえてこのようにしています。
この4ポジションは、「L=0V」(電源のマイナスに繋ぐ)/「H=5V」(抵抗でプルアップしている)の組み合わせを、スイッチ2つで実現しています。回路図と上の表を照らし合わせると、わかりやすいと思います。
図 PIC制御パワー・パック配線図(図をクリックすると大きくなります)
パワー・パックの配線は、上図のようになります。少々トリッキなのは逆転スイッチで、ここにダイオードを共付けします。
↑自動閉塞信号機のフロー・チャート。
まず、フロー・チャート内の「入力」はGP4(AN3)を指し、「センサ」はGP3(MCLR)を指します。なお当初は、GP3をMCLRとして設計する予定でしたが、プログラムを短く書くために、急遽GP3ポートとして設計してあります。使用上の差異はありません。
この自動閉塞信号機は鉄道模型用を想定しています。したがって、初期設定は「青信号」ないし「黄信号」です。ちなみに実物の鉄道信号機は、故障した時などを想定して、初期設定が「赤信号」になっているはずです。これを厳密にやろうとすれば、プログラムの他にPIC周りの再設計も必要になるでしょう。
フロー・チャートを見るとわかるように、プログラムは自分自身の信号が赤の場合と、それ以外の場合で動作を変えるようにしてあります。これは、信号機の連動する関係を紙などに書き出すとわかると思います。
ソース・コードは「ダウンロード」のページにあります。