|
|
- 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
|
送信文字列
|
| 上位バイト |
下位バイト |
| 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 |
|
|
|
|
|
- RTS=Hで電源ON
- 100.49mS待機、電源電圧が安定になるのを待つ
- Break=ON で変換・送信開始、5000.205サンプル/秒でch0を変換し、結果を114307
bpsでRS232Cに送信
- Break=OFF で変換・送信を終了し、次のBreak=ONを待つ
|
|
|
GID-LOG基板を改造し、19.6608MHzのクリスタルを実装、不要部品を撤去して使用。
★ADC-115kのパーツセット、キットの提供はしていません。
★しかし、GID-uPCとハードウェアはほぼ共通になっているので、GID-uPCパーツセットと19.6608MHzクリスタルがあれば部品は全て揃います。
|
|
|
ファームウェアソースコード
adc115k_src.zip (zip 4KB) |
PIC START、MPLAB 5.70で開発
2003/9/24 MAX186の変換時間が足らず変換エラーが発生するバグを修正 |
試験用プログラム+実行ファイルWindows95/98/XP/2000対応
|
TEST115k
test115k.zip (zip, 267KB)
- ポートを指定し接続すると、1クリック毎に変換結果を表示します。
- ポートとファイル名を指定すると既定データ数の変換結果を保存します。
動けばいい、という志で製作したので、たとえば保存ファイル名を指定せず連続変換を実行するとエラーが発生するなどの問題を含みます。

2003/9/25 共有DLLをインクルードして再コンパイル |
|
FAST115k
fast115.zip (zip, 264KB)
- ポートとファイル名を指定して接続し、計測実行をクリックすると計測と保存を開始します。
- 計測終了をクリックすると計測と記録を終了します。
 |
|
|
|
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を補償した結果、正常に動作するようになった。
|