デジタルエレクトロニクスのアナログ世界
数年前、電話、コンピューター、テレビなど、今日私たちが使用している電子機器全体は、本質的にアナログでした。その後、ゆっくりと陸上電話が最新の携帯電話に置き換えられ、CRTテレビとモニターがLEDディスプレイに置き換えられ、真空管を備えたコンピューターが進化して、マイクロプロセッサーとマイクロコントローラーが内部に搭載されました。
今日のデジタル時代では、私たち全員が高度なデジタル電子機器に囲まれています。これは、私たちの周りのすべてが本質的にデジタルであると考えるように私たちを欺くかもしれませんが、それは真実ではありません。世界は常にアナログであり、たとえば、速度、温度、風速、日光、音など、私たち人間が感じ、経験するものはすべてアナログです。しかし、マイクロコントローラーとマイクロプロセッサーで動作する当社の電子機器は、0と1でのみ動作するため、これらのアナログ値を直接読み取ったり解釈したりすることはできません。したがって、マイクロコントローラとマイクロプロセッサがそれらを理解できるように、これらすべてのアナログ値を0と1に変換するものが必要です。これは、略してアナログ-デジタルコンバータまたはADCと呼ばれます。この記事では、ADCとその使用方法に関するすべて。
ADCとは何ですか?その使用方法は?
前述のように、ADCはアナログ-デジタル変換の略で、アナログ値を実世界から1や0などのデジタル値に変換するために使用されます。では、これらのアナログ値は何ですか?これらは、温度、速度、明るさなど、私たちが日常生活で目にするものです。しかし、待ってください!ADCは温度と速度を0や1のようなデジタル値に直接変換できますか?
いいえ、反抗的ではありません。ADCは、アナログ電圧値をデジタル値にのみ変換できます。したがって、どのパラメータを測定する場合でも、最初に電圧に変換する必要があります。この変換は、センサーを使用して行うことができます。たとえば、温度値を電圧に変換するには、サーミスタを同様に使用して、明るさを電圧に変換できます。LDRを使用できます。電圧に変換されると、ADCの助けを借りてそれを読み取ることができます。
ADCの使用方法を知るためには、最初に、チャネル分解能、範囲、基準電圧などのいくつかの基本的な用語を理解する必要があります。
ADCの分解能(ビット)とチャネル
マイクロコントローラまたはADCICの仕様を読むと、ADCの詳細は、チャネルおよび分解能(ビット)という用語を使用して示されます。たとえば、ArduinoUNOのATmega328には8チャネルの10ビットADCがあります。マイクロコントローラのすべてのピンがアナログ電圧を読み取ることができるわけではありません。8チャネルという用語は、このATmega328マイクロコントローラにアナログ電圧を読み取ることができる8つのピンがあり、各ピンが10ビットの分解能で電圧を読み取ることができることを意味します。これは、マイクロコントローラーの種類によって異なります。
ADCの範囲が0V〜5Vで、10ビットのADCがあると仮定します。これは、入力電圧0〜5ボルトが1024レベルの離散アナログ値(2 10 = 1024)に分割されることを意味します。意味1024は10ビットADCの解像度であり、同様に8ビットADCの解像度は512(2 8)であり、16ビットADCの解像度は65,536(2 16)です。
これにより、実際の入力電圧が0Vの場合、MCUのADCは0として読み取り、5Vの場合、MCUは1024を読み取り、2.5Vのような中間の場合、MCUは512を読み取ります。次の式を使用できます。 ADCの分解能と動作電圧に基づいてMCUによって読み取られるデジタル値を計算します。
(ADC分解能/動作電圧)=(ADCデジタル値/実際の電圧値)
ADCの基準電圧
知っておくべきもう1つの重要な用語は、基準電圧です。ADC変換中に、未知の電圧の値が既知の電圧と比較することによって検出されます。これは、参照電圧と呼ばれる既知の電圧です。通常、すべてのMCUには内部基準電圧を設定するオプションがあります。つまり、ソフトウェア(プログラム)を使用して、この電圧を内部で使用可能な値に設定できます。Arduino UNOボードでは、基準電圧はデフォルトで内部で5Vに設定されています。必要に応じて、ソフトウェアで必要な変更を加えた後でも、ユーザーはVrefピンを介してこの基準電圧を外部で設定できます。
測定されたアナログ電圧値は常に基準電圧値よりも低く、基準電圧値は常にマイクロコントローラの動作電圧値よりも低くなければならないことを常に覚えておいてください。
例
ここでは、3ビットの分解能と2Vの基準電圧を持つADCの例を取り上げています。したがって、次の図に示すように、0〜2vのアナログ電圧を8(2 3)の異なるレベルでマッピングできます。
したがって、アナログ電圧が0.25の場合、デジタル値は10進数で1、2進数で001になります。同様に、アナログ電圧が0.5の場合、デジタル値は10進数で2、2進数で010になります。
一部のマイクロコントローラーには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を使用する方法
ADCの種類と動作
ADCには多くの種類がありますが、最も一般的に使用されるのは、フラッシュADC、デュアルスロープADC、逐次比較、デュアルスロープADCです。これらのADCのそれぞれがどのように機能するか、およびそれらの違いを説明することは、かなり複雑であるため、この記事の範囲外です。しかし、大まかな考えを与えるために、ADCには測定されるアナログ電圧によって充電される内部コンデンサがあります。次に、コンデンサを一定時間放電して電圧値を測定します。
ADCでよくある質問
ADCを使用して5V以上を測定するにはどうすればよいですか?
前に説明したように、ADCモジュールはマイクロコントローラの動作電圧を超える電圧値を測定することはできません。つまり、5VマイクロコントローラーはADCピンで最大5Vしか測定できません。それ以上のことを測定したい場合、たとえば0-12Vを測定したい場合は、分圧器または分圧回路を使用して0-12Vを0-5Vにマッピングできます。この回路は、MCUの値をマップするために抵抗のペアを使用します。リンクを使用して、分圧回路について詳しく知ることができます。上記の例では、1K抵抗と720オーム抵抗を電圧源に直列に使用し、上記のリンクで説明したように抵抗間の電圧を測定する必要があります。
ADCからのデジタル値を実際の電圧値に変換する方法は?
ADCコンバーターを使用してアナログ電圧を測定する場合、MCUによって得られる結果はデジタルになります。たとえば、測定対象の実際の電圧が4Vの10ビット5Vマイクロコントローラーでは、MCUはそれを820として読み取ります。ここでも、上記の式を使用して820を4Vに変換し、計算。同じことをクロスチェックしましょう。
(ADC分解能/動作電圧)=(ADCデジタル値/実際の電圧値) 実際の電圧値= ADCデジタル値*(動作電圧/ ADC分解能) = 820 *(5/1023) = 4.007 = 〜4V
ADCと、それらをアプリケーションに使用する方法についての公正なアイデアが得られたことを願っています。概念の理解に問題がある場合は、以下にコメントを投稿するか、フォーラムに書き込んでください。