WeMosを使ってみる

LM35DZ(アナログ温度センサー)+MCP3002


WeMosを使ってLM35DZのアナログ温度センサーから温度を読み込んでみます。
WeMosのアナログ入力は最大1Vです。→嘘です 最大3.2Vです。
そこで、以下の様にMCP3002の10-Bit ADCをかませました。
LM35DZの出力には、ノイズを低減するために100マイクロのバイパスコンデンサーを挟んでいます。
最初にキャリブレーションのために、WeMosの3.3Vピンの電圧をテスターで測ります。


次にキャリブレーションが正しいかどうか、以下の回路で確認します。


WeMosのスケッチは以下の通りです。
MCP3002からのデータ読み込みには、こち らのライブラリを使っています。
RefVにはテスターで測った値を指定しています。
/*
 * LM35DZ Temperature sensor using MCP3002
 * https://github.com/mark8018/MCP3002
 *
 * MPC3002     LM35ZD     WeMos
 * VCC               ---- 3.3V
 * CLK               ---- D5(SCK)
 * Dout              ---- D6(MISO)
 * Din               ---- D7(MOSI)
 * CS                ---- D8(CS)
 * CH0    --- OUT
 *            VCC    ---- 3.3V
 *            GND    ---- GND
 */
#include <MCP3002.h>
#include <SPI.h>

#define RefV  3.28

MCP3002 adc(15); // CS=15

int RawValue0 = 0;
float Voltage = 0.0;
float temp_c = 0;  // 摂氏値( ℃ )

void setup() {
  adc.begin();
  Serial.begin(9600);
}

void loop() {
  RawValue0=adc.analogRead(0); // read MCP3002
//  Serial.print(" RawValue0[MCP3002] = ");
//  Serial.print(RawValue0);
  Voltage = (RawValue0 * RefV )/ 1023.0;
  temp_c = Voltage * 100;
  Serial.print(" Voltage[MCP3002] = ");
  Serial.print(Voltage);
  Serial.print(" temp_c[MCP3002] = ");
  Serial.println(temp_c);
  delay(500);
}

IDEのシリアルモニターに、テスターで測った値(今回は3.28V)が表示されれば、キャリブレーションは終了です。


次に回路を一部変更してLM35DZの出力電圧を測ります。

IDEのシリアルモニターに、温度が表示されます。



「高精度温度湿度計 ライフナビD203」と比較すると、1度ほど低めの値となりました。



続く...