*

博多んもんの徒然草

PH・水温モニタ
HOME掲示板パソコンデジカメプロフィールリンク

H8を使ったpH・温度モニタの製作

秋月電子製のH8/3048Fマイコンボードを使って、ディスカス水槽の水温およびpHを モニタするシステムを製作しました。 このシステムでは測定データをRS232Cポートから測定毎に出力しています。 したがってデータをパソコンに取り込むことによって水温あるいはpHの変化を解析し、 水槽メンテナンスに役立てることも可能です。 また夏場には水温が設定温度よりも上昇し生体にストレスを与えるため測定したデータを使って、 ファンのオン・オフを制御し適正水温にしています。 そんなに難しいシステムではありませんが、皆様の参考になれば幸いです。
H8/3048FというCPUについて
AKI−H8マイコンボード
温度センサについて
pHセンサについて
pHセンサアンプの設計
ソフトウェアについて
完  成

H8/3048FというCPUについて

H8/3048Fは日立製作所製の1チップCPUで、特徴をマニュアルから抜粋して紹介します。

本LSIは、日立オリジナルアーキテクチャを採用したH8/300HCPUを核にして、 システム構成に必要な周辺機能を集積したシングルチップマイクロコンピュータMCUです。 H8/300H CPU は、内部32 ビット構成で16ビット×16 本の汎用レジスタと高速動作を指向した簡潔で最適化された命令セットを備えており、 16M バイトのリニアなアドレス空間を扱うことができます。また、H8/300CPU の命令に対しオブジェクトレベルで 上位互換を保っていますので、H8/300 シリーズから容易に移行することができます。

システム構成に必要な周辺機能としては、ROM 、RAM 、16 ビットインテグレーテッドタイマユニット(ITU )、 プログラマブルタイミングパターンコントローラ(TPC )、ウォッチドッグタイマ(WDT )、 シリアルコミュニケーションインタフェース(SCI )、A/D 変換器、D/A 変換器、I/O ポート、DMAコントローラ(DMAC )、 リフレッシュコントローラなどを内蔵しています。

本LSIには、H8/3048、H8/3047、H8/3045、H8/3044の4種類があります。H8/3048には、128kバイトROM と4kバイトRAM、H8/3047には、96kバイトROMと4kバイトRAM、H8/3045には64kバイトROMと2kバイトRAM、 H8/3044には32kバイトROMと2kバイトRAMがそれぞれ内蔵されています。

MCU動作モードは、モード1〜7(シングルチップモード1種類、拡張モード6種類)があり、データバス幅とアドレス空間を選択することができます。 本LSIには、マスクROM版のほかに、ユーザサイドで自由にプログラムの書き込みができるPROMを内蔵したZTAT版があります。 仕様流動性の高い応用機器さらに量産初期から本格的量産などユーザの状況に応じて迅速かつ柔軟な対応が可能です。さらに、本LSI にはF-ZTAT版があり、基板実装後のプログラム書き換えが可能です。

ということで、少しわかりにくいですが要約すると、H8/3048Fというのは、4KBのRAMと128KBのFLASH−ROMを持った 便利なCPUということですね。特にシングルチップモードで使用すると最大限のパフォーマンスを発揮します。 が、いかんせん4KBのRAM容量はいかにも少なく、ちょいと複雑な処理をさせようとすると、 たちまち容量不足となりシステムは破綻します。しかし本システムでは製作の容易さと、 低価格化することを目標に工夫を凝らしながらシングルチップモードで動作させることにします。
戻る

AKI−H8マイコンボード

AKI−H8ボードってこれです。まだ部品をつけていない状態ですね。
このボードだけでもソフトは走りますが外部とのやりとりができません。

そこで、マザーボードも購入しましょう。これです。

ついでにLCDもそろえましょうね。これがないと測定値がわかりません。おぉぉ値札もついてる!!

これでCPUの部分はそろいました。
戻る

温度センサについて

何かを測定するシステムを構築する場合に重要な要素の一つはどのようなセンサを 使用するかと言うことでしょう。小生はアメリカ某メーカ製の温度センサを使用しました。 このセンサはトランジスタのような形をしており足は3本ですが、小さすぎてよく見えません。 センサというよりは、測定までしてしまう1チップコントローラみたいなものです。 資料では3端子デジタル温度計となっています。 このセンサの最大の特徴はは1線式バスといって、たった1本の信号線で複数の デバイスコントロールができるということです。 つまり、1ビットの出力と1ビットの入力ポートがあれば、複数箇所の温度がいとも簡単に測れるということです。 分解能は通常0.5度ですが、送られてくる生データを使って演算を行うことにより、0.1度程度までは測定が可能です。 本システムではメモリの関係で4個までの測定に限定しています。
戻る

pHセンサについて

pHセンサは秋月電子通商で販売されている、米国オメガ社製のPHE78604を使用しました。 そもそもこのシステムを製作しようと思い立った動機は同社で販売されているデジタルpHメータキットを製作したことでした。 キットを組み立てて感じたことは、ゼロ点調整と利得調整がお互いに干渉して校正が非常に難しいことでした。 センサ単体でも販売されていることを知り、資料も付属していたことから比較的簡単に自作できるのではないかと考えたわけです。 本システムでは調整の簡易さも考慮して入力アンプ部分を設計してあります。
戻る

pHセンサアンプの設計

