基于MCU控制的无极交流调光控制器设计 灯具的无极调光控制器

\u677e\u7ff0\u5355\u7247\u673a\u65e0\u6781\u8c03\u5149\u7a0b\u5e8f\u8bbe\u8ba1

\u8c03\u5360\u7a7a\u6bd4\uff0c\u5177\u4f53\u53ef\u4ee5\u53c2\u716751\u7684\u3002

#include
#define uchar unsigned char
#define uint unsigned int
uchar timer0_tick,ZKB=1;//timer0_tick\u8ba1\u6570\uff0cZKB\u5360\u7a7a\u6bd4
uchar i=0,n=0,temp=0;
code seven_seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//1,2,3, 4, 5, 6, 7, 8, 9
code scan[2]={0xfd,0xfe};
uchar counter[2]={0,0};
sbit AN1=P3^2;//\u8c03\u6574\u4e2a\u4f4d
sbit AN2=P3^3;//\u8c03\u6574\u5341\u4f4d
sbit AN3=P3^4;//\u542f\u52a8\u6309\u952e
sbit AN4=P3^5;//\u786e\u8ba4\u6309\u952e
void delay(uint z)//\u8f6f\u4ef6\u5ef6\u65f6\u51fd\u6570
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
static void timer0_isr(void) interrupt 1 using 0 //\u4e2d\u65ad\u51fd\u6570
{
TR0=0;
TL0=0xf6;
TH0=0xff;
TR0=1;
if (ZKB>99) ZKB=1;
if (ZKB<1) ZKB=99;
counter[0]=ZKB%10;
counter[1]=ZKB/10;
n++;
if(n==100)
{
n=0;
i++;
if(i==2) i=0;
P0=seven_seg[counter[i]];
P2=scan[i];
}
timer0_tick++;
if(timer0_tick++==100)
{
timer0_tick=0;

}
if(AN2==0)
{
delay(100);
if(AN2==0)
{
temp=1;
counter[0]++;
if(counter[0]==10)
{
counter[0]=0;
}

}
}
if(AN1==0)
{
delay(100);
if(AN1==0)
{
temp=1;
counter[1]++;
if(counter[1]==10)
{
counter[1]=0;
}

}
}
ZKB=counter[0]+counter[1]*10;
if(AN4==0)
{
delay(5);
if(AN4==0)
temp=0;
}
if(temp==1)
P3_7=0;// P3_7\u4e3a\u8109\u51b2\u8f93\u51fa\u5f15\u811a
else
{
if (timer0_tick<=ZKB) /*\u5f53\u5c0f\u4e8e\u5360\u7a7a\u6bd4\u503c\u65f6\u8f93\u51fa\u4f4e\u7535\u5e73\uff0c\u9ad8\u4e8e\u65f6\u662f\u9ad8\u7535\u5e73\uff0c\u4ece\u800c\u5b9e\u73b0\u5360\u7a7a\u6bd4\u7684\u8c03\u6574*/
{
P3_7=1;
}
else
{
P3_7=0;
}

}
}
static void timer0_initialize(void)//\u4e2d\u65ad\u521d\u59cb\u5316
{
EA=0;
timer0_tick=0;
TR0=0;
TMOD=0x01;
TL0=0xf6;
TH0=0xff;
PT0=0;
ET0=1;
TR0=1;
EA=1;
}
void main(void)
{
STAR: delay(100);
if(AN3!=0) goto STAR;//\u6309\u952e3\u542f\u52a8\u8109\u51b2
timer0_initialize();
while(1);
}
//\u6309\u6309\u952e3\u542f\u52a8\u8109\u51b2\u5668\uff0c\u521d\u59cb\u8bbe\u7f6e\u5360\u7a7a\u6bd4\u4e3a1%\uff0c\u6309\u952e1\u8c03\u6574\u5341\u4f4d\uff0c
//\u6309\u952e2\u8c03\u6574\u4e2a\u4f4d\uff0c\u4e00\u65e6\u8c03\u6574\uff0c\u8f93\u51fa\u4e3a0\uff0c\u5fc5\u987b\u6309\u786e\u8ba4\u952e\u786e\u8ba4\uff0c
//\u8f93\u51fa\u6b63\u786e\u8109\u51b2.\u53ef\u4ee5\u5360\u7a7a\u6bd41-99%\u4efb\u610f\u8c03\u8282\u3002

