智能照明调光模块(基于STM32实现的普通灯泡调光模块)

Posted

篇首语:知识就是力量,时间就是生命。本文由小常识网(cha138.com)小编为大家整理,主要介绍了智能照明调光模块(基于STM32实现的普通灯泡调光模块)相关的知识,希望对你有一定的参考价值。

智能照明调光模块(基于STM32实现的普通灯泡调光模块)

大家好,我是杂烩君。本次分享一个很久之前做的一个小模块。

功能

用STM32控制一个普通灯泡的亮度,一路开关控制普通灯泡电源的通断,另外两路开关分别控制普通灯泡亮度的增加和减小。

调光控制器的原理

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

调光的实现方式就是在过零点后一段时间才触发双向可控硅开关导通,这段时间越长,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。这就需要提取出交流电压的过零点,并以此为基础,确定触发信号的送出时间,达到调光的目的。

硬件

控制部分:主控单元以 STM32F103RBT6 单片机为核心,交流电压过零点信号提 取电路中产生的同步信号 TB 接到STM32F103RBT6 的 EXTI_Line0,此信号的下降沿将使 STM32F103RBT6 产生中断,以此为延时时间的起点。控制部分使用的是现有的最小系统板。

驱动部分:驱动部分主要由可控硅组成。可控硅在电路中能够实现交流电的无触点控制,以小电流控制大电流。动作快、寿命长、可靠性高。所以这里选用的是可控硅。 驱动部分使用的是自己绘制的电路板,电路原理图:

负载部分:本电路智能控制纯阻负载白炽灯。

软件

要控制的对象是 50Hz 的正弦交流电,通过光耦取出其过零点的信号(同步信号),将这个信号送至单片机的外部中断,单片机接收到这个同步信号后启动一个延时程序,延时的具体时间由按键来改变。

当延时结束时,单片机产生触发信号,通过它让可控硅导通,电流过可控硅流过白炽灯,使灯发光。延时越长,亮的时间就越短,灯的亮度越暗(并不会有闪烁的感觉,因为重复的频率为 100Hz,且人的视觉有暂留效应)。由于延时的长短是由按键决定的,所以实际上就是按键控制了光的强弱。

经过实际调试得出,延时时间为0~7ms内的值。在程序中,我把7ms分割为14等份(实际上,分割的分数越大,调节的精度会更高,但是,为了有明显的现象,取14)。对于按键的处理,采用查询法,并且采用按下一次就响应一次的方法,即长按不能连续调整。

主程序:

int main(void)    GPIO_Configuration();    USART_Configuration();    EXTI_Configuration();    PrintfLogo();    Bright=14-z;          //亮度缺省值为7(通过调Z间接得到Bright)    printf("当前亮度 = % d \\r\\n", Bright);     while(1)             //S1(PC6) 调高灯的亮度        if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6) == Bit_RESET)                    delay_ms(5);  //消除抖动            if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6) == Bit_RESET)                            z--;                   //等待按键释放                while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_6) == Bit_RESET);                  if(z==1)                                   z=14;                                Bright=14-z;                printf("当前亮度 = % d \\r\\n", Bright);                             //S2(PC7) 调低灯的亮度        if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7) == Bit_RESET)                    delay_ms(5);  //消除抖动            if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7) == Bit_RESET)                            z++;                  //等待按键释放                while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_7) == Bit_RESET);                if (z==14)                                    z=1;                                Bright=14-z;                printf("当前亮度 = % d \\r\\n", Bright);                            //S3(PC8) 调节灯的亮灭        if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8) == Bit_RESET)                       delay_ms(5);  //消除抖动            if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8) == Bit_RESET)                            /*S3_Num为S3按下的次数,当按下的次数为奇数时灯灭                当按下的次数为偶数时,灯亮,并且亮度值为默认值7*/                S3_Num=S3_Num+1;                //等待按键释放                while(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8) == Bit_RESET);                if(S3_Num%2==1)                                    __set_PRIMASK(1);  //关闭总中断,灯灭                    printf("灯灭\\r\\n");                                else                                    __set_PRIMASK(0);  //打开总中断,灯亮                    printf("灯亮,且亮度值为默认值% d \\r\\n", Bright);                                                       

