需要底层基础知识:

  1. 固定已有线圈,产生的磁场与电流呈线性正相关
  2. 线圈是感抗器件,不允许电流突变,故:固定频率输入下,流经的电流与有效电压有关,即与PWM的占空比有关,且呈正相关
  3. 熟练应用力的合成与分解,即坐标转换

前言:以一对极永磁同步电机为例,不考虑转子位置,静态控制三个定子线圈产生任意角度。俯视电机,电机的有效部分看作一个圆盘,三个定子线圈两两之间成120°夹角围绕转子形成一个圆。控制三个磁场的电流可以合成任意角度的磁场。电机的三个线圈用Y型接法,故引出三根线,命名为U、V、W三相,给这三相供不同的电流可以合成任意角度磁场。

1、SVPWM理论

SVPWM的输入是直角坐标系下正交的两个电压值,这里令U轴电流方向是直角坐标系的横坐标命名为α轴,电流流向电机为正,纵坐标正交于横坐标且过电机的轴心命名为β轴,这样就把这个圆分成了六个区域,括号内的是UVW的电压(UVW),1是给电压,0是接地。

当输入U给电压V和W接地,即(100),定子的磁场方向的α轴重合,磁场角度为0°;

当输入U和V给电压W接地,即(110),电机定子励磁的磁场方向为60°依此类推。

其中(000)和(111)同等含义,模长都为0,因此方向没有意义。

2、磁场合成

上图所示U1-U6都是固定磁场,且磁场强度都是最大值,U4是0°,U6是60°,U2是120°,U3是180°,U1是240°,U5是300°,要想任意磁场角度和强度,需要对磁场进行合成。

以合成磁场30°为例,需要对U4和U6同时供等强度的电,这样才能合成。至于怎么供等强度的电,上文说过感性负载不能电流突变,但是供给电压是有人为控制的可突变,利用这个特性先给U4供电,然后突然变成U6供电,快速不停的切换U4和U6,并保证U4和U6同等的时间和电压,这样U4和U6即同时产生相同强度的磁场,磁场合成就有了30°。

以磁场强度缩减,也以30°的磁场为例。在合成磁场的基础上,同时缩减U4和U6的供电强度,就能做到把30°的合成磁场强度缩减。怎么缩减U4和U6的磁场,上文说过,有两个零矢量(000)(111),把这两个零矢量添加到U4和U6的电压里面就可以缩减U4和U6的磁场强度。T0是零向量(000)的占用时间,T7是零向量(111)的占用时间,T4是U4(100)向量的供电占用时间,T6是U6(110)向量的供电时间,Ts是整个周期时间。如下图

改变T4和T6的比例可以改变磁场方向(0-60°),如30°,T4:T6=1;改变(T4+T6):(Ts)的比例可以改变磁场强度。

3、代码部分

