Proteus LED灯的说明——解决仿真中LED灯无法呈现呼吸灯效果的问题

前言

这段时间,在用Proteus做一个项目,用到了PWM调制。想用PWM做一个呼吸灯,LED灯要么是常亮,要么是不亮,弄得我头疼。上网查询甚久,都没找到合适的解决方法(有一个是使用外置电路+PWM调制让LED呈现呼吸灯的效果,后面会放这个电路图)。我想就仅仅使用LED灯+PWM调制呈现,但是一直很难找到解决方法。但仔细想想,不对啊,Proteus这么出名的仿真软件,怎么可能连这个小功能都做不到?一定是哪里出了问题,后面我开始自己捣鼓。终于,功夫不负苦心人,我在尝试了十几次后,终于找到了解决方法。在贴上解决方法之前,我先把问题和其他人的解决方法放上来。

问题

问题1,LED灯不亮或只会闪烁

在加入了PWM脉冲源后,当频率较低时,LED灯只会闪烁,当频率变高后,不管你脉冲宽度为多少,LED灯干脆不亮了。如下面这两张动图。
频率300HZ,脉冲宽度50%
频率15kHZ,脉冲宽度100%

伪解决方法(同时进阶问题2)

那是因为LED的元件设置为数字模式,没有设置为模拟模式,所以把这个设置成模拟模式即可。
选择Analog即可

问题2,LED灯只会常亮

设置成模拟模式后,当你脉冲宽度设置得稍微高了一些,LED灯就只会常亮了。而当你将脉冲宽度调到1%时,才能看到它的由暗到亮,由亮到暗的闪烁,但是没过多久,就又常亮了。正常来说,一般不会出现亮暗闪烁的,只会让LED变得很暗。但总体而言,还是有进步的,至少让LED有了亮暗的变化。如下图。

频率1kHZ,脉冲宽度50%
频率1kHZ,脉冲宽度1%
至此,有人选择了放弃,或绕过该问题的核心,转而寻求另一种解决方法。

绕过该问题核心的其他解决方法

这个解决方法是我在网上找到的,即使用外部电路来配合PWM实现呼吸灯效果,里面使用了PNP、NPN、电容等元器件,虽复杂,但也可行。但是对于想要让多个LED实现呼吸灯效果的人来说,算是非常非常非常复杂的。

/* 特别注意,因为在我这个的仿真中,PWM信号源就1个频率,因此无法实现呼吸灯效果,只能让LED在一个亮度等级上稳定。而他们的仿真是连接了单片机的PWM程序,相当于接了一个正弦信号源。如下图所示。*/
PWM模式,频率1kHZ,脉冲宽度50%,这里PWM只有一个频率,只能固定一个亮度级别
正弦波模式,频率20HZ,可以做出呼吸灯效果

问题解决方法的探索过程

最简单的LED模型

从上面我们就可以看出,Proteus都可以让LED有亮暗变化了,怎么可能会在LED的呼吸灯效果上出BUG?首先让我们看看最简单的LED模型。给LED正极接一个逻辑信号源,负极接地,一个最简单的LED模型就出来了。
最简单的LED模型
我们可以看到,当为高电平时,LED迅速被点亮,但是当切回低电平时,LED大概要过个两三秒的样子才会完全熄灭。不难看出,LED点亮只需很短的时间,但是熄灭却需要很久,问题就是出在这里。当PWM信号源频率过高时,会导致LED没时间熄灭。再者,即使脉冲宽度为1%,也有足够的时间点亮LED。因此,我们需要找到这个问题的核心。

LED的设置界面

设置界面

从上面我们可以看出,LED设置界面有模型选择、正向电压、满载电流等。但注意,最下面还有一个“高阶属性”。
高阶属性

点开下拉菜单,可以看到高阶属性里有关断电阻、串联电阻(即内阻)、击穿电压、点亮最小时间。

关断电阻,我属实没弄明白,貌似和IGBT的关断电阻的作用差不多。

//更新一下
在网上查了很多关于“off resistance”的意思,有“关态电阻”、“关断电阻”、“断开电阻”、“关门电阻”、“截止电阻”等意思。我找到了一个类似的解释,放在下面,仅供参考。
网上的资料,仅供参考

串联电阻,就是LED自带的电阻阻值。
击穿电压,就是LED到多大电压就会被破坏,在仿真里就是表现为不工作。但是在Proteus里,有一个“优秀”传统,就是在一些情况下,即使你停止了仿真,LED也是照样亮。所以估计和这个差不多,当你的电压超过击穿电压时,LED灯也在亮。
点亮最小时间,即LED通电后到最亮的时间(默认设置为10ms)。所以依照之前说的,点亮只要10ms,而熄灭要2~3秒,假如按这个去弄PWM占空比…想都不敢想…

解决方法

所以解决方法大家也都猜到了,降低熄灭的时间,提高点亮的时间。(难道大家就没发现在数字模式和模拟模式下,点亮的时间都一样么?)按道理在模拟模式下应该有一个由暗到亮的过程,但是因为官方把点亮时间设定得过于短暂,因此就像瞬间点亮一样(估计是为了满足大部分人的需求吧)。
所以我们就直接去调“点亮最小时间”?错!!!因为这只是治标不治本,到后面你只会发现LED灯只是多了一个由暗到亮的过程,但是,到最亮后依旧常亮!!

因此我们真正要调整的应该是“串联电阻”!可以看到,官方为了增加点亮速度,不但调小了点亮时间,还把这个内阻调到3欧。而3欧的内阻才是真正的罪魁祸首。

//更新一下,如果调了内阻还没有亮暗的效果,可以调整点亮最小时间,将其调整至30m即可。
串联电阻
从网上搜索一下就可以知道,一般实物的LED灯珠,其内阻大概在200欧~300欧左右。
LED内阻1
LED内阻2
因此我们可以随便取个中间值,填入250欧即可。(内阻的大小会影响LED点亮的时间和熄灭的时间,建议根据正向电压和满载电流计算找到合适的阻值)
设置为250欧

最终成效

点亮时间和熄灭时间几乎一样
可以看到,现在点亮的时间和熄灭的时间几乎一样。
这里只需要再配合一下PWM程序就可以轻松实现呼吸灯效果了
再回过头来看之前那个由外部电路构成的呼吸灯模块,是不是觉得很麻烦。只需要修改那小小的内阻,就可以轻轻松松实现那个由许多元器件构成的呼吸灯电路。

关于批量修改元件参数的教程

可能有的人现在就要去修改了,但是一个一个点开属性表改很麻烦,我在这里分享一个批量修改元件参数的教程。
教程链接如下 ↓:
proteus如何批量修改元件参数值

总结

写了将近2000个字。也许有人会说,“妈的,不就是调整一下内阻的事情,非得扯这么多,真啰嗦”。但是我想说的是,我主要是将解决问题的思路记下来,分享给大家,过程是更为重要的,顺便也分享一些LED参数的说明。

最后再吐槽一下,
“真没想到小小的LED也有这么多东西o(╥﹏╥)o”

  • 58
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值