我楽多三昧の備忘録

気温計、気圧計の試作

title

トランジスタ技術2014年2月号の付録、32ビットARMマイコン「LPC810」(8ピンDIP)と実験用基板を利用する練習として温度計、大気圧計を試作します。
この実験基板ではLPC810をI2Cマスターにして5つのI2Cデバイスを動かすことができます。

計測した温度、気圧データはI2C接続の液晶モジュールで表示させます。
他のサンプルのEEPROMとAD/DA変換モジュールは使いません。
デモプログラムも提供(トラ技付録CD)されているので、簡単に試してみることができます。
実装部品は別売のため部品キットをマルツパーツ館で購入しました。

試作に必要なもの

・実験基板:トラ技付録
・ARMマイコン LPC810:トラ技付録、又は購入します
・実装部品一式(表1):マルツパーツ館で部品キットが購入できます。
・ARMマイコン用ライタ:LPC-Link2又はトラ技ARMライタ(トラ技2014年3月付録)
などを使用します・・・私はトラ技ARMライタを使用しました。
・開発用ツール:LPCXpresso ・・・NXPのWEBサイトからダウンロードします。
・プログラム:
1)LPC810-DEMO.zip・・トラ技2014年2月付録CDに収録してあります。
2)NXP_LPC8xx_SampleCodeBundle.zip・・・LPCXpresso標準サンプル(LPCXpressoインストール時、同時にインストールされます。)

表1 パーツリスト
型名 回路番号 内容 数量
LPC810 U1 32ビットマイコン(NXP) 1
MADT741 U2 温度センサーモジュール(搭載ICはADT7410) 1
MLPS331 U3 大気圧センサーモジュール(搭載ICはLPS331)
24LC64 U4 EEPROM(今回使用しない)
PCF8591 U5 AD/DA変換(今回使用しない)
AQM0802 LCD1 8x2液晶
FSR-41085-09 P0 Lピンソケット(9ピン)
FSR-410256-09 P1 Lピンヘッダー(9ピン)ARMライタ接続用
LLED-B301 LED1 青色LED、3mm
100Ω R1 1/4Wカーボン被膜
470Ω R4   1
10kΩ R2,R3   2
RPER11H105K3K1C01B C1,C2 積層セラミックコンデンサ 1μF/50V
TVDP01-100-6MM-R SW1 タクトSW

    *その他ICソケット、8ピンDIP、16ピンDIPを使用しました。

実験基板を使用した温度、大気圧計の回路図 (引用:トランジスタ技術 2014年2月号より)

温度センサーモジュール(MADT7410)

センサーICは、アナログデバイス社のADT7410が搭載されています。
センサーの特別な補正や校正の必要はなく使用できます。
測定範囲:-55~150℃
温度精度:±0.5℃
温度分解能:13Bit/16Bit選択可能
 初期は13Bitにされていて、16Bitに変更するには設定レジスター(0x03)により設定
センサー出力は、ΣーΔ変調により自動的にデジタライズされます。
ADT7410は13個のレジスター(各1バイト)があり、これらレジスターを読み書きすることにより
各種設定やデータ読み取りができます。

ADT7410のレジスター
レジスター名 タイプ アドレス 初期値 内容
TEMP_MSB R 0x00 0x00 温度データH
TEMP_LSB R 0x01 0x00 温度データL
STATUS R 0x02 ox00 状態
CONFIGRATION R/W 0x03 0x00 設定
THIGH_MSB R/W 0x04 0x20(64℃) 高温度閾値H
THIGH_LSB R/W 0x05 0x00(64℃) 高温度閾値L
TLOW_MSB R/W 0x06 0x05(10℃) 低温度閾値H
TLOW_LSB R/W 0x07 0x00(10℃) 低温度閾値L
TCRIT_MSB R/W 0x08 0x49(147℃) 危険温度閾値H
TCRIT_LSB R/W 0x09 0x80(147℃) 危険温度閾値L
THYST R/W 0x0A 0x05(5℃) ヒステリシス温度設定
ID R 0x0B 0xCX ID
RESET R 0x2F 0xXX ソフトウェアリセット


