アナログからデジタルへの変換は、組み込み電子機器では非常に重要なタスクです。ほとんどのセンサーはアナログ値として出力を提供し、バイナリ値のみを理解するマイクロコントローラーにそれらを供給するため、デジタル値に変換する必要があります。したがって、アナログデータを処理できるようにするには、マイクロコントローラーにアナログ-デジタルコンバーターが必要 です。
一部のマイクロコントローラーにはArduino、MSP430、PIC16F877AなどのADCが組み込まれていますが、8051、Raspberry Piなどの一部のマイクロコントローラーにはADCがなく、ADC0804、ADC0808などの外部アナログ-デジタルコンバーターICを使用する必要があります。以下に、さまざまなマイクロコントローラーを使用したADCのさまざまな例を示します。
- Arduino UnoでADCを使用する方法は?
- Raspberry PiADCチュートリアル
- ADC0808と8051マイクロコントローラーのインターフェース
- AVRマイクロコントローラーを使用した0-25Vデジタル電圧計
- STM32F103C8でADCを使用する方法
- MSP430G2でADCを使用する方法
- ARM7LPC2148でADCを使用する方法
- MPLABおよびXC8でPICマイクロコントローラのADCモジュールを使用する
このチュートリアルでは、PCF8591 ADC / DACモジュールをArduinoとインターフェースする方法を確認 します。
必要なコンポーネント
- Arduino UNO
- PCF8591ADCモジュール
- 100Kポット
- ジャンパーケーブル
PCF8591 ADC / DACモジュール
PCF8591は、8ビットのアナログ-デジタルまたは8ビットのデジタル-アナログコンバータ モジュールです。つまり、各ピンは最大256のアナログ値を読み取ることができます。ボードにはLDRとサーミスタ回路も備わっています。このモジュールには、4つのアナログ入力と1つのアナログ出力があります。 I 2 C通信で動作するため、シリアルクロックとシリアルデータアドレス用のSCLピンとSDAピンがあります。2.5〜6Vの 電源電圧が必要で、 スタンバイ電流が低くなっています。モジュールのポテンショメータのノブを調整することにより、入力電圧を操作することもできます。ボードには3つのジャンパーもあります。 J4は サーミスタアクセス回路を選択するために接続され、J5はLDR /フォトレジスタアクセス回路を選択するために接続されます J6は、調整可能な電圧アクセス回路を選択するために接続されています。これらの回路にアクセスするには、これらのジャンパーのアドレスを使用する必要があります。J6の場合は0x50、J5の場合は0x60、J4の場合は0x70です。ボードD1とD2には2つのLEDがあります。D1は出力電圧の強度を示し、D2は供給電圧の強度を示します。出力または供給電圧が高いほど、LEDD1またはD2の強度が高くなります。VCCまたはAOUTピンのポテンショメータを使用してこれらのLEDをテストすることもできます。
PCF8591 ADC / DACモジュールとArduinoのインターフェース
完全なプログラム及び作業映像は 、このチュートリアルの最後に与えられています。
第一に、私たちは私のためのライブラリーを定義する必要があります2 C通信とLCDディスプレイ。
#include
次に、いくつかのマクロを定義します。最初のマクロはICのデータバスのアドレスを定義するためのものであり、2番目のマクロはモジュールの最初の入力ピンのアドレスを定義するためのものであり、ポットからの入力が与えられます。
#define PCF8591(0x90 >> 1) #define AIn0 0x00
次に、LCDとArduinoのピン接続を定義し、アナログピンで取得する値を初期化します。
const int rs = 12、en = 11、d4 = 5、d5 = 4、d6 = 3、d7 = 2; LiquidCrystal lcd(rs、en、d4、d5、d6、d7); int値= 0;
それでは、 セットアップ 機能に 移り ましょう。ここでは、最初の行に、我々は、I初期化されてきた2 C通信を。2行目では、アナログ値を印刷するLCDディスプレイを初期化しました。16x2 LCDとArduinoのインターフェースについて詳しくは、こちらをご覧ください。
void setup() { Wire.begin(); lcd.begin(16,2); }
では ループ 機能、最初の行は、それがPCF8591を開始すなわち、送信を開始することです。2行目は、最初のアナログ入力ピンでアナログ測定を行うようにICに指示します。3行目は送信を終了し、4行目はアナログピンから測定データを取得します。
void loop() { Wire.beginTransmission(PCF8591); Wire.write(AIn0); Wire.endTransmission(); Wire.requestFrom(PCF8591、1);
次の部分では、アナログピンから読み取った値を前に定義した 値 変数に入れます。そして次の行で、その値をLCDに出力します。
Value = Wire.read(); lcd.print( "ADC Value ="); lcd.print(Value); delay(500); lcd.clear();}
最後に、Arduinoにコードをアップロードして実行します。アナログ値がLCDディスプレイに表示され始めます。ポットのノブを調整すると、値が徐々に変化します。