JPY | USD

Arduinoのアナログ機能:次期設計での使用方法

著者 Lee H. Goldberg

Electronic Products の提供


お客様が組み込み設計のプロであれ、コンピュータ愛好家の初心者であれ、Arduinoが提供するオープンハードウェアプラットフォームのアナログ入力および出力チャンネルが、お客様のプロジェクトと「実世界」とをいかに容易につなぐことができるかを、お客様は理解するでしょう。 小型モジュールは、MCUのマルチチャンネル入力への容易なアクセスを提供します。このマルチチャンネル入力は、電圧のモニタ、および広範なアナログセンサまたはサンプル波形の読み取りに使用することができます。

MCUのD/Aコンバータは、比較的あまり高くない分解能および変換速度を備えている一方で、照明またはモータ制御から、アンプのゲインバイアスに及ぶ多くの一般的なアプリケーションに好適です。 この記事では、Arduinoのアナログ機能の基礎を形成するハードウェアおよびソフトウェアリソース、および次期設計においてそれらを使用する方法をご紹介します。

Arduinoについて精通していない場合は、TechZoneの記事「Arduinoのオープンソースプラットフォームは、創造性を解放」でその詳細を取得することができます。

アナログのために誕生

デジタル技術を実世界のアプリケーションに容易に適用するという理念に沿って、Arduinoハードウェアプラットフォームは、Atmelの汎用ATmega 8ビットMCUファミリに組み込まれたアナログ機能を最大限に活用するように設計されました。 Arduinoプラットフォームで使用されるATmegaのすべてのバリアントは、オンチップのマルチチャンネルA/Dコンバータ(ADC)を装備しています。 このADCは、10ビット分解能を備え、0~1023の整数形式で最大15,000サンプル/secを生成することができます。 いくつかのバリアントは8および16入力をサポートしますが、ほとんどのAVR MCUは6個のアナログ入力チャンネルをサポートします。 アナログピンの主要機能はアナログ入力を読み取ることである一方で、アナログピンはまた、デジタル汎用入力/出力(GPIO)ピンとして構成することができます。 それらが必要な場合は、アナログピンは選択可能なプルアップ抵抗を備えています。このプルアップ抵抗は、MCUのデジタルピンでのプルアップと同じ方法で構成することができます。

いくつかのAVR MCUはD/Aコンバータ(DAC)を装備していますが、Arduinoボードの現世代製品ファミリは、パルス幅変調(PWM)信号を生成するためにデジタルI/Oピンを迅速にトグルすることで、アナログ出力を生成します。 各PWM出力の490Hz(約)矩形波のデューティサイクルは、256、2msecインクリメントで0~5Vの実効RMS電圧を提供するために、プログラムすることができます(図1)。 機能にいくらかの制限があるものの、Arduinoの出力は、LEDの駆動またはモータの制御などの多くのタスクに使用することができます。

ArduinoのデジタルGPIOピン

図1:ArduinoのデジタルGPIOピンは、パルス幅変調(PWM)技法を使用することで、アナログ出力として機能することができます(Arduino.ccの提供)。

ほとんどのArduinoボードは、ボードの端のメスピンコネクタを介して、MCUのアナログ(およびデジタル)I/O信号への容易なアクセスを提供します。 アナログチャンネルおよび物理ピンの割り当ての数は、使用している特定のMCUおよびボードのフォームファクタに応じて異なりますが、多くのバリアントは、Uno(図2)、Mega、およびNanoなどの人気のある「公式」設計が使用するピン配列規約に従います。

ArduinoのUno(rev3)ボード

図2:Arduinoが提供するUno(rev3)ボードのアナログ入力(A0-A5)およびアナログPWM出力(デジタル3、5、6、9、10、および11)は、ボードの端の標準ヘッダピンを介して物理的にアクセスできます(Arduino.ccの提供)。

また、Arduino IDEがサポートするプログラミング言語がネイティブアナログI/Oコマンドのセットを含んでいるため、アナログI/O機能を使用するコード開発は簡単です。 これらの命令により、アナログ入力の読み取り、アナログ(PWM)出力の生成、およびA/Dコンバータ基準電圧の構成が可能になります。

アナログ入力の読み取り

Arduinoのアナログ入力を実世界のアプリケーションにつなげることは、ある程度簡単ですが、AVRのA/Dコンバータ向けに適切な電圧基準ソースを選択する上でいくらか注意が必要です。 それは、入力電圧範囲を決定するために、DEFAULT、INTERNAL、またはEXTERNAL基準電圧のいずれかを使用することができます。 DEFAULTモードで、MCUはリファレンスとしてオンボード電源レギュレータの出力を使用します。 使用している特定のArduinoボードに応じて、これは5Vまたは3.3Vです。

