在很多工程应用中,需要使用到PWM波(脉宽调制),例如电机调速、温度控制调整功率等。本文讲述怎么利用单片机的一个定时器生成多路PWM波形。
一般的,PWM的周期t1是一个固定值,如1ms,10ms,100ms等,在一个周期中包含了高电平t2和低电平t3,它们的关系是t2+t3=t1。改变一个周期中高电平的时间,就能达到速度或者功率调整的目的。PWM适用于高速开关器件的控制,不适合于继电器等低速开关元件的控制,因为继电器等低速元件达不到如此快的开关速度。
PWM控制的关键是控制改变PWM的高电平时间t2,这个时间在其他子程序中由控制算法中进行修改,如PID控制算法。

在微处理器,如单片机中,实现一个定时器生成多路PWM的方法如下。
首先来看看用一个定时器实现一路PWM输出的方法:
>>定义一个时间基准刻度t,这个也是计时器中断周期,一般在程序中t不改变。PWM的周期、高低电平时间由若干个基准时间t组成;
>>定义一个全局计时变量n,n表示这段时间经过了多少个基准时间t;
>>定义一个全局计时变量n1,n1表示一个PWM的周期包含多少个基准时间t,n1=t1/t。一般在程序中n1,t1不改变。
>>定义一个全局计时变量n2,n2表示一个PWM周期中高电平包含多少个基准时间t,n2=t2/t。由于高电平的时间受其他算法控制改变的,n2也是随时在改变。
程序的流程如下:
①初始化定时器,定时器中断时间设置为t,如设置t为1ms或其他;
②初始化变量:n=0;//计时变量n清零
n1=t1/t;//一个PWM的周期t1包含了多少个基准时间t.
//假如设PWM周期为100ms,则n1=100;
                  n2=t2/t;//计算一个PWM中高电平时间t2由多少个基准时间//t组成。t2由其他控制算法改变。
③ 开始计时,打开定时器中断。定时器中断程序中n++;
当n<n2&& n<n1时,IO口输出高电平;
当n>=n2&& n<n1时,IO口输出低电平;

当n>n1时,返回步骤①进行下一个周期的PWM.

程序流程图如下:


如果在同一个定时器中需要多路PWM,再定义多组类似的变量,按照图2 中流程处理即可。

全文完。

一个定时器生成多路PWM波形的原理和方法成都自动化开发相关推荐

  1. 【STM32编程】一个定时器生成多路PWM波形的原理和方法

    PWM产生原理 PWM的周期t1是一个固定值,如1ms,10ms,100ms等,在一个周期中包含了高电平t2和低电平t3,它们的关系是t2+t3=t1.改变一个周期中高电平的时间,就能达到速度或者功率 ...

  2. AVRmega16通过一个定时器实现多路IO口输出多路可调的PWM

    本人在做舞蹈机器人时,想到了通过一个定时器实现多路IO口输出多路可调的PWM,用于控制舞蹈机器人各部分的舵机.这个方法比较简洁而且实现自己的要求,且易于理解.       /*角度值:15度500us ...

  3. STM32用一个定时器输出多路不同频率及占空比的PWM(输出比较模式)

    我们使用STM32输出PWM时会使用定时器的PWM输出模式来进行生成,但是这样子生成PWM是有局限的,它只能生成四路频率相同的PWM,当你设定了TIMx_PSC(预分频寄存器)和TIMx_ARR(自动 ...

  4. 【WB32库开发】第9章 TIM1高级定时器——输出多路PWM

    PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 .在工控行业,PWM信号可以用来调节电机转速.调节变频器以及BLDC电机驱动等:在LED照明行业,可以通过PWM来 ...

  5. 【定时器/中断/PWM】利用一个定时器实现一路PWM波的输出---点亮LED

    ------------------------------------------凑热闹的分割线------------------------------------------------ /* ...

  6. 嵌入式学习——使用定时器输出PWM波形,实现 LED呼吸灯的效果

    嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 目录 嵌入式学习--使用定时器输出PWM波形,实现 LED呼吸灯的效果 1. 任务要求 2 PWM波介绍, 2.1 什么是PWM(Pu ...

  7. 定时器输出的PWM频率范围及占空比精度

    我想要TIM定时器输出的PWM波形:0.1%精度占空比, 频率范围:200Hz - 10KHz.请问能实现吗? Ⅰ 写在前面 如果有朋友下载了上一篇文章我提供的例程,在"bsp_timer. ...

  8. STM32输出PWM波形

    简单介绍一下PWM PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进行调制,等效出所需要的波形(包含形状以及幅值),对模拟信号电平进行数字编 ...

  9. MSP430F5529 DriverLib 库函数学习笔记(六)定时器A产生PWM波

    目录 1.通过Timer_A_outputPWM配置产生PWM波 初始化函数 计算 修改占空比的函数 整体程序 效果 2.单定时器产生多路PWM信号 初始化函数 实验结果 3.对称PWM信号的产生 初 ...

最新文章

  1. Nature:初步探索限制饮食如何影响肿瘤生长
  2. SSH协议、HTTPS中SSL协议的完整交互过程
  3. word删除分节符后之前的格式乱了_Word中这些神技,让你相见恨晚!
  4. nasm汇编:段的申明、$$、$
  5. 俄罗斯方块 Tetris
  6. 加拿大生信开源学习资源Bioinformatics.ca
  7. 设计素材画面太平淡?优秀案例网页教你如何用色彩丰富画
  8. study - 收藏集 - 掘金
  9. 下列软件包有未满足的依赖关系: cmake-qt-gui : 依赖: cmake (= 3.10.2-1ubuntu2) E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依
  10. Andro - Multipurpose OpenCart 2.X 自适应主题模板 ABC-0651
  11. 在linux下安装mplayer和解码器
  12. 计算机windows错误恢复,教你“Windows错误恢复”的修复方法技巧
  13. 学习 spring-cloud-aibaba第七篇,JWT认证授权
  14. Pytorch 神经网络模型量化分析基本框架
  15. 猿创征文|Hexo+Github搭建完全免费个人博客详细教程
  16. html,bootstrap,js,jquery图片点击模态窗口放大图片,可以滚动常看长图
  17. 一篇总览前端和后端工具对应关系
  18. bit Byte bps Bps
  19. HTML网页错误状态码
  20. 从原生到黑科技:闲鱼 Flutter 图片优化经历了什么?

热门文章

  1. 开源PLM软件Aras详解一 安装
  2. 【Python】从爬虫开始吧——爬取妹子图整站
  3. David Cutler NT之父
  4. 计算机网络这么多,开发怎么理解五层网络结构体系好?
  5. “全球朋友,全球品牌,全球服务”民间全球沙龙在深圳举办;
  6. SEAL全同态加密开源库(十二) CKKS-源码浅析
  7. 网上购车平台其实也可以这样上私户
  8. Solaris IPMP配置
  9. matlab中 cos(pi/2) sin(pi)不等于0怎么办
  10. Kotlin SQLite URL转义字符(Escape)(一)