led灯带驱动器一直闪什么原因配套的驱动器

led灯闪烁的原因_百度知道
led灯闪烁的原因
平时挺正常的,我把焊接点全部重新点了一遍,因为原来这个是插电的,秉着不放过的原则,还是闪烁,不过原来这个灯泡应该不是坏的,这种属于什么问题,我拿了个新的吧灯泡还过来,所以家里货也有一些,这个就不正常了,刚开始以为是虚焊。于是怀疑是开关,还望各位大虾求助,也换了一个,都没问题,检查了一下没发现,自己用了一个,问题依旧,最后没办法,今天忽然闪烁不断,我就换在装电池的那种上面试了一下,表示我也换了变压头子试过,电阻我也试过,还是不行?难道是电压变压不足?为什么新的都正常,因为上学的时候学物理电路的时候没听因为是卖夜灯的,不过持续一分钟左右就正常了,发现问题解决了
提问者采纳
&nbsp,另外还有一点就是工厂那的烧机时间太短,金丝弧角断,金丝一焊脱焊。&nbsp,如上分析,或换个厂家,通常情况是,这咱情况将不是唯独这一次会出现的问题。那为什么会接触不良后一会儿就又亮了呢,又因热涨冷缩的缘故那为什么会造成这种情况呢这是LED灯内金丝或铝丝接触不良的表现,如果二焊没有补球的也有可能是二焊脱焊:通常原因为LED驱动电源电路过于简单,还是找厂家谈谈:断点近,如果你不想让人投诉你的话; 总之
说白了就是质量问题是吧,那为什么放在插电的那种上面就不正常,换在用电池的这种就正常了呢?
提问者评价
相关专业回答
  有五个原因:
  一是功率变压器没上好,参数不符合,绕组没上够或多上,造成磁饱和或电感量不足;
  二是反馈电路有故障;
  三是负载电流过大或负载电压过小,低于电源的最低输出电压而造成自动保护;
  四是电压取样电路设计不合理;
  五是电源电压过低,低于正常工作的电压而造成电源无法启动。
  发光二极管简称为LED。由含镓(Ga)...
