Quantcast
Channel: JH7UBCブログ
Viewing all articles
Browse latest Browse all 440

PIC12F1822_DAコンバータ テスト

$
0
0
 PIC12F1822は、5ビット(32レベル)のDAC(デジタルアナログコンバータ)モジュールを内蔵しています。

 構造の略図を下に示します。簡単な使い方を説明します。

 ラダー型のDA変換器の+電源は、FVR(バッファを介して)、VDDそしてVREF+から選択できます。その選択は
DACCON0レジスタのbit3-bit2(DACPSS)で行います。
00 = VDD
01 = VREF+
10 = FVR+BUFFER
11 = 使用不可
です。

 DACを有効にするのには、DACCON0のbit7(DACEN)をセットします。

 DACの電圧を外部に出力するには、DACCON0のbit5(DACOE)をセットします。電圧は、RA0に出力されます。

 DACの出力レベルの選択は、DACCN1のbit4-bit0(DACR)にデータをセットすることによって行います。

 5ビットですから0~31までの32段階の出力が可能です。

イメージ 4



 まず、DACの動作を確認するために、+電源をFVRとしてBUFFERは、×2とし、+電源を2.048Vとします。

 FVRのBUFFERは、FVRCONのbit3-bit2を10として、×2を選択します。

 DACR=0b00010000=16として、+電源の1/2の電圧を出力してみます。

 main関数を次のようにしました。(PLLEN ONでクロックは32MHzです)

void main() {
    OSCCON = 0b01110000 ;     // 内部クロック8MHz
    ANSELA = 0b00000000 ;     // アナログPORTを使わない
    TRISA  = 0b00001000 ;     // RA3は入力、他はは出力
    PORTA  = 0b00000000 ;     // PORTの初期化
    /* DAC関係の設定 */
    DACCON0 = 0b10101000;   //DACEN=1,DACOE=1,VSOURCE+=FVR
    DACCON1 = 0b00010000;   //DACR=10000=16
    FVRCON = 0b10001000;    //FVR有効,CDAFVR=10=FVR*2=2.048V
   
    while(1){
   
     }
}

DACの出力電圧を測定してみました。

イメージ 1

 2.048 / 2 = 1.024Vですから、1.03Vは誤差1%程度でOKだと思います。

 次に、DACRの値を連続して変化させてみます。例として鋸歯状波を発生させてみます。

 main関数を次のようにします。(PLLEN ONでクロックは32MHzです)

void main() {
    OSCCON = 0b01110000 ;     // 内部クロック8MHz
    ANSELA = 0b00000000 ;     // アナログPORTを使わない
    TRISA  = 0b00001000 ;     // RA3は入力、他はは出力
    PORTA  = 0b00000000 ;     // PORTの初期化
    /* DAC関係の設定 */
    DACCON0 = 0b10100000;   //DACEN=1,DACOE=1,VSOURCE+=VDD
      
    unsigned char count = 0;
    while(1){
        DACCON1 = count;
        count ++;
        if(count >= 0b00100000){
            count = 0;
        }
     }

 波形をpico scopeで見てみました。

イメージ 2

 直線になるべき部分が若干カーブしています。周期は約40usです。

 プログラムのcount++;の前に10usのdelay(__delay_us(10);)を入れてみました。
 
イメージ 3

 斜め部分がほぼ直線になりました。周期は、約350usです。32レベルのギザギザもそれほど目立ちません。

 以上から、比較的正確な電圧を外部に出力することができます。また、DACを連続的に変化させることにより、あまり高くない周波数であれば、いろいろな波形を作り出すことができると思います。

Viewing all articles
Browse latest Browse all 440

Trending Articles