elechobby:picdic:pic16f88:73

AC電力制御V2

商用電圧(AC100V)を制御するユニットは、以前にも製作しました。AC電力制御
今回は制御する方式を変えてみました。

AC100Vを制御する方式はいろいろと考えられます。

  • 図A電圧そのものを変化させる方式です。通常スライダック(SLIDAC)を使用します。
    取り出せる電流容量が大きくなると高価(2万円前後)になります。(接点寿命有り)
  • 図B電圧の波形を変化させる方式です。通常トライアック+ダイアックを使用します。
    電圧が急激に立ち上がる(最大では0V→140V)のでノイズが発生します。(接点寿命無し)
  • 図C電圧の波形の数を変化させる方式です。
    波形の数を減らせていくと照明器具などではチラツキが発生します。(接点寿命無し)

今回は、図Cの電圧の波形の数を変化させる方式を採用してみました。

100%~0%までの波形です。

AC電圧の波形の開始タイミングは、次のようにして得ることが出来ます。

  • 5V~10VくらいのAC電圧をダイオードで半波電圧とします。
  • その電圧をフォトカプラに入力します。
  • その出力をPICの割り込み信号とします。

AC電圧のON/OFFには、ゼロクロスタイプのソリッドステートリレー(Solid State Relay)を使用します。

通常のリレーは電磁石と接点からなるスイッチを構成しますが、これはその動作を半導体によって実現させた電子部品です。
入力段(電磁石相当部)にLED等の光半導体を用い、出力段(接点部)にトランジスタやトライアック等の半導体制御回路を用いるため、高速応答が可能で、かつ、接点寿命が無いという特徴を持っています。

ソリッドステートリレーの組み立てキットも販売されています。秋月電子

acControl3.c
//********************************************************************** 
/*
  『AC電力制御ユニット』 
*/
//********************************************************************** 
 
static	unsigned	char	FLAG;
 
void	interrupt(){
	if (INTCON.INTF == 1) {
		INTCON.INTF = 0;
		FLAG = 1;
	}
}
 
//********************************************************************** 
 
void main()
{
	static	unsigned	char	buf[6], cnt, onCnt, offCnt;
	//
	OSCCON = 0b01110000;		// クロックは8Mhz 
	CMCON  = 0b00000111;		// コンパレータは使用しない。
	// A/D変換を使用する。 
	ANSEL  = 0b00000010;
	// ポートを初期化する。 
	TRISA  = 0b00111010;
	TRISB  = 0b00001111;
	// 入力割り込みの設定
	INTCON.INTE = 1;
	INTCON.INTF = 0;
	OPTION_REG.INTEDG = 1;
	// LCDを初期化する。 
	Lcd_Custom_Config(&PORTB,4,5,6,7,&PORTA,0,7,6);
	Lcd_Custom_Cmd(LCD_CURSOR_OFF);
	Lcd_Custom_Cmd(LCD_CLEAR);
	Lcd_Custom_Out(1, 1, "AC-controller V3");
	Delay_ms(500);
//	Lcd_Custom_Cmd(LCD_CLEAR);
	//
	INTCON.PEIE = 1;	// これ以降の処理で割り込みを許可する。 
	INTCON.GIE = 1;		// これ以降の処理で割り込みを許可する。 
	//
	PORTA.F2 = 0;
	FLAG = 0;
	onCnt = 5;
	offCnt = 5;
	//
	WordToStr(onCnt * 10, buf);
	Lcd_Custom_Out(2, 1, buf);
	Lcd_Custom_Out(2, 6, "%");
	while (1) {
		for (cnt = 0; cnt < onCnt; cnt++) {
			while (FLAG == 0)
					;
			FLAG = 0;
			PORTA.F2 = 1;
		}
		for (cnt = 0; cnt < offCnt; cnt++) {
			while (FLAG == 0)
					;
			FLAG = 0;
			PORTA.F2 = 0;
		}
		//
		if (PORTA.F5 == 0) {
			while (PORTA.F5 == 0)
				Delay_ms(1);
			onCnt++;
			if (onCnt > 10)
				onCnt = 0;
			offCnt = 10 - onCnt;
			//
			WordToStr(onCnt * 10, buf);
			Lcd_Custom_Out(2, 1, buf);
			Lcd_Custom_Out(2, 6, "%");
		}
	}
}
 
//**********************************************************************

黄色のプッシュスイッチを押すことにより、0%~100%までの11段階に切り替えることが出来ます。

0%~100%までの波形と豆電球の光度合いです。










著作権表示 copyright notice

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