FOC核心函数

  • SVPWM算法


  • 逆变电路三相导通有8种开关量模式因此,任意电压矢量均可以由最近的两个基本电压矢量合成,从而获得近似圆形的定子磁链
  • SVPWM理论基础,平均值等效原理
  • 基于坐标系:α-β坐标系
    SVPWM实现步骤

    • 计算参考电压矢量
    • 判断参考电压矢量Vref所在扇区
    • 计算相邻电压矢量和零矢量作用时间
    • 计算各相桥臂功率器件的开关时间

画圈子里面的代码实现

  • SVPWM模块是电机控制系统实现的核心内容,通过uα和uβ来计算得出6路PWM控制信号,

  • 下面是park逆变换的计算方法

#include <tim.h>
#include <math.h>/*正余轩计算*/#define PWM_Period 100      /*tim定时器*/
#define _PI 3.14159265359
#define _PI_2 1.57079632679
#define _PI_3 1.0471975512
#define _2PI 6.28318530718
#define _3PI_2 4.71238898038
#define _PI_6 0.52359877559
#define _SQRT3 1.73205080757/******************************************/
float voltage_power_supply;/*直流的母线电压24v*/
float sensor_offset=0;
float zero_electric_angle=0;/******************************************/
//将角度规定在一个范围内
float _normalizeAngle(float angle)
{float a=fmod(angle,_2PI);/*È¡Ä£*/return a>=0 ? a:(a + _2PI);
}
/******************************************/
//FOC核心函数,输入Ud、Uq和电角度,输出PWM
void setPhaseVoltage(float Uq,float Ud,float angle_el)
{float Uref;/*²Î¿¼µçѹ*/float U_alpha,U_beta;uint32_t sector;float T0,T1,T2;float Ta,Tb,Tc;float V1,V2,V3;int A,B,C;/*计算扇区的中间变量,布尔类型*/int N;/*判断扇区的变量*///(1)计算Vrefangle_el=_normalizeAngle(angle_el+_PI_2);/*½«½Ç¶È¶¨Ò»¸ö·¶Î§ÄÚ*/U_alpha=Ud*cos(angle_el)-Uq*sin(angle_el);//·´park±ä»»==½«Ud/Uqת³ÉU¦Á/U¦ÂµÄ²Î¿¼µçѹU_beta=Ud*sin(angle_el)+Uq*cos(angle_el);Uref=_sqrt(U_alpha*U_alpha+U_beta*U_beta)/voltage_power_supply;if(Uref>0.577)Uref=0.577;/*Áù±ßÐεÄÄÚÇÐÔ²£¨SVPWM×î´ó²»Ê§ÕæÐýתµçѹʸÁ¿¸³Öµ ¸ùºÅ3  / 3*/if(Uref<-0.577)Uref=-0.577;//(2)判断参考电压的扇区sector=(angle_el / _PI_3)+1;//(3)计算相邻电压矢量和零矢量作用的时间T1=_SQRT3*sin(sector*_PI_3-angle_el)*Uref;/*¼ÆËãÁ½¸öÏàÁÚµçѹ×÷ÓÃʱ¼ä*/T2=_SQRT3*sin(angle_el-(sector-1.0)*_PI_3)*Uref;T0=1-T1-T2;/*ÁãʸÁ¿×÷ÓÃʱ¼ä*///(4)计算各相桥臂开关时间switch(sector){case 1:Ta=T1+T2+T0/2;Tb=T2+T0/2;Tc=T0/2;break;case 2:Ta=T1+T0/2;Tb=T1+T2+T0/2;Tc=T0/2;break;case 3:Ta=T0/2;Tb=T1+T2+T0/2;Tc=T2+T0/2;break;case 4:Ta=T0/2;Tb=T1+T0/2;Tc=T1+T2+T0/2;break;case 5:Ta=T2+T0/2;Tb=T0/2;Tc=T1+T2+T0/2;break;case 6:Ta=T1+T2+T0/2;Tb=T0/2;Tc=T1+T0/2;break;default://possible error stateTa=0;Tb=0;Tc=0;}//PWM信号输出,占空比配置__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,Ta*PWM_Period);//AÏà__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,Ta*PWM_Period);__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_3,Ta*PWM_Period);}

FOC开环驱动电机(开源小项目==FOC控制BLDC电机)相关推荐

  1. 分享一个我开发的MVVM架构的开源小项目

    本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每个工作日都有文章更新. 大家好,今天跟大家分享一个我开发的MVVM架构的开源小项目. 话说这个小项目已经提前跟大家预 ...

  2. 我的MVVM 开源小项目已发布~

    前言 前几篇文章中,我们学习了许多Jetpack架构组件,虽说每个架构组件都是相互协调使用的,但是相信还是有很多人不知道如何搭建一个Jetpack的项目,不知道网络请求该放在什么地方,或者说其他的开源 ...

  3. 可以运行的electron开源小项目

    可以运行的electron开源小项目 文章目录 可以运行的electron开源小项目 1. vue-electron-notes笔记软件 安装依赖 本地启动项目 构建安装包 2 Electron AP ...

  4. android计算器开源小项目代码(附安装包.apk)

    最近在学习安卓开发,做了个小计算器作为实践.发现网上的计算器教程代码的健壮性不够好,只能够容忍正确的输入.于是我花了几天时间写了个完整的程序.可能是我水平有限,其中条件控制逻辑设计的比较复杂,但我受开 ...

  5. 一个开源小项目,如何使用「分类网络」实现排球追踪

          01       背景概述 笔者最近接触到了一个很有趣的问题,有关于排球位置追踪.如果有看过排球比赛的话,大家想必都知道,排球的实时运动轨迹对排球的落点有很大的帮助.而如果可以预知排球的落 ...

  6. 小项目:单片机控制脉搏心电测量仪 测量脉搏心跳 含程序 原理图及仿真文件

    各位小伙伴大家好,考研的事总算告一段落了,最近有点难受去医院一查,呀,好像有点神经衰弱,干什么都有点力不从心,热心的护士小姐姐给我测量了体温查看健康码一气呵成,然后顺利进入了医院.在医生给我测量脉搏和 ...

  7. 小猫爪:PMSM之FOC控制05-让电机开环转起来

    小猫爪:PMSM之FOC控制05-让电机开环转起来 1 前言 2 仿真 3 让电机转起来 END 1 前言   在前面的文章中,已经介绍了Clark,Park,SVPWM,接下来是骡子是马,得拉出来溜 ...

  8. 制作一个有趣的涂鸦物联网小项目(涂鸦模组SDK开发 CBU BK7231N WiFi+蓝牙模组 HSV彩色控制)

    实现的功能: l  APP控制月球灯 l  本地月球灯控制 l  APP控制"大白"颜色,实现各种颜色变身 l  门状态传感器状态APP显示 l  网络状态指示灯,连接服务器长亮, ...

  9. 【微信小程序控制硬件 第12篇-项目篇】微信小程序蓝牙控制硬件应如何开始动手?为您全面解析微信小程序蓝牙API的使用;(附带demo)

    [微信小程序控制硬件第1篇 ] 全网首发,借助 emq 消息服务器带你如何搭建微信小程序的mqtt服务器,轻松控制智能硬件! [微信小程序控制硬件第2篇 ] 开始微信小程序之旅,导入小程序Mqtt客户 ...

最新文章

  1. 《iOS 6高级开发手册(第4版)》——1.11节秘诀:获取和使用设备姿势
  2. mysql8 php7_windows10-nginx-mysql8.0-php7.0环境搭建
  3. python正态分布相关函数
  4. Java为什么不提供运算符重载?
  5. 甲骨文全球大会•2010•北京议程
  6. 云平台管理与部署---虚拟化平台-----KVM
  7. SAP支持服务的QA
  8. JAVA Roman to Integer 罗马数转换为int型方法
  9. HDU 1754 I Hate It 线段树
  10. 前端学习(1907)vue之电商管理系统电商系统之渲染修改用户的表单的重置操作
  11. Windows中查找文件被何进程使用
  12. 2017.3.6~2017.3.7 Harry And Magic Box 思考记录(特别不容易)
  13. 一个简单的json解析器
  14. python毕业设计总结范文大全_毕业设计总结【范文】
  15. 关于4418开发和6818开发
  16. 1602液晶显示屏工作原理引脚电路图51单片机
  17. 三、青龙面板 添加企业微信应用推送消息
  18. c语言程序设计 doc,C语言程序设计精彩资料100例.doc
  19. Learning ROS for Robotics Programming Second Edition学习笔记(六) indigo xtion pro live
  20. BZOJ 4809: 皇后

热门文章

  1. 测试用计算机系统 验证报告,检验报告的各项内容应采用计算机打印,但();()及批准人应手工签名.._简答题试题答案...
  2. 浅析QQ密码保护原理
  3. sybase 与mysql_sybase 和 mysql 转换问题
  4. 毫米波雷达天线耦合(背景环境)的影响与消除
  5. 市场营销常用理论【转】
  6. Wine 专区上线!PS 等榜单前 6 都在这
  7. LRU(leastLeast Recently Used)
  8. Think - 我思故我在
  9. oracle undoautotune,Oracle 隐藏参数:_undo_autotune
  10. linux 如何删除log文件,linux的删除文件日志命令是什么