<<まえがき>>
仙台マイクロメイカーフェア('22.06.25)出展の流れで分光器のリニアイメージセンサーからデータを受け取るプログラムを紹介しましたが、2022.12月の大垣マイクロメイカーフェアに出展することが決まりました。近隣の方々にはぜひ足を運んでいただきたいと思います。
その後、Arduinoでリニアイメージセンサーの制御をしつつデータをLabVIEWに送り出すというプロジェクトを進めていましたが、間に合うならば(私は現地には行けませんが、)展示説明を行いたいと思います。この投稿はリニアイメージセンサーのデータをシリアルで渡す時間をできるだけ短くしたいということで作ったVIの紹介です。
<<概要>>
Arduino UNOにSPIでSRAMを追加して、100kHzのクロックをトリガーにしたアナログ入力で5000個のデータを収録した後で16ビットデータをUSBシリアルで送り出したいという状況があったときに、ArduinoプログラムとLabVIEWのサンプルを紹介します。
<<Arduinoプログラム>>
Arduino UNOはメモリが少ないので、「データを記録しておいて、後でまとめてPCに送る」ということができません。
今回はSPI接続のSRAMとしてよく使われている23LC1024を使います。安いのですが、送料の方が高くなるので何か買い足そうかなと思ってしまうので悩ましいところです。でも、UNOの互換機は500円ぐらいで買えるのでSRAMを追加しても1000円しないので予算の厳しい状況では仕事を前に進められる身近な部品となっているのではないでしょうか。
Arduino UNOが使っているAVRは情報が豊富なので少し勉強すれば手ごろなパルス発生器にもなります。今回は100kHzのパルスを作ってアナログ入力のトリガー信号にしました。
<<LabVIEWプログラム>>
キューを使った生産者消費者アーキテクチャーで作るのが楽だと思いました。16ビットデータをバイナリで送るにはVISAシリアルポート構成 VIの「終了文字を有効にする」をfalseにするのがポイントでしょう。あとは、データに含まれていなさそうなヘッダーを決めて試してみるのが良いでしょう。
とりあえずプログラムを圧縮しアップします。