\u4e0d\u662f\u65e0\u6781\u8c03\u5149\uff0c\u662f\u5206\u6bb5\u63a7\u5236\u5668\u3002\u65e0\u6781\u8c03\u5149\uff0c\u5149\u6e90\u53ea\u662f\u4e00\u4e2a\u3002\u5206\u6bb5\u63a7\u5236\uff0c\u5c31\u662f\u63a7\u5236\u51e0\u7ec4\u5206\u522b\u70b9\u4eae\u3002

1 调光控制器设计

在日常生活中,我们常常需要对灯光的亮度进行调节。本调光控制器通过单片机控制双向可控硅的导通来实现白炽灯(纯阻负载)亮度的调整。双向可控硅的特点是导通后即使触发信号去掉,它仍将保持导通;当负载电流为零(交流电压过零点)时,它会自动关断。所以需要在交流电的每个半波期间都要送出触发信号,触发信号的送出时间就决定了灯泡的亮度。

调光的实现方式就是在过零点后一段时间才触发双向可控硅开关导通,这段时间越长,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。

这就要求要提取出交流电压的过零点,并以此为基础,确定触发信号的送出时间,达到调光的目的。

1.1 硬件部分

本调光控制器的框图如下:

控制部分:为了便于灵活设计,选择可多次写入的可编程器件,这里选用的是ATMEL的AT89C51单片机。

驱动部分:由于要驱动的是交流,所以可以用继电器或光耦+可控硅(晶闸管SCR)来驱动。继电器由于是机械动作,响应速度慢,不能满足其需要。可控硅在电路中能够实现交流电的无触点控制,以小电流控制大电流,并且不象继电器那样控制时有火花产生,而且动作快、寿命长、可靠性高。所以这里选用的是可控硅。

负载部分:本电路只能控制白炽灯(纯阻负载)的亮度。

1.2 软件部分

要控制的对象是50Hz的正弦交流电,通过光耦取出其过零点的信号(同步信号),将这个信号送至单片机的外中断,单片机每接收到这个同步信号后启动一个延时程序,延时的具体时间由按键来改变。当延时结束时,单片机产生触发信号,通过它让可控硅导通,电流经过可控硅流过白炽灯,使灯发光。延时越长,亮的时间就越短,灯的亮度越暗(并不会有闪烁的感觉,因为重复的频率为100Hz,且人的视觉有暂留效应)。由于延时的长短是由按键决定的,所以实际上就是按键控制了光的强弱。

理论上讲,延时时间应该可以是0~10ms内的任意值。在程序中,将一个周期均分成N等份,每次按键只需要去改变其等份数,在这里,N越大越好,但由于受到单片机本身的限制和基于实际必要性的考虑,只需要分成大约100份左右即可,实际采用的值是95。

可控硅的触发脉冲宽度要根据具体的光耦结合示波器观察而定,在本设计中取20 μs。程序中使用T1来控制这个时间。

对两个调光按键的处理有两种方式:一种是每次按键,无论时间的长短,都只调整一个台阶(亮或暗);另一种是随按键时间的不同,调整方法不同:短按只调整一个台阶,长按可以连续调整。如前面所述,由于本设计中的台阶数为95(N=95),如果使用前一种方式,操作太麻烦,所以用后者较为合理。

2 各单元电路及说明

2.1 交流电压过零点信号提取

交流电压过零点信号提取电路如图2所示,图中的同步信号就是我们需要的交流电压过零点信号。各部分波形如图3所示。

图中整流后波形中的水平虚线表示光藕P52l输入二极管的门限电压。P521是TLP521的简称,下图是其引脚图。引脚图中器件名的后缀“-1”表示包含一组光藕。

2. 2 主控单元

