标题:
51单片机电动车BLDC控制系统源程序
[打印本页]
作者:
shamron
时间:
2017-10-10 15:48
标题:
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
0.png
(6.32 KB, 下载次数: 85)
下载附件
2017-10-11 02:57 上传
单片机源程序如下:
/**************************** (C) COPYRIGHT 2015 Fortiortech shenzhen *****************************
* File Name : Main.c
* Author : Fortiortech Appliction Team
* Version : V1.0
* Date : 01/07/2015
* Description : This file contains main function used for Motor Control.
***************************************************************************************************
* All Rights Reserved
**************************************************************************************************/
/* Includes -------------------------------------------------------------------------------------*/
#include <FU68xx.h>
#include <Myproject.h>
#include <FU68xx_Sys.h>
/* Private typedef ------------------------------------------------------------------------------*/
/* Private define -------------------------------------------------------------------------------*/
/* Private macro --------------------------------------------------------------------------------*/
/* Private variables ----------------------------------------------------------------------------*/
unsigned char code SysTable[] = {0x1a,0x40,0x00,0x00,0x00};
/* Private function prototypes ------------------------------------------------------------------*/
/* Private functions ----------------------------------------------------------------------------*/
void SoftwareInit(void);
void HardwareInit(void);
void MotorControlInit(void);
/*-------------------------------------------------------------------------------------------------
Function Name : void main(void)
Description : 主函数主要功能是初始化,包括系统初始化,软件初始化,硬件初始化,主循环
扫描。
系统初始化--系统时钟配置,系统电源配置,看门狗配置
软件初始化--初始化所有定义的变量
硬件初始化--初始化硬件设备配置
主循环扫描--看门狗喂狗,电机控制状态扫描,调试测试函数
Input : 无
Output : 无
-------------------------------------------------------------------------------------------------*/
void main(void)
{
uint32 PowerUpCnt = 0;
/*System Init*/
SystemInit();
/*Wait For Power Up*/
for(PowerUpCnt=0;PowerUpCnt<SystemPowerUpTime;PowerUpCnt++){};
/*Software Init*/
SoftwareInit();
/*Hardware Init*/
HardwareInit();
while(1)
{
if(mcCurOffset.OffsetFlag==0)
{
/****上电先进行硬件电流基准采集,再进行主控函数扫描***/
GetCurrentOffset();
}
else
{
/****主控函数,状态扫描****/
MC_Control();
//串口处理
// UARTScanControl();
/****工作电压,功率,电流计算,运算时间1.104ms*****/
// EleParCal();
}
}
}
/*-------------------------------------------------------------------------------------------------
Function Name : void SoftwareInit(void)
Description : 软件初始化,初始化所有定义变量,按键初始化扫描
Input : 无
Output : 无
-------------------------------------------------------------------------------------------------*/
void SoftwareInit(void)
{
static uint8 CWCCWCnt = 0;
/****初始化所有定义的参数变量****/
MotorcontrolInit();
/****功能IO初始化***********/
GPIO_Init();
UARTScanInit();
mcFRState.FlagFR = 0;
// //旋转方向确定
// if(!GP37)
// {
// if(CWCCWCnt < 10)
// {
// CWCCWCnt ++;
// }
// if(CWCCWCnt >= 10)
// {
// CWCCWCnt = 10;
// mcFRState.FR = CCW;
// }
// }
// else
// {
// if(CWCCWCnt > 0)
// {
// CWCCWCnt --;
// }
// if(CWCCWCnt <= 0)
// {
// CWCCWCnt = 0;
// mcFRState.FR = CW;
// }
// }
//
mcFRState.FR = CW;
mcHall.FRStatus = mcFRState.FR;
mcFRState.TargetFR = mcFRState.FR;
//电机开/关机状态确定
mcFocCtrl.MotorONOFFStatus = 0;
// mcFocCtrl.MotorONOFFRunawayProtect = 0; //上电防飞车保护
mcFocCtrl.MotorOFFTimes = 0;
mcHall.FailStatus = 0; //故障标识
mcHall.ContorllerstateTwo = 0; //控制器状态2
mcFocCtrl.mcCruiseControlQuit = 0;
if(mcFocCtrl.MotorONOFFStatus)
{
// if(mcState != mcInit)
// {
mcState = mcInit;
// }
// else
// {
//
// mcState = mcRun;
// mcFocCtrl.mcIqref = IQ_RUN_MIN_CURRENT;
// FOC_IQREF = mcFocCtrl.mcIqref;
// PI_UK = mcFocCtrl.mcIqref;
// }
}
else
{
mcState = mcStop;
}
//错误标识清除
mcFaultSource = FaultNoSource;
//PWM变量初始化
PWMIN_Init();
}
/*-------------------------------------------------------------------------------------------------
Function Name : void HardwareInit(void)
Description : 硬件初始化,初始化需要使用的硬件设备配置,FOC必须配置的是运放电压、运放初始化、ADC初始化、Driver初始化
TIM4初始化,其他的可根据实际需求加。
Input : 无
Output : 无
-------------------------------------------------------------------------------------------------*/
void HardwareInit(void)
{
// uint8 CWCCWCnt = 0;
/*****外部中断初始化,用于外部中断硬件过流FO的保护*********/
//EXTI_Init();
/*****SPI初始化,此处注意与FOC的SPI的区别*********/
// SPI_Init();
// /******比较器初始化,用于硬件过流比较保护,外部硬件过流FO和硬件过流比较保护两者选其一即可******/
CMP_Iint();
/*****运算放大器初始化*********/
AMP_VHALF_Init(); // 运放电压偏置选择
AMP_Iint(); // 运放管脚初始化
/*****ADC初始化*********/
ADC_Init();
/****UART_Init********/
// UART_Init();
// UARTScanControl();
/*****SVPWM初始化*********/
//SVPWM_Init();
/*****MDU初始化*********/
MDU_16MUL16_INT(15,1); //右移15位 ,有符号乘法
/*****Driver初始化*********/
Driver_Init();
/*****Timer初始化,采用定时器4中断作为常见中断,时间为1ms,处理故障保护等附加功能
采用定时器3作为PWM信号发生器的输入捕获********/
//TIM0_Init();
//TIM2_FREQ_Init();
TIM3_Init();
TIM4_Init();
TIM5_Init();
}
复制代码
0.png
(6.39 KB, 下载次数: 81)
下载附件
2017-10-11 02:58 上传
所有资料51hei提供下载:
FU6811 HALL FOC 20160914_V5.0 - 2139 END.rar
(1.36 MB, 下载次数: 202)
2017-10-10 15:48 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2017-10-11 03:01
好资料,51黑有你更精彩!!!
作者:
zhaozonghui
时间:
2017-10-11 10:26
只要下载了,就必须给楼主支持!
作者:
a345708
时间:
2018-8-7 17:28
想要下载,支持!
作者:
engcyh
时间:
2018-8-7 18:05
没电路图啊,资料是好资料,没电路图=0
作者:
robe
时间:
2018-10-12 17:02
正用FU6811,好想下载啊,先支持,加油
作者:
shamron
时间:
2018-10-22 16:48
多年不来了..........
作者:
shaozh
时间:
2018-12-20 15:22
正在用FU6811,不知道大伙有没有用到FLASH来做EEPROM用的,来保存数据?
作者:
逻辑落寞
时间:
2019-6-25 09:03
有关BLDC控制的资料,真不错,一直在找着方面的资料,谢谢了
作者:
mcu_mpu
时间:
2019-9-18 14:41
好东西,学习了。
作者:
cba_cba
时间:
2019-11-15 09:53
好资料,51黑有你更精采。
作者:
love2008
时间:
2021-4-13 08:29
好像少了恒速控制
作者:
waterbaby2011
时间:
2021-9-2 16:16
FU6812就更好了
作者:
ToIntConst
时间:
2023-4-18 13:21
好资料,51黑有你更精采。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1