PIC−USBIO using BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第173回]
●PICUSBIO−03(122)ADコンバータ(5)DAC出力をADCに入力する(3)FVRをDACの+電源にする
前回までのところではDACのプラス側電源にはVDD(+5V)を割り当ててきました。
それが普通の使い方だと思いますが、DACのプラス側電源にはFVRを割り当てることもできるようです。
FVRはVDD電源に依存しない固定基準電圧で1.024Vがスタンダードですがその倍の2.048Vとさらに倍の4.096Vの3通りを選択できます。
DACの電源電圧としてそんな値のものを使うことがあるのか疑問に思いますが基準電圧として一般的な1.2Vではなくて10bitの10進数に一致する1.024Vという値には何か意味があるのかもしれません。
使い道があるかどうかということについては置くとして、そういう機能があるのならこの際試してみるのも無駄ではないと考えました。
DACのプラス側電源の選択はREFCON1レジスタのbit3とbit2で指定します。
<3:2>=10のときFVRが選択されます。
FVRの値はREFCON0レジスタのbit5、bit4で選択します。
<5:4>=01のとき1.024Vが選択され、10のとき2.048Vが、11のとき4.096Vが選択されます。
REFCON0レジスタとREFCON1レジスタは[第169回]で説明をしています。
前回のプログラムを少し書き換えて、まずはFVR=1.024Vに設定してテストをしてみます。
10行でDACのプラス側電源としてFVRを選択します。
REFCON1の<3:2>=10のときFVRが選択されます。
15行を追加しました。
FVRの設定です。
REFCON0のbit7=1のときFVRがイネーブル(有効)になります。
bit5:bit4=01のときFVRの出力電圧が1.024Vになります。
130行のprint文のdの値は前回と同じでアナログ入力電圧をAD変換して得られたデジタル値を電圧値(mV)に換算して表示します。
その後ろにa*32を追加しました。
テストプログラムではFVR=1.024Vを0、1/32〜31/32に分圧した値をDACから出力してそれをADコンバートした結果を電圧値に直してdとして表示しますが、その値をちょっと見ただけでは本当にFVRを正しく分圧した値がDACから出力されているかどうかはわかりません。
a*32を計算するとその分圧値が求まります。
DACの出力はFVR(=1024mV)をa/32分圧したものなのでそれを計算で求めると1024*a/32になります。
1024/32=32なのでDACの出力電圧はa*32(mV)になります。
こうやって計算をしてみると確かに1024という値には端数が出ないという利点がありますね。
それはともかくとして、それが計算上の値なのでその値とdとを比較することでFVRが正しく分圧されているかどうかを判断することができます。
プログラムを実行しました。
スクロールして見えなくなった部分を下に戻して表示しました。
多少のばらつきはありますが大体計算値に近い値が出ているようです。
このばらつきはADCに由来するものなのか、あるいはその電源(USBの+5V)なのか、またはDACなのかあるいはFVRなのか、色々な原因が考えられます。
ま、しかし、それを追求することは本稿の目的ではありませんから、それには触れないことにします。
さて。
今度はFVR=2.048Vに設定して同じテストを行ないます。
変更するのは15行と130行のみです。
15行でREFCON0のbit5:bit4=10にするとFVRの出力電圧が2.048Vになります。
130行のa*32をa*64に書き換えます。
DACの出力はFVR(=2048mV)をa/32分圧したものなのでそれを計算で求めると2048*a/32になります。
2048/32=64なのでDACの出力電圧はa*64(mV)になります。
プログラムを実行しました。
スクロールして見えなくなった部分を下に戻して表示しました。
さきほどのFVR=1.024Vでの結果と比較すると微妙な変動が見られます。
その差にやはりばらつきがあることからするとおそらくはUSBの+5Vのばらつきではないかと思われますが断定はできません。
ま。時間も無いことですのでそこはスルーすることにいたしましょう。
FVR=4.096Vにプログラムを変更してテストを行ないます。
15行でREFCON0のbit5:bit4=11にするとFVRの出力電圧が4.096Vになります。
130行のa*64をa*128に書き換えます。
DACの出力はFVR(=4096mV)をa/32分圧したものなのでそれを計算で求めると4096*a/32になります。
4096/32=128なのでDACの出力電圧はa*128(mV)になります。
プログラムを実行しました。
スクロールして見えなくなった部分を下に戻して表示しました。
PIC−USBIO using BASIC[第173回]
2023.2.1upload
前へ
次へ
ホームページトップへ戻る