[第5 章]

温度センサ IC LM35 を使った
氷点下も測定できる温度計の製作

温度センサ IC LM35（ナショナル セミコンダクター）は，摂氏（セルシウス）温度がそのまま電圧出力されるというデバイスです．1 ℃当たり 10mV の電圧を出力するので，例えば 253mV の出力電圧であれば25.3 ℃ということになります．電源電圧を与えればすぐに使えるという手軽さと，容易な入手性から，温度測定用の IC として定番のように使われています．
一般的には，LM35 をそのまま 0V と＋ 5V につないでプラス側（0 ℃以上）のみにするアプリケーションが多いようですが，ここでは PSoC のピンから出力した AGND 電圧を LM35 の GND 電圧にすることで，マイナス側（0 ℃以下，氷点下）まで測定できるようにしてみました．LM35 を使った温度計を写真 5-1に示します．
LM35 をワンチップ・マイコンにつないだ例はいろいろなところで目にしますが，常温で使うことを前提としているためか，氷点下まで測定できるように配慮したものはあまり見られません．本製作例はちょっとおもしろい事例だと思います．

A-D変換値

温度センサ
IC LM35

測定温度

写真 5-1

温度センサ IC LM35 を使った氷点下も測定できる温度計の実験基板

外付け部品は LM35 のほか抵抗 3 本．第 1 〜 3 章，第 5 〜 9 章では，CY8C29466 と LCD モジュールを同一基板に実装し，各章固有の回路は別の基板に実装してケーブルで接続した

このＰＤＦは，ＣＱ出版社発売の「改訂 はじめてのPSoCマイコン」の一部分の見本です．
内容・購入方法などにつきましては以下のホームページをご覧下さい．
<http://shop.cqpub.co.jp/hanbai/books/42/42151.htm>

95

5-1 PSoC 風 LM35 で氷点下を測るテクニック■ 5-1-1 LM35 で−55 〜＋ 150 ℃を測定する方法
図 5-1 に，LM35 の基本的な使い方を示します．図 5-1（ a）に示すように，LM35 は電源を繋ぐだけでも＋ 2 〜＋ 150 ℃（出力電圧が 20m 〜 1500mV）の測定が可能です．分かりやすく手軽なため，製作例など
ではこのモードで使われることが多いようです．もちろん，PSoC でも同じように接続することは可能ですが，もう少し発展できないか考えてみました．
実は，LM35 は負電源と抵抗を 1 本用意すれば− 55 〜＋ 150 ℃まで測定できるようになっています．
データシートには詳しい説明がないのですが，データシートの最初の説明のところでは，図 5-1（b）のように負電源を使う方法が掲載されています．さらに，データシートには代表的なアプリケーションとして，
図 5-1（c）のようにダイオードで LM35 の GND 端子にオフセット電圧をかけてマイナス側まで読み取れるようにする方法が紹介されています．
これと同じようなことを PSoC で行うとどうなるでしょうか．図 5-1（c）と同じようにダイオードを使って LM35 の GND 端子と Vout 端子の電圧を測定して差分を取ったり，アナログ演算で両者の電圧の引き算をしてから A-D 変換するといった方法でもかまいませんが，このためだけにわざわざダイオードを持ってくるというのでは PSoC らしくありません．

■ 5-1-2 PSoC 内蔵BandGap電圧源をアナログ・グラウンドとして使用する
ここでは PSoC に内蔵されている BandGap 電圧源（1.3V）を AGND（アナログ・グラウンド）電圧として，これをそのままオフセット電圧として使うことを考えてみました．BandGap というのは，PSoC に内蔵された高精度の基準電圧（1.3V ± 0.025V）です．
VCC
Vs
Vout

10mV/℃，＋2℃〜＋150℃

GND（a）LM35の基本的な使い方（＋2℃以上しか計測できない）

VCC
Vs
Vout

GND

R ＝Vs /50μA−Vs

10mV/℃，−55℃〜＋150℃＋1500mV：150℃＋250mV：25℃−550mV：−55℃

1.3V/50μA
26kΩ＝15kΩ＋10kΩ＋1kΩとして作る
＋5V

VCC
3.7V
(＝5V−1.3V)

Vdd

Vs
Vout

GND

（b）LM35の計測範囲をフルに使う方法

A-D入力
26k
1.3V

PSoC
AGND出力

Vss
VCC
Vs
Vout

