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

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

3天内不再提示

PWM波的产生过程?如何触发ADC呢?

冬至子 来源:龙一的编程life 作者:龙憨憨 2023-11-08 10:42 次阅读

PWM脉宽调制技术在控制领域中是非常常用的技术,电机控制电源控制等都是通过PWM进行驱动IGBTMOSFET等开关器件进行相关控制的。

目前所在公司的项目中需要用到PWM驱动功率放大电路,用以控制电流输出,同时也是通过EPWM触发ADC进行采样电流,故此进行学习总结。

本次总结主要有以下内容:

1、PWM波的产生过程;

2、如何触发ADC?

1、PWM的介绍

1.1 时钟

我一直在强调时钟的重要性,因为没有时钟,芯片的很多外设模块是无法工作的,在你编程的过程中可能就会遇到因为没有使能时钟导致模块无法工作的情况,所以当你的程序其他配置没有问题,却无法进行具体的寄存器操作时,你应该考虑查看是否打开了时钟。

EPWM的时基模块工作需要的时钟信号,通过对系统时钟的分频得到时基时钟(红圈1)进行设置,主要是通过 时基控制寄存器(TBCTL) 的高速时基时钟分频位 **HSPCLKDIV[9:7] 和时基时钟分频位 CLKDIV[12:10] **进行分频设置,通常设置为 1分频 ,即 时基时钟为系统时钟

TBCLK = SYSCLKOUT / (HSPCLKDIV * CLKDIV)

// 设置TBCLK
EPwm1Regs.TBCTL.bit.HSPCLKDIV = 0x0U;
EPwm1Regs.TBCTL.bit.CLKDIV = 0x0U;

图片

注意: TBCLK时基时钟是否使能,EPWM模块时钟是否使能(如下图Figure1),对TBCLK时基时钟以及使用的EPWM1模块时钟进行使能,在程序中(DSP2833x_SysCtrl.c中)置1,具体程序如下所示:

SysCtrlRegs.PCLKCR1.bit.EPWM1ENCLK = 1; // ePWM1
SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1; // Enable TBCLK within the ePWM

1.2 ePWM结构及组成单元

F28335的PWM模块是加强模块,这个加强表现在它各个ePWM的独立性,每个ePWM小模块都由两路ePWM输出组成,分别为ePWMxA和ePWMxB,这一对PWM输出,可以配置成三种输出:

  • 两路独立的单边沿PWM输出;
  • 两路独立的但互相对称的双边沿PWM输出;
  • 一对双边沿非对称的PWM输出;

DSP28335共有18路PWM,6组 * 2 EPWM(A、B)+ 6路APWM,结构图如下所示。

图片

每组EPWM包括7个模块:

时基模块TB

比较计数模块CC

动作模块AQ

死区模块DB

斩波模块DC

事件触发模块ET

错误联防模块TZ

每个模块各自作用如下:

TB :为输出PWM产生始终基准TBCLK,配置PWM的时钟基准计数器TBCTR,设置计数器的计数模式,配置硬件或软件同步时钟基准计数器,确定ePWM同步信号输出源;

CC:确定PWM占空比,以及ePWM输出高低电平切换时间;

AQ:确定计数器和比较寄存器匹配时产生动作,即ePWM 高低电平的切换;

DB:配置输出PWM上升沿或下降沿延时时间,也可以将A、B两通道配置成互补模式,我做的逆变器就是将ePWM配置成互补模式。死区时间可以编程确定;

PC:产生高频PWM载波信号;

TZ:当外部有错误信号产生时,对PWM输出进行相应处理,比如全置高,或拉低,或置为高阻态,从而起到保护作用。当然该功能也可以通过软件强制产生;

EZ:使能ePWM中断,使能ePWM触发ADC采样,确定事件产生触发的速度和清除相关事件标志位。

ePWM模块的7个模块就像一条生产线,一级一级的经过,但DSP更高级,可以实现通过配置,使得ePWM只经过我选择的生产线,没有被选择上的就不要经过。

例如,死区控制模块可以需要也可以不需要,这就看实际系统需不需要了。在实际使用ePWM时,正常的发出PWM波往往只要要配置TB、CC、AQ、DB、ET五个模块。