温度計測:
ノーマルモードでは、自動変換シーケンスが実行され、自動変換には240msを要し、連続的に変換されます。
各々の変換結果は温度値レジスターに保存され、I2Cインターフェースを通じて利用可能になります。
・16Bit温度データフォーマット
  +温度=ADC値÷128
  -温度=(ADC値ー65,536)÷128
・13Bit温度データフォーマット
  +温度=ADC値÷16
  ー温度=(ADC値ー8,192)÷16

I2Cスレーブアドレス:0x90
データシート
ユーザーズマニュアル

大気圧センサーモジュール(MLPS331)

STマイクロエレクトロニクス社のLPS331が搭載されています。
測定範囲:260~1260hPa
制度:±2hPa
分解能:24Bit
大気圧計算:24Bit値を4096で割った値(hPa)
I2Cスレーブアドレス:0xB8  (SPI接続も選択可)
データシート
マニュアル

基板の組み立て

部品は表面実装部品はなく、すべて挿入部品です。
センサーICはSOIC狭タイプのICですが、扱いにくいため8ピンDIPタイプへの変換P板に載ったモジュールに加工されています。
半田付けするのはICソケット、液晶モジュール、タクトSW、USBコネクタ、ピンヘッダーとC,Rくらいで、30分もあれば半田付け完了します。
写真は、親基板とセンサーモジュール、大気圧センサーモジュール(左下)、温度センサーモジュール(右下)です。
基板右下部の8ピンソケットにそれぞれ挿入すれば完成です。

ソフトウェアの書き込みツール

書き込みツールは「トラ技ARMライタ」を使用します。
2014年3月号付録の基板に部品(マルツパーツ館でキットを購入)を取り付け、USB-JTAG変換ファームウェアをインストールします。
これで、「トラ技ARMライター」はARMデバッガー(CMSIS-DAPアダプタ)になります。
気温、大気圧実験基板とは、LPC-LINK2端子で接続します。

開発環境は、下記URLからダウンロードした「LPCXPressoIDE」をパソコンにインストールし、USBでトラ技ARMライタに接続します。
(http://lpcware.com/lpcxpresso/downloads/windows)
ソフトウェアは付属CD-ROMに収録されているサンプルファイルを使用します。

コンパイル

1.「LPCXPressoIDE」に次の2つのファイルをプロジェクトにインポートします
・LPC810-DEMO.zip
  これは実験基板を動かすプログラムです。
  温度、大気圧測定に関係ないコードも記載されていますので、少し修正します。
・NXP_LPC8xx_SampleCodeBundle.zip
  これは「LPCXPressoIDE」の標準サンプルプログラムで、lpc800_driver_libを使用するために必要です。
  「LPCXPressoIDE」がインストールされているディレクトリーの下層にあります。
  (インストールディレクトリー¥lpcxpresso\Example\NXP\LPC800)

2.lpc800_driver_libプロジェクトをビルドします。
  lpc800_driver_lib.aが生成されます。

3.LPC810-DEMOプロジェクトをビルドします。
  気温、大気圧測定基板として動かすために不要なコードは削除(コメントアウト)します。
  メイン関数を開き、
   //#define EEPROM
   //#define ADC
   #define TEMP
   #define BAR
  とEEPROMとADCの定義を無効にし、再度ビルトします。

参考:main.c

4.クイックスタートパネルからDebug'LPC_DEMO'をクリックしてデバッグします。
  これで気温、大気圧測定基板のLPC810に測定プログラムが書き込まれます。

動作確認

「LPCXPressoIDE」を終了し、一旦、USB接続を外し、再度接続し、「RESETボタン」を押すと、
1秒ごとに計測を開始し、LEDが点滅し、LCDの上段に気温(℃)、下段に大気圧(Pa)が表示されます。


Top