汎用ADコンバータ GID-ADC GIDトップページ 数理設計研究所

ADC-115k


研究・設計
数理設計研究所 矢澤正人
yazawa@mail.wind.ne.jp
2003/9/6 記述
2003/10/26 更新

概要

  • 5000.205サンプル/秒でGID-ADCのch0を変換
  • RS232C(115kbps、バイナリ)で送信
  • コンデンサマイクによる機械振動計測を想定して設計

機能

ADC

  • GID-ADC、12bit、1mV/LSB
  • バイポーラモード固定、入力電圧範囲 -2048〜2047mV
  • ch0固定

サンプリング

  • 1サンプル/送信実行ステート数 = 1/19.6608Mhz * 4 * 983state =  199.9918uS(固定)
  • サンプリング周波数 = 1/199.9918uS = 5000.205サンプル/秒

通信

  • RS232C、115200bps、2StopBit、パリティ無し
  • 実際のボーレートは114307 bps

送信文字列

  • 変換データを2バイト一組で送信
上位バイト 下位バイト
0 0 0 0 B
1
1
B
1
0
B
9
B
8
B
7
B
6
B
5
B
4
B
3
B
2
B
1
B
0

使用法

  1. RTS=Hで電源ON
  2. 100.49mS待機、電源電圧が安定になるのを待つ
  3. Break=ON で変換・送信開始、5000.205サンプル/秒でch0を変換し、結果を114307 bpsでRS232Cに送信
  4. Break=OFF で変換・送信を終了し、次のBreak=ONを待つ

回路図、部品実装図

GID-LOG基板を改造し、19.6608MHzのクリスタルを実装、不要部品を撤去して使用。

★ADC-115kのパーツセット、キットの提供はしていません。
★しかし、GID-uPCとハードウェアはほぼ共通になっているので、GID-uPCパーツセットと19.6608MHzクリスタルがあれば部品は全て揃います。

回路図

adc_115k_cir.pdf (85KB)

部品実装図

adc_115k_parts.pdf (175kB)

ソースコードと試験用ソフト

ファームウェアソースコード

adc115k_src.zip (zip 4KB)
PIC START、MPLAB 5.70で開発
2003/9/24 MAX186の変換時間が足らず変換エラーが発生するバグを修正

試験用プログラム+実行ファイル

Windows95/98/XP/2000対応

TEST115k

test115k.zip (zip, 267KB)
  1. ポートを指定し接続すると、1クリック毎に変換結果を表示します。
  2. ポートとファイル名を指定すると既定データ数の変換結果を保存します。
 動けばいい、という志で製作したので、たとえば保存ファイル名を指定せず連続変換を実行するとエラーが発生するなどの問題を含みます。

2003/9/25 共有DLLをインクルードして再コンパイル

FAST115k

fast115.zip (zip, 264KB)
  1. ポートとファイル名を指定して接続し、計測実行をクリックすると計測と保存を開始します。
  2. 計測終了をクリックすると計測と記録を終了します。

性能評価試験

2003/9/25
ADC-115Kの性能評価をおこなった

試験環境

  • GID-ADCとADC-115kでアルカリ単三電池の電圧を計測
  • 使い古しの電池を使ったため電池電圧が低い。電池電圧のテスタでの測定値は1.26V
  • 入力保護抵抗等は未使用
  • シリアルケーブルは全結線シールド1m
  • ADC,115k,電池はノートパソコンのキーボード上に設置
  • 約4時間34分間のデータを記録
  • 試験用PC側ソフトは10mS単位で受信バッファの値を読み出す構造になっており、OSのオーバーヘッドもあるため単位時間あたりのデータ数は多少のばらつきが出る

測定値安定性評価

  • ノートパソコンというノイズ源上で試験を実施したにも関わらず、短期的には3mVp-pの範囲に測定値が収まっている
  • 22:40ごろからわずかに電圧が高めになっている。電池電圧の温度特性によるものだろう
  • 0:00ごろから急激に誤差範囲が広がっている。装置付近でコードレスホンを使用していたためと思われる

