搜索
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[STM32F1] 如何有效使用STM32的PWM产生如图所示的PWM

[复制链接]
581|35
 楼主 | 2020-9-26 09:30 | 显示全部楼层 |阅读模式
本帖最后由 hjl2832 于 2020-9-26 09:33 编辑

841095f6e9a4aea61a.png
如图上所示,我想使用单片机做数字电源控制,需要实现上面的PWM输出功能。我的思路,利用定时器1输出固定的PWM(60KHz,50%占空比);利用定时器2来做可变频率控制;
工作流程:利用AD采集输出电压,进而通过定时器2控制定时器1工作的起停来改变可变时间T2。
现在的问题:当负载变化时,输出电压调整的响应时间很慢,达不到想要的稳压输出效果(理想状态应该在几十毫秒之内就能调整好)。
还有没有其它的控制思路能实现上述PWM波形输出。

使用特权

评论回复
| 2020-9-26 10:10 | 显示全部楼层
有个PWM中断,可以计数多少个PWM周期,到了T1后,你可以关闭PWM输出,继续计时T2后,开启PWM。

使用特权

评论回复
| 2020-9-26 10:16 | 显示全部楼层
若是PID算法的话需要多偿试不同参数

使用特权

评论回复
 楼主 | 2020-9-26 10:34 | 显示全部楼层
gaoyang9992006 发表于 2020-9-26 10:10
有个PWM中断,可以计数多少个PWM周期,到了T1后,你可以关闭PWM输出,继续计时T2后,开启PWM。 ...

我试过PWm中断,打开后因为中断时间间隔太小(uS级),严重影响单片机的其它程序运行。资源全部被这个PWM中断占用了(中断中就只如版主所说的做一件事,计数)。

使用特权

评论回复
| 2020-9-26 10:43 | 显示全部楼层
hjl2832 发表于 2020-9-26 10:34
我试过PWm中断,打开后因为中断时间间隔太小(uS级),严重影响单片机的其它程序运行。资源全部被这个PWM中 ...

说的是,你这个需求好矛盾啊。要不这样。弄一个三极管。然后一个定时器控制的IO,定时开关它输出你的这个PWM信号。

使用特权

评论回复
| 2020-9-26 10:44 | 显示全部楼层
gaoyang9992006 发表于 2020-9-26 10:43
说的是,你这个需求好矛盾啊。要不这样。弄一个三极管。然后一个定时器控制的IO,定时开关它输出 ...

不过这样就没法把控每一段PWM波是否都一致了。所以如果你要求T1的PWM周期数,那就没法实现,如果不要求,近似的。是可以。

使用特权

评论回复
| 2020-9-26 11:23 | 显示全部楼层
我觉得不必用纯软件来实现啊,用定时器1生成60KHz固定PWM输出,用定时器2输出250Hz-2.5kHz可变频率输出,两者用与门连接输出,从硬件上进行处理就好了嘛

使用特权

评论回复
 楼主 | 2020-9-26 12:15 | 显示全部楼层
dalarang 发表于 2020-9-26 11:23
我觉得不必用纯软件来实现啊,用定时器1生成60KHz固定PWM输出,用定时器2输出250Hz-2.5kHz可变频率输出,两 ...

那样没法保证每一个T1时刻都是同步的

使用特权

评论回复
| 2020-9-26 14:18 | 显示全部楼层
DMA就可以的

使用特权

评论回复
| 2020-9-26 19:38 | 显示全部楼层
对你所说的 “输出电压调整的响应时间很慢,” 不是很理解。 你ADC采集这边的问题 还是 调整定时器输出 的问题?

按理说 调整定时器的输出应该很快的,T1到了关闭PWM,同时开启T2,T2到了启动PWM输出。 注意 此时关闭CCR的预装功能。

使用特权

评论回复
| 2020-9-27 05:06 | 显示全部楼层
TIM Pulse,Prescaler不变,改变Period

使用特权

评论回复
| 2020-9-27 11:39 | 显示全部楼层
我见过这种类似控制方式的电源,但没有楼主这么严格的时序控制的

使用特权

评论回复
| 2020-9-27 15:36 | 显示全部楼层
很容易实现的吧,不管是PWM还是方波输出,间歇输出是经常要用到的。

使用特权

评论回复
| 2020-9-27 16:26 | 显示全部楼层
我写过类似的程序,一个基础频率,一个调制频率,其实一个定时器就行了。内部的基础频率可以是外部调制频率的N倍,使用count来记录进了多少次中断,使用multiple来记录基础频率与调制频率的倍数关系,当count == multiple - 1时,也就是高低电平的边缘时,写入值,当count == multiple时,再次写入值就行了。基础频率和调制频率都是可以修改的。

使用特权

评论回复
| 2020-9-27 16:53 | 显示全部楼层
两个PWM信号相与就可以了

使用特权

评论回复
| 2020-9-27 18:08 | 显示全部楼层
用f3, f4系列, pwm性能很好. 如果你软件实现功力不够就外挂一个与门

使用特权

评论回复
| 2020-9-27 20:43 | 显示全部楼层
这种是不是属于专用协议了?

你在做无线电调制吗?

使用特权

评论回复
| 2020-9-27 20:57 | 显示全部楼层
外加与门

使用特权

评论回复
| 2020-9-27 20:58 | 显示全部楼层
不复杂,就是简单的载波啊!

固定发一个 0X80  然后 延时就可以啊!

使用特权

评论回复
| 2020-9-27 21:03 | 显示全部楼层
T1到了关闭PWM,同时开启T2,T2到了启动PWM输出。 注意 此时关闭CCR的预装功能。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表