PIC16F84電子遊戯(67)
最終更新日:2002年3月23日
サーミスター温度計 (1ページ)へ (2ページ)へ (3ページ)

サーミスター温度計の計測と表示
温度計のプログラムは計測と表示を順次繰り返しています。
LEDはダイナミック駆動のため常時制御を繰り返さないと表示が出来ません。
その表示ごとのタイミングで計測を行うと、温度の境目で表示がめまぐるしく変わって何を表示しているのか良く判らなくなってしまいます。
そこで表示のタイミングの何回かに1回の計測を行うような工夫が必要になります。
d_count 計測をスキップするカウンタ
上記のカウンタを設けて表示タイミングに対して計測タイミングを減らしています。
まずはメインルーチンの概略流れを見て下さい。
d_countをデクリメントして「0」でないならLED表示へ
call set_dcount(d_countを初期値に設定)
call keisoku(温度計測)
call fugo_henkan(計測データの符号計算)
movwf fugo
call ondo_henkan(計測データを温度に変換)
call suji_henkan(温度を数字に変換)
call suji_tenso(数字データを表示データに変換)
LED表示
d_countには10hを設定して表示の16回に1回のみ計測を行っています。
上記の黄色の部分が表示の16回のうち1回処理する部分です。
サーミスター温度計の温度変換
温度計測のルーチンでは「count」に温度に対応するカウント値が入ります。
この値はそのまま温度のデータに変換します。カウント値に応じたデータを全て用意しています。皆さんが製作されたときにデータを補正されたときはここのデータを修正します。
ondo_henkan	movf	count,0
		movwf	taihi
		movlw	low(ondo_table)
		addwf	taihi,1
		movlw	high(ondo_table)
		movwf	PCLATH
		addcf	PCLATH,1
		movf	taihi,0
		movwf	PCL
ondo_table	;----------- 00
		retlw	0ff
		retlw	0ff

     これ以降も温度データが入る
変換の方法そのものは今までの私の製作記事の中で出てくるものと同じです。
非常に簡単ですね。
その後温度のデータは2桁の数字のデータに分解されます。
suji_henkan
		movwf	count
		movf	count,0
		andlw	0fh
		movwf	suji_2
		swapf	count,0
		andlw	0fh
		movwf	suji_1
		return	
