FPGAベースのArduino互換機”XLR8″のアナログ入力について

<XLR8について>
Alorium Technologyの”XLR8″(写真下)はIntel MAX10 FPGAにATmega328互換機能を書き込んだArduino UNO互換ボードです。ユーザーがFPGAのXcelerator Blocksというエリアに機能を追加することができます。FPGAプログラムはライブラリとして提供されているものを使うこともできますし、独自のプログラムを作成することもできるそうです。

OLYMPUS DIGITAL CAMERA

<購入先の例>
https://www.digikey.jp/product-detail/ja/alorium-technology-llc/XLR8R22M08V5U0DI/2003-1000-ND/9607423

<はじめに>
XLR8のアナログ入力は12ビットで、しかも10ビットのArduino UNOよりも高いサンプリングレートで使うことができるということなので興味を持ちました。また、Arduino UNOは高いサンプリングレートで使用した時に誤差が大きくなるということですので、サンプリングレートと同時に測定データの誤差を視覚的に把握したいと思いました。
https://www.aloriumtech.com/adc-12/

<調査方法>
アナログ入力で得られたデータをいったん配列(500要素)に保存して、データがすべて書き込まれた後でシリアル出力でPCに出力するスケッチを作成しました。受け取ったデータはArduino IDEのシリアルプロッタでグラフに表示させます。
アナログ信号としてはファンクションジェネレータの三角波を入力しました。三角波の周波数を調整してシリアルプロッタに表示されたデータが目視で1周期となる周波数を求め、概略のサンプリングレートの値を計算しました。

<分かったこと>
私なりの結論ですが、XLR8のアナログ入力はUNOに比べて分解能が4倍で、サンプリング周波数が3.7倍程度高く(最大250KHz)まで使えそうなので一考に値すると思います。

 

OLYMPUS DIGITAL CAMERA
OLYMPUS DIGITAL CAMERA

<具体的な調査方法>
Arduino UNOのアナログ電圧のサンプリングレートは、ADCクロックの分周比で設定できます。下記スケッチのADCSRAの下位3ビットに”001″から”111″を書き込みます。デフォルトの分周比は128(“111”)で9.6kHzのサンプリングレートです。分周比が小さいほどサンプリングレートが高くなりますが、誤差も大きくなるそうです。三角波を入力することで誤差の程度を視覚的に判断したいと思います。三角波はおよそ0-3Vです。

Arduinoのスケッチは要素数500個の配列に測定データを記憶させて、測定が終了してからシリアルプロッタでデータをグラフに表示することにしました。

XLR8のデフォルトの分解能は10ビットなのでライブラリ”XLR8ADC”を使ってsetup関数の中で12ビットに変更します。
スケッチの”XLR8ADC.begin();  XLR8ADC.set12bitMode();”が12ビットに変更している箇所です。その他はUNOで使っているスケッチと同じです。

<UNOの結果>
Arduino UNOのデフォルトの状態(分周比128)です。シリアルプロッタのグラフには500個のデータが表示されます。データを見ながら周波数を調整して、三角波の1周期が表示されるようにしたところ18Hzでした。18Hzの1周期は55.5msecで、500データありますから、0.111msec間隔となり、サンプリング周波数は9kHzぐらいと見ることができます。グラフのピーク値は1024*3/5=614あたりになっています。

16分周

8分周から波形にギザギザが少し見え始めました。

4分周で誤差が目立ち始めました。

2分周はどこが1周期なのか判別ができません。
ということで、Arduino UNOでサンプリングレートを上げたい場合は16分周ぐらいを使うようです。

128分周—–18Hz–サンプリング周波数9KHz
64———測定せず
32———測定せず
16———133Hz–サンプリング周波数66.5KHz
8———-236Hz–サンプリング周波数118KHz
4———-385Hz–サンプリング周波数192.5KHz
2———-1周期の判断できず

<XLR8の結果>
XLR8の128分周のグラフです。18Hz、0-3Vの信号ですが、12bitなので縦軸が4096*3/5=2458付近の大きな数値になっています。

128分周—–18Hz–サンプリング周波数9KHz
64———測定せず
32———測定せず
16———133Hz–サンプリング周波数66.5KHz
8———-236Hz–サンプリング周波数118KHz
4———-385Hz–サンプリング周波数192.5KHz
2———-400Hz–サンプリング周波数200KHz

FPGAで忠実にATmega328互換の動作をしているようで、サンプリングレートは同じですが、ADCがMAX10のものなので分周比2でも綺麗な波形です。

4.8KHzの信号を入れてみても大丈夫そうです。

<XLR8倍速モードの結果>
さて、XLR8は倍速モードも持っていて、FPGAを書き換えることで16MHZのATmega328から32MHZのATmega328になります。

128分周—–36Hz–サンプリング周波数18KHz
64———測定せず
32———測定せず
16———267Hz–サンプリング周波数133.5KHz
8———-464Hz–サンプリング周波数232KHz
4———-500Hz–サンプリング周波数250KHz
2———-500Hz–サンプリング周波数250KHz

サンプリング周波数は250KHzで頭打ちですが、2分周のグラフも特に変ではありません。

<結果のまとめ>
XLR8のアナログ入力はUNOに比べて分解能が4倍で、サンプリング周波数が3.7倍程度高くまで使えそうなので一考に値すると思います。

LabVIEW Community Editionの情報 (191001)

メイカー、ホームユーザー向け(非商用)に無料で使える「LabVIEW Community Edition」が来年以降オープンされるとのことです。NI Communityでの質疑から分かった情報をまとめます。

– LabVIEW Community Editionは非商用での利用に限り無料で使うことができます。

– LabVIEW Community EditionはLabVIEW Professional Editionと同じ機能が透かしなしで使うことができます。
LabVIEWがインストールされていないPCでも実行できるプログラムを作成することができます。従来のHome/Student Editionはフロントパネルやダイアグラムにエディション名が書かれた透かしが入っていましたが、LabVIEW Community Editionには透かしが入りません。

– Raspberry Pi, BeagleBone, ArduinoでLabVIEWを使うことができるLINXの新しいバージョンが提供されます。

– ベータ版は2019年第4四半期、正式版は2020年5月にLabVIEW2020版でリリースされる予定です。
LINXの新しいバージョンのベータ版はすでに”NI Software Technology Preview”で公開されています。2019年第4四半期にリリースされるベータ版も”NI Software Technology Preview”で公開されます。

以上(191001)

OLYMPUS DIGITAL CAMERA