LPCXpresso: 簡易電圧ロガー

今回は、LPCXpressoを使用して簡易電圧ロガーを構成する例をご紹介したいと思います。簡易電圧ロガーでは、今まで本サイトで取り上げてきた幾つかの内容を利用して構成していきます。

簡易電圧ロガーの仕様

まず最初に簡易電圧ロガーの仕様を簡単にまとめておきます。
(a)ADC0とADC1で電圧測定を行う
(b)測定間隔は、Systick Timerを利用したディレイで約1秒とする
(c)測定値は、UARTでパソコンへ送信する
(d)送信文字列は、sprintfを利用して文字配列に格納する。
(e)ADCのコードか電圧値のどちらかを選択して送信可能

使用する要素技術

各要素技術については、過去の記事で取り上げていますので、各々参照して下さい。

(a)ADC0とADC1で電圧測定を行う
→ADCの使い方

(b)測定間隔は、Systick Timerを利用したディレイで約1秒とする
→SysTickタイマーを利用したdelay

(c)測定値は、UARTでパソコンへ送信する
→UART通信

(d)送信文字列は、sprintfを利用して文字配列に格納する。
→sprintfの使い方

ドライバとソースファイル構成

プロジェクトには、以下のドライバやソースファイルを使用します。
lpc_adc_2

以下のファイルは、サンプルプログラムに付属しているものを、そのまま使用します。サンプルプログラムをインポートしていない場合は、「サンプルプログラムのインポート」を参照してプログラムをインポートして下さい
adc.c/h
type.h

次の2つのファイルは、過去記事で取り上げたものを使用します。
timer_systick.c/h
uart_small.c/h

それぞれ
→SysTickタイマーを利用したdelay
→UART通信
を参照して下さい。

以下のものは、プロジェクト作成時に自動生成されるものを使用します。
cr_startup_lpc11xx/c
crp.c
system_LPC11xx/h

driver_config.hは、以下のものを記述しておきます。

main.cについては、次節で詳しく説明していきます。以上で必要なファイルの準備が整いました。

メイン・プログラム

簡易電圧ロガーのメイン・プログラムは以下の通りです。

順にメインプログラムの内容を追っていきます。

18行目から
必要なファイルをインクルードします。

26行目から
必要な宣言を行います。OUTPUT_CODEでUART出力フォーマットを設定します。
OUTPUT_CODE=0:ADCのコードをそのまま出力
OUTPUT_CODE=1:ADCのコードを電圧値に変換し出力

36行目から
各種の初期化を行います

40行目から
必要な変数を宣言します

46行目から
格納用の文字配列を宣言します。

55行目から
ADC0とADC1で電圧測定を行います。

66行目から
ADCコンバータのコードを電圧値に変換します。

70行目から
出力フォーマットに従って、文字列配列に値を格納します。ここで、sprintfを使用します。

79行目から
UARTへ文字列を送信します。

92行目から
Systic Timerを利用したDelayで、測定間隔を約1秒にします。

簡易電圧ロガーの実行

LPCXpressoのTXDとRXDをUSBシリアル変換ボードなどでパソコンへ接続すれば、簡易電圧ロガーの動作を確認できます。
TXDとRXDの接続については、記事「RS232規格」を参照して下さい。なお、LPCXpressoのTXD、RXDは3.3Vレベルなので注意しましょう。

UART通信には、記事「シリアル通信に使用できるターミナルソフト Tera Term」で紹介した、Tera Termなどの通信ソフトを使用します。

lpc_adc_1

上記の例では、電圧値に変換したものを表示させています。

まとめ

以上、LPCXpressoを利用した簡易電圧ロガーについて説明してきました。3.3Vより高い電圧を測定したい場合は、ADC端子に直接入力せず抵抗分圧する等、状況に応じてカスタマイズすれば、様々な用途で使用できる筈です。

→その他のLPCXpresso関連情報

Sponsored Link