ENGLISH page is here.
GET DinopSearchBar
サイト内検索:
HOME
VC++ TIPS
ダウンロード
DinopExifReader
DinopSearchBar
DinopSearchBar mini
DinopTabbingBar
for Firefox
大阪湾の生き物
甲子園浜の自然
甲子園浜の干潟
甲子園浜の水中
甲子園浜の野鳥
近畿の山々
植物図鑑
箕面マップ
水中機材
カメラ
ランキング
望遠鏡の世界
顕微鏡の世界
Googleのすべて
GoogleマップAPI
ニュース
読んだ本
日記
変な料理の作り方
遺伝子操作
論文紹介
デイトレード
自動売買でFX
ネットで小遣い稼ぎ
Solaris
電子工作
その他
問い合わせ
VC++用コード集
大阪湾の生き物
水中用機材
since:2000/11/15
dinopcom@gmail.com
www.dinop.comは
だいのっぷ・どっと・こむ
と読んでください。







« PSoCとLM35で温度を計測する | メイン | PSoC ExpressとS-8100Bで温度を計測する »

PSoCとS-8100Bで温度を計測する




psoc_8100b_01.gif
今回はPSoC Designerと温度センサー「S-8100B」を組み合わせて温度を測る。

「S-8100B」は秋月電子で100円程度で購入できる安価な温度センサーだ。5Vで動作させると、30℃のときに1.508V出力で、温度に応じて-8.0mV/℃変化する。例えば20℃であれば1.508V - 8.0mV/℃×(20℃ - 30℃)=1.588V、-20℃なら1.508V - 8.0mV/℃×(-20℃ - 30℃)=1.908Vが出力される。
逆に出力電圧から温度を求めるには「温度=(1.508V - 出力電圧)÷8+30℃」となる。

psoc_8100b_02.gif
プロジェクトを作成する手順は前回の「PSoCとLM35で温度を計測する」とまったく同じため省略する。

前回と異なるのは最終的なソースコードの一部だけだ。前回は温度センサーからの出力電圧を8倍したが、これは不要なのでコメントアウトする。そしてA/Dコンバーターからの出力値を1.22倍して電圧値に変えたのち、前述の式に当てはめて温度を計算している。ただし8で除算する代わりに10/8(=1.25)を乗算した。


//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include <m8c.h> // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

char* itoa(int nData,char* pszData)
{
int pn2n[] = {10000,1000,100,10,1};
int i;
char* pszTmp;

pszTmp = pszData;
for(i = 0; i < 5; i++)
{
(*pszTmp) = 0;
while(nData >= pn2n[i])
{
nData -= pn2n[i];
(*pszTmp)++;
}
(*pszTmp) += '0';
pszTmp++;
}
pszData[5] = 0;
}

INT iData;
void main()
{
LCD_1_Start(); // Initialize LCD

PGA_1_Start(PGA_1_MEDPOWER);
// PGA_1_SetGain(PGA_1_G8_00);

M8C_EnableGInt; // Enable Global Interrupts
ADCINC12_1_Start(ADCINC12_1_HIGHPOWER); // Apply power to the SC Block
ADCINC12_1_GetSamples(0); // Have ADC run continuously
for(;;){
while(ADCINC12_1_fIsDataAvailable() == 0); // Loop until value ready
ADCINC12_1_ClearFlag(); // Clear ADC flag
iData=ADCINC12_1_iGetData(); // Get ADC result
// Add user code here to use or display result

LCD_1_Position(0,5); // Place LCD cursor at row 0, col 5.

iData += 2048;
iData *= 1.22;
iData = (1508 - iData) * 1.25 + 3000;
{
char pszData[6];

itoa(iData,pszData);
LCD_1_PrString(pszData);
}
}
}





_DSC8999.JPG
これでPSoCへ書き込み動作確認をする。今回もPSoCEvalを利用した。

_DSC9000.JPG
温度センサーの「S-8100B」は写真を見て左側の端子からOUT、GND、VCCとなる。それぞれポート01、GND、VCCに接続する。温度がきちんと計測できない(実際より高く表示される)ようであればOUTとVCCの間に1MΩ程度の抵抗を配置するといい。

_DSC9002.JPG
これで温度が表示された。









Copyright (c) 1999-2007 issei. All rights reserved. (運営者情報