找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

M05x 弦波电机控制代码 V1.01

  [复制链接]
14#
 楼主| Angus 发表于 2014-3-11 17:37:29 | 只看该作者
w70770777 发表于 2014-3-1 13:25
这么说 如果除 65536 ,DutyCMR 应该赋值为1000吧,这样我就理解了

还有下面两个问题,我是否猜的对呢: ...

You are all right  ^_^
回复 支持 反对

使用道具 举报

13#
w70770777 发表于 2014-3-1 13:25:34 | 只看该作者
Angus 发表于 2014-3-1 12:11
除32768没错,DutyCMR 的最大取值为 500。
如果除 65536 ,DutyCMR 的最大取值就变为 1000 了, 这样与 PW ...

这么说 如果除 65536 ,DutyCMR 应该赋值为1000吧,这样我就理解了

还有下面两个问题,我是否猜的对呢:
1.当“AngleNow = 0°”“PWMA->CMR0 = 500”时,那在一个PWM周期内,A相的正向电流和负向电流通电时间相同,那是不是宏观来看A相处于正弦波的0电压状态?

2.如果第1点成立,CMR最大值为1000,那是不是意味着正弦波可调的幅值是CMR/2?
回复 支持 反对

使用道具 举报

12#
 楼主| Angus 发表于 2014-3-1 12:11:21 | 只看该作者
w70770777 发表于 2014-2-28 18:26
能不能详细的和我说说,这个困扰我很久了


除32768没错,DutyCMR 的最大取值为 500。
如果除 65536 ,DutyCMR 的最大取值就变为 1000 了, 这样与 PWM 的周期值 1000 就对应起来了。PWM 的周期CNR=CMR占空比时,l输出电压100%。
这样做,一是从PWM的角度便于理解输出电压占空比,二是除65536,编译器直接取高16位,运算快。
回复 支持 反对

使用道具 举报

11#
xiaoxiao2013 发表于 2014-2-28 16:52:33 | 只看该作者
本帖最后由 xiaoxiao2013 于 2014-2-28 16:53 编辑
w70770777 发表于 2014-2-28 14:31
谢谢 回答
但是依旧没有解答我的疑惑,比如TabSin【1】 = 0X23C,那么0X23C/65536=0.008728,而sin1°=0. ...

你理解错了,这两个是两码事,你把它们混在一起了,试着先把65536这个去掉想一想,先去掉想想角度怎么来的,这步弄懂然后你就明白了
回复 支持 反对

使用道具 举报

10#
w70770777 发表于 2014-2-28 14:31:53 | 只看该作者
xiaoxiao2013 发表于 2014-2-28 11:33
我来回答
1、“PWMA->CMR0 = 500 + DutyCMR*TabSin[temp32u]/65536 ;”这里面的除数应该是65536,没有错
...

谢谢 回答
但是依旧没有解答我的疑惑,比如TabSin【1】 = 0X23C,那么0X23C/65536=0.008728,而sin1°=0.01745
如果0X23C/32786=0.017446 那就对的上了。

回复 支持 反对

使用道具 举报

9#
xiaoxiao2013 发表于 2014-2-28 11:33:29 | 只看该作者
w70770777 发表于 2014-2-28 09:42
恩 我重新下载了一遍

对于1>,如果是对应0~180度正弦,那“PWMA->CMR0 = 500 + DutyCMR*TabSin[temp32u] ...

我来回答
1、“PWMA->CMR0 = 500 + DutyCMR*TabSin[temp32u]/65536 ;”这里面的除数应该是65536,没有错
2、“PWMA->CMR0 = 500”,明明有500的占空比,为什么说是该相电压为0呢?如果看三相合成电压也不是0啊
3、你的第一点不成立,所以最后一条是错的
回复 支持 反对

使用道具 举报

8#
w70770777 发表于 2014-2-28 09:42:17 | 只看该作者
Angus 发表于 2014-2-27 22:36
1>,TabSin[180]是0~180度正弦表,每度一个数据。
2>,这里应是80,你再重新下载一下。PWM周期是 80us,P ...

恩 我重新下载了一遍

对于1>,如果是对应0~180度正弦,那“PWMA->CMR0 = 500 + DutyCMR*TabSin[temp32u]/65536 ;”这里面的除数应该是32768吧,疑惑不解;

越是思考越是有些疑问:
1.当“PWMA->CMR0 = 500”时,那在一个PWM周期内,A相的正向电流和负向电流通电时间相同,那是不是宏观来看A相处于正弦波的0电压状态?

2.如果第1点成立,CMR最大值为1000,那是不是意味着正弦波可调的幅值是CMR/2?
回复 支持 反对

使用道具 举报

7#
 楼主| Angus 发表于 2014-2-27 22:36:46 | 只看该作者
w70770777 发表于 2014-2-27 19:57
谢谢 解答,进过今天的反复找资料 这两个问题也算解决了,但是又有新的疑问:
1.TabSin[180]这个数组是把 ...

1>,TabSin[180]是0~180度正弦表,每度一个数据。
2>,这里应是80,你再重新下载一下。PWM周期是 80us,PWM频率是 25MHz/1000/2 = 12.5KHz
3>,SPWM和SVPWM都会出现上三路和下三路MOSFET全通的情况,不影响运转特性。
4>,这是SPWM波。M051的性能是可以做 SVPWM 的,目前我没时间做。
5>,芯片可以找芯唐的代理,或直接电话给芯唐的销售。
回复 支持 反对

使用道具 举报

6#
w70770777 发表于 2014-2-27 19:57:00 | 只看该作者
Angus 发表于 2014-2-27 14:17
弦波控制,没有换相的概念,三路互补 PWM 不停输出不同占空比的 PWM ,形成三相弦波。 三相弦波会形成旋 ...

谢谢 解答,进过今天的反复找资料 这两个问题也算解决了,但是又有新的疑问:
1.TabSin[180]这个数组是把60°分成180份 每份应该1/3°,但是我按sin函数算出来 却对不上表格的数值,请教下数组是怎么的出来的;

2.if(temp32u <= 0xFFFF)AngleStep=Divide((60<<16)*40,temp32u);其中“(60<<16)*40”里面乘以40是因为每个PWM周期中断是40US么?如果是40US一周期,那pwm的频率是25Khz,对不上前面的15.6Khz

3.三路互补 PWM 不停输出不同占空比的 PWM,肯定会出现三路下桥臂同时触通的时候,我知道三路下桥臂同时触通会有刹车的效果,不知道会不会影响电机性能

4.楼主大大给的程序是SPWM波形吧,不知道有没有SVPWM波形的程序。

5.M05xxdn系列网上找不到,不知道哪里可以申请样片,或者可以少量购买,来做试验。
回复 支持 反对

使用道具 举报

5#
 楼主| Angus 发表于 2014-2-27 14:17:44 | 只看该作者
w70770777 发表于 2014-2-27 09:37
我看了程序,有几个问题想请教下楼主:
1.初始化时PWMA->CMR0 = 0;PWMA->CMR2 = 0;PWMB->CMR0 = 0;那么 ...

弦波控制,没有换相的概念,三路互补 PWM 不停输出不同占空比的 PWM ,形成三相弦波。 三相弦波会形成旋转的磁场,带动转子转动。

进入主循环之前有一句,DutyCMR  = 500 ; 把90度时的占空比设为 50%了, 在 PWM 中断里, 输出峰值为 50% 的三相弦波, 这时电机就会转。 然后由 P40,P41,P42测到的 Hall 的位置,校正弦波角度。达到平稳运转目的。
回复 支持 反对

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU