0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

呼吸灯的概念和实现原理

FPGA技术实战 来源:FPGA技术实战 2024-10-24 14:50 次阅读

引言:呼吸灯在日常生活中经常见到,如电子时钟,小夜灯等等,本文我们介绍下通过PWM波来控制LED灯,实现呼吸灯功能。

1.呼吸灯概念

呼吸灯其实是在处理器的控制下,由暗渐亮、然后再由亮渐暗,其实现效果类似人的呼吸方式的LED灯。其要实现呼吸周期重复,明暗渐变功能。

2.实现原理

由于FPGA管脚输出逻辑电平只有“0”和“1”,因此并不能通过FPGA来改变LED两侧电压差来实现呼吸灯。但是,我们可以通过改变单位时间内亮灯时间的占空比来实现呼吸效果,即在固定频率下,通过调整占空比来控制LED的亮灭,又称作PWM(Pulse Width Modulation)调制。PWM是对模拟电路控制的一种非常有效的技术,广泛应用于测量、功率控制、通信等领域。

wKgaoWcZ7kaAVvWrAAAH8Q4xrdg745.png

图1:占空比调整示意图

3.硬件介绍

LED灯电路如下图所示,图中电阻起限流作用,保证LED不会超过其工作最大电流,当FPGA IO口输出低电平时,LED灯点亮,反之,LED灯熄灭。

wKgaoWcZ7kaAXBIcAACsKnKAM20697.png

图2:LED灯电路图

4.FPGA软件设计

本设计呼吸灯的亮灭周期是2S,PWM每间隔2ms更新一次,共计更新100次即2S后切换PWM的占空比调整方向。因此PWM占空比的调整是和2ms定时计数器和2S定时计数器相关。系统框图如下:

wKgZoWcZ7kaAW1QSAACeb1w30S8289.png

图3:呼吸灯PWM产生框图

上图中包含了3个定时计数器:

(1)20us定时器,作为本系统的基本定时器,产生时间基准;

(2)20ms定时器,通过20us定时器,计数100次完成20ms定时计数;

(3)2s定时器,通过20ms定时器,计数100次完成2S定时计数。

20us定时器代码:

//20us 定时器
always @(posedge i_sysclk_p or negedge i_rstn)begin
    if(i_rstn == 1'b0)
        cnt_20us_timer <= 0;    
    else if(cnt_20us_timer < T20US_SET)    
        cnt_20us_timer <= cnt_20us_timer + 1'b1;
    else
        cnt_20us_timer <= 24'd0;          
end

20ms比较定时器代码:

//20ms pwm比较定时器,基于 1us timer
always @(posedge i_sysclk_p or negedge i_rstn)begin  
    if(i_rstn == 1'b0)                               
cnt_20ms_timer<= 0;    
    else if(20us_timer_done)                            
         cnt_20ms_timer <= (cnt_20ms_timer < T20MS_SET) ? (cnt_20ms_timer + 1'b1) : 10'd0;   
    else                                                
         cnt_20ms_timer <= cnt_20ms_timer ;
end

5.软件在线仿真与实测

硬件平台:EP2C8Q208C8N

Quartusii软件:11.0

工程编译完成后,下载bit文件到电路板,PWM波测试结果如下图所示。

wKgZoWcZ7l6AUMsSAABhPRJserA490.png

图4:SignalTapII在线抓取波形

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1624

    文章

    21588

    浏览量

    600940
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    107692
  • PWM
    PWM
    +关注

    关注

    114

    文章

    5109

    浏览量

    213021
  • 呼吸灯
    +关注

    关注

    10

    文章

    109

    浏览量

    42684

原文标题:FPGA入门基础之呼吸灯设计

文章出处:【微信号:FPGA技术实战,微信公众号:FPGA技术实战】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    PWM驱动LED实现呼吸效果

    C51 利用pwm 驱动LED 实现呼吸效果
    的头像 发表于 04-24 15:29 3608次阅读
    PWM驱动LED<b class='flag-5'>实现</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>效果

    请问pwm是怎么实现呼吸

    今天面试被问到pwm实现呼吸的效果,发现arm新一期的视频老师讲的定时器这部分就讲了定时器中断,这些基本概念什么的讲的很少,哪位大哥教教我pwm是干嘛用的???
    发表于 04-30 07:45

    基于51单片机的呼吸怎样设计

    课程设计报告书题目:基于51单片机的呼吸设计信息工程学院课程设计任务书学 号1学生姓名专业(班级)设计题目基于51单片机的呼吸设计设计技术参数8个LED按照顺序逐个
    发表于 07-15 08:01

    怎么通过PWM来实现呼吸

    个人理解:如果能实现电压的变化就能实现呼吸了,如果能得到一个类似正弦电压的电压,那么就能实现这个呼吸
    发表于 08-11 06:17

    如何制作呼吸

    时高时低,就能形成闪烁的效果。那么什么是呼吸呢?它与闪烁实现方法有何区别?呼吸大家其实都
    发表于 01-05 06:51

    PWM实现呼吸流程

    Conceit is the quicksand of success.  自负是成功的流沙。PWM实现呼吸PWM概述相关概念PWM设置流程呼吸
    发表于 01-13 06:41

    如何用LED实现呼吸的功能

    一、概述玩过单片机的基本都做过用LED实现呼吸的功能,但是只要认真观察,会发现LED的亮度变化在低占空比的时候,变化很明显,而在高占空比的时候反而变化很小,导致
    发表于 01-21 08:09

    PWM实现呼吸的应用

    stm32实现PWM最简单方法前言一、PWM概念二、PWM应用输出比较功能框图三、PWM呼吸实现前言PWM可以用于控制
    发表于 01-21 13:18

    呼吸有什么用_华为呼吸在哪设置

    本文开始介绍了呼吸概念呼吸的作用,其次介绍了呼吸
    发表于 03-29 08:29 7.3w次阅读
    <b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>有什么用_华为<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>在哪设置

    使用定时器功能实现呼吸亮暗过程

    呼吸就是LED的亮度从暗到亮,再从亮到暗的一个过程。它好像人呼吸一样,所以叫它“呼吸”。我是在网友的帮助下通过定时器的调节、中断的调用来
    的头像 发表于 06-11 16:11 1.2w次阅读
    使用定时器功能<b class='flag-5'>实现</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>亮暗过程

    使用PWM控制LED实现呼吸的效果

    本文主要讲解使用PWM控制LED,实现呼吸的效果。
    的头像 发表于 02-08 17:50 1.3w次阅读
    使用PWM控制LED<b class='flag-5'>实现</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的效果

    单片机实现呼吸

    项目描述:用渐变的PWM信号实现LED呼吸。 LED由暗逐渐变亮,再由亮逐渐变暗循环。C语言代码如下
    发表于 11-11 11:21 66次下载
    单片机<b class='flag-5'>实现</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>

    stm32使用延时实现呼吸寄存器版

    stm32使用延时实现呼吸(寄存器)该实验是使用STM32F103C8T6实现,使用寄存器编程。呼吸
    发表于 01-18 10:33 0次下载
    stm32使用延时<b class='flag-5'>实现</b><b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>寄存器版

    通过STM32实现PWM呼吸的教程

    顾名思义,就是一个的亮度的变化,由亮变暗,从暗变亮,有一个渐变,规律的变化,像是人的呼吸,是呼吸,所以叫
    的头像 发表于 07-26 15:20 1.2w次阅读
    通过STM32<b class='flag-5'>实现</b>PWM<b class='flag-5'>呼吸</b><b class='flag-5'>灯</b>的教程

    51单片机呼吸频率怎么调节

    51单片机呼吸频率的调节方法可以通过改变PWM(脉冲宽度调制)的工作周期和占空比来实现。在下面的文章中,我将详细介绍如何使用51单片机调节呼吸
    的头像 发表于 12-19 10:39 2141次阅读