Vref ＝BandGap±BandGap

GND
1N914

Vout
18k
10％

ここの電位差で負電圧に見せるにすると，BandGap（＝1.3V）
がAGND電位になる（d）AGND(BandGap 電位)を利用
PSoCのAGNDを利用（c）フル計測の応用（LM35のGND電位をダイオードで浮かせる）

図 5-1（1） LM35 の基本的な使い方とフル計測のための PSoC との接続方法

96

第 5 章 温度センサ IC LM35 を使った氷点下も測定できる温度計の製作

[第6 章]

1Hz 〜 20kHz の方形/正弦/三角波を発生するテスト・オシレータの製作

PSoC で実験をしているときに何かと欲しくなるのが実験用の発振器，テスト・オシレータです．特にアナログ信号の実験をするときには正弦波，方形波，三角波のような基本的な波形でまず動作を検証したくなるのが普通でしょう．
このような目的に向けて作られた IC として有名なものでは，ICL8038（インターシル）があります．さらに性能向上版とも言える MAX038（マキシム・インテグレーテッド・プロダクツ）などもよく利用されているようですが，これらは周波数可変範囲こそ広いものの，周波数の制御がピンに流れる電流と外付けのコンデンサで決まるというアナログ的な仕様であるため，目的の周波数で安定した発振を得るのはなかなか難しいようです．
ここでは，PSoC を利用して方形波，正弦波，三角波を発生するテスト・オシレータを製作します．
PSoC を使った発振回路の基本でもあるので応用範囲が広いと思います．製作したテスト・オシレータを
写真 6-1に示します．

UP/DOWNスイッチ

出力周波数信号出力

写真 6-1

1Hz 〜 20kHz の方形波/正弦波/三角波を発生するテスト・オシレータの実験基板

主要部品は1個のPSoCだけである．第1〜3章，第5〜9章では，CY8C29466とLCDモジュールを同一基板に実装し，各章固有の回路は別の基板に実装してケーブルで接続した

105

6-1 1-2-5 ステップで方形波，正弦波，三角波を同時出力出力する周波数の範囲は 1Hz 〜 20kHz，1-2-5 ステップ（1Hz，2Hz，5Hz，10Hz …という具合）で選べるようにしてみました．第 1 章で使用した，スイッチと LED を付けた基板をそのまま流用して，片方のスイッチを周波数 UP，もう一方を DOWN として使います．LED にも波形を送るようにしたので，周波数が 20Hz までは点滅を目で確認できます．また，Port2（P2［0］〜 P2［5］）に LCD モジュールを繋ぎ，現在の出力周波数が表示されるようにしました．
出力波形は方形波と正弦波，三角波の 3 種類としました．それぞれ別のピンに出力しているので，方形波をトリガに使いながらターゲットに正弦波を与えるといった使い方もできるでしょう．
出力レベルはピーク・ツー・ピーク値で方形波が約 5V（0 〜 Vdd 電圧），正弦波が約 3V，三角波が約 3.5Vです．

6-2 PSoC による方形波，正弦波，三角波の生成方法
テスト・オシレータの波形生成部分のブロック図は，図 6-1 のようになっています．まず，PSoC の内蔵クロック 24MHz を 3 分周して 8MHz のクロックを作ります．これを N 分周（出力周波数によって N を変える）して目的の出力周波数の 200 倍の周波数を得ます．
200 倍にするのは，LED の正弦波点灯で利用したものと同様に，中心周波数の 200 倍のクロック（フィルタが 50 倍オーバーサンプリング動作で，SC ブロックは与えたクロックの 4 分の 1 のクロックで動作するため，50 × 4 ＝ 200 倍）を与える BPF（バンド・パス・フィルタ）を利用したためです．このクロックを 200 分周して，まず目的とする周波数の方形波を得ます．
正弦波は，この方形波を PGA に与えたあと BPF2 を通します．方形波は基本周波数と奇数倍の高調波を含むので，この中から基本周波数成分だけをフィルタで取り出せば正弦波になるという理屈です．ただし，第 2 章の LED の実験で行ったように，今回利用しているフィルタを 1 段通しただけでは正弦波と呼ぶ

24MHz

VC1÷3

この分周比を変えることで出力周波数を変更する

VC2
÷8VC3÷250

PWM16̲1÷N

PWM8̲1÷200

PWM8̲2÷40P0［0］ 24

PGA̲1BPF2̲1

