トランジスタ技術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インストール時、同時にインストールされます。)
型名 | 回路番号 | 内容 | 数量 |
---|---|---|---|
LPC810 | U1 | 32ビットマイコン(NXP) | 1 |
MADT741 | U2 | 温度センサーモジュール(搭載ICはADT7410) | 1 |
MLPS331 | U3 | 大気圧センサーモジュール(搭載ICはLPS331) | 1 |
24LC64 | U4 | EEPROM(今回使用しない) | 1 |
PCF8591 | U5 | AD/DA変換(今回使用しない) | 1 |
AQM0802 | LCD1 | 8x2液晶 | 1 |
FSR-41085-09 | P0 | Lピンソケット(9ピン) | 1 |
FSR-410256-09 | P1 | Lピンヘッダー(9ピン)ARMライタ接続用 | 1 |
LLED-B301 | LED1 | 青色LED、3mm | 1 |
100Ω | R1 | 1/4Wカーボン被膜 | 1 |
470Ω | R4 | 1 | |
10kΩ | R2,R3 | 2 | |
RPER11H105K3K1C01B | C1,C2 | 積層セラミックコンデンサ 1μF/50V | 2 |
TVDP01-100-6MM-R | SW1 | タクトSW | 1 |
*その他ICソケット、8ピンDIP、16ピンDIPを使用しました。
実験基板を使用した温度、大気圧計の回路図 (引用:トランジスタ技術 2014年2月号より)
センサーICは、アナログデバイス社のADT7410が搭載されています。
センサーの特別な補正や校正の必要はなく使用できます。
測定範囲:-55~150℃
温度精度:±0.5℃
温度分解能:13Bit/16Bit選択可能
初期は13Bitにされていて、16Bitに変更するには設定レジスター(0x03)により設定
センサー出力は、ΣーΔ変調により自動的にデジタライズされます。
ADT7410は13個のレジスター(各1バイト)があり、これらレジスターを読み書きすることにより
各種設定やデータ読み取りができます。
レジスター名 | タイプ | アドレス | 初期値 | 内容 |
---|---|---|---|---|
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
データシート
ユーザーズマニュアル
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の定義を無効にし、再度ビルトします。
4.クイックスタートパネルからDebug'LPC_DEMO'をクリックしてデバッグします。
これで気温、大気圧測定基板のLPC810に測定プログラムが書き込まれます。
「LPCXPressoIDE」を終了し、一旦、USB接続を外し、再度接続し、「RESETボタン」を押すと、
1秒ごとに計測を開始し、LEDが点滅し、LCDの上段に気温(℃)、下段に大気圧(Pa)が表示されます。