【轮式平衡机器人】——TMS320F28069片内外设之ePWM

声明:本系列博客参考有关专业书籍,截图均为自己实操,仅供交流学习!

引入

脉冲宽度调制(PWM)是一种对模拟信号进行数字编码的方法,硬件原理是根据相应载荷的变化来调制晶体管栅极或基极的偏置,来实现开关稳压电源输出晶体管晶体管导通时间的改变。

一个重要理论:冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。

以此为理论基础,对半导体开关元件的导通和关断进行控制得到一系列幅值相等而宽度不相等的脉冲,用这些PWM脉冲等效正弦波或其他各种波形。按一定规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压大小,也可改变输出功率

TMS320F28069有19路脉宽调制输出引脚(需要软件进行配置,与普通GPIO类似),包括16路增强型PWM(ePWM)3路普通PWM(ECap模块复用),其中16路ePWM中有8路可配置为高分辨率的PWM(HRPWM)。

除了19路输出引脚,还有8组PWM模块,每组分2路PWM,分别为PWMAPWMB(对应16路ePWM)。一个ePWM模块包括:时基模块、计数器比较模块、比较方式预设模块、死区模块、斩波模块、事件触发模块、行程区模块7个模块。

ePWM模块在电机控制、电源管理和其他需要精确时间控制的应用中非常有用!


一、ePWM单路输出

1、ePWM模块可以配置为单路输出模式,这意味着它可以生成一个独立的PWM信号。
2、在单路输出模式下,ePWM模块可以根据预设的周期、占空比和其他参数生成PWM波形。
3、用户可以通过配置ePWM模块的相关寄存器来调整PWM信号的各种参数,如周期、占空比、相位等。
4、ePWM模块还具有死区时间生成功能,可以防止上下桥臂的功率开关管同时导通,从而避免短路。

ePWM模块的输入时钟来自系统时钟,可根据需要调节分频系数。选择ePWM模块进行如下配置:

TBCLK = SYSCLKOUT/(HSPCLKDIV*CLKDIV)

这个公式表示了如何从一个系统的主时钟 (SYSCLKOUT) 导出另一个时钟 (TBCLK)。

让我们分解这个公式:SYSCLKOUT:这是系统的主时钟输出频率。这通常是微控制器或处理器的核心时钟频率。
HSPCLKDIV:这是高速预分频器的值。预分频器通常用于降低时钟频率。例如,如果HSPCLKDIV的值为2,那么时钟频率就会被除以2。
CLKDIV:这是另一个分频器的值。和预分频器一样,分频器也用于降低时钟频率。
所以,TBCLK 是由 SYSCLKOUT 经过两次分频后得到的。首先,SYSCLKOUT 被 HSPCLKDIV 分频,然后再被 CLKDIV 分频。最后得到的时钟频率就是 TBCLK。举个例子,如果 SYSCLKOUT 是 100 MHz,HSPCLKDIV 是 2,CLKDIV 是 4,那么 TBCLK 将会是:(TBCLK = \frac{100 MHz}{(2 * 4)})
(TBCLK = 12.5 MHz)这意味着从 SYSCLKOUT 得到的 TBCLK 是 12.5 MHz。

本次使用的系统主时钟SYSCLKOUT为80MHz,取HSPCLKDIV为4分频,CLKDIV取2,则TBCLK为10MHz,设置周期寄存器值10000(如上配置图),则ePWM1的输出频率10MHz/10000=1kHz。

在配置框使能ePWMA,当计数等于0时不动作,等于CAU的值时复位,等于CAD的值时置高,其他时间不动作。ePWM、死区时间、事件触发以及错误联防均不配置。

最后配置Counter Compare,CMPA值50,即占空比为50%。


二、ePWM双路互补输出

1、ePWM模块还支持双路互补输出模式,
这种模式常用于电机控制中的H桥驱动。
2、在双路互补输出模式下,ePWM模块可以生成两个
互补的PWM信号,分别用于控制H桥的上下两个开关管。
3、这两个互补的PWM信号具有相同的周期和占空比,
但相位相差180度,从而确保H桥的两个开关管不会同时导通。
4、通过合理配置ePWM模块的参数,可以实现电机的正反转、调速等功能。

首先对于Genaral和ePWMA的配置如上单路输出,双路输出还需配置ePWMB,与ePWMA的配置相反。

对于Counter Compare的配置如下:


三、ePWM中断

