5章:PWMによる高周波波形と周波数特性の測定(1)

    作成2014.12.05
     PIC18F4553マイコンのPWM機能を利用すると2.9KHz〜12MHzの高周波波形を得ることができます。この機能を利用した抵抗、 コンデンサ、インダクターの周波数特性測定を検討します。

  1. 周波数特性測定回路図
     周波数特性測定回路図を以下に示します。

     PWM矩形信号はRC2端子から出力され、反転矩形信号がRD5から出力されます。また、基準素子と測定素子が同一特性の場合、回路は対称配置となります。
     高周波信号のAD変換は応答性において無理があるため、ダイオード1N4148を4個使って電流方向を分離します。基準素子から測定素子への電流を平滑化してRA0端子でAD変換します。また、測定素子から基準素子への電流を平滑化してRA1端子でAD変換します。
     ダイオード1N4148の特性は、厳密には電流値に応じて変化するため、単純なON/OFFとして扱うことはできません。

      ダイオード1N4148の仕様は下記を参照願います。
    「1n4148.pdf」にいく。


  2. 周波数特性測定回路外観
     周波数特性測定回路外観を以下に示します。



  3. 評価プログラム
     まずは下記の「41-5.zip」ファイルをダウンロードしてください。
    [41-5.zip]をダウンロードする。

    解凍するとフォルダー内にMy-CDC-Basicフォルダーとdynamic_cdc_demo.exeがあります。

    (1)My-CDC-Basicフォルダー
    *My-CDC-Basic\My-CDC-Basic.Xがソースプログラムです。
    *ファイルの相対位置関係は変えられません。
    *「XC8」用です。

    (2)dynamic_cdc_demo.exe

    (3)注意事項
    *上記プログラムはPIC18F4553用です。


  4. My-CDC-Basicプロジェクトの実行
    (1)AE-USBPIC44基板への電源供給方法
     AE-USBPIC44基板への電源供給方法はいろいろ選択可能となっています。
     プログラム書込み時は、PICKit3から電源供給できますが、外部電源またはUSB接続側から電源を供給した方が動作が安定します。
    *USBから電源を供給を選択しました。(この場合、PICKit3から電源供給は不要です。)
    (2)以下の手順でプログラムを書込みます。
    (3)AE-USBPIC44基板とPICkit3を接続し、USBをパソコンに接続します。
    (4)AE-USBPIC44基板のUSBをパソコンに接続します。(電源供給設定はUSBとします。)
    (5)Make and Program Device(Project My-CDC-Basic)ボタンを押します。

    (6)プログラムを書込みが終了するとAE-USBPIC44基板は実行状態になります。
    (7)WindoWsサンプルプログラムを起動します。
    (8)dynamic_cdc_demo.exeがWindoWsサンプルプログラムです。
    (9)dynamic_cdc_demo.exe起動画面でSend Dataに「AA#0#」を入力してSend Dataボタンを押すと周波数0モードから12モードまでの測定結果が表示され、最後の周波数設定は0モードに設定されます。

    (10)上記画面において、#がデータの区切り記号になっています。
    (11)コマンドAA#以外では、測定は実行されません。


  5. 測定データの見方
    (1)周波数モード
     周波数モードは以下のように設定されています。
    0=2.93 KHz
    1=5.86 KHz
    2=11.72 KHz
    3=23.44 KHz
    4=46.88 KHz
    5=93.75 KHz
    6=187.5 KHz
    7=375 KHz
    8=750 KHz
    9=1.5MHz
    10=3MHz
    11=6MHz
    12=12MHz

    (2)RA0ポート電圧(2列目)
    *電源電圧が3.25Vの時、4096=3.25Vとなります。
    *電圧(mV)=0.793*計測値 となります。
    *計測値=2048の時、電圧=0.793*2048=1625mVとなります。

    (3)RA1ポート電圧(3列目)
    *電源電圧が3.25Vの時、4096=3.25Vとなります。
    *電圧(mV)=0.793*計測値 となります。
    *計測値=2048の時、電圧=0.793*2048=1625mVとなります。


  6. PWM出力波形とADC入力波形
    (1)0モード=2.93 KHzPWM出力波形
    *黄色がRC2端子出力波形
    *緑色がRD5端子出力波形


    (2)0モード=2.93 KHzADC入力波形
    *黄色がRA0端子入力波形
    *緑色がRA1端子入力波形


    (3)12モード=12MHzPWM出力波形
    *黄色がRC2端子出力波形
    *緑色がRD5端子出力波形


    (4)12モード=12MHzADC入力波形
    *黄色がRA0端子入力波形
    *緑色がRA1端子入力波形


    (5)10モード=3MHzPWM出力波形
    *黄色がRC2端子出力波形
    *緑色がRD5端子出力波形


    (6)10モード=3MHzADC入力波形
    *黄色がRA0端子入力波形
    *緑色がRA1端子入力波形



  7. 基準素子1kΩ、測定素子1kΩの場合の測定結果
     基準素子1kΩ、測定素子1kΩの場合の測定結果グラフを以下に示します。



  8. 基準素子1kΩ、測定素子100pFの場合の測定結果
     基準素子1kΩ、測定素子100pFの場合の測定結果グラフを以下に示します。



  9. 基準素子1kΩ、測定素子1mHFの場合の測定結果
     基準素子1kΩ、測定素子1mHFの場合の測定結果グラフを以下に示します。



  10. PWMの基本プログラムコード
     My-CDC-Basic\My-CDC-Basic.Xには全てのプログラムコードが記載されていますが、 多くはUSB通信に関するコードでありPWM関連コードは僅かです。
    (1)main.c MAIN_RETURN main(void)のPWM関連コード
    TRISC   =	0b00110000;	//D-,D+(USB用)RC4とRC5を入力に設定、RC2出力設定
    TRISD   =	0b00000000;//RD5出力設定
    LATC    =	0b00000000;//ラッチ無し
    LATD    =	0b00000000;
    
    // CCPのモードをPWM mode: P1A, P1C active-low; P1B, P1D active-highに設定
    CCP1CONbits.CCP1M3=1;
    CCP1CONbits.CCP1M2=1;
    CCP1CONbits.CCP1M2=1;
    CCP1CONbits.CCP1M0=0;
    //10 = Half-bridge output: P1A, P1B modulated with dead-band control; P1C, P1D assigned as port pins
    CCP1CONbits.P1M1=1;
    CCP1CONbits.P1M0=0;
    
    (2)app_device_cdc_basic.cのヘッダ部
    void SetPWM(unsigned char N);
    unsigned char V_T2CKPS0[13]={1,1,1,1,1,1,1,1,1,1,0,0,0};
    unsigned char V_T2CKPS1[13]={1,1,1,1,1,1,1,1,0,0,0,0,0};
    unsigned char V_PR2[13]={255,127,63,31,15,7,3,1,3,1,3,1,0};
    unsigned char V_DC1B1[13]={0,0,0,0,0,0,0,0,0,0,0,0,1};
    unsigned char V_CCPR1L[13]={128,64,32,16,8,4,2,1,2,1,2,1,0};
    
    (3)void SetPWM(unsigned char N)の呼び出し
    SetPWM(N);//指定の周波数にPWMを設定、デバッグ用
    
    (4)PWM設定関数
    void SetPWM(unsigned char N)
    {
        T2CONbits.TMR2ON=0;// タイマ2停止
        PR2 =  V_PR2[N];//周期を設定(設定 + 1)=1/(48MHz*(設定+1))
        CCP1CONbits.DC1B1=V_DC1B1[N];//H時間の1/2の単位設定
        CCP1CONbits.DC1B0=0;//H時間の1/4の単位設定
        CCPR1L =V_CCPR1L[N];//Hの時間設定=1/(48MHz*設定)
        T2CONbits.T2CKPS1=V_T2CKPS1[N];//タイマ2プリスケーラ値設定
        T2CONbits.T2CKPS0=V_T2CKPS0[N];//タイマ2プリスケーラ値設定
        TMR2 = 0;// TMR2レジスタをクリア
        T2CONbits.TMR2ON=1;// タイマ2起動
    }
    


  11. 結果の検討
    (1)PIC18F4553マイコンのPWM機能を利用すると2.9KHz〜12MHzの高周波波形を得ることができます。
    (2)この機能を利用した抵抗、コンデンサ、インダクターの周波数特性測定が可能です。
    (3)周波数特性測定回路は基準素子と測定素子の特性が一致すると全ての周波数において、RA0端子の電圧とRA1端子の電圧が等しくなることが確認できました。
    (4)周波数特性測定回路は基準素子と測定素子の特性が異なるとRA0端子の電圧とRA1端子電圧の不一致が生じることが確認できました。
    (5)周波数特性測定回路の基準素子と測定素子の特性が異なる場合、RA0端子の電圧とRA1端子電圧測定結果から、測定素子の特性を逆算できるか?
    (6)測定素子の特性を逆算に関しては、さらに多くの実験が必要になりそうです。




6章:PWMによる高周波波形と周波数特性の測定(2)に行く。

トップページに戻る。