INTERNALモードは、AVRのオンチップ高精度基準電圧源を使用します。 この電圧源は、特定のデバイス間で異なりますが、通常は1.1V(ATmega168またはATmega328の場合)か2.56V(ATmega8およびMegaシリーズの場合)のどちらかです。 EXTERNALモードにより、5K抵抗を通じてAREFピンに外部基準電圧を接続することができます。 AREFピンは、外部5K抵抗を備えた分圧器として機能する、内部32K保護抵抗を有しています。 これは、たとえば、抵抗を通じて適用される2.5Vが、AREFピンで2.5 * 32 / (32 + 5) = 約2.2Vを生じることを意味します。

Arduinoプログラミング言語を使用したアナログ電圧の読み取りには、analogReference(type)を使用して基準電圧源を選択した後に、読み取りanalogRead(pin)を呼び出すことが伴います。ここで、(pin)は、サンプルするヘッダピン数を示します。 このReference typeは、いったん選択すると、プログラムされるまで一定のままです。 AVR MCUは最大15kサンプル/secの変換レートをサポートしますが、Arduinoハードウェア/ソフトウェア環境は一般的に、これを約10kサンプル/secに制限します。

PWMアナログ出力の作成

ArduinoのPWMピンの1つでアナログ電圧を生成するには、pinMode(pin, mode)コマンドを使用して出力として希望するピンを構成した後に、analogWrite(pin, value)を呼び出す必要があります。ここで、(pin)は、出力するヘッダピンを、(value)は、(1/255のインクリメントで)生成される基準電圧の分数を示します。 このピンは、いったん構成すると、analogWrite()への次の呼び出しまで(または、同じピンのためのdigitalRead()またはdigitalWrite()が発行されるまで)、指定されたデューティサイクルを備えた一定の490Hz矩形波を生成します。

I/Oピンは、中型のLEDアレイを直接駆動できるように、最大40mAの駆動電流をサポートすることができます。 アナログ出力は、より高電力の照明またはDCモータ向けに、パワートランジスタまたはブリッジ回路の駆動に使用することができます。 出力は、より要求の厳しいアプリケーション向けに、シンプルなR/Cネットワークを使用してフィルタされ、アンプまたは電流源向けの制御電圧として使用されることができます。

さらなるアナログ技術

MEGA8およびMEGA168を含む)いくつかのAVR MCUは、内部コンパレータを備えています。このコンパレータは、別の外部入力に対する入力電圧、PWM出力の1つが生成する電圧、またはリファレンスデバイスの内部基準電圧を比較することができます。 このコンパレータの出力は、ポーリングされるか、または割り込みをトリガするのに使用されることができます。 それはより多くのソフトウェアを伴う一方で、割り込み駆動型の配置により、プロセッサは、アナログチャンネルのサンプルを繰り返し行う必要がなく、不足電圧/過電圧状態を検出することができます。 これは、調整可能閾値モーション検出器および衝撃センサから、生物医学モニタリングに至るすべてのものに非常に役立つ可能性があります。

MCUが内部コンパレータを持たないArduinoボードの場合、いくつかのArduinoボードで提供されている「kluge」エリアでLM741LM339N、またはTLC3704 などの外部デバイスを追加するのは比較的容易です。 お客様のプラットフォームでユーザー供給の回路のための場所がない場合は、低コストの試作シールドカード(図3)を使用して追加することができます。

試作シールドカード

図3:試作シールドカードにより、お客様独自のアナログ(またはデジタル)I/Oを、ほぼすべての標準Arduinoボードに追加することが容易になります(Digi-Keyの提供)。

要約

Arduinoの低コストおよび汎用性は、商用ハードウェア開発者の中で忠実なファンを獲得してきました。 Arduinoハードウェアプラットフォームは、AtmelのATmega 8ビットMCUファミリに組み込まれたアナログ機能を最大限に活用するように設計されました。 これらのMCUのすべてのバリアントは、オンチップのマルチチャンネルA/Dコンバータ(ADC)を装備しています。 この記事は、Arduinoのアナログ機能の基礎を形成するハードウェアおよびソフトウェアリソースの入門、および次期設計でこれらの機能を使用できる技術者にとっての出発点として意図されています。 その目的のために、アナログ入力の読み取り、PWMアナログ出力の作成、および外部アナログI/Oの追加について考察しました。 Digi-Keyウェブサイトのページにあるリンクを使用して、Arduino関連製品の詳細をご覧ください。

免責条項:このウェブサイト上で、さまざまな著者および/またはフォーラム参加者によって表明された意見、信念や視点は、Digi-Key Electronicsの意見、信念および視点またはDigi-Key Electronicsの公式な方針を必ずしも反映するものではありません。

著者について

Lee H. Goldberg

出版者について

Electronic Products

雑誌『Electronic Products』とElectronicProducts.comは、電子機器およびシステム設計の責任を持つ技術者や技術管理者に関連情報を提供しています。