5章:I2Cのアクセス(LPS331使用高精度大気圧センサーモジュール)

    作成2014.08.04

     LPS331使用高精度大気圧センサーモジュールへのI2Cのアクセス検討を行います。

  1. 大気圧センサーモジュール評価回路図
     大気圧センサーモジュール評価回路図を図5-1に示します。


     電源電圧を一定にするため、低損失CMOS三端子レギュレータ 3.3V150mA XC6202P332TBを使用します。
     また、電流計測用として47Ωの抵抗をいれました。(これにより供給電圧は若干低下します。)
     高精度IC温度センサLM61BIZを使用します。
     LPS331使用高精度大気圧センサーモジュール使用します。
     無線マイコンTWE-Lite DIPは子機:連続モードを設定します。
     計測される電流は無線マイコンTWE-Lite DIPと高精度IC温度センサLM61BIZとLPS331使用高精度大気圧センサーモジュールで消費される電流の合計となります。(LEDはOFF)

    品名単価個数小計購入先
    低損失CMOS三端子レギュレータ 3.3V150mA XC6202P332TB 2個入50150秋月電子通商
    高精度IC温度センサLM61BIZ(4個入)50150秋月電子通商
    LPS331使用 高精度大気圧センサーモジュール6501650秋月電子通商


  2. 大気圧センサーモジュール評価回路外観
     大気圧センサーモジュール評価回路外観を以下に示します。



  3. oCoStick(トコスティック)用Windowsアプリの修正
     LPS331使用高精度大気圧センサーモジュール制御機能を追加します。

    (1)記録開始ボタンと記録終了ボタンを追加
    (2)測定結果表示用にラベルLabel_PTを追加します。
    (3)SaveFileDialog1を追加、Filterに「(*.txt)|*.txt」を設定
    (4)timerStateのIntervalに1000を設定


    3.2 Public Class clsDataPresentationAsciiの修正
    (1)Dim _abyInput(1024) As Byte → Public _abyInput(1024) As Byteに変更(他クラスで参照のため)

    3.3 Public Class frmMainグローバル変数
    (1)Declare Function timeGetTime Lib "winmm.dll" Alias "timeGetTime" () As Long 'timeGetTime()使用のため追加
    (2) Dim abyInput(1024) As Byte 'グローバル変数追加
    (3)Public PA As Double 'グローバル変数追加
    (4)Public TA As Double 'グローバル変数追加
    (5) Dim PutLPS331A_F As Boolean
    (6)Dim OutText As String = ""
    (7)Dim gpay As clsDataPayloadIO_0x81 = New clsDataPayloadIO_0x81
    (8)Dim daytime As Date

    3.4Private Sub frmMain_Load
    (1)timerState.Stop() '追加


    3.5 Private Sub updateWithComingData(ByRef sDat As ITweDataPresentation)
    (1)abyInput = DirectCast(sDat, TWE_AppToCoStick.clsDataPresentationAscii)._abyInput 'グローバル変数に値を代入のため追加


    3.6 サブルーチンの追加
    (1)Sub PutLPS331A() 'LPS331使用高精度大気圧センサーモジュール制御
    (2)Private Sub Wait(ByVal waittime As Long) '待ち時間設定ルーチン
    (3)Private Sub Button1_Click ’記録開始ボタン
    (4)Private Sub Button2_Click '記録終了ボタン
    (5)Private Sub timerState_Tick ’ターマー処理
    (6)Sub PutText() ’出力処理

     変更済みプログラムは「40-5.zip」ファイルをダウンロードしてください。
    [40-5.zip]をダウンロードする。

    解凍するとフォルダー内にTWE-ToCoStick_気圧フォルダーがあります。TWE-ToCoStick_気圧フォルダー内に
    TWE-ToCoStickフォルダーとApp_ToCoStick.exeがあります。


  4. 操作画面
     実行結果操作画面を以下に示します。

    *記録開始ボタンを押すと記録を開始し、記録終了でファイル保存されます。


  5. 実行結果ファイル
     実行結果ファイルを以下に示します。
    受信日送信元ID個体識別番号電波強度電源電圧[mV]DI1DI2DI3DI4AD1AD2AD3AD4気圧hPa温度℃
    2014/08/03 15:07:40ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.50636.202
    2014/08/03 15:07:41ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3134[mV]FALSEFALSEFALSEFALSE848655356553565535988.57436.202
    2014/08/03 15:07:42ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 111Volt: 3139[mV]FALSEFALSEFALSEFALSE848655356553565535988.51136.202
    2014/08/03 15:07:43ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 111Volt: 3139[mV]FALSEFALSEFALSEFALSE848655356553565535988.5536.213
    2014/08/03 15:07:44ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 108Volt: 3135[mV]FALSEFALSEFALSEFALSE848655356553565535988.5836.231
    2014/08/03 15:07:45ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 108Volt: 3135[mV]FALSEFALSEFALSEFALSE848655356553565535988.50336.208
    2014/08/03 15:07:47ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.51536.2
    2014/08/03 15:07:48ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3134[mV]FALSEFALSEFALSEFALSE848655356553565535988.57436.221
    2014/08/03 15:07:49ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3134[mV]FALSEFALSEFALSEFALSE848655356553565535988.49836.196
    2014/08/03 15:07:50ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3136[mV]FALSEFALSEFALSEFALSE848655356553565535988.51336.204
    2014/08/03 15:07:51ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3134[mV]FALSEFALSEFALSEFALSE848655356553565535988.35936.175
    2014/08/03 15:07:52ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3134[mV]FALSEFALSEFALSEFALSE848655356553565535988.28336.144
    2014/08/03 15:07:53ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3134[mV]FALSEFALSEFALSEFALSE848655356553565535988.34836.188
    2014/08/03 15:07:54ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3134[mV]FALSEFALSEFALSEFALSE848655356553565535988.32836.185
    2014/08/03 15:07:55ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3144[mV]FALSEFALSEFALSEFALSE848655356553565535988.4336.19
    2014/08/03 15:07:56ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.39836.2
    2014/08/03 15:07:57ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.32236.177
    2014/08/03 15:07:58ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3132[mV]FALSEFALSEFALSEFALSE848655356553565535988.37236.181
    2014/08/03 15:07:59ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3142[mV]FALSEFALSEFALSEFALSE848655356553565535988.37236.181
    2014/08/03 15:08:00ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3147[mV]FALSEFALSEFALSEFALSE848655356553565535988.32436.16
    2014/08/03 15:08:01ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3132[mV]FALSEFALSEFALSEFALSE848655356553565535988.41336.198
    2014/08/03 15:08:03ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.32936.165
    2014/08/03 15:08:04ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3142[mV]FALSEFALSEFALSEFALSE848655356553565535988.28636.146
    2014/08/03 15:08:05ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3142[mV]FALSEFALSEFALSEFALSE848655356553565535988.28636.146
    2014/08/03 15:08:06ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3137[mV]FALSEFALSEFALSEFALSE848655356553565535988.38536.194
    2014/08/03 15:08:07ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3135[mV]FALSEFALSEFALSEFALSE848655356553565535988.32636.181
    2014/08/03 15:08:09ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3147[mV]FALSEFALSEFALSEFALSE848655356553565535988.38536.192
    2014/08/03 15:08:10ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3138[mV]FALSEFALSEFALSEFALSE848655356553565535988.30536.175
    2014/08/03 15:08:11ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3139[mV]FALSEFALSEFALSEFALSE848655356553565535988.2636.16
    2014/08/03 15:08:12ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3132[mV]FALSEFALSEFALSEFALSE848655356553565535988.39736.188
    2014/08/03 15:08:13ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3132[mV]FALSEFALSEFALSEFALSE848655356553565535988.45836.2
    2014/08/03 15:08:14ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.37136.146
    2014/08/03 15:08:15ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 108Volt: 3137[mV]FALSEFALSEFALSEFALSE848655356553565535988.37336.167
    2014/08/03 15:08:17ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3138[mV]FALSEFALSEFALSEFALSE848655356553565535988.37736.171
    2014/08/03 15:08:18ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3137[mV]FALSEFALSEFALSEFALSE848655356553565535988.39336.19
    2014/08/03 15:08:19ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 102Volt: 3132[mV]FALSEFALSEFALSEFALSE848655356553565535988.38936.185
    2014/08/03 15:08:20ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3132[mV]FALSEFALSEFALSEFALSE848655356553565535988.34436.165
    2014/08/03 15:08:21ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.35736.183
    2014/08/03 15:08:22ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.32936.158
    2014/08/03 15:08:23ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.32936.158
    2014/08/03 15:08:24ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3133[mV]FALSEFALSEFALSEFALSE848655356553565535988.31136.15
    2014/08/03 15:08:26ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 111Volt: 3142[mV]FALSEFALSEFALSEFALSE848655356553565535988.45836.196
    2014/08/03 15:08:27ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3149[mV]FALSEFALSEFALSEFALSE848655356553565535988.28636.15
    2014/08/03 15:08:28ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3149[mV]FALSEFALSEFALSEFALSE848655356553565535988.26436.14
    2014/08/03 15:08:29ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3141[mV]FALSEFALSEFALSEFALSE856655356553565535988.26436.14
    2014/08/03 15:08:32ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 108Volt: 3141[mV]FALSEFALSEFALSEFALSE856655356553565535988.34436.179
    2014/08/03 15:08:33ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3139[mV]FALSEFALSEFALSEFALSE848655356553565535988.38336.183
    2014/08/03 15:08:34ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3137[mV]FALSEFALSEFALSEFALSE848655356553565535988.50736.208
    2014/08/03 15:08:35ID: 120(0x78)Addr: 0x810040BDLQI(0-255): 105Volt: 3132[mV]FALSEFALSEFALSEFALSE848655356553565535988.36336.179


  6. 消費電流の評価
     消費電流の評価結果を図5-4に示します。

    図5-4から
    (1)電流はほぼ一定で時々減少する。
    (2)最大電流1.968mA
    (3)平均電流1.335mA
    等であることが確認できます。

    5.乾電池の寿命予測
    (1)単三アルカリ乾電池の 放電容量2000mAH
    (2)初期電圧は1.5Vで放電終止電圧は0.9V
    (3)単三アルカリ乾電池を4個使用した場合、初期電圧は6Vで放電終止電圧は3.6V
    (4)従って電池寿命は
      電池寿命=2000/1.335=1498(h)=62(日)
    となり、間欠1sの290日の約1/5となります。


  7. 結果の検討
    (1)LPS331使用高精度大気圧センサーモジュールへのI2Cのアクセス検討は結構苦労しました。
    (2)ハード回路が完全でI2Cコマンドが完全でないと正常な応答がえられません。
    (3)I2Cコマンドのサムチュックが正確でないと正常な応答がえられません。
    (4)ハード回路が完全でI2Cコマンドが完全でも通信が失敗する場合があります。
    (5)正常な応答が無い場合があるので、応答待ちのループには時間制限を設定する必要があります。
    (6)応答が正常でもデータに異常がある場合があります。データ異常を判断して、再送信が必要となります。
    (7)再送信を繰り返した場合、タイマー周期の関係で時間切れとなる場合があります。
    (8)連続で1s周期I2C通信を行った場合、、単三アルカリ乾電池を4個使用の電池寿命=2000/1.335=1498(h)=62(日)となる。
    (9)欠点としては、測定データの保存はWindowsパソコンで行うため、Windowsパソコンは連続運転が必要となる。(家庭では難しい!!)


  8. 捕捉説明
    (1)LPS331使用高精度大気圧センサーモジュールは防水処理をして、水圧測定実験に使用したものを使用しました。
    (2)結果的には感圧部に水がはいると、圧力測定値の異常が発生して正常な測定はできませんでした。
    (3)感圧部に水がはいっても乾燥させると正常な動作に復帰します。
    (4)このセンサーの気圧値は標準値より約10hPa低い値を表示します。




6章:I2Cのアクセス(温湿度センサモジュールAM2321)に行く。

トップページに戻る。