家庭の電力供給に電圧変動が見られることが多く、家庭用エアコンの故障の原因となることがあります。今日、私たちは低コストの高低電圧保護回路を構築しています。これは、高電圧または低電圧の場合にアプライアンスへの電源を遮断します。また、16x2LCDにアラートメッセージを表示します。このプロジェクトでは、PICマイクロコントローラーを使用して入力電圧を読み取り、基準電圧と比較し、それに応じてアクションを実行しました。
この回路をPCB上に作成し、同じ目的でPCB上に回路を追加しましたが、今回はオペアンプLM358(マイクロコントローラーなし)を使用しています。デモンストレーションの目的で、低電圧制限を150v、高電圧制限を200vとして選択しました。このプロジェクトでは、カットオフにリレーを使用していません。LCDを使用してデモを行っただけです。この記事の最後にあるビデオを確認してください。ただし、ユーザーはこの回路にリレーを接続して、PICのGPIOに接続することができます。
ここで他のPCBプロジェクトをさらに確認してください。
必要なコンポーネント:
- PICマイクロコントローラーPIC18F2520
- PCB(EasyEDAから注文)
- IC LM358
- 3ピン端子コネクタ(オプション)
- 16x2 LCD
- BC547トランジスタ
- 1k抵抗
- 2k2抵抗
- 30K抵抗SMD
- 10k SMD
- コンデンサ-0.1uf、10uF、1000uF
- 28ピンICベース
- 男性/女性のburgsticks
- 7805電圧レギュレータ-7805、7812
- Pickit2プログラマー
- 導いた
- ツェナーダイオード-5.1v、7.5v、9.2v
- トランス12-0-12
- 12MHzクリスタル
- 33pFコンデンサ
- 電圧レギュレーター(ファン速度レギュレーター)
作業説明:
この高電圧および低電圧カットオフ回路では、変圧器、ブリッジ整流器、分圧回路を使用してPICマイクロコントローラーを使用してAC電圧を読み取り、16x2LCDに表示しました。次に、AC電圧を事前定義された制限と比較し、それに応じてLCDにアラートメッセージを表示しました。同様に、電圧が150v未満の場合は「低電圧」を表示し、電圧が200vを超える場合は、LCDに「高電圧」のテキストを表示します。このプロジェクトの最後に記載されているPICコードでこれらの制限を変更できます。ここでは、ファンレギュレータを使用して、ビデオでのデモンストレーション目的で入力電圧を増減しました。
この回路では、マイクロコントローラーを使用せずに、単純な低電圧および過電圧保護回路も追加しました。この単純な回路では、LM358コンパレータを使用して入力電圧とリファレンス電圧を比較しました。したがって、このプロジェクトには3つのオプションがあります。
- 変圧器、ブリッジ整流器、分圧回路、PICマイクロコントローラーを使用してAC電圧を測定および比較します。
- 変圧器、整流器、およびコンパレータLM358(マイクロコントローラなし)を使用したLM358の使用による過電圧および不足電圧の検出
- コンパレータLM358を使用して低電圧と過電圧を検出し、その出力をPICマイクロコントローラに供給してコードでアクションを実行します。
ここでは、このプロジェクトの最初のオプションを示しました。ここでは、AC入力電圧を降圧し、ブリッジ整流器を使用してDCに変換し、このDC電圧を再び5vにマッピングし、最後にこの電圧をPICマイクロコントローラーに供給して比較および表示しました。
PICマイクロコントローラーでは、このマップされたDC電圧を読み取り、そのマップされた値に基づいて、次の式を使用して入力AC電圧を計算しました。
ボルト=((adcValue * 240)/ 1023)
ここで、 adcValue はPICコントローラーのADCピンでの等価DC入力電圧値であり、 volt は印加されたAC電圧です。ここでは、最大入力電圧として240vを採用しています。
または、同等のDC入力値をマッピングするために特定の方法を使用することもできます。
ボルト= map(adcVlaue、530、895、100、240)
ここで、 adcValue はPICコントローラーのADCピンでの等価DC入力電圧値、530は最小DC電圧等価、895は最大DC電圧等価値です。また、100vが最小マッピング電圧、240vが最大マッピング電圧です。
PICADCピンでの10mVDC入力が2.046ADC相当値に等しいことを意味します。したがって、ここでは最小値の平均として530を選択しました。PICのADCピンの電圧は次のようになります。
(((530 / 2.046)* 10)/ 1000)ボルト
100VACの最小値にマッピングされる2.6v
(上限についても同じ計算)。
最後にPICプログラムコードに マップ 機能が記載されていることを確認してください 。分圧回路とADCを使用した電圧のマッピングについて詳しくは、こちらをご覧ください。
このプロジェクトの作業は簡単です。このプロジェクトでは、それを実証するためにAC電圧ファンレギュレータを使用しました。トランスの入力にファンレギュレータを取り付けました。そして、その抵抗を増減することで、目的の電圧出力が得られました。
コードでは、高電圧および低電圧検出の最大電圧値と最小電圧値が固定されています。過電圧制限として200v、下限電圧として150vを固定しました。回路の電源を入れた後、LCD上のAC入力電圧を確認できます。入力電圧が上昇すると、LCDの電圧変化を確認できます。電圧が電圧制限を超えた場合、LCDは「HIGHVoltage Alert」で警告し、電圧が電圧制限を下回った場合、LCDは「 LOWVoltageAlert」メッセージ。このようにして、電子回路ブレーカーとしても使用できます。
さらにリレーを追加して、ACアプライアンスを低電圧または高電圧の自動カットオフに接続できます。コードを示すLCDアラートメッセージの下に、アプライアンスの電源を切るためのコード行を追加する必要があります。ACアプライアンスでリレーを使用するには、ここをクリックしてください。
回路の説明:
高電圧および低電圧保護回路、我々は、PICマイクロコントローラの2及び3番号端子に接続された2つの出力を有するLM358オペアンプを使用しました。また、分圧器を使用して電圧を分圧し、その出力をPICマイクロコントローラの4番目の番号ピンに接続します。LCDはPICのPORTBに4ビットモードで接続されています。RSとENはB0とB1に直接接続され、LCDのデータピンD4、D5、D6、D7はそれぞれB2、B3、B4、B5に接続されています。このプロジェクトでは、2つの電圧レギュレーターを使用しました。マイクロコントローラー電源用に7805、LM358回路用に7812です。また、12v-0-12v降圧トランスもAC電圧を降圧するために使用されます。残りのコンポーネントは、以下の回路図に示されています。
プログラミングの説明:
このプロジェクトのプログラミング部分は簡単です。このコードでは、分圧回路からのマップされた0〜5v電圧を使用してAC電圧を計算し、それを事前定義された値と比較する必要があります。このプロジェクトの後、完全なPICコードを確認できます。
まず、コードにヘッダーを含め、PICマイクロコントローラーの構成ビットを構成しました。PICコーディングに不慣れな場合は、ここでPICマイクロコントローラーとその構成ビットを学習してください。
その後、我々は次のように、LCDを駆動するためのいくつかのfucntionsを使用している )、ボイドlcdbegin( LCD、初期化するための 無効lcdcmd(char型CH) LCDにコマンドを送信するため、 無効lcdwrite(char型CH)を LCDとにデータを送信するため のボイドlcdprint(CHAR * str) 文字列をLCDに送信します。以下のコードのすべての関数を確認してください。
以下の関数は、値のマッピングに使用されます。
long map(long x、long in_min、long in_max、long out_min、long out_max){return(x-in_min)*(out_max-out_min)/(in_max-in_min)+ out_min; }
与えられた intanalogRead(int ch) 関数は、ADCの初期化と読み取りに使用されます。
int analogRead(int ch){int adcData = 0; if(ch == 0)ADCON0 = 0x03; // adcチャネル0else if(ch == 1)ADCON0 = 0x0b; // adcチャネル1を選択elseif(ch == 2)ADCON0 = 0x0b; // ADCチャネル2を選択ADCON1 = 0b00001100; // ADCのアナログi / p0,1および2チャネルを選択ADCON2 = 0b10001010; //キャップタイムを保持する等化時間while(GODONE == 1); //変換を開始adc値adcData =(ADRESL)+(ADRESH << 8); // 10ビット出力を保存ADON = 0; // adc off return adcData; }
与えられたラインは、ADCサンプルを取得し、それらの平均を計算してから電圧を計算するために使用されます。
while(1){long adcValue = 0; int volt = 0; for(int i = 0; i <100; i ++)//サンプルを取得{adcValue + = analogRead(2); delay(1); } adcValue / = 100; #ifメソッド== 1ボルト=(((float)adcValue * 240.0)/1023.0); #else volt = map(adcValue、530、895、100、240); #endif sprintf(result、 "%d"、volt);
そして最後に与えられた関数は結果として生じる行動を取るために使用されます:
if(ボルト> 200){lcdcmd(1); lcdprint( "高電圧"); lcdcmd(192); lcdprint( "アラート"); delay(1000); } else if(volt <150){lcdcmd(1); lcdprint( "低電圧"); lcdcmd(192); lcdprint( "アラート"); delay(1000); }
EasyEDAを使用した回路およびPCB設計:
この高電圧および低電圧検出回路を設計するために、EasyEDAと呼ばれるオンラインEDAツールを選択しました。以前にEasyEDAを何度も使用しており、他のPCB製造業者と比較して非常に便利であることがわかりました。ここで私たちのすべてのPCBプロジェクトをチェックしてください。 EasyEDAは、回路図キャプチャ、回路シミュレーション、PCB設計のワンストップソリューションであるだけでなく、低コストのPCBプロトタイプおよびコンポーネントソーシングサービスも提供します。彼らは最近、電子部品の在庫が豊富で、ユーザーがPCBの注文と一緒に必要な部品を注文できる、部品調達サービスを開始しました。
回路とPCBを設計する際に、回路とPCBの設計を公開して、他のユーザーがそれらをコピーまたは編集してそこから利益を得ることができるようにすることもできます。また、この高電圧と低電圧の回路とPCBのレイアウト全体を公開しました。 保護回路については、以下のリンクを確認してください。
easyeda.com/circuitdigest/HIGH_LOW_Voltage_Detector-4dc240b0fde140719c2401096e2410e6
以下は、EasyEDAからのPCBレイアウトのトップレイヤーのスナップショットです。「レイヤー」ウィンドウからレイヤーを選択することにより、PCBの任意のレイヤー(トップ、ボトム、トップシルク、ボトムシルクなど)を表示できます。
EasyEDAを使用してPCBの写真ビューをチェックアウトすることもできます。
オンラインでのPCBの計算と注文:
PCBの設計が完了したら、上の 製造出力の アイコンをクリックできます 。次に、PCB注文ページにアクセスしてPCBのガーバーファイルをダウンロードし、任意のメーカーに送信します。EasyEDAで直接注文する方がはるかに簡単(かつ安価)です。ここでは、注文するPCBの数、必要な銅層の数、PCBの厚さ、銅の重量、さらにはPCBの色を選択できます。すべてのオプションを選択したら、[カートに保存]をクリックして注文を完了すると、数日後にPCBが届きます。ユーザーは、地元のPCBベンダーと協力して、ガーバーファイルを使用してPCBを作成することもできます。
EasyEDAの配送は非常に速く、PCBを注文してから数日後、PCBサンプルを入手しました。
以下は、PCBにコンポーネントをはんだ付けした後の 写真です。
これにより、自宅用の低高電圧保護回路を簡単に構築できます。さらに、電圧変動から保護するために、ACアプライアンスを接続するためのリレーを追加する必要があります。リレーをPICMCUの任意の汎用ピンに接続し、LCDアラートメッセージコードとともにそのピンをHighおよびLowにするコードを記述します。