マイコンから出力される電圧を制御できますか?


8

回路に対して0 V〜0.8 Vの値を生成し、システムから出力される電圧の値を取得してデータを分析する必要があります。マイクロコントローラを使用して電圧値を自動的に生成できますか?(例:0.05 V、0.1 V、0.15 V ...)

答えが「はい」の場合、どのマイクロコントローラーを使用する必要がありますか、またどの手法を推奨しますか?

答えが「いいえ」の場合、他の方法を提案できますか?

回答:


8

はい、すべてのマイクロコントローラーには、ファームウェアによって制御される電圧信号を生成する方法がいくつかあります。力ずくの方法は、マイクロがデジタルアナログコンバーター(D / A)を含めることです。ファームウェアはD / Aに数値を書き込み、その数値に比例した電圧を生成します。

D / Aの重要な仕様の1つは、そのビットのビット数です。これにより解像度が決まります。数値にNビットがある場合、D / Aは2 Nの異なる値を生成できます。たとえば、8ビットD / Aは256の異なる電圧レベルを生成できます。通常のデジタル出力ピンは1ビットD / Aと考えることができます。数値には2つの状態、0と1があり、出力電圧は高いまたは低いです。

ほとんどのマイクロには、需要がほとんどないため、マルチビットD / Aが組み込まれていません。通常、プロセスのできるだけ早い段階でアナログ値をデジタルに変換し、デジタルで操作を行ってから、パルスで制御します。マイクロでアナログ電圧を生成するのは珍しいことです。あなたが本質的にアナログ信号についてであると考えるかもしれないオーディオのようなアプリケーションでさえ、物事はしばしばデジタル的にまたは最後にパルスで処理されます。それが基本的にD級アンプです。

D / Aが組み込まれている限定されたマイクロのセットの1つを使用したくない場合は、外部で追加できます。たとえば、microがSPIバスを介して駆動できる多くのD / Aがあります。

ただし、高速出力が必要でない限り、マイクロのPWM出力をローパスフィルター処理すると、優れたアナログ信号が得られます。マイクロはよく制御されたパルスシーケンスを生成するのが得意で、多くの場合、この目的のためにハードウェアが組み込まれています。たとえば、1 µsごとに(1 MHzのレートで)変更できるデジタル出力を考えてみます。1 µsのタイムスライスを1023のブロックにグループ化するとします。各ブロックで、スライスの0〜1023のいずれかを高くできます。これを平均すると、1024レベルのアナログ値が得られます。これは、10ビットのD / Aから得られるものです。生信号には、必要な平均値に加えて、1 MHz / 1023 = 978 Hzから始まる高周波が含まれます。ローパスフィルタリングのいくつかの極を適用することにより(極ごとに1つの抵抗とコンデンサ)、

このタイプのA / Dには、非常に線形で単調で、2つのグリッチ出力の累乗がないという優れた特性があります。唯一の欠点は通常、帯域幅です。ローパスフィルターを形成するいくつかの単純な抵抗器とコンデンサーでは、数十Hzより速いアナログ信号を取得することはおそらくできません。

ブロックごとに1023スライスを使用することは、任意の選択であったことに注意してください。より高い解像度が必要な場合は、ブロックを大きくしますが、その後、フィルター処理された出力の変化を遅くする必要があります。ただし、多くのマイクロは、1 MHzスライスレートよりもはるかに速いハードウェアでPWM生成を実行できます。

外部D / Aに進む前に、PWMメソッドが機能するかどうかを確認してみます。


完全な初心者として、これは利用可能なフィルターのスペクトルを確認するのに役立ちました:analog.com/designtools/en/filterwizard
user391339

3

設計しようとしているのはデータ収集システムです

Digital-to-Analog(DAC)コンバーターがある場合は、それを実行できます。それ以外の場合は、外部DACを取得し、マイクロコントローラーが可能な限り(I2C、SPI、UARTなど)を介してそれに通信するようにします。

マイクロチップにタグを付けたことに注意してください。それらには、シンプルなもの(pic12f752、pic16f753、782)から高度なもの(dsPIC33fj16GS504,502,302)などのDACを備えたマイクロコントローラーがあります。これらはhttp://www.microchip.com/maps/microcontroller.aspxから入手できます


次に、たとえば12F752を使用して、彼のCDAを使用して電圧を生成し、CADを使用してシステムの値を取得して分析できます。
user26136 2013

@ user26136(CDA =マイクロコントローラーのDA、およびCAD =マイクロコントローラーのADの場合)。キャリブレーションアプリケーションノートも確認することをお勧めします
Iancovici 2013

はい、そうです。
user26136 2013

1

システムによって引き出される電流によっては、DACとして抵抗ラダーを使用してこれを実行できる場合があります。http//en.wikipedia.org/wiki/Resistor_ladder

少数の特定の電圧値が必要な場合は、2 ^ nの等間隔の値の通常のシステムではなく、それらを正確に放出するように抵抗ラダーを設計することもできます。

それが重要な電流を引き出す場合、出力としてバッファとして構成されたオペアンプが必要になります。オペアンプが0V付近の適切な直線性で動作することを確認してください。これには負の電源が必要になる場合があります。


1

他の回答に加えて、ほとんどのマイクロコントローラーにはPWM機能があります(そうでない場合は、常にビットバンすることができます)。PWMを単純なRCフィルターに供給する場合、多くの追加コンポーネントやコストなしでプリミティブDACを作成できます。


1

PWMに問題がない場合は、Arduinoのアナログ出力が問題なく機能します。パルスは非常にノイズが多いため、ローパスフィルターの追加を検討することもできます。

よりクリーンなソリューションが必要な場合は、DACモジュールに付属のマイクロコントローラーを見つけてください。一部のMSP430マイクロコントローラーには、使用できるDAC(23ページを参照)があります。あなたは彼らのデータシートを調べる必要があります。

DACのないマイクロコントローラーに制約されている場合は、DACチップの入手を検討できます。このチップは、SPIまたはI2Cを介して簡単に制御でき、安価です。ここだ12ビットDACドルを少し超えるがかかります。

お役に立てれば。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.