ADコンバーター
ADコンバーターでL電流をサンプリングする
Note
回路ファイルはTOPページからダウンロードできます。
Example
adc/ADC.cvt2
ADコンバーターの挙動を示します。 本サンプルモデルでは、ADCブロックを用いてL電流をサンプリングします。L電流はスイッチング周波数のリップル電流があるため、サンプリングポイントで電流の値が大きく変わります。その様子を確認しましょう。
この例では、L電流を IVSensor
を用いて、電圧に変換し、ADCブロックの両端でサンプリングします。
ADCブロックの内部パラメーターは、上図の様になっており、サンプリングした電圧をPRCブロックに取り込んで利用します。PRCブロックには以下の様に記述することでADCブロックのサンプリング結果を取り込むことができます。
IL = output("L","I","FIN");
ADCin = ADC1;
ADCin_int = ADC1DO;
setoutvar(IL);
setoutvar(ADCin);
setoutvar(ADCin_int);
ここで、プログラム中 ADC1
はシンボル名:ADC1 のADCブロックのサンプリング結果であり、 ADC1DO
は ADC1
のサンプリング結果を指定ビット分量子化した結果です。
出力は、ADCブロックを用いずにL電流の FIN
を取得する場合、 ADC1
の出力、ADC1
の量子化された出力の3つを、直接出力変数としてグラフに表示します。
また、 ADC1DO
は以下の式に従って出力されます。
ここで Y
は出力(PRCブロック内では シンボル名+DO
の変数名となります)、 Vi
はADCブロックの両端の電圧です。
Waveformを1[ms]実行し波形を確認してください。 図の様に80us付近を確認すると、電流リップルのどの位置をサンプリングしているかが分かります。
PRCブロックが動作するメイン周期10usの間にPRC.IL:FIN
はリップル電流の最終値を保持し、PRC.ADCin:FIN
はメイン周期の開始から2us(Tsmplで設定)の点を保持しています。
ADCブロックを用いると、このようにメイン周期から任意の点をサンプリングし、PRCブロックに受け渡すことが可能です。
Note
変数をPRCブロックに受け渡すには、プログラム例の様に Output変数(出力変数)
で行う場合と、 ADCブロック
を用いる場合があります。特に理由がなければ、 Output変数
を用いて、 Mode:AVE
でサンプリングすることをお勧めいたします。ADCブロックは、リップルのサンプリングなどPWMと同期させ任意の点をサンプリングしたい場合にご利用いただければ効果的です。
Note
ADCブロックはPRCブロックのほかに、DSPブロック、SLCブロックにも値を受け渡すことが可能です。