打印

关于如何进行有效的周波控制的算法, 请大家讨论

[复制链接]
1541|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Harvard|  楼主 | 2013-11-14 22:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
定时器的tick 是20ms,  如何实现这样一个占空比控制 pwm = n/N; N个周期, 单位为1.   实际的脉冲周期T = N*20ms;
高电平的脉宽为n,但是设计难点在于,我们不要这样的常规分布
|--------------------------------------------________________________________________________________________|
| <---------------------n------------------->|
|__________________________________________________N________________________________________________________|

我们要求利用一个算法,尽量使得某个占空比下, 高电平脉冲数目 n 尽量平均发布. like this,
| --__--__--__--__--__--__--__--__--__--__--__--__-_ -__--__--__--__-_ -__--__--__--__-_ -__--__--__--__-_ -__--|
n不要一下子就发完,而是根据原则,尽可能在周期上平均发布.
另外要强调的是:因为本应用的目地就是 调节交流输出功率Pout
Pout = n/N .K,K为常数,也就是说输出功率只和占空比n/N有关. n和N都为整数,
n和N都是可变的 ,只要占空比在所需的范围内.
试问如何设计一个好的算法,使得n/N从0-100可调.  且n高电平的个数尽可能平均.
比如10%的占空比, 不是先10个高电平脉冲 然后是90个低电平脉冲,而是1个高电平,9个低电平.
同样50%,   不是50个高电平,50个低电平,而是一个高电平,一个低电平.
以此类推.
有兴趣的同学跟帖吧.

相关帖子

沙发
Harvard|  楼主 | 2013-11-14 23:47 | 只看该作者
自己顶一个, 表述不太清楚 ,目地就是让pwm的有效脉宽,以为pwm定时器的tick为单位,尽可能的均匀分布在周期里.
检索到一个好** 大家共享, 给各位需要的周波控制的同事们.

整周波间隔式过零解发控制电路.pdf

75.76 KB

使用特权

评论回复
板凳
Harvard|  楼主 | 2013-11-15 22:07 | 只看该作者
鄙人突然想到了一个办法 可以利用数组 来实现 .来列举这100种周波出现的情况,flash有限,可以用用bit来做.

使用特权

评论回复
地板
guosr| | 2013-11-15 23:13 | 只看该作者
本帖最后由 guosr 于 2013-11-15 23:28 编辑

这是个数学问题:对任意分式n/N,你需要把分母变换成n等分,不能整除的情况下,余数均匀补到最后几份上,这时候你所需的最分散的组合就出来了,举个例子
对于19/100,你需要把分母变换成19等分,每份是5,但因为不能整除,所以余数5补到最后5份上,这样19/100=19/(5+5+5+5……+5+6+6+6+6+6),也就是说分母是14个5加上5个6,因此你所需的最分散的占空比就是
   10000 10000 10000……  10000 100000 100000 100000 100000 100000
       就是14个10000,最后再补5个100000
       如果你要实现50/100,分母分成50等分,每份是2,所以你需要的组合就是101010…… 10
       如果你要实现3/100,分母分成3等分:33+33+34,所以你需要的组合就是……自己算吧

     对于超过50%的占空比,比如60%,你只需要把对应的40/100按上述方法求解,然后再取反即可。
    这还不是最均匀地组合,但也基本满足你的需要。如果想进一步均匀,那么余数就要均匀的分散到n份中,而不是固定补在最后几份上

使用特权

评论回复
5
qzlbwang| | 2013-11-16 11:10 | 只看该作者
本帖最后由 qzlbwang 于 2013-11-16 11:17 编辑

举例(19/100):   
      A=19,则 B=100-19=81    ∵A<B    (占空比小于50%)
①  ∴ 输出高电平1周期(H=1)  
② 输出低电平4周期(L=(B+(A/2))/A=(81+(19/2)/19=4)(简单说就是B除以A,加上0.5后取整)
③ A=A-H=19-1=18,B=B-L=81-4=77。(求剩余高电平周期数和剩余低电平周期数)
④ 转①
最终的结果是:100001000010000......100001000001000010000.......
  如果A≥B则:(占空比大于等于50%)
① 输出高电平H周期(H=(A+B/2)/B)
②输出低电平1周期(L=1)
③A=A-H,B=B-L

使用特权

评论回复
6
qzlbwang| | 2013-11-16 11:47 | 只看该作者
道理很简单:
如果占空比小于50%,则输出占空比为1:N,其中N是低电平周期数的四舍五入取整。余数留给下一个控制周期计算。
反之,如果占空比大于等于50%,则输出占空比为N:1,同样,N是低电平周期数的四舍五入取整。余数留给下一个控制周期计算。
    这样就用尽可能小的控制周期得到尽可能准确的占空比。且周期足够长时得到准确的占空比。(纠正误差的控制周期也均匀地分布在其中,也就是误差波动也最小)

使用特权

评论回复
7
Harvard|  楼主 | 2014-3-6 23:08 | 只看该作者
楼上分析非常透彻 太感谢了. 解决了我们在进行周波控制中的均匀性问题.

使用特权

评论回复
8
受不了了| | 2014-3-7 09:03 | 只看该作者
咦,好巧,昨晚我熬夜做的东西和这个一样,也是频率不同的脉冲怎样尽可能均匀分布

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:单片机工作者

74

主题

1729

帖子

21

粉丝