多くのDS18B20の温度値

2018年2月9日 - 未分類

DS18B20は、1-Wireで手軽に温度が測定できるICです。1つの1-Wire Busに、最大で8つほど使えるみたいです。RaspberryPi Zero WHにDS18B20を6つ付けて、温度値を見てみました。

28-0000086d54aa 14.375
28-0000086d3b0c 15.937
28-0000086d3ef8 17.187
28-0000086d4989 16.437
28-0000086e982a 15.0
28-0000086e46c7 14.812

結構なばらつきがあります。1ヶ所にまとめて付けているので、全部、同じ温度値になるはずですが、最小と最大で3℃近い差がありますね。DS18B20の個体差でしょうか。

誤差修正が必要ですね。

誤差修正をしてみました。

28-0000086d54aa 12.5711428571
28-0000086d3b0c 12.7591428571
28-0000086ea014 12.5711428571
28-0000086d3ef8 12.7581428571
28-0000086d4989 12.6341428571
28-0000086e982a 12.6331428571
28-0000086e46c7 12.7591428571

ずいぶん、ましになりました。

DS18B20は8つ付けてありますが、センサー値が読み出せるのは7つまでで、1つは、127.937度というおかしな値が入っていました。

ESP32で試した所、DS18B20が8つでも正しく読めました。ESP32なら、1-Wire Busを複数持てるので、たくさんのDS18B20が読み込めますね。

ESP32で1-WireとWiFiを一緒に使う場合には、

for(int i=0;i<numberOfDevices;i++){
portDISABLE_INTERRUPTS();
temp[i]=sensors.getTempCByIndex(i);
portENABLE_INTERRUPTS();
}

としないと、正しい値が読み出せません。ここに情報がありました。

Translate »