テクニカルQ&A |
■AXP-AD02 A/Dコンバータカード |
Question |
---|
Answer |
---|
AXP-AD02は、PCカード(PC Card Standard ,PCMCIA 2.1/JEIDA 4.2およびPCMACIA 2.01/ JEIDA 4.1)に準拠した 8ch 12ビット A/DコンバーターPCカードです。 Windows95/98/Me/2000/XPで利用可能です。 A4. Windows95/98で動作するとなっていますが、開発環境は何が使えますか。 Visual C++、Visual Basic、Delphiなどのビジュアル環境で、アプリケーションを開発する事が出来ます。 Windows95/98対応ドライバーのリリース番号がRel.1.20以前のバージョンですと汎用入出力が利用できません。Rel.1.20以降のドライバーがホームページよりダウンロード出来ますので、そちらを利用して下さい。 汎用入出力の出力電流は5mAです。 A7. Windows95/98でうまく動作しませんなぜですか? AXP−AD02はリソース(IRQ)を1つ消費します。Windowsのデバイスマネージャーで、リソースが競合していないか、確認して下さい。 A8. 英語版のWindows95/98でも動作できますか? AXP-AD02のドライバー自体は言語に関係ありません。しかし、付属しているHELPファイルやサンプルで日本語を使用しておりますので、Helpやサンプルでは不具合が出ると思います。 A9. MS-DOS上で入出力がうまく出来ませんなぜですか?
A10. 0V,5V,-5Vをクロスする点で、不自然なデータがサンプルされました。サンプルされた値が、実際よりも200mVほどずれているようにおもいます。 たしかに指摘されるような不具合がドライバに存在していましたので、その修正版をホームページにアップデートいたしました。 A11. 連続サンプリング時のデータ取得方法について、参考になるソースプログラムはありますか。 システムタイマによるメッセージを約100mSec毎に発生させて、連続サンプリングモードによるデータ取り込みをおこなわせた事例をVCによるソースの形式でご紹介します。 A12. プログラムをwindows API形式で作っていますが、つまづいています。どのように解決できますか。 (1)サンプリングモード設定(Ad02SetMode)でoneshotを設定(2)サンプリング開始(Ad02StartSampling) (3)サンプリングデータ取得(Ad02GetData)で必要分データを得る --ここまでは問題なし。 (4)再度サンプリング開始(Ad02StartSampling) (5)サンプリングデータ取得(Ad02GetData)で必要分データがあるはずですがデータ数0となってしまっている。 --どうしたら2回目以上のサンプリングでデータが得られるのでしょうか? 2.チャンネルのインクリメントとサンプリングデータの順番は? 3.サンプリング終了時に送出するWM_EOC又はWM_HALF_FULLについての使い方は? ワンショットモードでサンプリングをおこなった後、再度サンプリングをおこなう為には、サンプリングストップ(Ad02StopSampling)実行後、もう一度サンプリングモード設定(Ad02SetMode)からおこなうようにしてください。 A13. 外部クロックをトリガにしてデータ変換したいのですが可能でしょうか? 可能です。 A14. A/D変換のタイマ値を1msに設定して、100ms間隔ごとに、100個のA/Dデータを取込むことは可能でしょうか? デバイスバッファ(512データ)の半分(256データ)揃わないと取込めないようです。モードの設定は、以下のようにしました。1)動作を見てみると、Ad02wGetSamplingStatus()により取得するサンプリング済みデータ数が、mode.cwBuffer = 2000; mode.dwChFirst = 0; mode.dwChLast = 0; mode.dwSampleMode = AD02_SM_CONTINUOUS; mode.dwTimer = 100; mode.dwTrigSource = AD02_TS_INTERNAL; mode.dwVoltageRange = AD02_VR_S10V; となっています。1回目の100ms : 0 2回目の100ms : 0 3回目の100ms : 256 2)また、A/D変換のタイマ値を38のように、100ms間に256データ変換できる数字にすると、100ms毎に256データという個数が取得できます。 (100000[us] / 256 / 10[us] = 39.0625 よって 38) 1),2)から256データ揃わないと受け取れないように感じられます。 上記の通り256個のデータを一括して扱いますので、256個のデータが揃うまではデータの取りこみができません。ハードウェアの構造上、最少データ単位が256個となっております。製品購入時に添付されております取扱説明書の内容についてですが、 汎用入出力ポートに関しての記載で、 ”その他注意事項:カード挿入後数ms 間汎用出力が安定しません。 またカードが挿入された状態でPC電源を投入した場合、 PCが立ち上がる間も同様です。その影響をうけるような装置の場合注意が必要です。” とあります。 これは、入出力の等価回路でいえば、74LS244でコネクタ側に10kΩの抵抗でPULL UPされております。 汎用出力が安定しないとは、10kΩ抵抗のPULL UP電源が安定しないのか、LS244バッファ自体が安定しないのか、 どちらでしょうか? 74LS244の手前は XILINX の XC5202(FPGA) になっています。数msと言う時間はこのFPGAに対する初期データコンフィグレーションの時間です。 A16. VBでのハードウェア割り込みメッセージの受け取り方 連続サンプリングを実行してデータを取り込み、外部からのタイミングでその前後のデータを判別しようとしています。 そのタイミングのデータの判別を正確にしたいので汎用入力からの割り込みの使用を考えています。上記の様な使用方法についてアドバイスがありましたら教えてくださるようにお願いします。 言語:VisualBasic6.0 使用したい割込:汎用入力割込、バッファフル、ハーフバッファフル VisualBasicの下で、ハードウェア割り込みメッセージを受け取るためのサンプルソースをご紹介します。 A.17 A/D入力信号はカード内部の制御電源とアイソレートされていますか? アナログ入力信号はアイソレートされておりません。 A.18 入力最大電圧が±33Vとの事ですが、アナログ入力信号に±33V以下であれば故障しないとの意味でしょうか。 その通りです。アナログマルチプレクサ内部の過電圧クランプ回路により、上記が保証されております。
ドライバソフトウェアのVCサンプルソース、axpad02w.h, axpad02.h, axpad02.libをVCのプロジェクトに追加し、ビルドすると下記のようにリンクエラーが生じてしまいます。 「error LNK2001:外部シンボル”_Ad02wCreate"は未解決です」 「fatal error LNK1120:LNK1120:外部参照2が未解決です」 エラーが発生する原因は、ラッパー関数がプロジェクトに追加されていないためです。axpad02w.cをプロジェクトに追加することによって、エラーは解決いたします。 エラーコード &H2は、ドライバで使用可能なデバイスが検出できなかった場合に発生いたします。発生原因は以下の2点となります、 A.22 外部機器を接続していない状態でサンプルプログラムを実行すると、サンプリングデータとして「82a」などの値を取得するのは何故でしょうか。 外部機器からの入力が「0」の状態でも同様の値を取得します。外部機器を接続していない状態でもサンプリングデータが「0」にならないのはなぜなのでしょうか。AXP-AD02の入力レンジは、-10V〜+10V、-5V〜+5Vの2つから選択可能です。サンプルプログラムは入力レンジを-10V〜+10Vと設定してありますので、入力電圧(Volt)と出力コード(DATA)の関係は以下の通りになります。Volt = ((FS*DATA/4096)-(FS/2)) FS(Full Scale) ±10Vレンジでサンプリングを行った場合はFS=20(V) 4096 分解能 12bitの10進表記 従って、取得したコードと入力電圧の関係は大よそ 000H --> -10V 800H --> 0V FFFH --> +10V となり、82eHは0V付近であることがわかります。なお、 A/Dコンバータの入力端子を開放(オープン)にした状態では、入力インピーダンスが1MΩ程度ありますので、外来ノイズ等の影響により800H丁度にはならない場合があります。その場合は入力をGNDに短絡した状態でご確認下さい。 A.23 S/H(サンプル&ホールド)は付いているでしょうか。 S/Hが付いている場合A/DCの前に1つでしょうか。マルチプレクサーの前にチャネル毎に付いているのでしょうか。S/H回路は、A/DCの前に1つ付いています。マルチプレクサーの前のチャネル毎には付いておりません。チャンネル切り替え時間について、60μsecかかると書かれていますが、例えば8chを計測する場合、最短で変換時間を含む(10+60)*8の560μsec必要ということでしょうか。 S/HをHOLDにするのと同時にチャンネルを切り替えますので、HOLD&A/D変換の最中にチャンネルが切り替わります。その為、60μs*8CH=480μsの時間が最短となります。 A.25 関数名 Ad02SetModeの使用方法に関して。
A.26 ”チャネルインクリメントとタイマサンプリングを組み合わせる場合はdwTimerを 6 以上に設定する必要があります。”の意味を教えて下さい。 複数チャンネルサンプリングの場合、タイマーは1-5の設定ができないのでしょうか。仕様書の通り、チャンネルインクリメントモードでは複数のチャンネルを切り替えるためセトリングタイムが必要となりますので、dwTimerで1-5の設定は出来ません。 A.27 サンプルプログラムでは、サンプリング済みデータの取得を99回行ったら終了するようになっています。より多くのデータを表示させる方法はありますか。 サンプルソースでサンプリング回数を99回としているのはバッファサイズを256ワードと設定しているためです。例えば1000回分のデータを取得したい場合は、バッファサイズに1000ワード以上を設定します。 |