Arduino ADC

Ammar Ali 2024年2月16日
Arduino ADC

このチュートリアルでは、アナログピンを使用してアナログ信号を読み取り、Arduino でデジタルに変換する方法について説明します。

Arduino ADC

ADC は、アナログからデジタルへのコンバーターとも呼ばれ、アナログ信号をデジタル信号に変換します。アナログ信号は連続的です。つまり、内部に無限の数の値があります。すべての値を読み取ることはできないため、連続信号から特定の時間間隔で値を読み取り、信号をデジタル化します。

アナログ信号からサンプルを取得するプロセスは、サンプリングと呼ばれます。アナログ信号をデジタルに変換するプロセスを次の図に示します。

ADC イメージ

上の図の最初の信号は無限の値を持つ連続信号であり、2 番目の信号は有限の値を持つデジタル信号です。アナログからデジタルへのコンバーターは、アナログ信号から一定の間隔で値を取得して、デジタル信号にします。

コンピューターはアナログ信号を処理できないため、アナログからデジタルへの変換が行われます。0 と 1 のデジタル信号のみを処理できます。デジタル信号を処理した後、DAC またはデジタルからアナログへのコンバーターを使用して信号をアナログに戻すこともできます。

たとえば、上の図の 2 番目の信号のポイントを結合すると、最初の信号とほぼ同じになります。ADC で取得するサンプルの数は、ADC のサンプリングレートまたはビットレートと呼ばれます。

一部の Arduino ボードには、10 ビットのアナログからデジタルへのコンバーターがあり、一部には、12 ビットのアナログからデジタルへのコンバーターがあります。ビットレートは解像度とも呼ばれ、ADC がアナログ信号から取得するサンプルの数を定義します。

10 ビットのアナログからデジタルへのコンバーターは、アナログ信号から 1024 サンプルを取得します。たとえば、入力信号が 0〜5 ボルトの電圧レベルで構成されているとします。

その場合、電圧レベルは 0〜1024 の整数範囲にマッピングされます。これは、アナログからデジタルへのコンバーターが 5/1024 または 4.9 ミリボルトごとにサンプルを取得することを意味します。

アナログからデジタルへのコンバーターの速度は、ATmega ベースの Arduino ボードの Arduino ボードの動作周波数に依存します。アナログからデジタルへのコンバーターは、アナログ信号をデジタル信号に変換するのに 100 マイクロ秒かかります。これは、サンプリングレートまたは読み取りレートが 10kHz または 1 秒あたり 10,000 回であることを意味します。

Arduino Zero、Due、MKR ファミリーボードなどの他のボードには、12 ビットのアナログからデジタルへのコンバーターがあります。つまり、0〜3.3 ボルトの入力アナログ信号が 0〜4095 の整数範囲にマッピングされます。

デフォルトでは、12 ビットのアナログからデジタルへのコンバーターは 10 ビットに設定されますが、analogReadResolution() 関数を使用してアナログからデジタルへのコンバーターのビットレートまたは解像度を変更し、内部のビット数を渡すことができます。解像度を設定する機能。

analogReadResolution() 関数の詳細については、このリンクを確認してください。

すべての Arduino ボードのアナログピンには、A の後に A0A1 などの番号が付いています。Arduino のアナログピンから信号を読み取るには、analogRead() 関数を使用できます。

analogRead() 関数の基本的な構文は次のとおりです。

output = analogRead(pin)

上記の構文は、アナログピンからのアナログ信号をデジタル信号として返します。アナログピンがどの信号にも接続されていない場合でも、関数はいくつかの浮動値を返します。

Arduino ボードが異なれば、アナログからデジタルへのコンバーターの速度も異なります。これは変更できますが、アナログからデジタルへのコンバーターの解像度も変更されます。したがって、正確なアナログからデジタルへの変換には、アナログからデジタルへのコンバーターのデフォルト設定を使用する必要があります。

Arduino ボードの中には、入力アナログ信号の基準電圧が 0〜5 ボルトのものもあれば、0〜3.3 ボルトのものもあることを上で説明しました。これらはデフォルト値であり、analogReference() 関数を使用して変更できます。

Arduino ボードの種類に応じて、さまざまなオプションを渡すことができます。

たとえば、Arduino Uno と Mega の場合、次のようなオプションがあります。

  1. DEFAULT-基準電圧を 0〜5 ボルトの整数範囲に設定します。
  2. INTERNAL-基準電圧を 0〜1.1 ボルトの整数範囲に設定します。
  3. INTERNAL1V1-基準電圧を 0〜1.1 ボルトの整数範囲に設定します。
  4. INTERNAL2V2.56-基準電圧を 0〜2.56 ボ​​ルトの整数範囲に設定します。

基準電圧を設定する前に、0 ボルト未満および 5 ボルトを超える電圧値を設定できないことに注意してください。基準電圧値は 0〜5 ボルトである必要があります。

アナログピンに抵抗を接続するとします。その場合、アナログピン内に 32K 値の抵抗が既に存在するため、入力電圧が低下します。この場合、両方の抵抗が分周器となり、入力電圧は、抵抗の値。

analogReference() 関数内で使用できるオプションの完全なリストについては、このリンクを確認してください。analogRead() 関数の詳細については、このリンクを確認してください。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook