抵抗を買ってきたので、HH10Dを動作させてみる。
こちらのサイトに大変お世話になりました。
TMP102の時のようにI2Cで値を取得、計算してポン!という代物ではなかった。
他の湿度計よりお安い分、手間がかかる感じですかね。
参考にさせていただいたサイトでも7回に分けて説明されてました。
ここデータシートの3ページ目にある以下の式を使います。
RH(%) = (offset - Soh) * sens / 2^12
I2Cから、offsetとsensの値を取得、FOUTの周波数を測定してSohを算出という形です。
FOUTからの値は、周波数カウンターライブラリを使用して取得。このライブラリは5番ピンを使うので、FOUTをそこに繋ぐ。
スケッチですが、最初こちらを参考にして動作させてみたところ、値が4000%RHとかになってしまいました。再度、じっくり内容を読んでみる。参考元で使用しているArudinoがProで、システムクロックが8MHzとUNOの半分なためFreqCounter::start()の値が500になってました。
この値を1000にしたところ、それっぽい値になりました。(例のごとくエアコンで湿度を確認)
こちらのスケッチはFreqCounter::start()の値が1000でしたので、正解のようです。
1点だけまだはっきりわかってないことがあって、FreqCounter::f_compの値。これUNOだといくつがいいのだろうか。
最後にメモ。今回使用している周波数カウンターライブラリですが、他に使用できるPMWが11と3だけになるそうです。(10, 9, 6は使えなくなる)
詳しくはここを参照。
こちらのサイトに大変お世話になりました。
TMP102の時のようにI2Cで値を取得、計算してポン!という代物ではなかった。
他の湿度計よりお安い分、手間がかかる感じですかね。
参考にさせていただいたサイトでも7回に分けて説明されてました。
ここデータシートの3ページ目にある以下の式を使います。
RH(%) = (offset - Soh) * sens / 2^12
I2Cから、offsetとsensの値を取得、FOUTの周波数を測定してSohを算出という形です。
FOUTからの値は、周波数カウンターライブラリを使用して取得。このライブラリは5番ピンを使うので、FOUTをそこに繋ぐ。
スケッチですが、最初こちらを参考にして動作させてみたところ、値が4000%RHとかになってしまいました。再度、じっくり内容を読んでみる。参考元で使用しているArudinoがProで、システムクロックが8MHzとUNOの半分なためFreqCounter::start()の値が500になってました。
この値を1000にしたところ、それっぽい値になりました。(例のごとくエアコンで湿度を確認)
こちらのスケッチはFreqCounter::start()の値が1000でしたので、正解のようです。
1点だけまだはっきりわかってないことがあって、FreqCounter::f_compの値。これUNOだといくつがいいのだろうか。
最後にメモ。今回使用している周波数カウンターライブラリですが、他に使用できるPMWが11と3だけになるそうです。(10, 9, 6は使えなくなる)
詳しくはここを参照。