カレンダー
<< November 2024 >>
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最近のエントリー
最近のコメント
最近のトラックバック
カテゴリー
月別アーカイブ
リンク
その他

ADコンバータ動いた、、、でも
DAコンバーターを使って、ADコンバーターにするんだが、早速テスト。
IMGP1202
こんな感じで、コンパレーターにしてるオペアンプから、青いコードで、プリンターポートの
10番ピンに返します。
IMGP1206
結果は、、、 おおっと、精度ばっちし。とりあえず、ちゃんと測定できる。
ただし、ちょっとした問題あり。

4096回カウンター上げるのに、こんな感じで、、、

for ( i=0; i<4096; i++){
  10番ピンの値を見る;
  値が変わってれば、その電圧;
  カウンターにパルスを与え、DAコンバーターの電圧を1段階上げる;
  usleep( xxx )して、コンパレーターが安定するのを待つ;
}

いろいろと測定した結果では、usleepのところで、0.2m秒ぐらい待てば、十分な精度が得られる。

つまり、4096回ループするのに、だいたい0.8秒。これでも、十分遅いが、、、

ところがusleepが曲者で、どうやら、AT互換機は、タイマーの精度が100分の1らしい。
で実際には、usleep(十分小さい値)ってやったら、15m秒ぐらい。つまり、4096回ループするのに、6秒ぐらいかかります。んんん、曲者だなあ。

で、そもそも、オペアンプの出力がちゃんと出るのが遅すぎるので、オペアンプをちゃんとしたコンパレーターにしてみるのかなあ。
以下、ちょっと独り言。
#そもそもコンパレーターとしてのオペアンプが遅いのが理由かどうかも、不明だけど、、、
#カウンターアップの時の、ON/OFFの隙間で毎回いったん0Vになってる、というのもあるかも。
#ってそんなことはないはずか、、単にD-FFつないだだけだもんなあ。
#オペアンプの反応が遅いとしても、データシートによると、出力がついていくのに、
#だいたい10マイクロ秒のオーダーなんで、、なにか違う原因があるんだろうなあ。
#これ以上は、オシロとかで調べないとわからないの???そんなの買えなーい。
##買っても、使い方わからなーい。
独り言、終わり。

で、もっと少ない時間sleepしたいとなったら、どうするんだろ。

ちなみに、そもそも0.2m秒ぐらい待てばいい、というのをしらべるのには、無益に、
  for(k=0;k<20000;k++){
    kk=kk+1;
  };
とかやってみるしかなかったんだけど、、、これ、たかが、電池充電するのに、電気代の無駄だよなあ。
コメントする
お名前:

メール:

URL:

コメント:

トラックバック
この記事へのトラックバックURL:
これまでに受信したトラックバックはありません。

処理時間0.299秒