前回の記事に続き,今回はArduinoのIOの速度を測っていきます.
手元にはDueしかないのですが,RA4M1マイコンのボードが必要になり,Uno R4 Minimaの互換ボードを購入しました.
だからと言って互換品を大いにお勧めすることはできないので純正品の購入リンクを貼っておきます.
Arduino Uno R4 Minima(純正)の購入はこちらから!
前回の記事でも述べましたが,このボードのRA4M1マイコンは最大14 bitの高性能ADCを搭載しています.
この高性能ADCを活用するためには,以下の処理が必要になります.
void setup() {
analogReadResolution(14);
}
このanalogReadResolution()関数でADCの読み取りビット数を指定します.
このADCはハードウェア14 bitで,後からビット処理で10 bitに落としていると考えられます.
ですが,そのことをすっかり忘れてADCの速度をビット数ごとに測ってみました.
が,どれも同じだったので数字だけ言っておきます.
結果は47,619 Sa/s(毎秒47,619読み取り)でした.
その速度はArduinoの浮動小数点演算で導かれた値なので,桁数誤差は大きいです.
ただ毎秒50,000読み取りには到らないという事実は分かりました.
デジタル入力はアナログ入力の遅さとは裏腹に高速です.
833,333 Sa/sです.
不確かな記憶ですが,関数電卓で割り出した値は825,000 Sa/s程度だったと思います.
Arduino Dueはアナログ入力243,902 Sa/sという,もはや比べるまでもない優秀な成績を残していますが,デジタル入力では同じ値を叩き出しています.
放射線カウンターとするなたデジタル入力を用いるのが良さそうです.
しかし簡易エネルギー測定も目指しているためアナログ入力で頑張ることにしています.