上面讲了那么多,那PWM波到底是如何产生的呢?接下来就开始讲解这个问题。

2、PWM的产生

2.1 时基模块-设置PWM产生的三种模式

PWM产生的三种模式分别为:up模式、down模式、up-down模式。

PWM产生的本质是信号通过与载波比较,根据设置输出高低电平,占空比由一个周期内高电平的时间决定。 在实际实现上,载波通过计数器计数得到,其周期值TBPRD即为载波计数最大值(峰值),信号是根据具体需求经过PI控制器输出得到,与载波进行比较后产生相应占空比。如up-down模式,如下图1-2-1所示。

图片

2.2 周期和频率的计算

1、up和down模式是向上计数和向下计数,其周期和频率的计算公式一致,为:

Tpwm = (TBPRD+1)* t_TBCLK

Fpwm= 1 / Tpwm

2、up-down模式是先向上计数后向下计数,其周期和频率的计算公式为:

Tpwm = 2 * TBPRD*t_TBCLK

Fpwm= 1 / Tpwm

在实际开发中,一般选用up-down模式,较前两种模式优势在于增长平滑,无较大突变,更适合实际应用。

实际设置PWM的频率为10KHz,TBCLK为150MHz,则可计算出周期为:

PRD = 150 000 000 / (10 000 * 2)= 7500

2.3 计数比较模块-比较事件产生,决定占空比

计数比较模块主要是通过时基计数的值与比较寄存器CMPA、CMPB进行比较,比如图1-2-1的值3900设置为CMPA的值,根据设置,当计数值大于或小于CMPA的值,AQ进行相应动作(置高或置低),就能得到相应占空比的PWM波。

比较主要有四种情况:

1、TBCTR = CMPA,PWM根据AQ动作;

2、TBCTR = CMPB,PWM根据AQ动作;

3、TBCTR = PRD,PWM根据AQ动作;

4、TBCTR = 0,PWM根据AQ动作;

注意: up或down模式只比较一次,而up-down模式比较两次。

实际过程中,比较的这个值时不断变化的,根据具体需求(参考值)通过PID控制器在不断调整,输出不同占空比的PWM,达到控制的目的。

2.3 动作模块AQ–根据比较结果动作,决定占空比

动作模块AQ根据动作模块寄存器AQCTLA、AQCTLB的设置对比较事件进行动作。

主要有四种动作模式:

1、不动作

2、置低

3、置高

4、翻转

动作模块事件优先级

不同模式下的动作事件是有优先级的,up-down模式在向上计数和向下计数的过程中,事件优先级不一样。所有模式下,软件强制事件的优先级最高。

至此,PWM的产生基本得到解答。具体是:

1、设置TBCLK时钟以及模块时钟使能;
2、选择up-down模式,确定频率,得到周期值;
3、确定比较事件以及动作模式,决定PWM的占空比,即可得到PWM波。=

3、如何触发ADC?

这里主要讲解一下思路。

触发ADC的事件主要涉及到PWM模块的事件触发模块ET,根据时基模块和计数比较模块输入的比较事件以及CTR_Dir时基计数方向产生相应事件,设置事件触发选择寄存器ETSEL,选择触发ADC启动转换或进行中断请求。

图片

ADC启动转换触发信号为EPWMxSOCA和EPWMxSOCB,根据ADC的设置选择某个信号或两个信号。

触发ADC启动转换的具体设置为:

1、设置哪种触发事件,
TBCTR = CMPA
TBCTR = CMPB
TBCTR = PRD
TBCTR = 0
2、什么事件模式下情况触发
每个事件、每2个事件、每3个事件,一般是设置为每个事件触发ADC启动转换。

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

    关注

    102

    文章

    3699

    浏览量

    132625
  • 寄存器
    +关注

    关注

    31

    文章

    5390

    浏览量

    121888
  • 逆变器
    +关注

    关注

    288

    文章

    4794

    浏览量

    208561
  • ADC驱动器
    +关注

    关注

    0

    文章

    35

    浏览量

    14027
  • PWM波
    +关注

    关注

    0

    文章

    99

    浏览量

    17030
