mbedで温度計、だが温度が低い!?

そろそろ夏も終わり気温も下がってきたのだが、温度計が欲しかったのでmbedで作ってみようと思った。

温度センサーはLM61BIZという秋月で安く売っているセンサー。

mbedのAnalogInの定義によって、floatの値がかえってくる。値は10bitsのADCなので、測定電圧/電源電圧(3.3V)を10bitsで0.0~1.0で表している。つまり、AnalogInの値*3300/1024でセンサーの実際の値がわかる。(今回電源電圧は3.35Vだったので3350を使用)

センサーの値から温度を求めるには、

温度=(測定電圧(V)-0.6(V))*100(℃)

で良いはずであるが、なぜか家にある他の温度計より2℃程度低い。実際体感温度からもこのセンサーは低く表示しているのでは、と思ってしまう。

ようわからん。

lm61

以下が実際のコード。

#include “mbed.h”
#include “TextLCD.h”TextLCD g_lcd(dp25, dp26, dp1, dp2, dp4, dp6);  // RS, E, DB4, DB5, DB6, DB7

AnalogIn temp_in(dp13);

int main() {
float r_temp, temp;

wait(0.1);
g_lcd.cls(); wait(0.1);
g_lcd.locate(0, 0);
g_lcd.printf( “Temperature=”);

while(1) {
temp = temp_in;
r_temp = (temp*3350/1024-0.6)*100 ;
g_lcd.locate(0, 1);
g_lcd.printf( “%10f”, r_temp );
wait(1.0);
}
}

s-p1040038

ところで、LCDのピンは2列なのでブレッドボードに直接ささらないので、アダプタを作ってみた。

s-p1040037 s-p1040040

大したものではないが、LCDを取り扱いやすくなった。

以下は覚書

mbedはプログラムの書き込みはISPモードになるのが必要で、RESETとISPエントリーピンを起動時にLOWにしておき、先にRESETをHIGHにすれば、ISPモードになる。

しなぷすさんのツールLPCISPは、このあたりを自動でやってくれているようで、FT232RLを接続したままではUSBに電源が入っても書き込んだプログラムが有効にならない(ユーザモードにならない)。

書き込んで動作確認したあとは、ISPエントリピンは、電源起動時にHIGHにしておく必要がありそうだ。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする