赤外線温度センサーで非接触温度計を試作

赤外線温度センサーが安くなってきたので、MLX90615 を AliExpress から購入(送料込みで756円)して、非接触温度計を試作してみました。

コントローラには Arduino nano 互換機(300円くらい)、LCDディスプレイは一般的な HD44780 1602 LCD ディスプレイモジュール(I2Cシリアルインターフェースと併せて300円ちょっと)を流用しました。

Arduino nano との接続

LCDディスプレイは LiquidCrystal_I2C.h のライブラリーを利用しますので、配線はLCDディスプレイのSDAを A4、SCLをA5に接続、(GND, VCCはそれぞれに)しますが、どちらも10KΩ でVCCにプルアップします。

温度センサーは Digital_Infrared_Temperature_Sensor_MLX90615 のライブラリーを利用しますので、配線は標準の SDA を D3 、SCL を D2 に接続します。(GND, VCCもそれぞれ)

プログラムのソース

#include "MLX90615.h"
#include <I2cMaster.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define printIIC(args) Wire.write(args) 
inline size_t LiquidCrystal_I2C::write(uint8_t value) {
send(value, Rs);
return 1;
}

#define SDA_PIN 3   //define the SDA pin
#define SCL_PIN 2   //define the SCL pin

SoftI2cMaster i2c(SDA_PIN, SCL_PIN);
MLX90615 mlx90615(DEVICE_ADDR, &i2c);

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
  Serial.begin(9600);
  Serial.println("Setup...");
  lcd.init();
  lcd.backlight();

  //mlx90615.writeEEPROM(Default_Emissivity); //write data into EEPROM when you need to adjust emissivity.
  //mlx90615.readEEPROM(); //read EEPROM data to check whether it's a default one.
}

void loop()
{
  Serial.print("Object temperature: ");
  Serial.println(mlx90615.getTemperature(MLX90615_OBJECT_TEMPERATURE));
  Serial.print("Ambient temperature: ");
  Serial.println(mlx90615.getTemperature(MLX90615_AMBIENT_TEMPERATURE));

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("\xc0\xb2\xbc\xae\xb3");  //「タイショウ」
  lcd.print(": ");
  lcd.print(mlx90615.getTemperature(MLX90615_OBJECT_TEMPERATURE));
  lcd.print("\xdf");   // 上付きの○
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("\xbc\xad\xb3\xb2"); // 「シュウイ」
  lcd.print(": ");
  lcd.print(mlx90615.getTemperature(MLX90615_AMBIENT_TEMPERATURE));
  lcd.print("\xdf");   // 上付きの○
  lcd.print("C");

  delay(2000);
}
カテゴリー: 未分類 パーマリンク