60歳からの電子工作ノート

生涯学習として取り組んでいます。

ペルチェ制御用ボードの試作(A/D変換データの収集)

概要

24 ビットΔ-Σ A/D コンバータ(DSADA)のA/D変換データを収集するソフトを作成し、入力電圧(-2.5~2.5V)に対するA/D変換データを得ました。A/D変換データ(1000回分)は、ScottPlotのsignal plotと ヒストグラムで表示しています。 (資料1*1を参考にしています。)

f:id:vABC:20220101162536p:plain
Fig. A/D変換データ収集ソフト
パソコン側の処理
f:id:vABC:20220103072948p:plain
Fig. パソコン側フロー図、画面と保存ファイル

・「SRART」ボタンで「A/D変換データ収集開始コマンド」を送信します。2秒後に「収集状態 読み出しコマンド」を送信します。
マイコンからのレスポンスが「収集中」の場合、2秒後に同じコマンドを送信します。(「収集完了」なるまで繰り返します。)
・「収集完了」の場合、「A/D変換データ読み出しコマンド」を送信します。
・レスポンスのA/D変換データ(1000回分)を、時系列とヒストグラムで表示します。
・「Save」ボタンで、A/D変換データ(1000個)と統計情報(平均値、標準偏差、最小値、最大値)、メモ(自由書き込み)をCSV形式で保存します。
・「Open」ボタンで、保存ファイルを開いてグラフ表示します。

プログラム

GitHubに登録しました。(xaml,csと CSV)
https://github.com/vABCWork/WPF-Histogram

・ConfSerial.xamlとConfSerial.xaml.cs は下記と同じです。
https://vabc.hatenadiary.jp/entry/2021/11/21/085446

マイコン側の処理
f:id:vABC:20220102072736p:plain
Fig. マイコン側 メインフロー図とA/D変換

・A/D変換
パソコンから送信された「収集開始コマンド」を受信するとA/D変換を開始します。A/D変換は20msec毎に実施され、A/D変換データを格納領域へ格納します。A/D変換は1000回行うと終了します。20秒 (20msec x 1000 = 20000msec )かかります。

f:id:vABC:20220102083138p:plain
Fig. タイマとA/D変換割り込み

タイマ割り込み(10msec)によりA/D変換の開始タイミング(20msec毎)をつくります。「A/D変換完了割り込み」は、1チャンネルのA/D変換終了で発生します。「スキャン完了割り込み」は、A/D変換する全チャンネルのA/D変換終了時に発生します。今回A/D変換するのは1チャンネルだけです。

・通信

f:id:vABC:20220102085358p:plain
Fig. 通信処理

受信は「CPUの受信割り込み」を使用します。コマンド受信後、そのコマンドに対するレスポンスを作成します。レスポンスの送信は「送信割り込み」発生させて、「DMA」を起動します。全てのデータ転送後、「DMA転送終了割り込み」が発生します。その後に「送信終了割り込み」を発生させています。

・設定内容

f:id:vABC:20220110071943p:plain
Fig. AFEとDSADの設定
プログラム

・ファイル

f:id:vABC:20220102113417p:plain
Fig. ファイル

・次のファイルをGitHubに登録しました。
test1n.c, timer.c, timer.h, dsad.c, dsad.h, sci.c, sci.h, dma.c, dma.h

https://github.com/vABCWork/dsad1000

テスト結果

AIN4(-), AIN5(+) への入力電圧とA/D変換データ。 
A/D変換を1000回行い、その平均値をA/D変換データとしています。(室温 19℃)

f:id:vABC:20220102124050p:plain
Fig. 入力電圧とA/D変換データ

*1:資料1「RSSKRX23E-A PCツールプログラム操作マニュアル(R20AN0540JJ0201 Rev.2.01)」