主控单元以AT89C51单片机为核心,交流电压过零点信号提取电路中产生的同步信号SYN接到AT89C5l的INT0,此信号的下降沿将使AT89-C51产生中断,以此为延时时间的起点。

三个按键只用于控制一路灯:一个为开关,另外两个分别为提高亮度和降低亮度。

74HC573用于输出控制可控硅的导通的触发信号。

220V交流主电源导通区间、同步信号和触发信号的时序关系如图6所示。

图中的阴影部分表示可控硅的导通区间,它的大小决定了灯的亮度。改变延时时间可改变触发信号和同步信号的相位关系,也改变了可控硅的导通区间的大小,达到调光的目的。

 2.3 驱动单元

图中,L1_D是单片机输出的触发信号,该信号通过光控可控硅MOC3022去驱动可控硅T435。受控的白炽灯接在Ll和零线(图中未画出)之间。

MOC3022是DIP-6封装的光控可控硅。其1、2脚分别为二极管的正、负极:4、6脚为输出回路的两端;3、5脚不用连接。如图8所示。

T435-400是可控硅,“4”表示主回路电流是4A;“35”表示触发端的最大电流是35mA,一般该端有最大电流的5%就可保证可靠地触发。T435-400外型图如图9所示。

3 程序流程图

4 结束语

本控制器使用了三个开关控制一路灯,主要是为了在教学过程中降低难度。也可改为一个开关控制一路灯,比如短按为开、关,第一次长按为降低亮度,连续的第二次长按为提高亮度等。电路不用改动,只需修改程序即可。

