質問: Spresenseのメインボードと拡張ボードを組み合わせて使用しております。 HPADCを使用した場合の電圧値への変換式を教えてください。 各入力ゲイン(-6,0,6,12,14)に対しての変換式をお願いします。 ![HPで公開されている特性グラフ:この変換式をお願いします。](https://i.stack.imgur.com/XjRVC.png)
回答: ADC値が符号付き16bit(signed short)の値となって取得される(それをvalとする)。 Vref電圧が5.0Vで、それを27KΩと10KΩで抵抗分圧して1.4Vを入力している。 https://developer.sony.com/develop/spresense/docs/hw_docs_ja.html#_ad変換器の使用方法 デシベルとゲインの関係は以下のように表される。 y [dB]=20 * log10(N) [倍] -6dB->1/2倍, 0dB->1倍, 6dB->2倍, 12dB->4倍, 14dB->6倍 電圧Vppに対して取得される電圧への換算式は次のようになると思います。 V=(Vpp/10^(dB/20)*(val+32768)/65536 + (1.4-Vpp/10^(dB/20))/2) * (27+10)/10 理想的には、Vpp=0.7V、-6dB設定で0~5V(=Vref)が-32768~32767になることですが、 抵抗誤差や配線抵抗、入力電圧の精度などによりズレがあります。 ズレるのは元々容量結合を意図したADCのように見えるのでそれもあるかと思います。 https://developer.sony.com/develop/spresense/docs/hw_docs_ja.html#_より微小な信号をad変換する場合 参考にArduino環境でどうしているのかをみてみると、 上限/下限値をもとにリニアにmap()関数でマップしているようです。 個体でのバラつきもありそうですし、実測値からmapして計算するのがリーズナブルな気がします。