1、ePWM模块还支持中断功能,这意味着当ePWM模块的状态发生变化或满足某些条件时,
可以触发一个中断请求。
2、中断功能可以帮助用户实时监控ePWM模块的状态和性能,
从而及时采取相应的措施。
3、例如,当ePWM模块的输出状态发生变化时,可以触发一个中断请求,
然后在中断服务程序中执行相应的操作,如调整PWM参数、记录日志等。

在前面配置的基础上改动,在配置框Event Trigger选项中,使能ePWM中断,并配置为第一个事件发生时就进入中断,其他保持默认:

然后使用Simulink的C28x Hardware Interrupt模块,设置好PWM1中断的CPU中断号3和PIE级中断号1写入。

如下是ePWM中断实现的实现图:(右下角为中断函数,可根据需要添加逻辑,可使用StateFlow模块进搭建逻辑图)

StateFlow是一个基于有限状态机和流程图来构建组合和时序逻辑决策模型并进行仿真的环境。它由MathWorks公司开发,并作为Simulink的一个附加模块提供。StateFlow可以用于设计有关监控、任务调度以及故障管理应用程序的逻辑。StateFlow的主要特点包括:基于状态机的建模:StateFlow允许用户创建和管理复杂的状态机模型,这些模型可以描述系统在不同状态下的行为和转换。
图形化设计界面:StateFlow提供了一个直观的图形界面,使用户可以轻松地创建状态图、流程图和数据流图来描述系统的行为。
强大的仿真功能:StateFlow支持实时仿真和离线仿真,可以对模型进行详细的仿真分析和验证。
与Simulink的无缝集成:StateFlow可以直接嵌入到Simulink模型中,与Simulink的算法设计和代码生成环境完美集成。
丰富的控制流功能:StateFlow提供了丰富的控制流功能,包括顺序、分支和循环等,以支持复杂的逻辑设计。

写到这里有点学不下去了,呜呜呜,没硬件有点没着力点!请允许我浅浅纸上谈兵,可能学到后面的系统级仿真会有趣点,希望我可以坚持写下去吧!


往期精彩

STM32专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/E2F88

OpenCV-Python专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/zK1jV

AI底层逻辑专栏(付费9.9)icon-default.png?t=N7T8http://t.csdnimg.cn/zic0f

机器学习专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/FaXzAFreeRTOS专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/SjIqU电机控制专栏(免费)icon-default.png?t=N7T8http://t.csdnimg.cn/FNWM7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/734657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【c++】string模拟实现