pH(ペーハー)は、溶液の酸性度、あるいはアルカリ度を示す単位で、0〜14の数値によって測られます。 pHセンサは、水素イオン濃度によって出力電圧が変化する一種の電池です。 水素イオンと水酸基イオン濃度が等しいときつまり酸性でもアルカリ性でもないときpHは7となり、 出力は0ボルトになります。しかし実際には個体差がありますので調整が必要です。

pHセンサの出力電圧比は、25度Cのとき59.16mV/pHです。ディスカス水槽の水温は25〜30度Cですから、 60mV/pHと考えておけば間違いないと考えていいでしょう。

一方H8のA/D変換器入力電圧範囲は0〜5ボルトで、分解能は10ビットです。 この範囲でpH0〜14を測定しようとすると、pH=7のとき出力が2.5ボルト、 pH=14のとき出力が5ボルト、pH=0のとき出力0ボルトになるようにアンプの増幅度を 決定すればいいことになります。このときpHの測定分解能(精度ではない)は 14/1024=0.0136となります。pHセンサの精度は±0.15ですから十分な性能であると言えます。

pHが7〜14まで変化するときセンサの出力変化は7*0.06=0.54ボルトで、 アンプ出力変化を2.5ボルトにするためには、2.5/0.54=4.6となります。 実際にはアンプ利得は4から5程度までの可変にしておけばいいでしょう。

pHセンサの内部抵抗は非常に高いため、アンプ入力部は高インピーダンス(1000MΩ以上) でなければ正確な測定はできません。ここではJ-FET入力OPアンプであるNJM072Dを使用しました。 このOPアンプは大変ポピュラーなICですから比較的簡単に手に入ります。 以上のことを考慮して設計したのが下図の入力アンプです。



1段目で必要なゲインをかせぎ、2段目は出力電圧のシフトを行う回路になっています。 1段目の利得は(R1+VR1+R2)/R1で表されます。 したがって、利得を4〜5程度に調整できるようにするためには、 R1=100KΩ、R2=300KΩ、VR1=100KΩとします。 H8のアナログ入力電圧の範囲は0−5ボルトですから、 2段目の非反転入力にプラス電圧を加えてゲタをはかせます。 ZD−1はH8の入力範囲を超えないための保護回路です。

この回路の調整は簡単です。まず入力をショートして入力を0ボルトにします。 出力電圧をデジボル等で2.5ボルトになるようにVR2を調整します。 次に正確な0.12ボルトを入力して出力が2.5-(4.6*0.12)→1.948ボルトになるようにVR1を調整します。 基本的にはこれで終了ですが実際にはH8のA/Dコンバータ特性、 およびpHセンサの個体差を吸収して正確な値が得られるように細かい調整が必要です。 本回路では回路が独立していますのでお互いの調整が干渉することがなく容易に合わせ込むことができます。
戻る

ソフトウェアについて

せっかくコンピュータを利用するわけですから、将来の拡張も考えてソフトウェアはしっかりしたものを 作成しておく必要があります。

1.開発環境
パソコン      Pentium MMX 200MHz + Window-NT 4.0 Workstation + RAM=64MB
コンパイラ     日立エンジニアリング株式会社 H8S,H8/300H Cコンパイラ
リンカ、クロスアセンブラ
株式会社日立マイコンシステム Hシリーズリンカ、H8S,H8/300Hシリーズクロスアセンブラ

現在から考えると当時のパソコンスペックはずいぶんと貧弱ですが、 このようなソフト開発の用途にはこれで十分な性能です。 ソースのエディットとソース管理にVisual-C++6.0を使用していますが, DOSベースで開発していた頃の環境に比較すると格段に操作性がよく重宝しています。 Cコンパイラ類はDOS窓で動作しますので、ショートカットを作成しておきアイコンを たたくだけでコンパイルリンクができるようにしてあります。

2.リアルタイムOS
リアルタイムOSは複数の処理を同時並行的に実行させる場合には極めて大きな力を発揮します。 しかしリソース管理が難しい、メモリを食う、各タスクが連携して動作するようなシステムでは 同期が難しいなど、少々テクニックを要します。 通常この程度のシステムではリアルタイムOSは必要ありませんが、 本システムでは敢えてこれを使用して処理をカッコよく行わせることにしました。
使用したOSはCQ出版社のインターフェース1994年12月号、1995年1月号に連載された μC/OSをH8用に移植しました。このソフトはほとんどCでかかれておりカスタマイズも容易、 実行スピードが速い、コンパクト、それで必要な機能はしっかりインプリメントされているなど 使い易いものです。インターフェース誌に全ソースが付録で添付されていましたので著作権の問題は ないものと思われます。また、記事にはリアルタイムSの概念がわかりやすく解説されているので 読者の参考になります。
移植にあたって考慮したのは、RAMが4KBと少ないのでメールボックスなどリソースを 必要最小限にしたことです。タスクもメモリを極力節約するように作成した結果現在の機能で、 約1KBの余剰RAMを持つことに成功しました。このことは後々さらに機能を追加できるということで 大きな意味を持っています。
戻る

完成写真

ケース内部の様子・・ごちゃごちゃしてますなあ!


動作中のLCD表示器、左のコップがpHセンサ、手前が温度センサ
下の段左がpHアンプ出力電圧で2.797V、pH=7.53となっている
温度センサは水につけてもいいように加工する必要がありますが、これはまだ裸のままです


お世辞にもいいとは言えない外観ですが
プロトタイプなので作業がし易いように大きなケースにしました
戻る