- オペアンプの基本
- プログラム可能なゲインアンプの動作
- 必要なコンポーネント
- 回路図
- PGAのArduinoコード
- プログラマブルゲインアンプの計算
- プログラム可能なゲインアンプ回路のテスト
- プログラム可能なゲインアンプの長所と短所
- さらなる強化
測定業界では、非常に重要な機能ブロックはプログラマブルゲインアンプ(PGA)です。電子愛好家や大学生の場合、回路には正確な測定プロセスに役立つ強力なADCと一緒にPGAが組み込まれているため、非常に小さな電圧を測定するマルチメータまたはオシロスコープを見たことがあるでしょう。
現在、既成のPGAアンプは、ユーザーがプログラム可能なゲイン係数を備えたオペアンプベースの非反転アンプを提供しています。このタイプのデバイスは、非常に高い入力インピーダンス、広い帯域幅、およびICに組み込まれた選択可能な入力電圧リファレンスを備えています。しかし、これらすべての機能にはコストが伴います。私にとって、一般的なアプリケーションにそのような高価なチップを置く価値はありません。
そこで、これらの状況を克服するために、オペアンプ、MOSFET、およびArduinoで構成される配置を考え出しました。これにより、プログラムでオペアンプのゲインを変更することができました。したがって、このチュートリアルで は、LM358オペアンプとMOSFETを使用して独自のプログラマブルゲインアンプを構築する方法を示し、テストと並行して回路の長所と短所について説明します。
オペアンプの基本
この回路の動作を理解するには、オペアンプがどのように動作するかを知ることが非常に重要です。このオペアンプテスター回路に従って、オペアンプの詳細をご覧ください。
上の図では、オペアンプを見ることができます。アンプの基本的な仕事は、入力信号を増幅することです。増幅に加えて、オペアンプは、加算、微分、積分などのさまざまな操作を実行することもできます。加算増幅器と差動増幅器の詳細については、こちらをご覧ください。
オペアンプには3つの端子しかありません。(+)記号の付いた端子を非反転入力と呼び、(-)記号の付いた端子を反転入力と呼びます。これらの2つの端子に加えて、3番目の端子は出力端子です。
オペアンプは2つのルールのみに従います
- オペアンプ入力に電流が出入りすることはありません。
- オペアンプは、入力を同じ電圧レベルに維持しようとします。
したがって、これら2つのルールをクリアすると、以下の回路を分析できます。また、さまざまなオペアンプベースの回路を使用して、オペアンプの詳細を確認してください。
プログラム可能なゲインアンプの動作
上の図は、私のクラッドPGAアンプの回路配置に関する基本的な考え方を示しています。この回路では、オペアンプは非反転増幅器として構成されており、非反転回路構成でよく知られているように、フィードバック抵抗または入力抵抗を変更することでオペアンプのゲインを変更できます。上記の回路配置からわかるように、オペアンプのゲインを変更するには、MOSFETを一度に1つずつ切り替える必要があります。
テストセクションでは、MOSFETを1つずつ切り替えて、測定値を実際の値と比較しただけです。結果は、以下の「回路のテスト」セクションで確認できます。
必要なコンポーネント
- ArduinoNano-1
- LM358 IC-1
- LM7805レギュレータ-1
- BC548汎用NPNトランジスタ-2
- BS170汎用NチャネルMOSFET-2
- 200K抵抗-1
- 50K抵抗-2
- 24K抵抗-2
- 6.8K抵抗-1
- 1K抵抗-4
- 4.7K抵抗-1
- 220R、1%抵抗-1
- タクタイルスイッチジェネリック-1
- 琥珀色のLED3mm-2
- ブレッドボードジェネリック-1
- ジャンパーワイヤージェネリック-10
- 電源±12V-1
回路図
プログラマブルゲインアンプのデモンストレーションでは、回路図を使用して、はんだのないブレッドボード上に回路を構築します。ブレッドボードの内部寄生インダクタンスと静電容量を減らすために、すべてのコンポーネントは可能な限り近くに配置されています。
そして、なぜ私のブレッドボードにワイヤーのクラスターがあるのか疑問に思っているのですか?ブレッドボードの内部アース接続は非常に貧弱なので、良好なアース接続を行うことです。
ここで、回路内のオペアンプは非反転アンプとして構成されており、7805電圧レギュレータからの入力電圧は4.99Vです。
抵抗R6の測定値は6.75K、R7は220.8Rです。これら2つの抵抗は分圧器を形成し、オペアンプの入力テスト電圧を生成するために使用されます。抵抗R8及びR9は、トランジスタT3及びT4の入力のベース電流を制限するために使用されます。抵抗R10及びR11は、それ以外の場合は回路に発振を引き起こす可能性があり、MOSFETのT1およびT2のスイッチング速度を制限するために使用されます。
このブログでは、BJTではなくMOSFETを使用する理由、つまり回路構成を紹介したいと思います。
PGAのArduinoコード
ここでは、Arduino Nanoを使用してトランジスタのベースとMOSFETのゲートを制御し、マルチメータを使用して電圧レベルを表示します。これは、Arduinoの内蔵ADCが低電圧の測定に関して非常に貧弱な仕事をしているためです。電圧レベル。
このプロジェクトの完全なArduinoコードを以下に示します。これは非常に単純なArduinoコードであるため、ライブラリを含める必要はありません。ただし、コードに示されているように、いくつかの定数と入力ピンを定義する必要があります。
ボイドセットアップ()は 、すべての入力および出力のための読み出しと書き込み動作が要件ごとに実行される主な機能ブロックです。
#define BS170_WITH_50K_PIN 9 #define BS170_WITH_24K_PIN 8 #define BC548_WITH_24K_PIN 7 #define BC548_WITH_50K_PIN 6 #define BUTTON_PIN 5 #define LED_PIN1 2 #define LED_PIN2 3 #define PRESSED_CONFIDENCE_LEVEL 5000 in int debounce_counter = 0; void setup(){pinMode(BS170_WITH_50K_PIN、OUTPUT); pinMode(BS170_WITH_24K_PIN、OUTPUT); pinMode(BC548_WITH_24K_PIN、OUTPUT); pinMode(BC548_WITH_50K_PIN、OUTPUT); pinMode(LED_PIN1、OUTPUT); pinMode(LED_PIN2、OUTPUT); pinMode(BUTTON_PIN、INPUT); } void loop(){bool val = digitalRead(BUTTON_PIN); //入力値を読み取るif(val == LOW){debounce_counter ++; if(debounce_counter> PRESSED_CONFIDENCE_LEVEL){debounce_counter = 0; button_is_pressed ++; } if(button_is_pressed == 0){digitalWrite(BS170_WITH_50K_PIN、HIGH); digitalWrite(BS170_WITH_24K_PIN、LOW);digitalWrite(BC548_WITH_24K_PIN、LOW); digitalWrite(BC548_WITH_50K_PIN、LOW); digitalWrite(LED_PIN1、LOW); digitalWrite(LED_PIN2、LOW); } if(button_is_pressed == 2){digitalWrite(BS170_WITH_24K_PIN、HIGH); digitalWrite(BS170_WITH_50K_PIN、LOW); digitalWrite(BC548_WITH_24K_PIN、LOW); digitalWrite(BC548_WITH_50K_PIN、LOW); digitalWrite(LED_PIN1、LOW); digitalWrite(LED_PIN2、HIGH); } if(button_is_pressed == 3){digitalWrite(BC548_WITH_24K_PIN、HIGH); digitalWrite(BC548_WITH_50K_PIN、LOW); digitalWrite(BS170_WITH_24K_PIN、LOW); digitalWrite(BS170_WITH_50K_PIN、LOW); digitalWrite(LED_PIN1、HIGH); digitalWrite(LED_PIN2、HIGH); } if(button_is_pressed == 1){digitalWrite(BC548_WITH_50K_PIN、HIGH); digitalWrite(BS170_WITH_50K_PIN、LOW); digitalWrite(BS170_WITH_24K_PIN、LOW); digitalWrite(BC548_WITH_24K_PIN、LOW); digitalWrite(LED_PIN1、HIGH);digitalWrite(LED_PIN2、LOW); } if(button_is_pressed> = 4){button_is_pressed = 0; }}}
プログラマブルゲインアンプの計算
PGAアンプ回路の測定値を以下に示します。
Vin = 4.99V R7 =220.8ΩR6=6.82KΩR5= 199.5K R4 = 50.45K R3 = 23.99K R2 = 23.98K R1 = 50.5K
注意!抵抗器の測定値を使用すると、理論値と実際の値を厳密に比較できるため、抵抗器の測定値が示されています。
これで、分圧器計算機からの計算を以下に示します。
分圧器の出力は0.1564Vです
4つの抵抗器の非反転増幅器のゲインを計算する
R1が選択された抵抗器の場合のVout
Vout =(1+(199.5 / 50.5))* 0.1564 = 0.77425V
R2が選択された抵抗器の場合のVout
Vout =(1+(199.5 / 23.98))* 0.1564 = 1.45755V
R3が選択された抵抗器の場合のVout
Vout =(1+(199.5 / 23.99))* 0.1564 = 1.45701V
R4が選択された抵抗器の場合のVout
Vout =(1+(199.5 / 50.45))* 0.1564 = 0.77486V
理論値と実際の値を可能な限り比較するために、これらすべてを行いました。
すべての計算が完了したら、テストセクションに進むことができます。
プログラム可能なゲインアンプ回路のテスト
上の画像は、MOSFET T1がオンのときの出力電圧を示しています。したがって、電流は抵抗R1を流れています。
上の画像は、トランジスタT4がオンのときの出力電圧を示しています。したがって、電流は抵抗R4を流れています。
上の画像は、MOSFET T2がオンのときの出力電圧を示しています。したがって、抵抗R2に電流が流れています。
上の画像は、トランジスタT3がオンのときの出力電圧を示しています。したがって、電流は抵抗R3を流れています。
回路図からわかるように、T1、T2はMOSFETであり、T3、T4はトランジスタです。したがって、MOSFETを使用した場合、誤差は1〜5 mVの範囲になりますが、トランジスタをスイッチとして使用した場合、10〜50mVの範囲で誤差が発生します。
上記の結果から、MOSFETがこの種のアプリケーションのgotoソリューションであることが明らかであり、理論的および実用的なエラーは、オペアンプのオフセットエラーが原因で発生する可能性があります。
注意!テストのために2つのLEDを追加しましたが、実際の回路図では見つかりません。どのピンがアクティブであるかを示すバイナリコードが表示されます。
プログラム可能なゲインアンプの長所と短所
この回路は簡単に安価で、かつシンプルで、それは多くの異なるアプリケーションで実現することができます。
ここでは、MOSFETをスイッチとして使用して、抵抗を介してすべての電流をグランドに流します。そのため、温度の影響は定かではありません。限られたツールとテスト機器では、温度を変化させた場合の影響を示すことができませんでした。回路。
MOSFETと一緒にBJTを使用する目的は、この種のアプリケーションでBJTがどれほど貧弱であるかを示したいからです。
フィードバック抵抗と入力抵抗の値はKΩの範囲内である必要があります。これは、抵抗値が低いほど、MOSFETを流れる電流が増えるため、MOSFETの両端で電圧が低下し、予測できない結果が生じるためです。
さらなる強化
フィルタを追加して高周波ノイズを除去するように、回路をさらに変更してパフォーマンスを向上させることができます。
このテストではLM358ジェリービーンズオペアンプを使用しているため、オペアンプのオフセット誤差が出力電圧で大きな役割を果たしています。そのため、LM358ではなくインストルメンタルアンプを使用することでさらに改善できます。
この回路は、デモンストレーションのみを目的として作成されています。この回路を実際のアプリケーションで使用することを考えている場合、絶対的な安定性を実現するには、チョッパータイプのオペアンプと高精度の0.1オームの抵抗を使用する必要があります。
この記事が気に入って、そこから何か新しいことを学んだことを願っています。疑問がある場合は、以下のコメントで質問するか、フォーラムを使用して詳細なディスカッションを行うことができます。