Skip to content

DCDC_Converter

askn37 edited this page Oct 12, 2026 · 1 revision

DC/DCコンバーター

降圧回路 BuckConverter

降圧回路(BuckConverter)の制御は、AC周辺機能ひとつで構成できる。

  • AC0の正入力に、最終出力の電圧フィードバックを抵抗分圧で投入。
  • 負入力に内部固定参照電圧を投入し、正入力と比較。
  • AC0の比較結果出力で、入力電圧をスイッチング。
/* for AVR-DB sample */

/* 5V入力 3.3V出力を想定 */
/* フィードバック分圧抵抗 1kΩ+1kΩ */

pinMode(PIN_PA7, OUTPUT); /* AC_OUT -> PA7 */
/* or */
// pinMode(PIN_PC6, OUTPUT);
// PORTMUX_ACROUTEA = PORTMUX_AC0_ALT1_gc;  /* AC_OUT -> PC6 */

/* 内部参照電圧 2.048V(最大)*/
VREF_ACREF = VREF_REFSEL_2V048_gc;

/* 目標値 3.3V を抵抗分圧1:1 で比較 */
AC0_DACREF = (255 / 2.048) * (3.3 / (1 + 1));

AC0_MUXCTRL = AC_INVERT_bm          /* AC_OUT を反転出力する場合 */
            | AC_MUXPOS_AINP1_gc    /* 正入力 PD3 */
            | AC_MUXNEG_DACREF_gc;  /* 負入力 内部参照 */

AC0_CTRLA = AC_ENABLE_bm            /* AC0 有効化 */
          | AC_OUTEN_bm             /* AC_OUT 出力有効: PA7 または PC6 */
          | AC_HYSMODE_SMALL_gc;    /* 10mV 幅の入力ヒステリシス */

外付け部品の各諸元は、かなり適当でも動作する。(破綻しにくい)

  • AC_OUT を直接降圧回路入力にしても良い。(最大負荷 50mA)
  • 出力平滑化コンデンサ: 1uF 〜 47uF。負荷に対して大きすぎると突入電流が増加する。
  • 電力変換インダクタ: 1uH 〜 47uH。負荷に対して大きすぎると制御誤差が大きくなる。小さすぎると電圧変動が大きくなる。
  • 分圧抵抗:1kΩ+1kΩ 〜 10kΩ+10kΩ。大きすぎると追従精度が低下する。小さすぎると出力ディスチャージとして機能するので、損失が増加する。

昇圧回路 BuckBooster

昇圧回路(BuckBooster)の制御は、以下の 3要素から構成できる。

  • AC周辺機能での 出力電圧フィードバック。
  • TCx周辺機能での PWM波形生成。
  • CCLn周辺機能での PWM出力オン/オフ。

外付け部品の選定では、昇圧用インダクタと、短絡用 FET素子の諸元が重要。

  • インダクタ容量が小さすぎると、過渡応答の都合から PWM周波数が高くなりすぎる。0.2 us レベルのオーダーとするには 10uH 以上が必要。
  • インダクタ容量が大きすぎると、短絡用 FET素子に過大電流が流れる。低オン抵抗かつ高電流対応の FET素子が必要。
  • 逆に言えば 数mA 程度の軽負荷出力を求めるなら(インダクタ容量を削れないので)BuckBooster は損失が大きく向いていない。多段チャージポンプ(必要なら BuckConverter を追加)の方が適する。
/* for AVR-DB sample */

/* 5V入力 12V/1A 出力を想定 */
/* インダクタ容量 47uH、FET素子 IRLML6344(Nch 30V/5A ON=29mΩ)を想定 */
/* フィードバック分圧抵抗 1kΩ+4.7kΩ(分圧比5.7、IO電圧5Vなら 14.2V出力まで許容)*/
/* 無負荷でも 50mA 程度の損失が生じることに注意 */

VREF_ACREF = VREF_REFSEL_2V500_gc;  /* 内部参照電圧 2.5V(最大)*/
AC0_DACREF = (255 / 2.5) * (12.0 / (1 + 4.7));
AC0_MUXCTRL = AC_MUXPOS_AINP0_gc | AC_MUXNEG_DACREF_gc; /* 正入力:PD2 */
AC0_CTRLA = AC_ENABLE_bm | AC_HYSMODE_SMALL_gc;

/* ここでは TCA標準動作だが、TCA分割動作でも良い */
/* 単一傾斜動作で LOW 出力先行 */
/* 4.7uH 〜 10uH クラスのインダクタでは 48MHz PLL動作の TCDが必要になる */
TCA0_SINGLE_PER = (F_CPU / 1e6) * 1.4;
TCA0_SINGLE_CMP0 = (F_CPU / 1e6) * 0.7;     /* FETオン時間 0.7us */
TCA0_SINGLE_CTRLB = TCA_SINGLE_WGMODE_SINGLESLOPE_gc | TCA_SINGLE_CMP0EN_bm;
TCA0_SINGLE_CTRLA = TCA_SINGLE_CLKSEL_DIV1_gc | TCA_SINGLE_ENABLE_bm;

EVSYS_CHANNEL0 = EVSYS_CHANNEL0_AC0_OUT_gc;   /* AC0から フィードバック */
EVSYS_USERCCLLUT2A = EVSYS_USER_CHANNEL0_gc;

CCL_TRUTH2    = CCL_TRUTH_1_bm;               /* フィードバックオンで PWM波形出力オフ */
CCL_LUT2CTRLB = CCL_INSEL0_TCA0_gc
              | CCL_INSEL1_EVENTA_gc;
CCL_LUT2CTRLA = CCL_ENABLE_bm | CCL_OUTEN_bm; /* FET素子 GATE制御: PD3 */
CCL_CTRLA = CCL_ENABLE_bm;

LINKS

multix.jp/てくにかるむ(休眠中)
Multix Zinnia Product SDK [*AVR]
AVR.JP(日本語訳)
AVR-LIBC(日本語訳)

Clone this wiki locally