西莫电机圈

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 5301|回复: 8

[原创] 根据论坛中的帖子写的SVPWM的C语言代码,亲测可用

[复制链接]

该用户从未签到

发表于 2015-9-10 17:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
static void SVPWM_3ShuntCalcDutyCycles(void)
{         
   
         u8  a,b,c;   

                  hElectrical_AngleCnt += Pwm_PutAdd_UpDT;
                  if(hElectrical_AngleCnt > 10922) hElectrical_AngleCnt =10922;//60度
                   Electrical_Angle = hElectrical_Angle - bSign*hElectrical_AngleCnt + Turn_Angle_Error  +Svpwm_Angle_Error;
                 Pwm_AngleA1 = (signed short)(Electrical_Angle);    //求出当前电角度

                 TIM1->CCER=0x1ddd;
           if(Motor_Pwm_Aim > 2180) Motor_Pwm_Aim = 2180;        //   32768/15
           Vector_Components = Trig_Functions(Pwm_AngleA1);
     Valpha_tmp1 =Motor_Pwm_Aim*15 * Vector_Components.hCos/32768;        //
     Valpha_1 = (s16)(Valpha_tmp1);                 
   
           Vbeta_tmp1 =Motor_Pwm_Aim*15 * Vector_Components.hSin/32768;                // Uout*Sin电角度
     Vbeta_1 = (s16)(Vbeta_tmp1);                 
          
           UAlpha = Valpha_1 * T_SQRT3 ;   //11200*1.73205   
     UBeta  = Vbeta_1 * T;   //U百塔*4*Tpwm(扩大4倍)
         
                 X  = UBeta;                 //(X=0)Ubeta=0,就是V1(100),V4(011)所在的这条线,       (0° /180°)
                 Y  = ( UAlpha  + UBeta)/2;  //(Y=0)Ualfa+Ubeta=0,就是V2(110),V5(001)所在的这条线 (60° /240°)
                 Z  = (-UAlpha  + UBeta)/2;  //(Z=0)Ualfa-Ubeta=0,就是V3(010),V6(101)所在的这条线(120°/300°)
           Va = UBeta;                     //(clarke逆变换)
           Vb = ( UAlpha  - UBeta)/2;
     Vc = (-UAlpha  - UBeta)/2;
           if(Va>=0) {a=1;} else a=0;
                 if(Vb>=0) {b=1;} else b=0;
                 if(Vc>=0) {c=1;} else c=0;
                 Sector=a+2*b+4*c;
          switch(Sector) //
  {  
    case SECTOR_3:   //扇区1
        hTimePhA = (T/8) + ((( T + Z - X)/2)/131072);    //32768*4
                                hTimePhB = hTimePhA - Z/131072;
                                hTimePhC = hTimePhB + X/131072;                  
                break;
    case SECTOR_1:   //扇区2
        hTimePhB = (T/8) + ((( T- Z - Y)/2)/131072);
                                hTimePhA = hTimePhB + Z/131072;
                                hTimePhC = hTimePhA + Y/131072;                     
                break;

    case SECTOR_5:  //扇区3
        hTimePhB = (T/8) + (((T - X + Y)/2)/131072);
                                hTimePhC = hTimePhB + X/131072;
                                hTimePhA = hTimePhC - Y/131072;                                       
                break;
   
    case SECTOR_4:  //扇区4
                                hTimePhC = (T/8) + (((T + X - Z)/2)/131072);
                                hTimePhB = hTimePhC - X/131072;
                                hTimePhA = hTimePhB + Z/131072;                                
                break;  
   
    case SECTOR_6:  //扇区5
        hTimePhC = (T/8) + (((T + Y + Z)/2)/131072);
                                hTimePhA = hTimePhC - Y/131072;
                                hTimePhB = hTimePhA - Z/131072;                                    
                break;
               
    case SECTOR_2:  //扇区6
        hTimePhA = (T/8) + (((T - Y + X)/2)/131072);
                                hTimePhC = hTimePhA + Y/131072;
                                hTimePhB = hTimePhC - X/131072;                                
                break;
    default:
                break;
   }
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过

该用户从未签到

 楼主| 发表于 2015-9-10 17:31 | 显示全部楼层
本人使用在无刷电机控制中,电流0.6A左右,转动正常,但是加负载后有点抖动的感觉,正在研究中,,,,
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-9-10 17:32 | 显示全部楼层
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2016-9-21 08:51 | 显示全部楼层
好厉害,继续看看看看
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 16 天

连续签到: 1 天

[LV.4]偶尔看看III

发表于 2017-1-3 14:10 | 显示全部楼层
楼主大哥,你在干啥,这不是ST的代码吗?
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2017-10-20 13:27 | 显示全部楼层
也不完全是,是把ST的修改过的,ST的SVPWM一团糟,首先T/2部分与文档对应不上,然后扇区的判断也奇怪,我后来自己改了,跟楼主这个很类似
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2018-2-4 21:43 | 显示全部楼层
Jonny0811 发表于 2017-10-20 13:27
也不完全是,是把ST的修改过的,ST的SVPWM一团糟,首先T/2部分与文档对应不上,然后扇区的判断也奇怪,我后 ...

你好!!!  我不太理解 里面 算  UBeta的时候为啥 要乘以4了??
能接讲讲么??  谢谢!!!
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

该用户从未签到

发表于 2018-7-3 09:58 | 显示全部楼层
楼主还在么,有完整的程序给参考一下么

点评

楼主估计还活着,这点毋庸置疑  详情 回复 发表于 2019-10-17 09:12
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

签到天数: 11 天

连续签到: 1 天

[LV.3]偶尔看看II

发表于 2019-10-17 09:12 | 显示全部楼层
Owen1234 发表于 2018-7-3 09:58
**** 作者被禁止或删除 内容自动屏蔽 ****

楼主估计还活着,这点毋庸置疑
西莫电机论坛微信公众平台正式上线!★详情请点击★ 西莫电机论坛会员交流专用群欢迎您西莫电机论坛加群请注明论坛用户名及所从事专业,否则不予通过
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|西莫电机圈 ( 浙ICP备10025899号-3 浙公网安备:33028202000436号

GMT+8, 2024-4-25 15:27 , Processed in 0.100002 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表