学生通过制作该调光控制器,可以掌握单片机、光藕和可控硅等方面的知识和使用技能,特别是后两者,学生较少接触。由于该调光控制器调光的效果比较好,对提高学生的学习兴趣有很大帮助,教学效果良好。

  • 澶槼鑳借矾鐏郴缁熷師鐞嗗浘
    绛旓細鎺у埗鍣ㄧ敤宸ヤ笟绾MCU鍋氫富鎺у埗鍣,閫氳繃瀵圭幆澧冩俯搴︾殑娴嬮噺,瀵硅搫鐢垫睜鍜屽お闃宠兘鐢垫睜缁勪欢鐢靛帇銆佺數娴佺瓑鍙傛暟鐨勬娴...閲囩敤浣曠鍏夋簮鏄お闃宠兘鐏叿鏄惁鑳芥甯镐娇鐢ㄧ殑閲嶈鎸囨爣,涓鑸お闃宠兘鐏叿閲囩敤浣庡帇鑺傝兘鐏佷綆鍘嬮挔鐏鏃犳瀬鐏...鍒╃敤PWM鎺у埗LED鐨勪寒搴,闈炲父鏂逛究鍜岀伒娲,鏄渶甯哥敤鐨勮皟鍏鏂规硶,PWM鐨勯鐜囧彲浠庡嚑鍗丠z鍒板嚑鍗僈Hz銆 PWM璋...
  • 鏅鸿兘鐓ф槑绯荤粺鐨勫疄鐢ㄥ姛鑳
    绛旓細鐩墠鏅鸿兘鎺у埗绯荤粺鍏锋湁浠ヤ笅鍔熻兘锛1锛屾櫤鑳界郴缁熻鏈変腑澶洃鎺ц缃紝瀵规暣涓郴缁熷疄鏂戒腑澶洃鎺э紝浠ヤ究闅忔椂璋冭妭鐓ф槑鐨勭幇鍦烘晥鏋滐紝渚嬪绯荤粺璁剧疆寮鐏柟妗堟ā寮忥紝骞跺湪璁$畻鏈哄睆骞曚笂浠跨湡鐓ф槑鐏叿鐨勫竷缃儏鍐碉紝鏄剧ず鍚勭伅缁勭殑寮鐏ā寮忓拰寮/鍏崇姸鎬併2锛屽叿鏈夌伅鍏峰紓甯稿惎鍔ㄥ拰鑷姩淇濇姢鐨勫姛鑳斤紱3锛屽叿鏈夌伅鍏峰惎鍔ㄦ椂闂达紝绱璁板綍锛屽拰鐏叿浣跨敤...
  • 浠涔堟槸鏃犳瀬鐏晩?鏈変粈涔堢壒鐐逛箞?
    绛旓細浠270OK锝650OK鐢卞鎴锋牴鎹渶瑕侀夋嫨锛岃屼笖鍙埗鎴愬僵鑹茬伅娉★紝鐢ㄤ簬鍥灄瑁呴グ锛8銆佸厜琛颁綆銆6涓囧皬鏃跺厜閫氶噺缁存寔鐜囦笉浣庝簬70锛咃紱9銆佷笉闇棰勭儹銆傚彲绔嬪嵆鍚姩鍜屽啀鍚姩锛屽娆″紑鍏充笉浼氭湁鏅氬甫鐢垫瀬鏀剧數鐏腑鐨勭伅涓濇簠灏勭瓑琛伴鐜拌薄锛10銆佺數姘旀ц兘浼樿壇銆傞噰鐢↖C鑺墖鍙婂鐢靛帇璁捐锛屽姛鐜囧洜鏁伴珮锛岀數娴佽皭娉綆銆傚彲鏅鸿兘璋冨厜锛...
  • 鎯崇煡閬揇ALI鎺ュ彛鍗忚鐨勮缁嗗唴瀹,鍝綅甯府蹇欏晩!!
    绛旓細鏍囧噯鎸囦护鐨勭1 瀛楄妭涓哄湴鍧瀛楄妭,鐢ㄤ簬瀵笵ALI 浠庢満鐨勫鍧; 绗2 瀛楄妭涓哄懡浠ゅ瓧鑺,鐢ㄦ潵鎺у埗瀵诲潃寰楀埌鐨凞ALI 浠庢満銆備娇鐢ㄦ爣鍑嗘寚浠,涓绘帶鍒跺櫒鍙互瀹炵幇瀵笵ALI 浠庢満鐨勫垎缁勬帶鍒躲璋冨厜鎺у埗銆佸満鏅瀹氱瓑鍔熻兘銆備笓鐢ㄥ懡浠や笉鍖呭惈鍦板潃瀛楄妭,涓ゅ瓧鑺傚唴瀹归兘鏄懡浠ょ爜,浣跨敤骞挎挱鏂瑰紡鍙戦,涓昏鐢ㄦ潵瀵笵ALI 绯荤粺杩涜鍦板潃鍒濆鍖栥3. 1 ...
  • PWM浣庨璋冨厜绌剁珶瀵逛汉鐪兼湁澶氬ぇ鍗卞?
    绛旓細鑰孭WM淇″彿鏄父鐢ㄧ殑闅旂鎶鏈紝鍦ㄥ吋椤炬ā鎷熼噺淇℃伅浼犺緭鐨勫悓鏃跺疄鐜伴殧绂汇備紶缁熶笂鐢ㄦ潵瀹炵幇妯℃嫙閲忕殑妫娴嬪拰PWM淇″彿鐨勯殧绂昏緭鍑虹殑甯哥敤鏂规硶锛屾槸缁忓父閫氳繃杩愭斁銆MCU鍜屽垎绔嬪櫒浠剁粍鎴愮殑鐢佃矾鏉ュ疄鐜板姛鑳斤紝甯稿父闇瑕佽秴杩30涓厓鍣ㄤ欢锛岀郴缁熷啑鏉傦紝绮惧害鍜屽彲闈犳у線寰涓嶅ソ銆侺ED 鐓ф槑鏃犵骇璋冨厜锛氭ā鎷熺洿娴佽皟鍏変竴鑸槸閫氳繃妯℃嫙鐢靛钩淇″彿鏀瑰彉LED ...
  • 扩展阅读:视频速度控制器手机版 ... 新能源汽车mcu控制器 ... 控制器型号参数表 ... 控制器型号查询 ... 调光器怎么接线图片 ... 控制器大了会烧电机吗 ... 宇电ai-温控器说明书 ... mcu整车控制器 ... tmc太阳能全智能控制仪 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网