其他类似问题
37人觉得有用
为您推荐:
led灯的相关知识
其他1条回答
我来告诉你
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁驱动电源的什么问题导致led灯闪烁_百度知道
驱动电源的什么问题导致led灯闪烁
输出电流的波动辐度太大,就会造成闪烁。电流大,亮度就大,电流小,亮度就小。亮度大小变化就会给人在闪烁的感觉。不知你说的是高频频闪还是低频频闪?一般人眼能看到的是120Hz以内的低频频闪,所以一些安全能效和生物光电标准上有限制闪烁的频率不能低于120HZ。高频频闪人眼察觉不出来,只能靠高速摄像机(用手机拍),这些方式才能看出来。所以如果是低频频闪,只要电源有任何工作不稳定,造成输出电流波动太大,就会有闪烁。
其他类似问题
为您推荐:
要叫专业师傅查下,就会造成LED闪烁LED灯珠vf值和驱动电源低的话,然后你零火线反了也会闪烁,问题很多
一箩筐问题都会导致,范围太大了
led灯的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Linux上第一个驱动+应用程序:LED灯闪烁
实现功能:运行Linux系统,点亮ARM开发板上的LED1,间隔200ms闪烁。
根据硬件电路编写驱动
编写Makefile和Kconfig
编译加载:静态加载和动态加载
静态加载:make menuconfig选择模块是[*]编译进内核,然后make
zImage编译内核,最好将image文件放到SD卡或NFS启动内核即可。
动态加载:make menuconfig选择模块是[M]编译进内核,然后meke
modules编译模块,生成.ko文件,将其发送到ARM开发板里面,使用命令insmod进行加载,用lsmod进行查看,用modinfo查看详细信息,用rmmod删除。
编写应用程序:
应用程序需要打开驱动模块fd = open("/dev/
leds",0),然后调用ioctl控制LED。
交叉编译 :arm-linux-gcc led1.c -o
led1,得到led1执行文件(注意权限需为可执行)。
用串口/FTP/NFS下载到开发板的/usr/bin文件下。
在开发板可以手动运行,开发本上的LED灯闪烁。如果要开机自启动,则继续下面操作。
在/etc/rc.d/init.d下添加led1脚本,实现两个功能,一个是start启动,即运行/usr/bin/led1;另一个功能是关闭led1,即查找LED1进程ID,然后杀死此进程。在运行过程中可以用/etc/rc.d/init.d/led1
start | stop实现开闭。脚本内容如下:
&&&&&&&&&&&&&&&
/usr/bin/$base &
pid=`/bin/pidof $base`
if [ -n "$pid" ]; then
&&&&&&&&&&&&&&&
kill -9 $pid
在/etc/init.d/rcS中添加如下内容,这样可以实现开机自动启动。注:Linux运行Bootloader,加载内核,启动后运行的第一个程序是init.d里的程序,此处运行等级rcS也就是rc1,单用户模式。
/etc/rc.d/init.d/led1
"&&&&&&&&&&&&&&&&&&&&&&&
" & /dev/tty1
"Starting led1 service..." &
/dev/tty1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
reboot,实现开机自启动。
注意:在LINUX下加载驱动程序可以采用动态和静态两种方式。静态加载就是把驱动程序直接编译到内核里,系统启动后可以直接调用。静态加载的缺点是调试起来比较麻烦,每次修改一个地方都要重新编译下载内核,效率较低。动态加载利用了LINUX的module特性,可以在系统启动后用insmod命令把驱动程序(.o文件)添加上去,在不需要的时候用rmmod命令来卸载。在台式机上一般采用动态加载的方式。在嵌入式产品里可以先用动态加载的方式来调试,调试完毕后再编译到内核里。
另可参考本博客:Linux上第一个驱动程序:hello
其他参考:
linux3.x上(带有device tree设备树)LED
dtb、驱动和应用程序编写:
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。裸机程序,简单的LED驱动问题,为什么LED灯不闪烁? - ARM技术论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
裸机程序,简单的LED驱动问题,为什么LED灯不闪烁?
22:20:32  
做一个裸机程序,点亮LED灯,想要达到使得LED灯闪烁的效果,
但是用下面的程序生成的bin文件,下载到开发板,为什么LED1一直亮,而不闪烁?
C代码如下:
#define GPFCON (*(volatile unsigned long *)0x)
#define GPFUP&&(*(volatile unsigned long *)0x)
#define GPFDAT (*(volatile unsigned long *)0x)
#define GPF0_Out (1&&(0*2))
#define GPF1_Out (1&&(1*2))
#define GPF2_Out (1&&(2*2))
#define GPF3_Out (1&&(3*2))
#define LED1_ON&&(GPFDAT &= (~(1&&0)));
#define LED1_OFF (GPFDAT |= (1&&0));
#define LED2_ON&&(GPFDAT &= (~(1&&1)));
#define LED2_OFF (GPFDAT |= (1&&1));
#define LED3_ON&&(GPFDAT &= (~(1&&2)));
#define LED3_OFF (GPFDAT |= (1&&2));
#define LED4_ON&&(GPFDAT &= (~(1&&3)));
#define LED4_OFF (GPFDAT |= (1&&3));
void Delay(void);
int main()
{
& & & & GPFCON = GPF0_Out|GPF1_Out|GPF2_Out|GPF3_O //将LED1,2,3,4对应的GPF0,1,2,3的三个引脚设为输出
& & & &
& & & & //先熄灭所有的LED灯
& & & & LED1_OFF;
& & & & LED2_OFF;
& & & & LED3_OFF;
& & & & LED4_OFF;
& & & &
& & & & while(1)
& & & & {
& & & & & & & & Delay();
& & & & & & & & LED1_ON;//单独运行该行代码,可以点亮LED1
& & & & & & & & Delay();
& & & & & & & & LED1_OFF;//单独运行该行代码,可以熄灭LED1& & & & & & & & & & & & & & & &
& & & & }
& & & &
& & & & return 0;
}
void Delay(void)
{
& & & & volatile unsigned long MaxNum1 = 9000;
& & & & volatile unsigned long MaxNum2 = 9000;
& & & & volatile unsigned long MaxNum3 = 9000;
& & & & volatile unsigned long&&i = 0;
& & & & volatile unsigned long&&j = 0;
& & & & volatile unsigned long&&k = 0;
& & & &
& & & & for(i=0;i&MaxNum1;i++)
& & & & {
& & & & & & & & for(j=0;j&MaxNum2;j++)
& & & & & & & & {
& & & & & & & & & & & & for(k=0;k&MaxNum3;k++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & ;
& & & & & & & & & & & & }
& & & & & & & & }
& & & & }& & & & & & & &
& & & &
}复制代码
奖励10积分
22:30:41  
在while循环中,若只将LED1_ON运行,注释掉LED1_OFF,那么LED1灯一直是亮着的;
& && && && && && && & 若只将LED1_OFF运行,注释掉LED1_ON,那么LED1灯将熄灭;
不知道为什么LED1_ON和LED1_OFF都运行时,为什么LED1不闪烁呢?
另外Delay延时函数的,延时时间长短也进行了调整测试,没发现有什么影响变化。。。
22:53:02  
你试试先打开开LED1,然后延时一段时间熄灭,看看有木有反应~
23:20:40  
你试试先打开开LED1,然后延时一段时间熄灭,看看有木有反应~
我把代码改成下面这样,效果是,灯一直亮,不灭
& & & & //while(1)
& & & & //{
& & & & & & & & Delay();& & & &
& & & & & & & & LED1_ON;//单独运行该行代码,可以点亮LED1
& & & & & & & & Delay();& & & &
& & & & & & & & LED1_OFF;//单独运行该行代码,可以熄灭LED1& & & & & & & & & & & & & & & &
& & & & //}复制代码
07:29:08  
在while循环中,若只将LED1_ON运行,注释掉LED1_OFF,那么LED1灯一直是亮着的;
& && && && && && && & 若只将LED1_OFF运行,注释掉LED1_ON,那么LED1灯将熄灭;
不知道为什么LED1_ON和LED1_OFF都运行时,为什么LED1不闪烁呢?
另外Delay延时函数的,延时时间长短也进行了调整测试,没发现有什么影响变化。。。
你这个很明显是延时时间不够长,身边要是有示波器可以测试下对应的引脚输出,应该有方波输出
19:36:41  
你这个很明显是延时时间不够长,身边要是有示波器可以测试下对应的引脚输出,应该有方波输出
我把延时函数改成下面的样子,还是不行,LED1灯不闪烁
void Delay(void)
{
& & & & volatile unsigned long MaxNum1 = ;
& & & & volatile unsigned long MaxNum2 = ;
& & & & volatile unsigned long MaxNum3 = ;
& & & & volatile unsigned long MaxNum4 = ;
& & & & volatile unsigned long MaxNum5 = ;
& & & & volatile unsigned long MaxNum6 = ;
& & & & volatile unsigned long&&i = 0;
& & & & volatile unsigned long&&j = 0;
& & & & volatile unsigned long&&k = 0;
& & & & volatile unsigned long&&l = 0;
& & & & volatile unsigned long&&m = 0;
& & & & volatile unsigned long&&n = 0;
& & & &
& & & & for(i=0;i&MaxNum1;i++)
& & & & {
& & & & & & & & for(j=0;j&MaxNum2;j++)
& & & & & & & & {
& & & & & & & & & & & & for(k=0;k&MaxNum3;k++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & for(l=0;l&MaxNum4;l++)
& & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & for(m=0;m&MaxNum5;m++)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & for(n=0;n&MaxNum6;n++)
& & & & & & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & & & & & ;
& & & & & & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & }
& & & & }& & & & & & & &
& & & &
}复制代码
21:49:47  
感觉上是延时时间太长了,你写的裸机程序,时钟有没有倍频,板子就和很普通的单片机一样,你的delay里面嵌套了那么多,时间应该是太长了。。。。。。。
助理工程师
15:13:06  
延时时间太长了
算给你看看:
9000的3重循环就是9000 * 9000 * 9000 =
你的单片机如果有4GHz主频,估计可以闪
就算40M,时间也是大于
* (1/40)us& &=&&18225 s = 50小时
你放着等两天它就闪一下....
助理工程师
15:14:27  
你写成下面那种,估计等到头发白了也不闪,时间还是稍微计算一下比较好
19:54:57  
应该调整下延迟参数,慢慢实践噻
14:10:25  
你的延遲函式會造成假性的無窮迴圈的,建議寫法如下
void delay(uint32_t us)
{
& &while(us--);
}复制代码
注意,實際時間還是要看你CPU多少Hz,再去校準
高级工程师
14:24:26  
一直亮可能是延时太长了,或者就是I/O设置的问题了
Powered by

我要回帖

更多关于 led灯驱动器输出电压 的文章

 

随机推荐