赤外線温度センサー MLX90614 をSTM8S103F ボードで動かして見ました
以前、STM8S103F3ボードでOLEDで動かしたものをYoutubeにアップしたら、
こちらで用意したI2Cの関数では赤外線温度センサーMLX90614が動かせないとの
指摘が有ったので、購入して調べて見ました。結果としては、このデバイスは
ノーマルの速度しか対応してなく、しかも、プロトコルが書き込みコマンドの後に
ストップコンディションを入れないリピート・スタート・コンディションの方式に
よるもので速度を落としてこのプロトコルに対応できる様にしたら動く様に
なりました。以下がその状況です。
<MLX90614 赤外線温度センサの概要>
リピート・ストップ・コンディション方式のI2Cによる通信を利用する赤外線
温度センサをSTM8Sのボードで動作させて見ました。温度表示用のデバイスに
関しては通常のI2Cによる通信を利用するOLEDを用い、方式の異なるI2Cの
通信方式を組み合わせて利用する方式を検討しました。
[MLX90614]
1.非接触型赤外線温度センサ
2.温度測定範囲
周囲温度計測 : -40 to +85°C
対物赤外線計測 : -70 to +380°C
3.SMBusコンパチブルインターフェイス
(リピートスタートコンディションI2C)
PWM出力機能有り
4.電源電圧 MLX90614 Bxx : 3V
(MLX90614 Axx は5V)
[OLED]
1.画素数 128x64ドットの有機LEDディスプレイ
2.発光色は白色・青色・黄色/青色等が有り
3.インターフェイスは通常のI2C(SPIの製品も有り)
4.ドライバIC
0.96インチは SSD1306
1.3インチはSSH1106
[動作状況]
<関連資料>
MLX90614のデータシートはこちらのものを参考にしました。
URL : http://strawberry-linux.com/pub/SEN-09570-datasheet-3901090614M005.pdf
MLX90614駆動用のライブラリはこちらのArduino用のものを利用しました。
URL : https://github.com/adafruit/Adafruit-MLX90614-Library
OLEDに関しては以前作成したこちらの記事を参考にしました。
<テスト内容>
温度センサーとOLEDを組み合わせて次の様な動作をさせる事を目標と
しました。
1.デバイス毎に異なるI2Cの通信方式に対応できるプログラムに修正する
2.I2Cの通信方式の異なる2つのデバイスを交互にアクセスする
3.その状態で、温度センサーの情報をOLEDに表示できる様にする
結果としては、ArduinoのI2C用のものと同じ働きをする関数を用意する事で
対応できる様になりました。その他のものもArduino用のものと同じ働きを
するものを用意して、Arduinoのライブラリがほぼそのまま利用できる様に
なりました。ただし、メモリの消費はこのArduinoと同じ働きをするものを
用意する為に多少多くなりました。
[機器の接続]
[コード類]
コードの開発にはIARのシステムを利用しました。
(STM8S103F3P6ボードののコード開発に 関してはこちらの記事を
参照して下さい。)
Code download URL : https://www.dropbox.com/s/idbjzyoeknybuvu/IAR_STM8S103F3_pseude_Arduino_0114.zip?dl=0
こちらで用意したI2Cの関数では赤外線温度センサーMLX90614が動かせないとの
指摘が有ったので、購入して調べて見ました。結果としては、このデバイスは
ノーマルの速度しか対応してなく、しかも、プロトコルが書き込みコマンドの後に
ストップコンディションを入れないリピート・スタート・コンディションの方式に
よるもので速度を落としてこのプロトコルに対応できる様にしたら動く様に
なりました。以下がその状況です。
<MLX90614 赤外線温度センサの概要>
リピート・ストップ・コンディション方式のI2Cによる通信を利用する赤外線
温度センサをSTM8Sのボードで動作させて見ました。温度表示用のデバイスに
関しては通常のI2Cによる通信を利用するOLEDを用い、方式の異なるI2Cの
通信方式を組み合わせて利用する方式を検討しました。
[MLX90614]
1.非接触型赤外線温度センサ
2.温度測定範囲
周囲温度計測 : -40 to +85°C
対物赤外線計測 : -70 to +380°C
3.SMBusコンパチブルインターフェイス
(リピートスタートコンディションI2C)
PWM出力機能有り
4.電源電圧 MLX90614 Bxx : 3V
(MLX90614 Axx は5V)
[OLED]
1.画素数 128x64ドットの有機LEDディスプレイ
2.発光色は白色・青色・黄色/青色等が有り
3.インターフェイスは通常のI2C(SPIの製品も有り)
4.ドライバIC
0.96インチは SSD1306
1.3インチはSSH1106
[動作状況]
<関連資料>
MLX90614のデータシートはこちらのものを参考にしました。
URL : http://strawberry-linux.com/pub/SEN-09570-datasheet-3901090614M005.pdf
MLX90614駆動用のライブラリはこちらのArduino用のものを利用しました。
URL : https://github.com/adafruit/Adafruit-MLX90614-Library
OLEDに関しては以前作成したこちらの記事を参考にしました。
<テスト内容>
温度センサーとOLEDを組み合わせて次の様な動作をさせる事を目標と
しました。
1.デバイス毎に異なるI2Cの通信方式に対応できるプログラムに修正する
2.I2Cの通信方式の異なる2つのデバイスを交互にアクセスする
3.その状態で、温度センサーの情報をOLEDに表示できる様にする
結果としては、ArduinoのI2C用のものと同じ働きをする関数を用意する事で
対応できる様になりました。その他のものもArduino用のものと同じ働きを
するものを用意して、Arduinoのライブラリがほぼそのまま利用できる様に
なりました。ただし、メモリの消費はこのArduinoと同じ働きをするものを
用意する為に多少多くなりました。
[機器の接続]
[コード類]
コードの開発にはIARのシステムを利用しました。
(STM8S103F3P6ボードののコード開発に 関してはこちらの記事を
参照して下さい。)
Code download URL : https://www.dropbox.com/s/idbjzyoeknybuvu/IAR_STM8S103F3_pseude_Arduino_0114.zip?dl=0