外部中断函数:

void EXTI0_IRQHandler(void)     if(EXTI_GetITStatus(EXTI_Line0)!=RESET)                                              delay_us(500*z);   //调节z的值来调节灯的亮度           GPIO_ResetBits(GPIOC,GPIO_Pin_11);           delay_us(100);           GPIO_SetBits(GPIOC,GPIO_Pin_11);                    EXTI_ClearITPendingBit(EXTI_Line0);     

验证:


如果文章对你有帮助,麻烦帮忙点赞、收藏、转发,谢谢!

猜你喜欢:

分享一份不错的嵌入式资料汇总贴


私信回复【嵌入式书籍】,可获取博主精心整理的嵌入式电子书一份

相关参考

弱电箱电视模块有用吗(智能照明模块比传统照明好在哪儿)

什么是智能照明控制模块?智能照明控制模块,不只可以控制灯光,还可以控制窗布、电视、空调等设备,智能照明控制模块是可广泛使用于各个领域,包含酒店、办公楼、别墅、家居、会展中心、剧院、博物馆、医院、学校、...

液晶显示模块(基于STM32的数控直流电源)

数控直流电源目录1、介绍    …………2、整体方案    …………3、硬件电路    …………4、软件     …………5、心得小结    …………6、附录:1、元器件…………      2、电路图………… ...

液晶显示模块(基于STM32的数控直流电源)

数控直流电源目录1、介绍    …………2、整体方案    …………3、硬件电路    …………4、软件     …………5、心得小结    …………6、附录:1、元器件…………      2、电路图………… ...

开发指纹模块(基于STM32 MCU和串口TFT LCD模块的指纹识别)

...篇客座文章,STONE技术公司是一家专门从事工业液晶显示模块的公司。2019年11月,我计划开发一个指纹门锁项目。当我选择好指纹识别模块时,项目就被暂停了。不过,我想既然已经购买了指纹识别模块,那还是简单地测试一下...

液晶模块(超低功耗LCD液晶显示电路模块设计 - 调光电路图)

超低功耗LCD液晶显示电路模块设计-调光电路图低功耗,LCD,显示电路,寄存器电路图简介:LCD液晶显示器是一种极低功耗的显示器件,其工作电流小、重量轻、功耗低、寿命长,字迹清晰美观,在便携式仪表以及低功耗应用的较高...

液晶模块(超低功耗LCD液晶显示电路模块设计 - 调光电路图)

超低功耗LCD液晶显示电路模块设计-调光电路图低功耗,LCD,显示电路,寄存器电路图简介:LCD液晶显示器是一种极低功耗的显示器件,其工作电流小、重量轻、功耗低、寿命长,字迹清晰美观,在便携式仪表以及低功耗应用的较高...

灯光调光方式(智能照明方式2-1:调光知识普及(可控硅调光))

智能照明有开关、调光、调色3种控制方式。智能照明:调光指照明光源按照外部或内部命令进行亮度调节,状态值为0-100调光方式分类:可控硅调光,MOS管调光,0-10V调光,DALi调光什么是可控硅调光(前沿)?可控硅调光是指电...

灯光调光方式(智能照明方式2-1:调光知识普及(可控硅调光))

智能照明有开关、调光、调色3种控制方式。智能照明:调光指照明光源按照外部或内部命令进行亮度调节,状态值为0-100调光方式分类:可控硅调光,MOS管调光,0-10V调光,DALi调光什么是可控硅调光(前沿)?可控硅调光是指电...

恒流调光电源(「智能照明调光方式合集之四」-0-10V调光)

一.定义0-10v顾名思义,通过模拟电压信号控制来改变灯具的亮度,需要配置两根信号线,一根是0V,一根是10V,比如0V对应0%,5v对应50%,10V对应100%。0-10v分为恒压和恒流两种方案:恒流0-10v调光电源:主要用于筒射灯、面板灯等灯具...

控制智能调光(智能照明控制系统介绍及优势)

随着人们生活水平的不断提高及对建筑楼宇的智能化需求越来越高,越来越多建筑使用智能照明控制系统,以提供更高层次和舒适的服务。1)系统组成该系统由两部分组成:探测系统和控制系统。探测系统由主动、被动热释电...