ラジオ少年の楽しい電子工作、その他

AVRを使った簡単な回路の実験、そして日々のちょっとした出来事を書きます。

LPS331APを使った気圧計の製作(取りあえず完成)の続き

2013年10月31日 | 日記

LPS331APが出してくるデータをヘキサで直接みてみました。

上記は0xDB01を表示しています。ここから温度を計算すると22.76℃になり現在の部屋の温度を示しています。別の温度計とほぼ同じ値です。

上記はドライヤーの風を当て温度を上げて行きます。0xFFxxを通り過ぎ0x1410になります、ここで風を当てるのを止めると温度が下がって下記の様になります。

ここから更に温度は下がって行き段々0xDB01に近づいていきます。(0x1410-->0xFFxx-->0xEBC8--->0xDB01)

42.5℃のときに0xFFFFになります。42.5℃を超える場合の表示が今のプログラムでは表示が下がっていきます。これはやはり面白くありませんので解決するのが今後の課題です。

 

 

 

コメント (8)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

LPS331APを使った気圧計の製作(取りあえず完成)

2013年10月26日 | 日記

温度表示に思うように行かない部分がありますが、まあー いっか、取りあえず完成と云うことでチョンにします。今回の台風では985hPaでした。

少し時間をあけないと頭の中がループしてしまい出口が見つからない状態です。

 

 

 

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

LPS331APを使った気圧計の製作(10)

2013年10月25日 | 日記

台風の影響でしょうか朝から雨です。気圧も少しずつ下がってきています。

さて、悪戦苦闘のプログラミングですが、まあ、気圧表示はOKとして温度表示、これが意外とてこずってます。何とか現在の室温表示は良さそうです。

Temperature data are expressed as TEMP_OUT_H & TEMP_OUT_L as 2’s complement
numbers.
Temperature output data:

T(degC) = 42.5 + (Temp_OUTH & TEMP_OUT_L)[dec]/480

42.5度を境にTemp_OUTH & TEMP_OUT_Lがマイナスの場合とプラスの場合が出てきます。気圧は大気圧の測定ですからマイナスになることありませんのでいいのですが、温度はマイナスからプラスの変化があります。温度も実際には100度Cになることはありませんがとりあえず計算ルーティンの表示機能は正しくないと面白くありません。

2013/10/25(Fri)

温度表示は意外と大変そう、42.5度を境にどうすればいいいのか?難しい、、、、。今、気圧は988.4hPaじわじわ下がっていますね。私のテンションも下がって来ました。

2013/10/26(Sat) 11:20 AM

温度表示はさっぱり先へ進みません。

LPS331の温度計算式は T(degC) = 42.5 + (Temp_OUTH & TEMP_OUT_L)[dec]/480 となっています。

42.5度を境にマイナス、するかプラスするかで温度を求めます。

温度が42.5度以下の場合は Temp_OUTH & TEMP_OUT_L の値は as 2’s complement で出力され、42.5度以上ではそのままの値が出てきます。

「例」

20度C  Temp_OUTH & TEMP_OUT_L = 0xD5D0 MSBが1でマイナス符号を表しています。ここから実際の値を求める為に2の補数をとり+1します。

0xD5D0=1101 0101 1101 0000 ---> 0010 1010 0010 1111 + 1=0x2A30

0x2A30 = 10800[dec]

T(degC) = 42.5 + (Temp_OUTH & TEMP_OUT_L)[dec]/480 = 42.5 + (-10800/480)=20 ℃ となります。

次に50℃の場合は Temp_OUTH & TEMP_OUT_L = 0x0E10 になっているはずです。MSBは0ですから変換は必要ありません。

0x0E10 = 3600[dec]
T(degC) = 42.5 + (Temp_OUTH & TEMP_OUT_L)[dec]/480 = 42.5 + 3600/480 = 50℃ となります。

えーとっ!MSBが0か1かでマイナスするかプラスするかの計算をして結果を表示すればいいはずですが、おっとどっこい、思惑通りにはプログラムが動きません。記述が適切でないのでしょう。

因みに、LPS331APの温度センサーは0℃~80℃までが正確に測れると仕様に書いてあります。でも実際は気温を測るだけですので42.5℃より上はどうでもいいのですが、、、、、

体温計は42度までしか計れません、人間の体温は42度よりは上がらないとか、それ以上あがると死んでしまいますからね。





コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

LPS331APを使った気圧計の製作(9)

2013年10月24日 | 日記

今朝(2013・10・24)の気圧は1008hPa、台風が近ずくにつれて下がってくると思います。

さて、温度表示ですが未だ出てきません。データシートを見ますと下記の様に書かれています。

 

Temperature data are expressed as TEMP_OUT_H & TEMP_OUT_L as 2’s complement
numbers.
Temperature output data:
T(degC) = 42.5 + (Temp_OUTH & TEMP_OUT_L)[dec]/480

何々?  2’s complement、、、 読み出した値の2の補数をとらないと、、、、プログラムを直さないと温度表示はうまく行きませんね。

 

気圧の場合は下記のように書かれています。

Pressure data are expressed as PRESS_OUT_H & PRESS_OUT_L & PRESS_OUT_XL in 2’s complement. Values exceeding the o perating pressure Range (see Table 3) are clipped.
Pressure output data: Pout(mbar)=(PRESS_OUT_H & PRESS_OUT_L & PRESS_OUT_XL)[dec]/409

 

as 2’s complement と  in 2’s complement. はどう違うのでしょうね? as と in?


コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

LPS331APを使った気圧計の製作(8)

2013年10月22日 | 日記

やっと先が見えて来ました。何とか気圧表示が正常?に出来るようになりました。(多分OKのはず)

データシートに出ている下記の意味が分らず考えていましたが、ヒラメイテ?これを満足させる様にプログラムを直しました。そしたらすんなり表示が出て来ました。

In order to read multiple bytes incrementing the register address, it is necessary to assert
the most significant bit of the sub-address field. In other words, SUB(7) must be equal to 1
while SUB(6-0) represents the address of the first register to be read.

       

左から10数秒おきに撮った表示です。小数第1位が動くだけです。MPL115A2の気圧計の表示は1010~1012Hpaを表示していますのでほぼ合っていると思います。

やれやれ、これで安眠?出来ます。

コメント (5)
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする