ファイルシステム搭載 H8マイコンボード MH8ALFAT05を使った温度ロガーの製作 [ALFAT]
マルツ電波で販売されているファイルシステムを搭載したH8/Tinyマイコンボード(MH8ALFAT05)を使って8チャンネル、表示単位は0.5度、温度範囲0℃~100℃(計測精度は0℃~50℃が±1度、それを超える範囲では最大±3℃)まで計測及び記録できる温度ロガーを製作しました。現物は16日から開催されるインターネプコンで展示される(様に今頑張っているところ)予定です。 このボードのハードウエアには、マイコンにはルネサス製のH8/3687F Tinyマイコンを使用しており、ファイルシステムにはFATファイルシステム専用のICを使用しています。 入出力要素として多数のポートを引き出せるようにし、またボード上にはキャラクタLCDインタフェース、4bitのタクトスイッチ、圧電スピーカー、RS232(EIA574)コネクタを用意してあります。 またファイルシステムなのでRTCを必要としますが、電池バックアップ可能なRTCも搭載可能です。 デバック用にはE8インタフェースコネクタを装備しています。 ソフトウエアには、フリーのμITRON4.0仕様OSのHOSを搭載し、タスク構成=機能分割とする事で基本設計を容易にし、全体的な開発工数の削減を行う事ができました。 | |
温度センサーには低価格で入手性が良く、利用し易いサーミスタ(石塚電子製 103AT-2)を使用しています。このサーミスタはNTC、つまり負の温度係数を取る抵抗体で、温度が上がるほど抵抗値が減少します。 写真は、今回作成したセンサーケーブルとテスターに接続されたK型熱電対をいっしょにアルミ箔で包んだ状態です。実は部品手配に失敗して、8チャンネル計測できるところ、5チャンネル分のセンサーケーブルしか作製できていません。 | |
しかしサーミスタは白金温度センサーやIC温度センサー等と異なり、温度に対する抵抗値の変化が直線とはならず、今回の作品は0℃~100℃までを計測範囲としていますが、特に高い方の温度ではH8の内臓している10bitのA/Dコンバーターでは分解精度が不足するので、MH8ALFAT05基板とは別にアナログ入力用の基板を製作し、そちらに12bitのA/Dコンバーターを搭載しています。 センサー及びセンサーケーブルは、ケーブルの抵抗値が誤差になる事を防ぐ目的で3線式ケーブルとなっていますので、容易にケーブル長を伸ばす事が可能です。また、ノイズの多い環境下で使用する時は、2芯シールドケーブルを使用する事でノイズ耐性を高める事が出来ます。 ※計測温度範囲は0℃~100℃としていますが、実際にセンサーケーブルの作製に使用したケーブルや熱収縮チューブは100℃まで耐えられる物を用意できなかったので、実質的な耐用温度は70℃程度となっています。 | |
ちなみにサーミスタの温度/抵抗値の特性をエクセルにグラフを描かせると、こんな事になっています。縦軸が抵抗値で単位はΩ、横軸が温度で単位は℃。特に50℃を超える辺りから曲がりがきつくなり、分解能が直線的なA/Dコンバーターでは高い温度での精度が苦しくなる事が容易に想像できます。 | |
このロガーには警報表示出力機能を持たせて有ります。基板下部のユニバーサル領域に赤と青のLEDをそれぞれ8個並べておりますが、予め設定された温度を超えると、このLEDは青色から赤色のLEDの点灯に切り替わります。勿論まだ沢山のポートが余っているので、リレーを搭載して、警報のリレー出力とする事も可能ですし、基板上の圧電スピーカーでピー!ピー!ピー!と鳴らす事も可能です。 | |
表示メッセージですが、まあ16文字×2行という非常に少ない表示量で行わなければならないので、あまり親切な表示メッセージとは言い難いのですが、左上の"R"は”RUNNING”、つまり計測実行中を表し、その右は記録間隔(P=PERIOD:単位は分)を示しています。ちなみに表示の更新は1秒で行われます。 記録間隔の右隣は現在時刻を表しています。 下の行が計測温度を表示していて、”チャンネル番号:計測温度”のフォーマットとなっています。 画面が小さいので一度に表示できるチャンネルは2個となります。その為別のチャンネルを見るためには、タクトスイッチのUP/DOWNキーで表示チャンネルを切り替えます。 | |
一応目標としていた50℃を超える範囲での最大3℃の誤差と言うのは、何とか入ったみたいです。 これはチャンネル1と2。 | |
これはチャンネル3と4。 | |
これはチャンネル5と6。 チャンネル6はセンサーケーブルが接続されておらず開放状態となっている為、抵抗ブリッジ回路での差分電圧が発生せず、25℃表示となっています。7、8チャンネルも同様になっています。 | |
試験にはホットプレートを使用していますヽ (´ー`)┌ 。 まあ自宅でやっているので、揃えられる設備はこの辺が限界!。ただ熱容量が大きく、蓋をする事で狭い空間内の環境を維持し易いので、外乱を受け難い環境を構築はできます。 | |
100℃に達した時点でホットプレートのスイッチを落としたのですが、ヒーターの余熱でこの後120℃まで上がってしまいました。危ない危ない。 | |
ちなみに今回の試験で記録されたデータです。10分置きのデータとなっています。 画像をローカルに落としてから開くと、拡大して見る事ができます。 | |
グラフ化しています。やはりローカルに落としてから見る事ができます。 常に温度が変化している状態なので、ややバラツキが見えます。 更なる精度を求めるなら、個々のセンサーの特性を取る必要が有るのかもしれません。 |
今回のサーミスタのB定数は3435K。25℃におけるゼロ負荷抵抗値は10KΩ。B定数、ゼロ負荷抵抗値共に1%精度です。計算上、今回の計測精度の範囲内ならそれ程影響はしないのですが、より高精度な計測を行うなら、個々のサーミスタのB定数や誤差を実測しておく必要が有るでしょう。
しかし今回の製作は参考出品用なのであまり予算をもらえず、時間もコストも掛ける事ができません。まあこんな物でしょう。
時間もコストも仕様の内ですから。
ちなみに例によってこんな変換テーブルを作って、マイコンのCPUパワーとかメモリとかのリソース消費を減らしています。
/* ------------------------------------------------------------------------ */ /* 0度から200度までのサーミスターの変換テーブル */ /* designed by hamayan */ /* Copyright (C) 2007 - by hamayan */ /* ------------------------------------------------------------------------ */ const double thermister_table[] = { 3814.812506, /* 0.000000degrees 28736.182351ohm 3.730225vad */ 3790.432595, /* 0.500000degrees 28082.720160ohm 3.706386vad */ 3765.913251, /* 1.000000degrees 27446.421791ohm 3.682410vad */ 3741.259768, /* 1.500000degrees 26826.780410ohm 3.658303vad */ 3716.477523, /* 2.000000degrees 26223.305711ohm 3.634071vad */ 3691.571967, /* 2.500000degrees 25635.523334ohm 3.609717vad */ 3666.548623, /* 3.000000degrees 25062.974294ohm 3.585249vad */ 3641.413081, /* 3.500000degrees 24505.214440ohm 3.560671vad */ 3616.170994, /* 4.000000degrees 23961.813932ohm 3.535988vad */ 3590.828066, /* 4.500000degrees 23432.356738ohm 3.511207vad */ 3565.390057, /* 5.000000degrees 22916.440147ohm 3.486333vad */ 3539.862767, /* 5.500000degrees 22413.674308ohm 3.461372vad */ 3514.252040, /* 6.000000degrees 21923.681780ohm 3.436329vad */ 3488.563752, /* 6.500000degrees 21446.097100ohm 3.411210vad */ 3462.803806, /* 7.000000degrees 20980.566369ohm 3.386022vad */ 3436.978132, /* 7.500000degrees 20526.746852ohm 3.360769vad */ 3411.092674, /* 8.000000degrees 20084.306595ohm 3.335457vad */ 3385.153391, /* 8.500000degrees 19652.924051ohm 3.310093vad */ 3359.166247, /* 9.000000degrees 19232.287730ohm 3.284682vad */ 3333.137207, /* 9.500000degrees 18822.095849ohm 3.259230vad */ 3307.072231, /* 10.000000degrees 18422.056005ohm 3.233743vad */ 途中略 2610.556308, /* 23.500000degrees 10600.483972ohm 2.552671vad */ 2585.735838, /* 24.000000degrees 10395.739108ohm 2.528401vad */ 2561.029615, /* 24.500000degrees 10195.617212ohm 2.504243vad */ 2536.441486, /* 25.000000degrees 10000.000000ohm 0.000000vad */ 2511.975188, /* 25.500000degrees 9808.772554ohm 2.456276vad */ 2487.634342, /* 26.000000degrees 9621.823212ohm 2.432475vad */ 2463.422459, /* 26.500000degrees 9439.043467ohm 2.408800vad */ 途中略 690.586576, /* 90.000000degrees 1269.406379ohm 0.675274vad */ 684.793345, /* 90.500000degrees 1252.990543ohm 0.669609vad */ 679.076411, /* 91.000000degrees 1236.831221ohm 0.664019vad */ 673.434747, /* 91.500000degrees 1220.923779ohm 0.658502vad */ 667.867340, /* 92.000000degrees 1205.263674ohm 0.653058vad */ 662.373189, /* 92.500000degrees 1189.846457ohm 0.647686vad */ 656.951304, /* 93.000000degrees 1174.667768ohm 0.642384vad */ 651.600706, /* 93.500000degrees 1159.723337ohm 0.637153vad */ 646.320428, /* 94.000000degrees 1145.008980ohm 0.631989vad */ 641.109516, /* 94.500000degrees 1130.520596ohm 0.626894vad */ 635.967025, /* 95.000000degrees 1116.254167ohm 0.621865vad */ 630.892024, /* 95.500000degrees 1102.205755ohm 0.616903vad */ 625.883591, /* 96.000000degrees 1088.371503ohm 0.612006vad */ 620.940818, /* 96.500000degrees 1074.747628ohm 0.607172vad */ 616.062805, /* 97.000000degrees 1061.330425ohm 0.602403vad */ 611.248666, /* 97.500000degrees 1048.116261ohm 0.597695vad */ 606.497525, /* 98.000000degrees 1035.101576ohm 0.593049vad */ 601.808517, /* 98.500000degrees 1022.282880ohm 0.588464vad */ 597.180787, /* 99.000000degrees 1009.656752ohm 0.583939vad */ 592.613494, /* 99.500000degrees 997.219837ohm 0.579473vad */ 588.105805, /* 100.000000degrees 984.968850ohm 0.575066vad */ 以下略
2008-01-14 02:34
nice!(0)
コメント(0)
トラックバック(0)
コメント 0