以前、I2C出力のHDC1000を使って温度湿度を測定する実験をしてみたが、形状が素子の温度測定には使いにくそうなので(貼りつけられなさそう)、部品箱で眠っていたサーミスタの103ATが使えるかどうか実験してみた。
要件としては
1.素子に貼りつけて、素子の温度を測定できる
2.素子が高温になる場合もあるので100℃ぐらいまでは測定できる
3.1秒ごと程度にサンプリングしてロギングできる
4.手持ちの部品を使ってなるべくお金をかけない
PSoC 4 Pioneer Kit
高機能テスタだと熱電対というセンサーを使って、PCにもロギングできるようだ。(OWON DMM B35など)。
いずれは買うかもしれないとして、なるべくお金をかけないように手持ちの部品で考えてみた。
ロギングで一番楽なのはPCとUART通信すること。UARTでCSV形式のデータを出力できれば、CPLT(http://www.datatecno.co.jp/cplt/cplt-download.htm)を使ってロギングやグラフ化が簡単にできる。
Arduinoがいちばん使い慣れてるが、UART通信しようと思うとArduinoをまるまる使わないといけない。aitendoのあちゃんでいいのは安いけどUART通信には別途それ用の回路が必要。
PSoC 4 Prototyping KitだとUARTも使えるし値段も安いのでPSoC 4を使ってみることにした。
が、Prototyping Kitは何かと実験しにくいのでまずはPioneer Kitでテストしてみた。
TopDesign
PSoCにはThermistorCalcというコンポーネントがあってサーミスタの抵抗値->温度を変換してくれるので使ってみた。ソースをチラ見するとSteinhart-Hart式の定数を生成して計算してくれるマクロのようだ。
Thermitor CalculatorのDATASHEETを見ると、抵抗値によってインスタンスを分割したほうがいいようなことが書いてあるのでlow、mid、highの3つに分けてみた。
D_1のZennerで2.5Vの定電圧源とし(ツェナーは正確な電圧を出力できないので、実際は基準電圧を作るのにTL431を使った)、Opamp_1のボルテージフォロワーで基準電圧の出力を増強。
R_2のサーミスタとR_refで分圧してそれぞれの電位差を差動モードのADCに読み込ませた。
ThermistorCalcのGetResitance()はこういう分圧と測定の仕方で電圧値を与えてサーミスタの抵抗値を算出しているようだ。
配線図
Github:
https://github.com/ryood/PSoC_4_Thermistor
0 件のコメント:
コメントを投稿