电话+V:159999-78052,欢迎咨询led灯闪烁不停延时熄灭怎么回事,[小程序设计与开发],[小程序投流与推广],[小程序后台搭建],[小程序整套源码打包],[为个体及小微企业助力],[电商新零售模式],[小程序运营推广及维护]
灯会延时的原因有多种可能,包括电路设计、电源供应和灯泡类型等。
详细解释:
1.电路设计
许多灯具,特别是现代LED灯具,都配备了延时关闭功能。这是为了安全考虑,防止突然开灯或关灯时电流过大对电路造成冲击。延时功能允许电流逐渐增大或减小,从而保护电路和电器设备。此外,一些复杂电路的设计本身就需要一段时间来响应开关信号,从而导致灯的开关出现延迟。
2.电源供应因素
电源供应不稳定也可能导致灯延时。如果电源电压波动较大,或者电源供应质量不佳,灯可能需要一段时间来稳定其工作状态。特别是当电源刚刚接通时,需要一段时间才能达到稳定的工作电压,这就导致了灯的延时开启。此外,如果供电线路较长或者线路中有大量设备同时工作,也可能影响电流的传输速度,导致灯的反应出现延迟。
3.灯泡类型
不同类型的灯泡其启动时间也有所不同。例如,LED灯泡由于其工作原理,启动时可能需要一定的时间才能达到全亮状态。同样地,某些特殊的节能灯泡在开始工作时也需要一定的时间来达到其正常的亮度水平。这些都是导致灯延时亮起的原因。此外,如果灯泡本身存在老化或损坏问题,也可能导致启动时间的延长。
总的来说,灯的延时可能与电路设计、电源供应和灯泡类型等多个因素有关。在实际生活中遇到此类问题,应综合考虑各种因素进行分析和解决。
1、led灯一直闪的原因:
LED灯珠与LED驱动电源不匹配。正常单颗足1W灯珠承受电流是280至300mA,电压是3.0至3.4V,灯珠芯片不足功率就会造成灯光光源频闪现象,电流过高灯珠不能承受就一亮一灭,严重现象会把灯珠内置的金线或者铜线烧断导致灯珠不亮;
驱动电源坏了,换上另一个好的驱动电源就不闪了;
驱动有过温保护功能,而灯具的材质散热性不能达到要求,驱动过温保护开始工作也就会出现一闪一灭的现象;
户外灯具出现频闪一亮一灭现象就是灯具进水了,灯珠和驱动就会坏掉,做好驱动防水,更换光源即可。
2、LED灯闪烁处理方法:
在离线式低功率LED照明应用中,一种常见的电源拓扑结构是隔离型反激拓扑结构。由于反激稳压器的正弦方波功率转换并未给初级偏置提供恒定能量,动态自供电路会激活并引发光闪烁。使用初级偏置能够在每个半周期部分放电,需要恰当选择构成这偏置电路的电容和电阻的量值;
人眼能够感知到频率达70Hz的光闪烁,高于这个频率则不会感知。在LED照明应用中,脉冲信号出现频率低于70Hz的低频分量,人眼就会感受到闪烁,所以要使用频率高达70Hz的光;
任务要求
使开发板上的LED2小灯闪烁,亮一秒灭一秒(延时实现)
1.如何点亮LED小灯?
2.LED2是那个小灯?
3.开发的具体流程是什么?
LED灯就是发光二极管,图中的两个器件都是LED灯,右侧的图片是贴片LED灯,我们的开发板上所使用的就是贴片LED灯。发光二极管电压是1.8V到2.2V,靠电流驱动,就是说电流达到一定的值,就会点亮LED灯,电流的范围是1到20mA,在1到5mA亮度有所变化,5mA以上亮度基本无变化。电流如果小于1mA的话LED灯不亮。
接下来看如何点亮LED灯。LED灯是二极管的一种,有正极和负极,也是正向导通,反向截止。这个图当中LED灯正极连接VCC(3.3v),负极连接一个电阻后与地相连,这样LED就正向导通,LED灯点亮。如果LED灯上的电压是1.8V,那么电阻上的电压就是1.5V,刚才我们提到点亮LED灯的电流是1~20mA,电阻与LED灯串联,电阻的电流就应该与LED灯的电流相同,根据欧姆定律可以得到电阻的阻值范围就是75欧到1500欧。我们反过来考虑电阻阻值的大小可以限制LED灯电流的大小,因此这个电阻也被称为限流电阻。比如说电阻选择的是1k,那么通过LED灯的电流也就确定了是1.5mA,接下来我们把接地去掉,改成GPIO接口,GPIO可以通过编程控制输出高电平还是低电平。如果GPIO输出低电平,二极管从正极到负极有压差,电路导通,LED小灯就会点亮。如果GPIOP输出高电平·,LED小灯左侧是高电平,右侧是高电平,小灯不会点亮·。那么如何让LED小灯闪烁呢?学习了51单片机大家就应该知道LED小灯的闪烁其实就是亮灭的交替,但是由于人眼的视觉暂留效应,要使人眼能看出小灯的闪烁,就需要点亮小灯后延时保持一会,然后再熄灭小灯,熄灭后再延时保持一会,这样一亮一灭就实现了小灯的闪烁。我们现在明白了如何点亮一个LED灯,那么任务要求中的LED2是哪一个小灯,我们应该怎么控制呢?要想了解这个问题,我们就需要查看主控板·电路图。
电路图比较复杂,我们先重点查看需要的电路部分,中间是STM32F103VET6微控制器芯片。它共有100个引脚,每一侧都有25个。GPIO引脚是按照PA、PB一直到PE进行分组的,每组16个GPIO接口。比如说PE组就是从PE0到PE15一共16个引脚,但是每一组IO口并不是连着排列的,而且根据封装的不同,也不是所有的GPIO口都引出来了。
开发流程
首先在STM32CubeMX中进行功能配置
1.建立工程文件夹
2.选择MCU型号
3.配置GPIO功能
4.配置调试端口
5.配置时钟树
6.保存STM32CubeMX工程
7.生成C代码初始工程
接下来将生成C代码的初始程序导入MDK-ARM编辑编译代码
1.打开工程文件
2.完善main()函数
3.C代码工程配置
4.编译工程
最后进行下载调试
1.可以使用ST-Link在线仿真调试,并下载程序到开发板上运行
2.使用智慧盒FlashLoader程序下载hex文件到开发板上运行查看结果
首先建立STM32工作目录,文件名是STM32_WorkSpeace,用于保存所有的任务工程。
然后打开这个文件夹,在这个文件夹下再新建一个文件夹,用于保存本项目工程。这个文件夹的名字是test1。test1文件夹用于保存一会我们新建的项目工程。
接下来打开STM32CubeMX工具,点击ACCESSTOMCUSELECTOR,进入MCU选择窗口。
这是STM32CubeMX的配置界面,上面一共有四个标签页,分别是引脚与配置(PinoutConfiguration)、时钟配置(ClockConfiguration)、工程管理(ProjectManager)、工具(Tools)。
引脚与配置进行芯片的引脚配置,以及相应的功能配置。时钟配置用于配置时钟树。工程管理用于配置工程以及代码的生成相关参数。
先来看一下引脚与配置,左侧是不同的配置项,右侧是微控制器芯片引脚视图。项目当中使用PE6引脚控制LED灯的闪烁,可以直接找到PE6引脚,也可以在右下角的搜索框中输入PE6进行查找,找到的引脚会进行闪烁。在PE6引脚上点击鼠标左键,可以设置引脚功能。在这里我们把PE6引脚设置为输出引脚(GPIO_Output)来输出高低电平用来控制LED灯的闪烁。然后在PE6引脚上单击鼠标右键,可以设置用户标签(EnterUserLabel)把名字修改为LED2。在引脚视图中对我们所使用的引脚完成初步配置之后,接下来需要对GPIO口进行详细配置。
点击左侧配置项当中的SystemCore(系统内核),点击GPIO就这里出现了GPIO的配置页,因为我们刚才只配置了PE6引脚,因此在这个配置页中只列出了PE6,左键点击出现详细配置页,我们来看一下各个配置项,GPIOoutputlevel是配置引脚的初始输出电平,可以选择高电平(High)或低电平(Low),通过上面的分析我们知道输出低电平时点亮LED灯,高电平时熄灭LED灯。初始时一般会让小灯熄灭,然后在程序当中再编程点亮,因此设置PE6的初始输出电平为高电平(High),小灯熄灭。
再来看一下它的输出模式,它的输出模式有两种,分别是推挽输出(OutputPushPull)和开漏输出(OutputOpenDrain)。推挽输出是指引脚既可以输出高电平也可以输出低电平。而开漏输出引脚只可以输出低电平,如果想要输出高电平的话,还需要外接上拉电阻,因此这里我们选择推挽输出(OutputPushPull)。
接下来再看上拉下拉电阻设置,分别是没有上拉和下拉电阻(Nopull-upandnopull-down)、没有上拉电阻(Pull-up)、没有下拉电阻(Pull_down),在这里我们选择没有上拉或下拉电阻。
配置完端口后,接下来配置MCU时钟树,仍然在SystemCore选项下,点击RCC复位时钟配置,HighSpeedClock(HSE)是外部高速时钟,将它配置为Crystal/CeramicResonator(晶体陶瓷谐振器),就是外部晶振。LowspeedClock(LSE)是外部低速时钟,同样也将其配置为Crystal/CeramicResonator(晶体陶瓷谐振器),也是外部晶振。同时引脚视图中相应的引脚功能也被配置。
接下来我们来看STM32CubeMX的配置界面上的第二个标签页时钟树的配置。我们可以先根据图片简单的了解各个模块。
接下来我们首先在时钟源选择器当中选择外部高速时钟(HSE),选择完成后时钟频率就会变成8兆赫兹,然后倍频器选择倍频系数x9,那么频率就会倍频为72兆赫兹。然后在系统时钟源选择器当中选择PLLCLK,系统时钟(SYSCLK)也就变成了倍频后的72兆赫兹。接下来再配置HCLK(高性能总线时钟),AHBPrescaler是高性能总线时钟分频器,在这里我们选择1分频,也可以说是没有分频。这样高性能总线时钟的频率就是72赫兹。CortexSystemtimer是系统嘀嗒定时器,需要对HCLK时钟源进行8分频,将系统嘀嗒定时器的时钟设置成9兆赫兹。接下来是APB1(低速外部总线时钟)以及APB2(高速外部总线时钟)的设置。APB1是对HCLK时钟源的2分频,将其设置为36兆赫兹,APB2仍然使其保持72兆赫兹。这样就完成了时钟树的配置,我们先不生成C代码,先保存一下STM32CubeMX工程,点击File,找到SaveProject保存工程,选择我们一开始建立的文件夹test1点击保存,这样我们就完成了STM32CubeMX的保存。
保存完工程后,我们切换到ProjectManager(工程管理)标签,进行C代码工程的配置。Project选项用于进行工程保存的相关配置。我们刚才已经保存过了,工程名和路径在这里都有显示,在下面两项都是默认值。需要修改的只有Toolchain/IDE选项,设置集成开发环境为MDK-ARMV5.其他内容不用设置。
接下来点击CodeGenerator进行代码生成配置。首先配置固件库包模式。第一个是拷贝所有的库文件到工程目录下,第二个是只拷贝必要的库文件,第三个是添加需要的库文件引用到工程配置文件中,我们在这里选择第二个。接下来配置生成文件,第一项是指不同的外设生成各自的“.c”或“.h”文件。第二项是重新生成时备份以前生成的文件,第三项是重新生成时保留用户代码,第四项是不重新生成时删除以前生成的文件,这里已经默认选择了第三和第四项,我们再把第一项勾选上就可以了。AdvancedSettings是高级设置,我们暂时不做处理。这样工程管理我们就配置完了,点击GENERATECODE生成代码按钮,生成相应的C代码工程。
我们这里选择打开目录看一下,在test1目录下又多了一些文件,MDK-ARM就是C代码工程文件,双击打开后包含三个选项,test1是工程文件,我们可以双击打开跳转到uVision?5。这样就打开了MDK-ARM集成开发环境,并且导入了test1工程。如果刚才在STM32CubeMX当中直接选择打开工程,同样会来到这个页面。
HAL_Init();是HAL初始化,系统外设初始化,SystenClock_config();是系统时钟配置,是系统时钟初始化。MX_GPIO_Init();这是MX当中对GPIO接口的初始化,点击右键,我们可以看一下这个函数的定义。
电话+V: 159999-78052
专注于小程序推广配套流程服务方案。为企业及个人客户提供了高性价比的运营方案,解决小微企业和个体拓展客户的问题