收藏 人收藏

    评论

    相关推荐

    TTL和CMOS中△I噪声的产生过程与基本特点分析

    随着数字电路向高集成度、高性能、高速度、低工作电压、低功耗等方向发展,数字电路中的△I噪声正逐步成为数字系统的主要噪声源之一,因此研究△I噪声的产生过程与基本特点,对认识△I噪声特性进而抑制△I噪声具有实际意义。
    发表于 09-19 09:52 5447次阅读
    TTL和CMOS中△I噪声的<b class='flag-5'>产生过程</b>与基本特点分析

    STM32L151定时器上升沿触发ADC采样,为什么每个PWM周期内会触发第二次采样?

    PWM低电平的时候,不知道为什么每个PWM周期内会触发第二次采样? 此外,如何确保ADC采样到PWM正脉冲的中间时刻
    发表于 05-24 07:37

    PWM产生的方法及原理

    如休利用51单片机的来产生PWM,用以控制led的亮度变化,在网上看过一些程序,有些地方不大明白,程序是这样的:#includeunsigned char cycle,pwm;***
    发表于 07-14 12:24

    ADCPWM触发力矩困难

    电流具有三角的形式。因此,对于反馈控制,在其中间值即PWM信号的中间感测电流是重要的。由于PWM占空比为50%(应该是0A的电流)时没有得到预期的结果,所以我认为触发
    发表于 03-13 08:59

    用定时器TIM产生PWM来控制ADC的采样频率

    实现的功能:用定时器TIM产生PWM来控制ADC的采样频率,在ADC中断中将采样值直接通过DAC输出。本文主要展示
    发表于 08-10 06:43

    怎么知道产生PWM波形对不对

    前言在做嵌入式开发的过程中,不可避免的会用到PWM的功能,但是我们怎么知道产生PWM波形对不对,这个时候可能就需要一台示波器来测量一下了
    发表于 08-16 09:06

    TMS320F28335时钟电路的主频时钟产生过程是怎样的

    TMS320F28335时钟电路的主频时钟产生过程是怎样的?产生DSP所需要的时钟共几种方式
    发表于 01-17 08:07

    如何实现定时器TIM3输出PWM触发ADC采样

    STM32F4定时器系统包括哪些部分?如何实现定时器TIM3输出PWM触发ADC采样
    发表于 01-25 06:34

    pwm产生驱动电机

    一.pwm产生驱动电机,舵机的运动,肯定要用到pwm,所以我们先来分享一下如何来产生
    发表于 02-15 06:13

    如何使用PWM触发ADCPWM刹车功能来阻止PWM输出

    应用程序:本文件描述如何使用 PWM 触发 ADCPWM 刹车功能来阻止 PWM 输出 。 BSP 版本:Mini51DE系列 BS
    发表于 08-23 07:31

    如何使用PWM触发ADCPWM刹车功能来阻止PWM输出

    应用程序:本文件描述如何使用 PWM 触发 ADCPWM 刹车功能来阻止 PWM 输出 。 BSP 版本:Mini51DE系列 BS
    发表于 08-30 06:17

    PWM产生电路图

    高精度PWM产生电路图 图6-54是高精度PWM产生电路。该电路采用数宇数据,以1%步进
    发表于 03-11 22:13 8404次阅读
    <b class='flag-5'>PWM</b><b class='flag-5'>波</b><b class='flag-5'>产生</b>电路图

    AVR产生PWM实例程序

    AVR单片机产生PWM实例程序
    发表于 12-29 20:38 5次下载

    介绍开关电源纹波的产生过程资料下载

    电子发烧友网为你提供介绍开关电源纹波的产生过程资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-26 08:44 6次下载
    介绍开关电源纹波的<b class='flag-5'>产生过程</b>资料下载

    PWM硬件间隔触发ADC

    PWM硬件间隔触发ADC(新型电源技术课程答案)-在各种应用场景中,比如电机,电源,变频器等应用中,ADC的采样点会有很严格的要求,如果采样点选择错误,会给整个控制系统造成严重后果,本
    发表于 08-04 18:00 59次下载
    <b class='flag-5'>PWM</b>硬件间隔<b class='flag-5'>触发</b><b class='flag-5'>ADC</b>