BPF2̲2×0.5

fin÷200

fin÷200

106

P0［5］ 2P0［3］ 3PGA̲2SCBLOCK̲1×0.625（積分）P0［4］ 26

PGA̲3P0［2］ 25

CY8C29466-24PXI

図 6-1

10msごとの割り込み

テスト・オシレータのブロック図第 6 章 1Hz 〜 20kHz の方形/正弦/三角波を発生するテスト・オシレータの製作

方形波

正弦波
正弦波
三角波
AGND

[第7 章]抵抗測定の基本テクニックとサーミスタ温度計の製作

センサで検出した信号を取り扱うことは，PSoC の得意分野の一つと言えるでしょう．温度，湿度，気圧，加速度など，さまざまな状態を検出するセンサの出力は，電圧で出力されたり，抵抗値が変化するよ
うなものがよく見られます．
フォトダイオードが一般的になる前によく使われていた光センサ CdS（硫化カドミウム）セルは明るいほど抵抗値が下がるという特性を利用したものですし，本章で取り上げるサーミスタは温度が上がると電気抵抗が小さくなるという性質を持っています．
PSoC による抵抗測定の考え方は，サイプレス セミコンダクタのアプリケーション・ノート AN2028（Ohmmeter），サーミスタ温度計への利用は AN2017（A Thermistor Based Thermometer, PSoC Style）にも出ています．これらのアプリケーション・ノートは，CY8C26443 を使っており，PSoC Designer のバージョンも 3.x 系の時代のものですが，原理はそのまま流用することが可能です．
ここでは，これらのアプリケーション・ノートをベースにして，CY8C29466 によるサーミスタ温度計を製作します．抵抗計/サーミスタ温度計の外観を写真 7-1に示します．

サーミスタ103AT
測定温度

写真 7-1

抵抗値

PSoC 抵抗計＆サーミスタ温度計の実験基板

サーミスタ103ATで温度測定．第1〜3章，第5〜9章では，CY8C29466とLCDモジュールを同一基板に実装し，各章固有の回路は別の基板に実装してケーブルで接続した

115

7-1 サーミスタは温度により抵抗値が大きく変化する素子
サーミスタは，温度によって大きく抵抗値が変化する素子です．温度が上がるほど抵抗値が下がる特性があり，絶対温度T1，T2 における抵抗値をそれぞれR1，R2，そしてBを定数（B定数）とすると，⎛1 1⎞
R1 = R2 exp B ⎜ − ⎟⎝ T1 T2 ⎠と表されます．従って，
R1æ1 1ö
= exp B ç - ÷è T1 T2 øR2lnR1
æ1 1ö
= Bç - ÷è T1 T2 øR21 R1 11ln+ =B R2 T2 T1
1= T1
1 R1 1ln+
B R2 T21T1 =1 R1 1ln+
B R2 T2…………………………………………………………………………………………
（7 − 1）と変形して，ある抵抗値 R1 のときの温度 T1 が求められます．
今回使用したのは，石塚電子の 103AT というサーミスタです（外観は写真 7-1 を参照）．103 は常温（25 ℃）での抵抗値（10kΩ）を示しています．また，カタログによるとこの製品の B 定数は 3435K なので，に代入すると，ある抵抗値R［kΩ］のときの温度 T（摂氏）は，式
（7−1）
T=

1- 27311R
ln +3435 10 273 + 25…………………………………………………………………………
（7− 2）と表されます．

7-2 抵抗値測定回路の考え方
抵抗値を測定するもっとも基本的な方法は，図 7-1 のようにオームの法則を使って求める方法です．しかし，これを PSoC 化するのは少々やっかいです．電圧は A−D コンバータで測定できるものの，電流の方は簡単には測定できません．
電圧だけで抵抗値を測定するための一つの方法が図 7-2 のように，既知の値の抵抗を 1 本用意して被測と既知の抵抗 R［Ω］，電源電圧 Vin［V］
定対象と直列に接続するという方法です．この中間点の電圧 V［V］
xが分かれば，既知の抵抗の両端の電圧が分かり，ここから流れている電流が逆算され，目的の抵抗値が算出できます．
あるいは，抵抗による「分圧」という考え方で計算してもかまいません．最終的に，目的の被測定対象の抵抗値 Xは基準抵抗Rを使って，
116

第 7 章 抵抗測定の基本テクニックとサーミスタ温度計の製作

