このプロジェクトでは、リレーをPICマイクロコントローラーPIC16F877Aとインターフェースします。リレーは、高電圧、高電流の電化製品を低電圧レベルから「オン」または「オフ」に制御するための機械装置です。リレーは2つの電圧レベルを分離し、一般的にACアプライアンスの制御に使用されます。機械式リレーからソリッドステートリレーまで、さまざまなタイプのリレーが電子機器で利用できます。このプロジェクトでは、メカニカルリレーを使用します。
このプロジェクトでは、次のことを行います-
- ユーザーからの入力用のスイッチをインターフェースします。
- 5Vリレーで220VAC電球を制御します。
- リレーを制御するには、BC547 NPNトランジスタを使用し、トランジスタはPIC16F877Aから制御します。LEDはリレーのオンまたはオフの状態を通知します。
PICマイクロコントローラーを初めて使用する場合は、PICマイクロコントローラー入門から始めてください。
必要なコンポーネント:
- PIC16F877A
- 20Mhzクリスタル
- 2個33pFセラミック
- 3個の4.7k抵抗器
- 1k抵抗
- 1つのLED
- BC547トランジスタ
- 1N4007ダイオード
- 5Vキュービックリレー
- AC電球
- ブレッドボード
- 部品を接続するためのワイヤー。
- 5Vアダプターまたは少なくとも200mAの電流能力を備えた5V電源。
リレーとその動作:
リレーは通常のスイッチと同じように機能します。メカニカルリレーは、電磁コイル製の仮磁石を使用しています。このコイルに十分な電流を流すと、コイルが通電されてアームを引っ張ります。そのため、リレーの両端に接続されている回路を閉じたり開いたりすることができます。入力と出力には電気接続がないため、入力と出力を分離します。リレーとその構造について詳しくは、こちらをご覧ください。
リレーは、5V、6V、12V、18Vなどのさまざまな電圧範囲で見つけることができます。このプロジェクトでは、動作電圧が5ボルトであるため、5Vリレーを使用します。この5Vキュービックリレーは、240VACで7A負荷、または110VACで10A負荷を切り替えることができます。ただし、その大きな負荷の代わりに、220VAC電球を使用し、リレーを使用して切り替えます。
これは、このプロジェクトで使用している5Vリレーです。定格電流は、120VACで10Aと240VACで7Aの2つの電圧レベルに対して明確に指定されています。指定された定格未満のリレーに負荷を接続する必要があります。
このリレーには5つのピンがあります。ピン配置を見るとわかります-
L1とL2は、内部の電磁コイルのピンです。リレーを「オン」または「オフ」にするには、これら2つのピンを制御する必要があります。次の3つのピンは、POLE、NO、NCです。ポールは内部の金属板に接続されており、リレーがオンになると接続が変わります。通常の状態では、POLEはNCで短絡されています。NCは通常接続の略です。リレーがオンになると、ポールの位置が変わり、NOに接続されます。NOは、の略。通常 オープン。
私たちの回路では、トランジスタとダイオードでリレー接続を行っています。トランジスタとダイオードを備えたリレーはリレーモジュールとして市販されているため、リレーモジュールを使用する場合は、そのドライバ回路(トランジスタとダイオード)を接続する必要はありません。
リレーは、AC家電を制御するためにすべてのホームオートメーションプロジェクトで使用されます。
回路図:
リレーをPICマイクロコントローラーに接続するための完全な回路を以下に示します。
上記の回路図では、pic16F877Aが使用されており、ポートBにLEDとトランジスタが接続されており、RBOのTACスイッチを使用してさらに制御されます。R1は、トランジスタにバイアス電流を供給する。R2は、触覚スイッチの両端で使用されるプルダウン抵抗です。スイッチが押されていない場合、ロジック0を提供します。1N4007であるクランプダイオードリレーの電磁コイルに使用されます。リレーがオフになると、高電圧スパイクが発生する可能性がありますそしてダイオードはそれを抑制します。トランジスタは、マイクロコントローラが提供できない50mAを超える電流を必要とするため、リレーを駆動するために必要です。トランジスタの代わりにULN2003を使用することもできます。アプリケーションに2つまたは3つ以上のリレーが必要な場合は、リレーモジュールの回路を確認することをお勧めします。ポートRB2の両端のLEDは、「リレーがオンです」と通知します。
最終的な回路は次のようになります-
ここでArduinoを使用したリレーの制御を学ぶことができます。リレーに本当に興味がある場合は、ここですべてのリレー回路を確認してください。
コードの説明:
開始時のmain.cのファイル、我々は、追加設定行のためのPIC16F877Aをしても、全体のピン名定義されPORTBを。
いつものように、最初に、PICマイクロコントローラーで構成ビットを設定し、ライブラリや水晶周波数を含むいくつかのマクロを定義する必要があります。最後に示した完全なコードで、それらすべてのコードを確認できます。入力としてRB0を作成しました。このピンにはスイッチが接続されています。
#include
その後、system_init()関数を呼び出して、ピンの方向を初期化し、ピンのデフォルト状態も構成しました。
system_init()関数に表示されます
void system_init (void){ TRISBbits.TRISB0 = 1; // Swを入力として設定TRISBbits.TRISB1 = 0; // LEDを出力として設定 TRISBbits.TRISB2 = 0; //リレーピンを出力 LED として設定= 0; リレー= 0; }
では 、メイン 、我々は全体のロジック・ハイを検知することにより、スイッチの押しを検出した場合の機能我々は常に、スイッチを押して確認してくださいRB0。しばらく待って、スイッチがまだ押されているかどうかを確認します。スイッチがまだ押されている場合は、RELAYピンとLEDピンの状態を反転します。
void main(void){ system_init(); //システムの準備 中while(1){ if(SW == 1){//スイッチが押されている __delay_ms(50); // (SW == 1){//スイッチがまだ押されている場合の デバウンス遅延LED =!LED; //ピンステータスを反転します。 RELAY =!RELAY; } } } return; }
このリレーインターフェースの完全なコードとデモビデオを以下に示します。