//FOC的准备工作,首先需要三角函数计算,由于函数库计算太慢
//这里先把0~360度的三角函数全算了,用的时候直接查表
void FOCsin10000K(short *Dsin,short *Dcos)
{short jki;for(jki=0;jki<360;jki++){if(jki<=90)Dsin[jki]=sin(jki*3.1415926/180)*10000+0.5;//放大10000倍else if((jki>90)&(jki<=180))Dsin[jki]=Dsin[180-jki];else if((jki>180)&(jki<=270))Dsin[jki]=-Dsin[jki-180];elseDsin[jki]=-Dsin[360-jki];if(jki>=90)Dcos[jki-90]=Dsin[jki];elseDcos[jki+270]=Dsin[jki];}for(jki=0;jki<360;jki++){if(jki==90)Dtan[90] = 10000;else if(jki==270)Dtan[270] = -10000;elseDtan[jki] = tan(jki*3.1415926/180)*100+0.5;//放大100倍}Dtan[360]= Dtan[0];}
//SVPWM
unsigned char FOCpwmDrive(long va,long vb,long Vdc,unsigned short Tpwm) //OK va-A_alpha_Voltage,vb-B_beta_Voltage
{long tanh;//A_B_include_angle_tan_Value = vb/valong Vx,Vy;//include_angle_60_double_valuelong Tx,Ty,Ts,T0;//include_angle_60_double_timeunsigned char sn=0;//防止计算tan值时,出现分母为0情况if(va==0){if(vb >= 0)tanh=173210;elsetanh = -173210;}else//计算tan值tanh=vb*10000/va;//先判断象限,然后根据tan值再判断区间if(vb>=0)//第一二象限{if((va>=0)&(tanh<17321))//1区    0  ---  60{sn=1;//section  1~6  this section is not rotor and alpha include angle, this aim and alpha include angleVx=(1500*va-866*vb)/1000;//3/2*va-sqrt(3)/2*vb;  //V1Vy=1732*vb/1000;//sqrt(3)*vb;                               //V2Tx=Vx*Tpwm/Vdc;Ty=Vy*Tpwm/Vdc;if(Tx+Ty > Tpwm){Ts=Tx*Tpwm/(Tx+Ty);Ty=Ty*Tpwm/(Tx+Ty);Tx=Ts;}T0=(Tpwm-Tx-Ty)/2;SVPWMtabc.ta = T0;SVPWMtabc.tb = T0+Tx;SVPWMtabc.tc = T0+Tx+Ty;}else if((va<0) & (tanh>=-17321))//3区   120  ---  180{sn=3;Vx=1732*vb/1000;//sqrt(3)*vb;                                         //V3Vy=(-1500*va-866*vb)/1000;//-3/2*va-sqrt(3)/2*vb;      //V4Tx=Vx*Tpwm/Vdc;Ty=Vy*Tpwm/Vdc;if(Tx+Ty > Tpwm){Ts=Tx*Tpwm/(Tx+Ty);Ty=Ty*Tpwm/(Tx+Ty);Tx=Ts;}T0=(Tpwm-Tx-Ty)/2;SVPWMtabc.ta = T0+Tx+Ty;SVPWMtabc.tb = T0;SVPWMtabc.tc = T0+Tx;}else//第二区  60  ---  120{//2sn=2;Vy=(1500*va+866*vb)/1000;//3/2*va+sqrt(3)/2*vb;   //V2Vx=(866*vb-1500*va)/1000;//sqrt(3)/2*vb-3/2*va;    //V3Tx=Vx*Tpwm/Vdc;Ty=Vy*Tpwm/Vdc;if(Tx+Ty > Tpwm){Ts=Tx*Tpwm/(Tx+Ty);Ty=Ty*Tpwm/(Tx+Ty);Tx=Ts;}T0=(Tpwm-Tx-Ty)/2;SVPWMtabc.ta = T0+Tx;SVPWMtabc.tb = T0;SVPWMtabc.tc = T0+Tx+Ty;}}else//第三四象限。对应4,5,6区间{if((va<=0)&(tanh<=17321)&(tanh>=0))//第四区间180 ---  240{//4sn=4;Vy=(866*vb-1500*va)/1000;//sqrt(3)/2*vb-3/2*va;  //V4Vx=-1732*vb/1000;//-sqrt(3)*vb;                             //V5Tx=Vx*Tpwm/Vdc;Ty=Vy*Tpwm/Vdc;if(Tx+Ty > Tpwm){Ts=Tx*Tpwm/(Tx+Ty);Ty=Ty*Tpwm/(Tx+Ty);Tx=Ts;}T0=(Tpwm-Tx-Ty)/2;SVPWMtabc.ta = T0+Tx+Ty;SVPWMtabc.tb = T0+Tx;SVPWMtabc.tc = T0;}else if((va>0)&(tanh >= -17321))//第六区  300 -- 360{//6sn=6;Vy=-1732*vb/1000;//-sqrt(3)*vb;       //V6Vx=(1500*va+866*vb)/1000;//3/2*va+sqrt(3)/2*vb;    //V1Tx=Vx*Tpwm/Vdc;Ty=Vy*Tpwm/Vdc;if(Tx+Ty > Tpwm){Ts=Tx*Tpwm/(Tx+Ty);Ty=Ty*Tpwm/(Tx+Ty);Tx=Ts;}T0=(Tpwm-Tx-Ty)/2;SVPWMtabc.ta = T0;SVPWMtabc.tb = T0+Tx+Ty;SVPWMtabc.tc = T0+Tx;}else//第5区  240 --- 300{sn=5;Vx=(-866*vb-1500*va)/1000;//-sqrt(3)/2*vb-3/2*va;  //V5Vy=(1500*va-866*vb)/1000;//3/2*va-sqrt(3)/2*vb;    //V6Tx=Vx*Tpwm/Vdc;Ty=Vy*Tpwm/Vdc;if(Tx+Ty > Tpwm){Ts=Tx*Tpwm/(Tx+Ty);Ty=Ty*Tpwm/(Tx+Ty);Tx=Ts;}T0=(Tpwm-Tx-Ty)/2;SVPWMtabc.ta = T0+Tx;SVPWMtabc.tb = T0+Tx+Ty;SVPWMtabc.tc = T0;}}SVPWMtabc.sn = sn;if((Vx>=0)&(Vy>=0))return 1;elsereturn 0;//出错}

FOC控制-以SVPWM理论控制矢量磁场相关推荐

  1. 深入浅出讲解FOC控制与SVPWM技术

    深入浅出讲解FOC控制与SVPWM技术 0.前言 0.1 什么是FOC 0.2 FOC驱动器和无刷电调的区别 1.从电机原理说起 1.1 一些基础知识 1.2 无刷电机原理 1.3 关于BLDC和PM ...

  2. 永磁同步电机矢量控制到无速度传感器控制学习教程(PMSM)(一)

    一个阶段的学习结束了,整理了之前的过程中的学习成果,已经过了工作的年纪,在这里稍微出一下自己做的一套永磁同步电机的教程,从基础的矢量控制,到应用性较强的MTPA.弱磁控制等,最后深入到无速度传感器的控 ...

  3. 永磁同步电机力矩控制(九):定子磁场中的若干相关概念

    我在IND4汽车人App可以帮助大家解答汽车电子的相关技术问题,欢迎通过IND4汽车人App向我咨询. 在永磁同步电机中,转子磁场中因为有永磁材料构成此磁体的南极和北极,转子磁场的产生机理及在空间的分 ...

  4. 矢量控制与V/F控制详解

    原文:http://m.elecfans.com/article/714518.html 一.矢量控制 1.矢量控制简介 矢量控制是一种电机的磁场定向控制方法:以异步电动机的矢量控制为例:它首先通过电 ...

  5. 多智能体系统MASs,编队控制,自适应理论,基于干扰观测器的控制DOBC,Matlab数值仿真实验

    61.多智能体系统MASs,编队控制,自适应理论,基于干扰观测器的控制DOBC,Matlab数值仿真实验 ID:561999679279244881

  6. 转稚晖军大佬 --【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术

    转稚晖军大佬 --[自制FOC驱动器]深入浅出讲解FOC算法与SVPWM技术 [自制FOC驱动器]深入浅出讲解FOC算法与SVPWM技术 0.前言 最近想做一个机器人项目,设计中需要用到高性能超小体积 ...

  7. FOC算法与SVPWM技术

    最近看到了FOC这个东西,感觉很有意思,想着以后用这个算法做个东西,目前的想法是用开源的ODrive方案,自己做一个有感单电机驱动的板子,并且加入一点自己的东西,但是这不是目前工作的重点,所以就先学习 ...

  8. 永磁直驱风力发电机并网仿真模型,单位功率因数控制,进行弱磁控制

    永磁同步电机矢量控制 通过了解电机数学模型可以对电机进行矢量控制,将永磁同步电机进行坐标变换进行类似直流电机的控制,控制系统结构图如下. 图1永磁同步电机矢量控制图 永磁同步电机矢量控制系统主要有,逆 ...

  9. 无刷直流电机方波控制和正弦波控制六步换向控制的区别?

    无刷直流电机方波控制和正弦波控制六步换向控制的区别? 如上图所示两者都采用六个功率晶体管作为开关元件, 1.方波控制:A.B.C三相输出各自由两个功率晶体管控制通断,采用两两导通的方式,也就是在同一桥 ...

最新文章

  1. 网站建设中购买虚拟主机重要参数有哪些?
  2. .NET开发者提高编程技能的5种方法
  3. [Drupal] How to get the real path of a node, no matter it is a path or a url alias
  4. 引用另一模板的宏_生信人值得拥有的编程模板Shell
  5. WPF Image Source 设置相对路径图片
  6. php redis命令大全,redis命令大全参考手册
  7. oracle clob 粘贴,使用Oracle SQL Developer将CLOB导出到文本文件
  8. 《SAP后勤模块实施攻略—SAP在生产、采购、销售、物流中的应用》——第2章 生产模式和计划策略 2.1 计划策略与需求类型总览...
  9. 【Python】socket编程——使用TCP协议实现智能聊天机器人
  10. python优化网站_利用python做seo优化
  11. OpenStack基金会更名,开源基础设施开启新十年
  12. PTA 新浪微博热门话题 详细题解 附额外样例
  13. 流媒体网络传输的技术瓶颈
  14. Promise详尽指南
  15. wifi营销小程序源码+搭建教程
  16. 线程池:newCachedThreadPool、newFixedThreadPool、newSingleThreadExecutor、newScheduleThreadPool
  17. 课时23 YUM软件管理
  18. 【苹果相册推】您只需使用证书并发布证书描述文件(无需发布)上传PEM范例文件
  19. 大材小用,211硕士抢占家政市场?
  20. vue项目搭建(二)

热门文章

  1. 单片机通用配置(基于STC12C5A60S2)
  2. vue中请求到的数据赋值给data 对象
  3. java文件后缀_关于java文件扩展名认识
  4. 什么是域名?域名有哪些种类?
  5. 【网络】计算机网络-数据链路层 Data Link Layer
  6. 有理数思维导图,七年级数学思维导图整理
  7. 《烟花》个人深度解读
  8. php 极简 新闻,开源极简新闻信息分享工具
  9. 杨辉三角与二项式定理
  10. 关于SQLの大题练习