[第8 章]

交流インピーダンスの測定テクニックとインピーダンス＆容量＆湿度計の製作

第 7 章の直流を使った抵抗測定は，基準抵抗との間で分圧した電圧を A−D 変換することで行いました．
一般に，交流インピーダンスの基本的な測定の考え方は，特定の周波数の正弦波交流を電源として，それを被測定対象に印加し，電流の位相や端子間電圧を測定するというものです．
交流に対する特性を測るには単なる電圧レベルだけではなく，位相という条件が含まれるので面倒になります．アナログ的な測定方法の場合には，ブリッジ回路を使ったり，オシロスコープの X − Y 軸に電流と電圧位相を入れてリサージュを描かせるなどといった方法がよく利用されています．
DSP などを使った高速演算処理が行えるならば，波形そのものをベタ取りして FFT などの演算処理でインピーダンスを求めるという方法も DSP の性能向上とともによく利用されています．特に FFT を使った場合には，入力信号を正弦波に限定せず，ノイズのような乱雑な波形を入れて，周波数をスイープさせずに信号周波数によるインピーダンスの変化を一気に求めてしまうという方法もあります．
このような本格的な測定も正しいパラメータを得るという意味では重要です．実際のデバイスでは，例
えばコンデンサといってもわずかながら抵抗成分やインダクタンス成分も含んでいるので，これらをきちんと把握する必要があるためです．

8-1 交流インピーダンスの簡易的な測定方法
現場の測定では，位相成分まで正確に知る必要がないという場面も多々あります．例えば，簡単に手持ちのチップ・コンデンサの容量を知りたいような場合には，抵抗成分やインダクタンス成分などは無視してもかまわない場合が多いでしょう．
また，ここで利用した湿度センサは交流を印加してインピーダンスを測定することになっていますが，位相成分までは必要ありません．このような場合には，図 8-1 のように抵抗と測定対象を直列に繋ぎ，被測定対象の両端の電圧 VZ を測るだけで十分です．
測定対象が抵抗のようなものであれば，インピーダンスをZ とすると，}/ + Z）
VZ = Vin {Z（Rで表されます．ここで VZ /Vin = Y，つまり被測定対象の両端の電圧Vと電源電圧Vin の比を Yとおけば，Z=R（1 − Y ）/Y……………………………………………………………………………………（8−1）と表すことができます．コンデンサやコイルのような場合には，単純に比を取ればよいというわけにはいきませんが，純粋にキャパシタンスやインダクタンスだけを持っていると仮定すれば，既知の基準抵抗の値を利用して算出することが可能です．具体的な算出方法は後述します．
8-1 交流インピーダンスの簡易的な測定方法

127

既知の抵抗
R［Ω］

Vin

VVz

被測定対象
Z［Ω］

/ R ＋Z ）｝Vz ＝Vin｛ Z（Vz /Vin ＝Y とおいてZ ＝R（1− Y ）/ YAGND

図 8-1V交流インピーダンスの測定方法

8-2 交流電圧を整流して直流電圧計で測定
図 8-1の方法では，交流電圧計が必要になります．交流電圧を直接測定するのは簡単ではありませんが，入出力波形がともに正弦波という前提にすれば，ダイオードで整流して平滑した値（ほぼピーク値）から逆算するという方法が使えます．ここでは，これを利用して直流電圧計に置き換えます．
この方法を回路図にしたのが図 8-2 です．ダイオードで整流した後に，CR による平滑回路で直流にして電圧を測定します．負荷への漏洩やコンデンサの漏れなどもあるので，細かく見れば若干脈打ったようになるので，図の中でもやや波立たせています．この方法で，直流電圧計のみで測定することができます．
さて，ここで式（8 − 1）をもう一度見てみましょう．インピーダンス Z が Y と R で表されています．
Y = VZ / Vin なので，要するに電圧の比率だけが分ればよいわけです．
正弦波の場合，実効値はピーク値の 2 分の 1 になりますが，Vz，Vin ともに正弦波ならば，わざわざ実効値を算出しなくてもピーク値の比を直接取ればよいわけです．

若干波打つ波形になる

VinVVz

VAGND

図 8-2

128

直流電圧計化して測定を容易にする

第 8 章 交流インピーダンスの測定テクニックとインピーダンス & 容量 & 湿度計の製作

既知の抵抗
R［Ω］

被測定対象Z［Ω］