DC→DCコンバーター(最適周波数自動設定)V2

真空管を使用した製作物では、高圧(200V~400V)の電圧が必要となります。
今回製作した、DC→DCコンバータは、入力電圧(数V~数十V)を、出力電圧(数百V)に変換するものです。

以前にも、『DC→DCコンバータ(最適周波数自動設定)』を製作しましたが、ハードおよびソフトの両面を見直し、機能強化、精度向上を図ってみました。

基本的な、動作原理は、『DC→DCコンバータ(最適周波数自動設定)』を参照してください。

<ハード見直し>

  • DCモータ用フルブリッジドライバIC、パワーMOS-FETの単一ドライブのどちらでも可能とする。
  • 出力電圧の変化に追従するために、2系統の平滑回路方式を採用する。
    電圧検出用の平滑回路(平滑用のコンデンサの容量を小さくする)
    電圧利用用の平滑回路(平滑用のコンデンサの容量を大きくする)

<ソフト見直し>

  • CCPモジュールによるPWM(周波数変化型)方式を採用する。
  • 周波数範囲を、500Hz~50kHzまでに拡張する。
    CCPモジュールを、PWMで使用し、その周波数を変化させる。(ソフト負荷を減らす)
    500Hz~2kHzまでは、100Hz単位で変化させる。
    2kHz~50kHzまでは、1kHz単位で変化させる。
  • A/D変換での取り込み回数を多く(平均化)し、安定度を向上させる。
    出力電圧の高低判定の安定化を図るために、A/D変換を50回行い、その平均値で判断する。
  • 最適値を見つける(ロック状態)とLEDを点灯し、その状態を維持する。
  • 繰り返し処理(再測定)を可能とする。(SW1の押下による)

回路図の点線箇所は、どちらでも可能です。

  • 効率重視の場合には、上図の回路を採用してください。
  • より簡易な方法で実現したいのであれば、下図を採用してください。

SW1を押下することにより、繰り返し処理(再測定)をさせることが出来ます。
ダイオード(D1、D2)は、高速タイプを使用してください。

dc2dc_v3_2.c
//********************************************************************************
/*
	<DC→DCコンバータ(最適周波数自動設定)V3>
*/
//********************************************************************************
 
#define		SW		&GPIO, 3
#define		LED		GPIO.F1
 
#define		ON		1
#define		OFF		0
 
//********************************************************************** 
 
void	Pwm_Change_DutyEx(unsigned int duty_ratio)
{
    CCPR1L = duty_ratio >> 2;
    CCP1CON.DC1B0 = (duty_ratio & 0b0000000000000001) == 0 ? 0 : 1;
    CCP1CON.DC1B1 = (duty_ratio & 0b0000000000000010) == 0 ? 0 : 1;
}
 
//********************************************************************** 
 
static	unsigned	short	pr2_tmp;
 
unsigned	int	measurement(double clock, unsigned long start, unsigned long stop, unsigned int step)
{
	static	unsigned	int		max, ad;
	static	unsigned	long	freq, tmp;
	static	unsigned	short	cnt;
	//
	max = 0;
	for (freq = start; freq <= stop; freq += step) {
		tmp = ((1.0 / freq) / clock) * 10.0;
		if ((tmp % 10) >= 5) {
			PR2 = (tmp / 10) + 1;
		} else {
			PR2 = (tmp / 10);
		}
		Pwm_Change_DutyEx((PR2 * 4) / 2);
		//
		LED = ON;
		Delay_ms(25);
		LED = OFF;
		Delay_ms(25);
		//
		ad = 0;
		for (cnt = 0; cnt < 50; cnt++) {
			ad += Adc_Read(0);
			Delay_ms(1);
		}
		ad = ad / 50;
		if (ad > max) {
			max = ad;
			pr2_tmp = PR2;
		}
	}
	return (max);
}
 
//********************************************************************** 
 
void main()
{
	static	unsigned	int		max1, max2, max3, max, ad, tmp;
	static	unsigned	short	pr2_tmp1, pr2_tmp2, pr2_tmp3;
	//
	OSCCON = 0b01110000;	//クロックを8Mhzに設定 
	CMCON0 = 0b00000111;	//コンパレータは使用しない。 
	ANSEL  = 0b00000001;	//A/D変換はAN3を使用する。 
	TRISIO = 0b00111001;	//入出力ポートを設定する。 
	//PWMの初期化
	Pwm_Init(1000);
	Pwm_Change_DutyEx((PR2 * 4) / 2);
	Pwm_Start();
	//
	while (1) {
		//125kHz
		T2CON.T2CKPS1 = 1;	
		T2CON.T2CKPS0 = 0;
		max1 = measurement(0.000008, 500, 1900, 100);	//500Hz~1.9kHzを100Hz単位で測定する。 
		pr2_tmp1 = pr2_tmp;
		//500kHz
		T2CON.T2CKPS1 = 0;	
		T2CON.T2CKPS0 = 1;
		max2 = measurement(0.000002, 2000, 7000, 1000);	//2kHz~7kHzを1kHz単位で測定する。
		pr2_tmp2 = pr2_tmp;
		//2Mhz
		T2CON.T2CKPS1 = 0;	
		T2CON.T2CKPS0 = 0;
		max3 = measurement(0.0000005, 8000, 50000, 1000);	//8kHz~50kHzを1kHz単位で測定する。
		pr2_tmp3 = pr2_tmp;
		//
		max = max(max1, max2);
		max = max(max, max3);
		if (max == max1) {
			PR2 = pr2_tmp1;
			T2CON.T2CKPS1 = 1;	
			T2CON.T2CKPS0 = 0;
		}
		if (max == max2) {
			PR2 = pr2_tmp2;
			T2CON.T2CKPS1 = 0;	
			T2CON.T2CKPS0 = 1;
		}
		if (max == max3) {
			PR2 = pr2_tmp3;
			T2CON.T2CKPS1 = 0;	
			T2CON.T2CKPS0 = 0;
		}
		Pwm_Change_DutyEx((PR2 * 4) / 2);
		LED = ON;
		//スイッチが押されると再度繰り返す。 
		while (Button(SW, 1, 0) == 0)
			;
		while (Button(SW, 1, 1) == 0)
			;
	}
}
 
//********************************************************************************


左側:PIC12F683、2SC1815、TA7291です。
右側:平滑回路です。

手持ちの電源トランスで動作させて見ました。
約49kHzで最大電圧52Vを取り出すことが出来ます。

手持ちの電源トランスで動作させて見ました。
3kHzで最大電圧140Vを取り出すことが出来ます。

手持ちの電源トランスで動作させて見ました。
23kHzで最大電圧72Vを取り出すことが出来ます。

手持ちの電源トランスで動作させて見ました。
35kHzで最大電圧38Vを取り出すことが出来ます。

如何ですか?
トランスのドライブに使用したTA7291Pは、ロジック側電源(7ピン)と出力側電源(8ピン)を別々に設定できますが、今回は同一(+5Vのみ)としました。
出力側電源は規格上で最大20Vまでいけますので、今回の回路構成で20Vにすると、更に高い電圧を得ることが出来ます。

著作権表示 copyright notice

このページは稲崎様の閉鎖したHPのコピーで、著作権は稲崎様にあります。詳細
This page is a copy of Mr. Inasaki's closed website, and the copyright is held by him.Details
  • elechobby/picdic/pic12f683/29.txt
  • 最終更新: 2025/10/17 14:29
  • by 127.0.0.1