string类的接口 namespace zjw {class string{public:typedef char* iterator;typedef const char* const_iterator;private:char* _str;int _size;int _capacity;};这里的迭代器直接使用原生指针来封装。 _str为指向string数组的首地址的指针。 _size为string数组的大小。 …

测试工具使用技巧01-->jmeter链接mysql

前言 在做接口或者性能测试的时候,有时需要jmeter连接数据库做操作,可以看看如下实例。操作实例 在mysql数据库中有如下数据表 在jmeter导入jdbc驱动插件(需要的留言找我拿) 在jmeter测试计划元件最下面,导入jdbc.…

Android平台实现无纸化同屏并推送RTMP或轻量级RTSP服务(毫秒级延迟)

技术背景 在写这篇文章之前,实际上几年之前,我们就有非常稳定的无纸化同屏的模块,本文借demo更新,算是做个新的总结,废话不多说,先看图,本文以Android平台屏幕实时采集推送,Windows…

ActiveRAG—主动学习

原文地址:ActiveRAG — Active Learning 2024 年 2 月 26 日 大型语言模型(LLM)的出现开创了对话式人工智能的新时代。这些模型可以生成非常类似人类的文本,并且比以往更好地进行对话。然而,他们仍然面临着仅仅依靠预先…

面试宝典-【redis】

目录 1.什么是缓存穿透 ? 怎么解决 ? 2.什么是布隆过滤器 3.什么是缓存击穿 ? 怎么解决 ? 4.什么是缓存雪崩 ? 怎么解决 ? 5.redis做为缓存,mysql数据如何与redis进行同步?(双写) 6.排他锁是如何保证读写、读读互斥的呢? 7.你听说过延…

C# LINQ运算符

LINQ运算符 1. 概述1.1 集合->集合1.1.1 筛选运算符1.1.2 映射运算符1.1.3 连接运算符1.1.4 排序运算符1.1.5 分组运算符1.1.6 集合运算符1.1.7 转换方法:Import1.1.8 转换方法:Export 1.2 集合->单个元素或标量值1.2.1 元素运算符1.2.2 聚合方法1.2.3 数量词 1.3 空->…

【MySQL 系列】MySQL 语句篇_DQL 语句

DQL(Data Query Language),即数据查询语言,用来查询数据记录。DQL 基本结构由 SELECT FROM、WHERE、JOIN 等子句构成。 DQL 语句并不会改变数据库,而是让数据库将查询结果发送结果集给客户端,返回的结果是一…

软考72-上午题-【面向对象技术2-UML】-UML中的图3

一、状态图 1-1、状态图的定义 状态图,展现了一个状态机,由:状态、转换、事件和活动组成,是系统的动态视图。 活动(动作) 可以在状态内执行也可以在状态转换(迁移) 时执行。 状态图强调:行为的事件顺序。 1-2、状态图…

SpringBoot项目如何部署到服务器

文章目录 准备:方式一:Jar包方式(推荐)部署步骤: 方式二:War包方式部署步骤: 总结 准备: 云服务器(阿里云、腾讯云等)Linux系统以及运行所需的环境 方式一&a…

力扣--深度优先算法/回溯算法216.组合总和 Ⅲ

思路分析: 深度优先搜索 (DFS): 通过递归实现,尝试从数字 1 到 9 中选择可能的数字,构建和为 n,长度为 k 的组合。递归函数 dfs: 接收参数:result 为最终结果集,path 为当前正在生成…

【C++】二叉树进阶之二叉搜索树

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:熟练掌握二叉搜索树,能自己模拟实现二…

类和对象-继承

师从黑马程序员 基本语法 有些类与类之间存在特殊的关系,例如: 定义这些类时,下一级别的成员除了拥有上一级的共性,还有自己的特性。 这时候我们就可以考虑继承技术,减少重复代码 语法:class 子类&…

加密流量分类torch实践4:TrafficClassificationPandemonium项目更新

加密流量分类torch实践4:TrafficClassificationPandemonium项目更新 更新日志 代码已经推送开源至露露云的github,如果能帮助你,就给鼠鼠点一个star吧!!! 3/10号更新 流量预处理更新 增加了基于splitCa…

misc49

下载附件是个txt文件,打开发现是个压缩包的头 后缀改成zip后打开 base解码无果,我们尝试字母解码 然后音符解码得到 ❀✿✼❇❃❆❇✿❁❇✻✿❀✾✿✻❀❊❆❃❀❊✻❅❀❄✼❂❊❊✾❇❁✽✽✼❁❂❀❀❀❉❃❂❀❉❃❂❊❊✾✼✻✻❀❆✻✻❀❀✻✻✿…

round四舍五入在python2与python3版本间区别

round()方法返回数值的小数点四舍五入到n个数字。 语法 以下是round()方法的语法: round( x ,n) 参数 x --这是一个数值,表示需要格式化的数值 n --这也是一个数值,表示小数点后保留多少位 返回值 该方法返回 数值x 的小数点四舍五入到n个数字 …

使用css结合js实现html文件中的双行混排

此前写过一个使用flex布局实现html文件中的双行混排,但是感觉效果不佳。经过几天思考,我认为双行混排的要点其实是两个: 1、正文和批注的文字大小不同; 2、正文和批注的行距相互配合进行设定。 正文和批注的文字大小及行距都可…

OpenHarmony下musl编译工具链普法

OpenHarmony下musl编译工具链普法 引言 欠的债总是要还的,这不前面欠的关于OpenHarmony下musl相关的还是要还的。这里我对其中的相关知识点,梳理,归纳重新消化下! 一.GCC/Clang/LLVM的区别与联系 说实话,这块我现在都…

当量化私募投资总监能学到什么?

我的情况更新 ​我是美国电子工程背景毕业的。在华尔街第一份实习是在E3做手工t0的proprietary trading,被刷下来之后就一直在帮顶级的对冲基金打杂当助理。所以当初决定回国一展身手,并且写下了破百万阅读的: 在私募做量化研究半年能学到什…

基于神经网络的偏微分方程求解器再度取得突破,北大字节的研究成果入选Nature子刊

目录 一.引言:神经网络与偏微分方程 二.如何基于神经网络求解偏微分方程 1.简要概述 2.基于神经网络求解偏微分方程的三大方向 2.1数据驱动 基于CNN 基于其他网络 2.2物理约束 PINN 基于 PINN 可测量标签数据 2.3物理驱动(纯物理约束) 全连接神经网路(FC-NN) CN…

保姆级讲解字符串函数(下篇)

目录 strtok的使用 strerror的使用 strstr的使用和函数模拟实现 strstr的使用 strstr函数模拟实现 接上篇:保姆级讲解字符串函数(上篇),我们接着把剩下三个函数讲解完,继续跟着我的步伐一起学习呀. strtok的使用 …