ほとんどすべての組み込みアプリケーションで使用される一般的な機能の1つは、ADCモジュール(アナログ-デジタルコンバーター)です。これらの アナログ-デジタルコンバーターは、温度センサー、傾斜センサー、電流センサー、フレックスセンサーなどのアナログセンサーから電圧を読み取ることができます。したがって、このチュートリアルでは、MSP430G2でADCを使用して、EnergiaIDEを使用してアナログ電圧を読み取る方法を学習し ます。小さなポテンショメータをMSPボードに接続し、アナログピンにさまざまな電圧を供給し、電圧を読み取ってシリアルモニターに表示します。
ADCモジュールを理解する:
私を信じてください、アナログ電圧を読み取るためにMSP430G2を接続してプログラムするのに10分はほとんどかかりません。ただし、MSPボードのADCモジュールを理解して、今後のすべてのプロジェクトで効果的に使用できるようにしましょう。
マイクロコントローラはデジタルデバイスです。つまり、1と0しか理解できません。しかし、現実の世界では、温度、湿度、風速などのほとんどすべてが本質的にアナログです。これらのアナログ変化と相互作用するために、マイクロコントローラーはADCと呼ばれるモジュールを使用します。利用可能なADCモジュールにはさまざまな種類があり、MSPで使用されているのはSAR8チャネル10ビットADCです。
逐次比較(SAR)ADC: SAR ADCは、コンパレータといくつかの論理会話の助けを借りて動作します。このタイプのADCは、基準電圧(可変)を使用し、コンパレータを使用して入力電圧を基準電圧と比較し、デジタル出力となる差を最上位ビット(MSB)から保存します。比較の速度は、MSPが動作しているクロック周波数(Fosc)によって異なります。
10ビット分解能:このADCは8チャネル10ビットADCです。ここで、8チャネルという用語は、アナログ電圧を測定できる8つのADCピンがあることを意味します。10ビットという用語は、ADCの分解能を意味します。10ビットは2の10乗(2 10)、つまり1024を意味します。これはADCのサンプルステップ数であるため、ADC値の範囲は0から1023になります。値は0から1023に増加します。ステップあたりの電圧の値に基づく1023。これは次の式を使用して計算できます。
注: Energiaのデフォルトでは、基準電圧はVcc(〜3v)に設定されていますが、 analogReference() オプションを使用して基準電圧を変更できます。
また、ADCを他のマイクロコントローラーとインターフェースする方法も確認してください。
- Arduino UnoでADCを使用する方法は?
- ADC0808と8051マイクロコントローラーのインターフェース
- PICマイクロコントローラーのADCモジュールの使用
- Raspberry PiADCチュートリアル
回路図:
以前のチュートリアルでは、LCDをMSP430G2とインターフェイスする方法をすでに学習しました。次に、MSP430にポテンショメータを追加して、可変電圧を供給し、LCDに電圧値を表示します。LCDのインターフェースに気付いていない場合は、悔い改めを避けるために情報をスキップするので、上のリンクに戻って読んでください。プロジェクトの完全な回路図を以下に示します。
ご覧のとおり、ここでは2つのポテンショメータが使用されています。1つはLCDのコントラストを設定するために使用され、もう1つはボードに可変電圧を供給するために使用されます。そのポテンショメータでは、ポテンショメータの一方の端がVccに接続され、もう一方の端がグランドに接続されています。センターピン(青い線)はピンP1.7に接続されています。このピンP1.7は、0V(グランド)から3.5V(Vcc)までの可変電圧を提供します。したがって、この可変電圧を読み取ってLCDに表示するには、ピンP1.7をプログラムする必要があります。
Energiaでは、ピンP1.7がどのアナログチャネルに属しているかを知る必要がありますか?これは下の写真を参照することで見つけることができます
右側にP1.7ピンがあります。このピンはA7(チャネル7)に属しています。同様に、他のピンのそれぞれのチャネル番号も見つけることができます。ここでアナログ電圧を読み取るために、A0からA7までの任意のピンを使用できます。ここではA7を選択しました。
ADC用のMSP430のプログラミング:
アナログ電圧を読み取るようにMSP430をプログラミングするのは非常に簡単です。このプログラムでは、値のアナログを読み取り、その値で電圧を計算してから、両方をLCD画面に表示します。完全なプログラムは、私はあなたがよりよく理解するためのスニペットでプログラムを説明しています、さらに下に、このページの下部に見つけることができます。
LCDピンを定義することから始めます。これらは、MSP430のどのピンにLCDピンが接続されるかを定義します。接続を参照して、ピンがそれぞれ接続されていることを確認できます
#define RS 2 #define EN 3 #define D4 4 #define D5 5 #define D6 6 #define D7 7
次に、LCDディスプレイのヘッダーファイルをインクルードします。これにより、MSPがLCDと通信する方法に関するコードを含むライブラリが呼び出されます。このライブラリはデフォルトでEnergiaIDEにインストールされるため、わざわざ追加する必要はありません。また、関数Liquid Crystalが、上記で定義したピン名で呼び出されていることを確認してください。
#include
setup() 関数内で、LCD画面に表示される紹介メッセージを表示します。MSP430G2でLCDを使用する方法をすでに学んだので、私はあまり深くは理解していません。
lcd.begin(16、2); // 16 * 2 LCDディスプレイを使用しています lcd.setCursor(0,0); //カーソルを1行1列に 置き ますlcd.print( "MSP430G2553"); //紹介メッセージを表示しますlcd.setCursor(0、1); //カーソルを1列目2行目に設定します lcd.print( "-CircuitDigest"); //紹介メッセージを表示します
最後に、無限 ループ() 関数内で、A7ピンに供給された電圧の読み取りを開始します。すでに説明したように、マイクロコントローラーはデジタルデバイスであり、電圧レベルを直接読み取ることはできません。SAR技術を使用して、電圧レベルは0から1024にマッピングされます。これらの値はADC値と呼ばれ、このADC値を取得するには、次の行を使用するだけです。
int val = analogRead(A7); //ピンA7からADC値を読み取ります
ここでは、関数 analogRead() を使用してピンのアナログ値を読み取ります。ピンP1.7に可変電圧を接続しているため、内部にA7を指定しました。最後に、この値を「 val 」という変数に保存します。この変数に格納されるのは0から1024の範囲の値のみであるため、この変数のタイプは整数です。
次のステップは、ADC値から電圧値を計算することです。これを行うには、次の式があります
電圧=(ADC値/ ADC分解能)*基準電圧
この場合、マイクロコントローラーのADC分解能が1024であることはすでにわかっています。ADC値は前の行にもあり、valという変数が格納されています。基準電圧は、マイクロコントローラが動作している電圧に等しいです。MSP430ボードにUSBケーブルを介して電力が供給されている場合、動作電圧は3.6Vです。ボード上のVccとグランドピンの両端にマルチメータを使用して、動作電圧を測定することもできます。したがって、上記の式は、以下に示すように私たちのケースに適合します
フロート電圧=(float(val)/ 1024)* 3.6; // ADC値を電圧に変換する式
行 float(val) と混同される可能性があります 。 これは、変数「val」をintデータ型から「float」データ型に変換するために使用されます。この変換が必要なのは、floatでval / 1024の結果が得られた場合にのみ、3.6を乗算できるためです。値が整数で受信された場合、常に0になり、結果もゼロになります。 ADCの値と電圧を計算したら、あとはLCD画面に結果を表示するだけです。これは次の行を使用して実行できます。
lcd.setCursor(0、0); //カーソルを列0、行0に設定します lcd.print( "ADC Val:"); lcd.print(val); // ADC値を表示します lcd.setCursor(0、1); //カーソルを列0、行1に設定します lcd.print( "Voltage:"); lcd.print(電圧); //表示電圧
ここでは、最初の行にADCの値を表示し、2番目の行に電圧の値を表示しています。最後に、100ミル秒の遅延を与え、LCD画面をクリアします。これは、値が100ミルごとに更新されることでした。
結果をテストします!
最後に、プログラムをテストして遊んでいるという楽しい部分に行き着きます。回路図のように接続するだけです。小さなブレッドボードを使用して接続し、ジャンパー線を使用してブレッドボードをMSP430に接続しました。接続が完了すると、私のものは以下のようになります。
次に、以下に示すプログラムをEnergiaIDEを介してMSP430ボードにアップロードします。明確な単語が表示されるまでポテンショメータを使用してLCDのコントラストを調整しない場合でも、LCDにイントロテキストが表示されるはずです。また、リセットボタンを押してみてください。期待どおりに動作する場合は、次の画面が表示されるはずです。
ここで電位差計を変更すると、LCDに表示される電圧も変更されるはずです。それを行うために電圧を正しく測定しているかどうかを確認しましょう。マルチメータを使用して、POTの中心と地面の両端の電圧を測定します。マルチメータに表示される電圧は、下の図に示すように、LCDに表示される値に近いはずです。
つまり、MSP430ボードのADCを使用してアナログ電圧を測定する方法を学びました。これで、多くのアナログセンサーをボードに接続して、リアルタイムのパラメーターを読み取ることができます。チュートリアルを理解し、楽しんで学んだことを願っています。問題が発生した場合は、以下のコメントセクションまたはフォーラムからご連絡ください。別の新しいトピックでMSP430の別のチュートリアルに追いつきましょう。