取得データ数評価

  • データ取得の開始と終了時の1秒間を除いたデータを評価対象とした
  • 評価対象は20:12:38〜0:47:11の16473秒間、82364556データ
  • 1秒間あたり4999.973047データ
  • 5000.205サンプル/秒であるべきデータ数との誤差は-46.39ppmであり、原因がADC115kの水晶の発振周波数誤差だとすると妥当な範囲内

  • サンプリング時間間隔が重要な意味を持つ計測では、ADC-115kの駆動周波数を検定する必要がある

データ読みこぼし評価

  • グラフ中の取得データ数が大きく変化する箇所は、データ取得に使用しているPCでファイル操作をした時刻と一致する
  • このときにバッファオーバーフローによるデータの読みこぼしが発生していないかを、各箇所のデータを10秒間分づつ抜き出して評価した
  • 10秒間当たりのデータ数の標準を49999.7データであるとしたときとの差は最大+27.7データであり、5.54mSあたりのデータ量に相当する
  • 試験ソフトの仕様では、これは誤差範囲内
  • 1秒間以上受信バッファからの読み出しができない場合でも読みこぼしは起きない
時刻 データ数
20:51:40 5008
20:51:41 5008
20:51:42 4575
20:51:43 5102
20:51:44 5295
20:51:45 5004
20:51:46 5008
20:51:47 5008
20:51:48 5008
20:51:49 4956
データ数合計 49972
標準値との差 27.7
時刻 データ数
22:03:05 5008
22:03:06 4956
22:03:07 5004
22:03:08 5008
22:03:10 2904
22:03:11 12120
22:03:12 5008
22:03:13 4956
22:03:14 5008
データ数合計 49972
標準値との差 27.7
時刻 データ数
23:55:55 4860
23:55:56 5156
23:55:57 5008
23:56:00 2152
23:56:01 17824
23:56:02 5008
23:56:03 5008
23:56:04 5008
データ数合計 50024
標準値との差 -24.2

この装置の利用指針

こうしなければいけない、という物ではないが、当方はこう考えているという指針。

1.データ保存コストはタダ同然

  • このハードウェアは毎秒12bitのデータを5000件生成する
  • バイナリで保存するとしても、時間あたり26Mバイトのデータ量となる
  • 700MバイトのCDRが1枚100円だとすると、計測1時間当たりのメディアコストは4円弱

2.データ量削減はいつでもできるが、削減したデータは元に戻せない

  • 計測者は、C、スクリプト、エクセルやエディタのマクロなど最低ひとつはデータ処理手段を持つ
  • データ量削減や加工ははいつでも可能
  • 削減したデータを回復するのは不可能

3.生データを完全に取得し保存しよう。

  • 時間がかかる実験なら、実験開始から終了まで計測しっぱなしにしよう
  • 実験準備の苦労や得られる成果によっては、HDD1台をデータでいっぱいにしても構わない
  • イベント発生時刻は別途メモでもしておけばいい
  • 然る後、コンパクトな結論に至ろう

開発中悩んだバグ

 PICで試験用の文字を送信してもPC側試験ソフトで受信できないバグがあった。別のターミナルソフトで受信すると、正常に受信できる。
 原因は、DCB構造体のfDsrSensitivity というパラメータを true にセットしていたからだった。このパラメータは、trueにセットすると、DSR=0のときに受信した全ての文字を無視する。

 WindowsアプリケーションによるRS232制御でキモになるのがDCB構造体である。RS232通信のおよそありとあらゆることを、この構造体で定義する。

 GID-ADCに使用しているMAX186のCONVtを考慮せずに設計していたため、変換時にMSBにエラーが起きることがあった。特に負電圧計測時は必ずエラーになる。
 プログラム構造を工夫してCONVtを補償した結果、正常に動作するようになった。