03-03-2025 11:58 PM
おおはしさま
さっそく、
ダウンロードさせていただきました。ありがとうございました。
この「できるだけ高速にArduinoのアナログ入力でデータ収録する方法 」ですが、この延長上で、多チャンネル化は簡単にできるものでしょうか?
03-04-2025 02:00 AM
このトピックでは1チャンネルの場合で書いていますが、ボーレートが115200のときには1チャンネルで4kHzがほぼ限界でしたので、4チャンネルでは1kHz、8chで500Hzはチャレンジできると思います。Arduino側でサーキュラバッファに1chだけ書いている部分を1ch,2ch,3ch...8chのデータを書くように変更し、LabVIEW側でチャンネルごとのデータに戻して表示させればできるのではないかと思います。
すでに記憶が飛んでいますが、ボーレートとAD変換クロックを変えて10kHzまでできたと書いているので、8chで1.25kHzまではさらにチャレンジできるのではないかと思います。
このトピックではシリアル通信がネックになっているので、イーサネットあるいはWiFiでTCP通信を使えばもっと多チャンネル化、高速化できるだろうと思います。
UNOではありませんがESP32で試した例がありました。
ESP32(Arduino)でTCPサーバーを作ってLabVIEWでデータを受け取る
03-04-2025 03:45 AM
おおはしさま
ありがとうございます。
1kHz/4Chができれば十分です。
ためしに、1kHz/2Chをarduinoで書いてみました(下記)。
これでarduinoの方は動作はするようなのですが、LabVIEWで2Chの波形として表示できていません。
---
03-04-2025 04:25 AM - 編集済み 03-04-2025 04:38 AM
Arduinoプログラムでは
サーキュラーバッファを追加するのではなく、元からある1本のサーキュラーバッファに2チャンネルのデータを交互に書き込むようにします。その方が送受信に関するプログラムの変更が少なくて済むと思います。
1チャンネル目を従来の信号、2チャンネル目を0V(GND)にすると、何も変更していないLabVIEW側でデータ1個おきに0Vで表示されるようになるはずです。そのようになっていれば1個おきにデータを取り出すのはLabVIEWでは比較的簡単です。
03-04-2025 05:36 AM
おおはしさま
最終的には、LabVIEWの出力あるいは、Arduinoの出力をそのまま、既に開発済みのMFC(C++)のWINDOWS Desktop解析アプリに取り込む予定なのです。ですので、LabVIEWは確認用と思っています。
03-04-2025 05:55 AM
WINDOWS Desktop解析アプリでは、
チャンネル1のN個のデータに続いてチャンネル2のN個のデータをシリアルポートで受け取りたい
ということでしょうか。
なるほど。
現状の2チャンネルのArduinoプログラムの場合、LabVIEWプログラムではどのようなデータを受け取っているのでしょうか?
想定と違うものが送られてきてうまく受け取れていないのでしょうか?
03-04-2025 06:52 AM
おおはしさま
そのWindows Desktopアプリのおおもとは私が作ったものではなくて、私は、改良を下に過ぎないのです。Desktopアプリは、nRF52マイコンの出力をUSBシリアル経由でパケットデータとして受け取っています。この書式をまだ理解してないので、引き続き、ここを攻めようと考えています。
明日はいちにち新幹線で遠くへ出張なので、ここらへんのソースを持っていって、うまくいきそうであれば、Arduinoの出力をこれに合わせられればと考えています。
「現状の2チャンネルのArduinoプログラムの場合、LabVIEWプログラムではどのようなデータを受け取っているのでしょうか?想定と違うものが送られてきてうまく受け取れていないのでしょうか?」についても考えてみようと思っています。