「count」の値の上位4ビットが「suji_1」に、下位4ビットが「suji_2」に入ります。
この二つのデータをもとにLED表示に必要なデータの処理を行います。
また温度が0℃以下の時は符号を「マイナス」表示する必要があります。
これらの詳細についてはソースリストを後で見て下さい。
サーミスター温度計の全ソースリスト
毎度おなじみのソースリストです。じっくり眺めて下さい。
ソースリストはこちらです。
サーミスター温度計の全HEXコード
HEXコードです。メモ帳などのテキストエディタにコピー&ペーストしてファイルすればPICに書き込めるデータに出来ます。
:020000001028C6
:080008008C0003088D000B11B0
:10001000DF3081009E0A0D0883008C0E0C0E090053
:10002000AC23FF308500F0308600EF20B323E520BD
:10003000F2209D03031D2328EF20A920E22299002E
:100040001822B620F22010309420FF30BE20FF305E
:10005000BE209820113094202008BE202108BE2008
:100060009820123094202208BE202308BE20982019
:10007000133094202408BE202508BE209820143078
:100080009420FF30BE20FF30BE20982015309420F1
:100090002608BE202708BE20982016309420280865
:1000A000BE202908BE209820173094202A08BE20A0
:1000B0002B08BE209820183094202C08BE202D0834
:1000C000BE209820193094202E08BE202F08BE2074
:1000D00098201A309420FF30BE20FF30BE20982098
:1000E0001B3094203008BE203108BE2098201C30E0
:1000F00094203208BE203308BE2098201D30942062
:100100003408BE203508BE2098201E3094203608C2
:10011000BE203708BE2098201F3094203808BE200B
:100120003908BE209820192885000615000008000F
:100130000611000005120000A320051600000800AB
:10014000FF309500A528FF3095000000950BA528ED
:10015000080000309E0006160000A32006120000D2
:100160008B160000861BB1288B1208009E001E080B
:100170000F399B001E0E0F399A0008009800861058
:1001800018188614E020861098188614E02086102F
:1001900018198614E020861098198614E02086101D
:1001A000181A8614E0208610981A8614E02086100B
:1001B000181B8614E0208610981B8614E020080087
:1001C00006140000061000000800003099000030FE
:1001D0009A0000309B0008000030960008001030A4
:1001E0009D000800EC202030160784001908172114
:1001F0008000960A1608063C031DF328EC202630E2
:10020000160784001A0847218000960A16080A3C3F
:10021000031DFF28EC203030160784001B084721FF
:100220008000960A16080A3C031D0B290800970057
:100230000310970D970D970D170816079700273095
:10024000970701308A0003188A0A170882007F3452
:10025000FE341F34F8347F34FE34FF34FF347F34EF
:10026000FE347F34FE347F34FE34FF34FF342434D4
:100270000834BB34DA34A4340B34FF34FF34FF3495
:10028000FF34FF34FF34FF34FF34FF34FF34970072
:100290009C000310970D970D970D9C0D1C081707D8
:1002A000160797005A30970701308A0003188A0A08
:1002B000170882000734E034F9349F34F9349F344E
:1002C000F9349F340734E034FF34FF34FF34E7342B
:1002D000FF34E73401348034FF34FF34E134E73451
:1002E00099349F3479349E3479349E34F934E1342E
:1002F000E734E734F9349F3479349E3479349E34CA
:100300008734E1341F34FE349F34F9349F34E734AA
:10031000013480349F34FF34E7348134F934993424
:10032000F9349934F934993407349E340734F83465
:100330007934E63479349E3479349E348734FF340A
:10034000FF349F34FF349F3481349F347F3498349A
:10035000FF3487348734E13479349E3479349E34E1
:1003600079349E348734E134FF34E13479349E3477
:1003700079349E3467349E341F34E0340134E034E1
:100380007F349E347F349E347F349E340134E03495
:100390000134803479349E3479349E3479349E34F7
:1003A0008734E1340734E034F9349F34F9349F342E
:1003B000F9349F34E734E73401348034F9349F341E
:1003C000F9349F34F9349F340734E03401348034F5
:1003D00079349E3479349E3479349E34F9349F34A0
:1003E000013480347F349E347F349E347F349E3495
:1003F000FF349F34FF34FF34FF34FF34FF34FF34C5
:10040000FF34FF34FF34FF349F34FF34073480342B
:1004100001348034073480349F34FF34FF34F9349E
:100420000134E034013480340134E034FF34F934F1
:100430001E0897002230970702308A0003188A0AA4
:1004400017088200FF34FF34FF34FF34FF34FF34D9
:10045000FF34FF34FF34FF34FF34FF34FF34FF3404
:10046000FF34FF34FF34FF34FF34FF34FF34FF34F4
:10047000FF34FF34FF34FF34FF34FF34FF34FF34E4
:10048000FF34FF34FF34FF34203419341834183467
:100490001734163416341534143414341334123417
:1004A0001234113411341034093409340834083446
:1004B0000734063406340534053404340434033474
:1004C0000334023401340034003401340134023482
:1004D000023403340334043405340534063406345A
:1004E000073407340834083409340934103410341C
:1004F00011341134123412341334133414341534C7
:100500001534163416341734173418341834193493
:10051000203420342134213422342234233423342F
:1005200024342534253426342634273428342834FA
:10053000293429343034313431343234333433349F
:100540003434353435343634373437343834393458
:1005500040344134423442344334443445344634E4
:100560004634473448344934503451345234533487
:100570005434553456345734583459346134623411
:10058000633464346634673468347034713473347B
:1005900075347634783480348234843486348934C3
:1005A000913494349734FE34FE34FE34FE34FE34F9
:1005B000FE34FE34FE34FE34FE34FE34FE34FE34AB
:1005C000FE34FE341E089700EC30970702308A0094
:1005D00003188A0A170882000334033403340334EF
:1005E0000334033403340334033403340334033453
:1005F0000334033403340334033403340334033443
:100600000334033403340334033403340334033432
:100610000334033403340334033403340134013426
:100620000134013401340134013401340134013422
:100630000134013401340134013401340134013412
:100640000134013401340134013401340134013402
:1006500001340134013401340134013400340034F4
:1006600000340034003400340034003400340034EA
:1006700000340034003400340034003400340034DA
:1006800000340034003400340034003400340034CA
:1006900000340034003400340034003400340034BA
:1006A00000340034003400340034003400340034AA
:1006B000003400340034003400340034003400349A
:1006C000003400340034003400340034003400348A
:1006D000003400340034003400340034003400347A
:1006E000003400340034003400340034003400346A
:1006F000003400340034003400340034003400345A
:100700000034003400340034003400340034003449
:100710000034003400340034003400340034003439
:100720000034003400340034003400340034003429
:100730000034003400340034003403340334033410
:1007400003340334033403340334033403340334F1
:10075000033403340334033483168501860186177A
:100760000000831208008316803081008312DF307E
:0807700081008B168B170800B5
:02400E00F13F80
:00000001FF
サーミスター温度計の大完成
完成した姿(一応LEDモジュールの表面には赤のアクリル板を貼りました)と各温度での実測の様子をご覧下さい。
(完成の姿) (外付けのサーミスタ)
(低温側での実測。なんとか精度は出てる?)
(高温側での実測。高いとアチアチで測りずらいです。)
(このあたりは精度がいいです。でも棒状温度計の表示見えませんね。)
ということで、サーミスター温度計大完成です。かなり実用になります。
これからも益々面白くなる「PIC16F84電子遊戯」をよろしくお願いいたします。

不明点などあればメールお願いいたします。nonchansoft@nifty.com