完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
由于芯片没有硬件的PWM,所以只能软件模拟,但是测下来发现都是在闪烁,没有做出呼吸的效果。
如果是使用延时的方法确实可以做出来,但是对于运行效率来说太慢了。 我的目标是利用定时器中断实现呼吸灯,请问应该怎么做? |
|
相关推荐
23个回答
|
|
|
软件打开一个40US的中断,每一格加40US就可以了,
|
|
|
|
|
|
定时器模拟PWM,只有起始段差一点
|
|
|
|
|
|
软件模拟,放中断里就可以了。
|
|
|
|
|
|
可以说一下具体的逻辑怎么实现吗?我现在的问题是出在不知道如何在程序上调整占空比。谢谢了
|
|
|
|
|
|
你这种延时的方法我知道,就是用定时中断做,我不知道如何才能改变占空比
|
|
|
|
|
|
那就这样, 取一个变量,范围给定到0-10,然后放中断,小于2 灯亮,否则 灯灭,溢出清零。然后在灯的状态反过来,看看亮度是否变化了。这个判断条件就是类似于占空比。
|
|
|
|
|
|
定时器中断里,定时一个1ms的中断,计数到100ms翻转一次。这个就是PWM周期, 如果你要调占空比30%,就计数到30ms翻转一次,周期到了再翻转一次,这就是一个PWM波形了。然后就是调占空比变量,慢慢加占空比,加到95%开始减少,减小到20%左右开始增加。就是呼吸效果了
|
|
|
|
|
|
我试了下,还是有问题。我的问题应该出在怎么占空比上面。如果PWM周期为100ms的话,30%的占空比就应该是亮30ms灭70ms? 那我程序上在何时调整我的占空比呢?
|
|
|
|
|
|
所以你就用一个更小的时间去判断占空比,比如100ms周期,你的定时器就定为1ms,计数到30,就灭led,计数到100(一个PWM周期),就亮led,这样led就亮了30ms,就是30%的亮度。觉得有闪烁的话,可以把定时器时间再缩短,修改闪烁频率。这是通用做法,当然会频繁进中断,如果你用stm32的话,可以用它的比较捕获定时器。CP1设占空比,CP2设为周期.
|
|
|
|
|
|
看问题错了,调整占空比的时间是可以算的,比如你要一个呼吸周期3s,那么从最暗到最亮需要1.5s,你假如从20%亮度调节到100%,需要调节80个,那么调节周期就是1500/80 = 15ms,就是每15ms改变一次占空比,当然最好这个时间要大于一个PWM的周期的。
|
|
|
|
|
|
一般的实现方法是调制脉宽,主要实现思路是,频率要求一定,在一个周期内对高电平以及低电平的持续的时间进行控制,这样就可以实现PWM调光了
|
|
|
|
|
|
可以开2个定时值呀,一个调频率,一个调占空比
|
|
|
|
|
|
|
|
|
|
|
可以给发光二极管并联电容,利用io口控制电容电路通断呗
|
|
|
|
|
|
定义一个最小定时刻度,
最定不一个周期,周期是前面最小定时刻度的倍数。 周期种,同样电平的多个最小定时刻度穿插。 目的是,连续高电平或者低电平,最好不要太长, 人眼的反应时间据说是24ms. |
|
|
|
|
|
现在呼吸的现象是有了,但是效果不太理想,估计是我占空比的曲线没有设定好,这个有没有好的方法呢?
|
|
|
|
|
|
估计是曲线问题,你可以调整呼吸曲线的,比如达到100%了,就延时一会再开始变暗,呼吸效果就不会显得太急促。可以多试试,自己觉得呼吸效果舒服就可以了
|
|
|
|
|
|
感谢楼上各位的回复,找到问题了,模拟的PWM周期控制在10ms,呼吸周期3s,效果比较好。
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
265 浏览 0 评论
【原创】【RA4M2-SENSOR开发板评测】低功耗+USB综合测试
789 浏览 0 评论
1306 浏览 2 评论
787 浏览 0 评论
【RA4M2-SENSOR开发板评测】Analogue+Timers综合测试
1587 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
16900 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 00:00 , Processed in 1.338080 second(s), Total 110, Slave 93 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
500