找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9891|回复: 13
打印 上一主题 下一主题
收起左侧

51单片机电动车BLDC控制系统源程序

  [复制链接]
跳转到指定楼层
楼主
给大家分享一个电动车BLDC控制系统程序,采用51内核单片机,下面是该程序的说明:
.5.14
1、增加平均电流保护功能,保护1.8A检测300ms,平均电流由功率值FOC_POW和母线电压计算出;
2、增加过流保护3次即不重启;
3、运放放大倍数改为10倍,采样电阻0.05R
4、限流4.0A相电流,过流4.0A相电流
5、增加调速曲线上限为0.95,极ADC值为5V*0.95以上时全速


.11.03
在FU6811 HALL FOC 20161102_V2.0_L_SL_O 1743基础上改
1、刹车效果
2、启动电压0.9V
3、启动力度减弱
4、运行电流10A

转把:0.9~3.0~3.9
刹车:1.0~3.0~3.9

还需解决问题:
1、空载速度控制不住
2、刹车返充电限压无效

FU6811 HALL FOC 20160914_V5.0 - 2139 END


单片机源程序如下:
  1. /**************************** (C) COPYRIGHT 2015 Fortiortech shenzhen *****************************
  2. * File Name          : Main.c
  3. * Author             : Fortiortech Appliction Team
  4. * Version            : V1.0
  5. * Date               : 01/07/2015
  6. * Description        : This file contains main function used for Motor Control.
  7. ***************************************************************************************************
  8. * All Rights Reserved
  9. **************************************************************************************************/


  10. /* Includes -------------------------------------------------------------------------------------*/
  11. #include <FU68xx.h>
  12. #include <Myproject.h>
  13. #include <FU68xx_Sys.h>


  14. /* Private typedef ------------------------------------------------------------------------------*/
  15. /* Private define -------------------------------------------------------------------------------*/
  16. /* Private macro --------------------------------------------------------------------------------*/
  17. /* Private variables ----------------------------------------------------------------------------*/
  18. unsigned char code SysTable[] = {0x1a,0x40,0x00,0x00,0x00};


  19. /* Private function prototypes ------------------------------------------------------------------*/
  20. /* Private functions ----------------------------------------------------------------------------*/
  21. void SoftwareInit(void);
  22. void HardwareInit(void);
  23. void MotorControlInit(void);

  24. /*-------------------------------------------------------------------------------------------------
  25.         Function Name :        void main(void)
  26.         Description   :        主函数主要功能是初始化,包括系统初始化,软件初始化,硬件初始化,主循环
  27.                   扫描。
  28.                   系统初始化--系统时钟配置,系统电源配置,看门狗配置
  29.                   软件初始化--初始化所有定义的变量
  30.                   硬件初始化--初始化硬件设备配置
  31.                   主循环扫描--看门狗喂狗,电机控制状态扫描,调试测试函数
  32.         Input         :        无
  33.   Output                                :        无
  34. -------------------------------------------------------------------------------------------------*/
  35. void main(void)
  36. {
  37.          uint32 PowerUpCnt = 0;

  38.         /*System Init*/
  39.         SystemInit();
  40.         
  41.         /*Wait For Power Up*/
  42.         for(PowerUpCnt=0;PowerUpCnt<SystemPowerUpTime;PowerUpCnt++){};

  43.         /*Software Init*/        
  44.   SoftwareInit();
  45.         
  46.   /*Hardware Init*/        
  47.   HardwareInit();

  48.                
  49.         while(1)
  50.         {
  51.                 if(mcCurOffset.OffsetFlag==0)
  52.                 {
  53.                         /****上电先进行硬件电流基准采集,再进行主控函数扫描***/
  54.                          GetCurrentOffset();
  55.                 }
  56.     else
  57.                 {
  58.                         /****主控函数,状态扫描****/
  59.                         MC_Control();                                       
  60.                
  61.                         //串口处理
  62. //                UARTScanControl();
  63.                         
  64.                         /****工作电压,功率,电流计算,运算时间1.104ms*****/
  65.                 //        EleParCal();
  66.                 }
  67.         }
  68. }


  69. /*-------------------------------------------------------------------------------------------------
  70.         Function Name :        void SoftwareInit(void)
  71.         Description   :        软件初始化,初始化所有定义变量,按键初始化扫描
  72.         Input         :        无
  73.   Output                                :        无
  74. -------------------------------------------------------------------------------------------------*/
  75. void SoftwareInit(void)
  76. {
  77.         static uint8 CWCCWCnt = 0;
  78. /****初始化所有定义的参数变量****/
  79.         MotorcontrolInit();         
  80.         
  81.   /****功能IO初始化***********/
  82.         GPIO_Init();        
  83.         
  84.          UARTScanInit();
  85.         
  86.         mcFRState.FlagFR = 0;
  87.         
  88.         
  89. //         //旋转方向确定
  90. //                 if(!GP37)
  91. //                 {
  92. //                         if(CWCCWCnt < 10)
  93. //                         {
  94. //                                 CWCCWCnt ++;
  95. //                         }
  96. //                         if(CWCCWCnt >= 10)
  97. //                         {
  98. //                                 CWCCWCnt = 10;
  99. //                                 mcFRState.FR        = CCW;
  100. //                         }
  101. //                 }
  102. //                 else
  103. //                 {
  104. //                         if(CWCCWCnt > 0)
  105. //                         {
  106. //                                 CWCCWCnt --;
  107. //                         }
  108. //                         if(CWCCWCnt <= 0)
  109. //                         {
  110. //                                 CWCCWCnt = 0;
  111. //                                 mcFRState.FR        = CW;
  112. //                         }
  113. //                 }
  114. //         
  115.                   mcFRState.FR        = CW;
  116.                  mcHall.FRStatus = mcFRState.FR;
  117.                  mcFRState.TargetFR = mcFRState.FR;

  118.         //电机开/关机状态确定
  119.         mcFocCtrl.MotorONOFFStatus = 0;
  120. //         mcFocCtrl.MotorONOFFRunawayProtect = 0;    //上电防飞车保护
  121.         mcFocCtrl.MotorOFFTimes            = 0;
  122.         
  123.         mcHall.FailStatus                 = 0;        //故障标识
  124.         mcHall.ContorllerstateTwo         = 0;        //控制器状态2
  125.         
  126.         mcFocCtrl.mcCruiseControlQuit     = 0;
  127.         
  128.         if(mcFocCtrl.MotorONOFFStatus)
  129.         {
  130. //                 if(mcState != mcInit)
  131. //                  {
  132.                         mcState                         = mcInit;
  133. //                  }
  134. //                 else
  135. //                 {
  136. //                        
  137. //                         mcState                         = mcRun;
  138. //                         mcFocCtrl.mcIqref = IQ_RUN_MIN_CURRENT;
  139. //                         FOC_IQREF = mcFocCtrl.mcIqref;        
  140. //                         PI_UK        =        mcFocCtrl.mcIqref;
  141. //                 }
  142.         }
  143.         else
  144.         {
  145.                 mcState                         = mcStop;
  146.         }
  147.         
  148.         //错误标识清除
  149.         mcFaultSource = FaultNoSource;
  150.         
  151.         //PWM变量初始化
  152.         PWMIN_Init();
  153. }

  154. /*-------------------------------------------------------------------------------------------------
  155.         Function Name :        void HardwareInit(void)
  156.         Description   :        硬件初始化,初始化需要使用的硬件设备配置,FOC必须配置的是运放电压、运放初始化、ADC初始化、Driver初始化
  157.                   TIM4初始化,其他的可根据实际需求加。
  158.         Input         :        无
  159.   Output                                :        无
  160. -------------------------------------------------------------------------------------------------*/
  161. void HardwareInit(void)
  162. {
  163. //         uint8 CWCCWCnt = 0;

  164.         /*****外部中断初始化,用于外部中断硬件过流FO的保护*********/
  165.           //EXTI_Init();        
  166.         
  167.         /*****SPI初始化,此处注意与FOC的SPI的区别*********/        
  168. //                 SPI_Init();               
  169.         
  170. //        /******比较器初始化,用于硬件过流比较保护,外部硬件过流FO和硬件过流比较保护两者选其一即可******/
  171.           CMP_Iint();        
  172.         
  173.         /*****运算放大器初始化*********/
  174.           AMP_VHALF_Init();                                                                                                                                                                // 运放电压偏置选择
  175.         
  176.           AMP_Iint();                                             // 运放管脚初始化
  177.         
  178.         /*****ADC初始化*********/
  179.            ADC_Init();        
  180.         
  181.         /****UART_Init********/
  182. //           UART_Init();
  183.         

  184. //                 UARTScanControl();
  185.         
  186.         /*****SVPWM初始化*********/
  187.                 //SVPWM_Init();        

  188.         /*****MDU初始化*********/
  189.                 MDU_16MUL16_INT(15,1);                                             //右移15位 ,有符号乘法                 
  190.         
  191.         /*****Driver初始化*********/
  192.           Driver_Init();
  193.         
  194.         /*****Timer初始化,采用定时器4中断作为常见中断,时间为1ms,处理故障保护等附加功能
  195.         采用定时器3作为PWM信号发生器的输入捕获********/
  196.                 //TIM0_Init();
  197.            //TIM2_FREQ_Init();
  198.                 TIM3_Init();
  199.           TIM4_Init();
  200.                 TIM5_Init();
  201.                
  202. }
