5ビット D/Aコンバータ・モジュール
最近のPIC12F/16Fの1000番シリーズは5bitのD/Aコンバータが追加されており、入力や出力動作を何種類か設定出来ます。使い道も多いと思うので書き出してみました。
[主な動作]
☆入力は+が3つ(VDD.Vref+.FVR Buffer2)、-が2つ(Vref-.VSS:GND)の入力を設定出来ます。
☆出力は外部PINに取り出し(DACOE=1)たり、内部で使うことも出来ます。
☆FVR(FIXED VOLTAGE REFERENCE)はD/A入力の場合別系統なので、電圧設定もA/Dコンバータとは別に設定出来ます。
☆分解能力は5bitで1/32と少し不満です。[使用例]電池動作で電圧チエックをしたい!
入力をVDD(DACPSS=00)とVSS(DACNSS=0)に設定し、出力をPINに出さず(DACOE=0)にA/Dコンバータに入れる(ADCON0.ADCHS=0b11110)。
A/Dコンバータの基準電圧をFVR Buffer1にし(FVRCON.ADFVR=01)1.024Vとする。
これでA/Dコンバータを動作させれば電池電圧を測れます。この時D/Aコンバータは分圧器(3/32:約1/10、入力が1Vを越える為)として作動します(この他もう少し設定が必要)。
電圧が分かるとLCDに表示したり、コントラストの補正や電圧低下のアラーム発生・忠告などに使えます。
DACCON0で各種設定 7-DACEN 1=Enabled 6-DACLPS 1=Positive 0=Neg 5-DACOE 1=OutPutPin Enabled(端子) 0=Dis 4-not use - 3.2-DACPSS 00=VDD
01=VREF+(端子)
10=FVR Buffer2(1.024V 2.048V 4.096V)
11=not use1-not use - 0-DACNSS 1=VREF-(端子) 0=VSS(GND) DACCON1で5bitの選択 - 0b000*****
例:3.3V*3/32=0.309(V)でA/D=302となる。これに逆数(K)を入れると数字が出ます。
302*109=329これをLCDに3.29Vと出せば電圧が分かる。
K=1.024*32/3です。(精度は8%の誤差があるので2桁以上出しても意味が無いかも!)[この方法は]
A/D入力を外部ピンを使わずSoftだけで調べられるのがメリットです。 精度はFVRによりますが、温度的には安定しているようなので使えます。数字を正確にするには何所かで補正する必要があります。なを、A/D入力には温度センサー(ADCON0.ADCHS=0b11101)も含まれているので、興味ある方は実験して下さい。ラフな測定なら使えると思いますが、専用の温度センサー(LM61BIZなど)を使う方が簡単で精度も取れます。
内臓のセンサーを使うメリットはSoftだけでそこそこ測れる、という点でしようか。
2011/8/8 8/15