完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
嵌入式系统中对于新手来说经常遇到一个问题:怎样把占空比输出到功率器件中,怎样实现的。特别是对于电机控制、三相变流系统中怎样把三相占空比控制到6个功率器件或者说输出到IPM模块中,是个需要花很大功夫看文献的工作。
比如说TI中的HRPWM模块,或者说瑞萨芯片中MTU模块。一般新手都会去研究半天。网上也没有类似的说明。把我自己学习的过程分享下,以瑞萨芯片RX62T,PMSM电机控制为例,单电阻采样方式,分析学习多功能定时器脉冲单元3MTU3(Multi-function Timer Pulse Unit3) 首先通过算法得到三相占空比,占空比就是说一个周期内作用的时间,怎样把这个占空比转换为IGBT导通和关断的时间。学习的方法是如果让我设计一个MCU中的模块实现这个功能,怎样实现? 首先得有周期吧,就是这个多长时间算一次占空比,也就是平常说的电机控制频率4KHz,16KHz等等。MTU3中就有寄存器管这事情,MTU3.TGRA的值就是周期频率,这还没完,寄存器只能设置整数值,比如说2000,那我想设置4KHz怎么办呢,就需要有个时钟,多长时间记一次,所以首先得选择时钟,是用80MHz主时钟还是8KHz,这个时钟在进行时钟配置的时候已经明确了,所以从时钟配置中找到ICLK是多少,配置的对应的MTU3的PCLKA是多少 假设还是80MHz,那也就是1/80MHz = 0.0000000125s(0.0125us)计数一次,这个计数值肯定也得有个寄存器来设定啊,这个寄存器就是定时器的计数器TCNT,也就是每隔0.0125us,这个TCNT就加1,一直加到你设定的MTU3.TGRA,这个计数器就再清零(模式不同有差异),再计数。所以说想设置4KHz,那么寄存器MTU3.TGRA值就(1/4K)/(1/80M)=20000;上述说的是递增清零模式,就是TCNT从0加到20000,如果到20000马上变成0,; 那如果是递增递减模式,同样的要求周期是4KHz,这个MTU3.TGRA就得减半,想想为什么,因为TCNT从0到10000,再从10000减一减一到0。 还有TGRA其他设置方式,暂且不一一赘述。 设置好了周期后回到第一个问题,如果是让我设计MCU中PWM模块,我怎们办? 周期有了,设置占空比吧。比如说这个时候占空比30%为1,剩余70%为0。 一个周期是100%,也就是刚刚设置的20000,那么30%就是6000,也就是这个时候有个寄存器是6000,那么通过这个寄存器比较,如果比这个寄存器大,就输出0,比这个寄存器小就输出1,这个寄存器通过不同配置比如MTU3.TGRB,给这个寄存器赋值就可以了,但是这个时候得有输出口啊,这个0和1放到哪个寄存器或者给了哪个管脚了,这样给外部IGBT或者IPM才行啊,这个时候就需要看手册,直接给了MTIOC管脚了,但是30%为1,70%为0,还是30%为0,70%为1就得需要使用输出控制寄存器TOCR来进行配置。 上图就是30%为0, 70%为1的例子。 此时已经完成一个管脚的输出了,还剩下五个,那下一篇继续。。。 |
|
|
|
只有小组成员才能发言,加入小组>>
3311 浏览 9 评论
2994 浏览 16 评论
3493 浏览 1 评论
9058 浏览 16 评论
4087 浏览 18 评论
1178浏览 3评论
605浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
599浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2335浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1896浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:05 , Processed in 1.033897 second(s), Total 51, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号