复制代码

所有资料51hei提供下载:
FU6811 HALL FOC 20160914_V5.0 - 2139 END.rar (1.36 MB, 下载次数: 202)




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏8 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1 发表于 2017-10-11 03:01 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:101808 发表于 2017-10-11 10:26 | 只看该作者
只要下载了,就必须给楼主支持!
回复

使用道具 举报

地板
ID:383903 发表于 2018-8-7 17:28 | 只看该作者
想要下载,支持!
回复

使用道具 举报

5#
ID:57896 发表于 2018-8-7 18:05 | 只看该作者
没电路图啊,资料是好资料,没电路图=0
回复

使用道具 举报

6#
ID:407899 发表于 2018-10-12 17:02 | 只看该作者
正用FU6811,好想下载啊,先支持,加油
回复

使用道具 举报

7#
ID:238315 发表于 2018-10-22 16:48 | 只看该作者
多年不来了..........
回复

使用道具 举报

8#
ID:104732 发表于 2018-12-20 15:22 | 只看该作者
正在用FU6811,不知道大伙有没有用到FLASH来做EEPROM用的,来保存数据?
回复

使用道具 举报

9#
ID:560202 发表于 2019-6-25 09:03 | 只看该作者
有关BLDC控制的资料,真不错,一直在找着方面的资料,谢谢了
回复

使用道具 举报

10#
ID:324611 发表于 2019-9-18 14:41 | 只看该作者
好东西,学习了。
回复

使用道具 举报

11#
ID:336378 发表于 2019-11-15 09:53 | 只看该作者
好资料,51黑有你更精采。
回复

使用道具 举报

12#
ID:33848 发表于 2021-4-13 08:29 | 只看该作者
好像少了恒速控制
回复

使用道具 举报

13#
ID:135281 发表于 2021-9-2 16:16 | 只看该作者
FU6812就更好了
回复

使用道具 举报

14#
ID:1071670 发表于 2023-4-18 13:21 | 只看该作者

好资料,51黑有你更精采。
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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