STO_1SHUNT_V3.20

所属分类:单片机开发
开发工具:C/C++
文件大小:2423KB
下载次数:127
上传日期:2014-10-02 09:13:53
上 传 者fanpengliang
说明:  STM32无刷电机控制器无霍尔的源程序 无霍尔单电阻电流检测
(STM32 brushless motor controller without Hall source without Hall single resistor current sensing)

文件列表:
STO_1SHUNT_V3.20 (0, 2014-09-14)
STO_1SHUNT_V3.20\EWARM (0, 2014-09-14)
STO_1SHUNT_V3.20\EWARM\Backup of STM32_FOC_PMSM.ewd (38429, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Backup of STM32_FOC_PMSM.ewp (135308, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\cortexm3_macro.s (10408, 2008-09-09)
STO_1SHUNT_V3.20\EWARM\Debug (0, 2014-09-14)
STO_1SHUNT_V3.20\EWARM\Debug\Exe (0, 2014-09-14)
STO_1SHUNT_V3.20\EWARM\Debug\Exe\STM32_FOC_PMSM.sim (32255, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List (0, 2014-09-14)
STO_1SHUNT_V3.20\EWARM\Debug\List\ili932x.lst (494536, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\main.lst (36106, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\main.s (29010, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_Clarke_Park.lst (54792, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_Display.lst (141275, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_FOC_Drive.lst (43037, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_Globals.lst (11251, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_Globals.s (9255, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_Keys.lst (142065, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_Keys.s (98060, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_MotorControl_Layer.lst (48426, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_MotorControl_Layer.s (37730, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_PID_regulators.lst (33333, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_State_Observer_Interface.lst (55326, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\MC_State_Observer_Interface.s (40629, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\spi_flash.lst (60023, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\spi_flash.s (49287, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm3210b_lcd.lst (157528, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm3210e_lcd.lst (292110, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm3210e_lcd.s (168128, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_adc.lst (117890, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_adc.s (96147, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_bkp.lst (28161, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_bkp.s (24169, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_can.lst (96485, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_can.s (70307, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_dbgmcu.lst (13386, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_dbgmcu.s (12308, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_dma.lst (63421, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_dma.s (52224, 2010-03-15)
STO_1SHUNT_V3.20\EWARM\Debug\List\stm32f10x_encoder.lst (62179, 2010-03-15)
... ...

/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** * File Name : readme.txt * Author : MCD Application Team * Version : V2.0 * Date : 05/23/2008 * Description : This sub-directory contains all the user-modifiable files * needed to create a new project linked with the STM32F10x * Firmware Library and working with RealView Microcontroller * Development Kit(RVMDK) software toolchain (Version 3.21 and later). ******************************************************************************** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. * FOR MORE INFORMATION PLEASE CAREFULLY READ THE LICENSE AGREEMENT FILE LOCATED * IN THE ROOT DIRECTORY OF THIS FIRMWARE PACKAGE. *******************************************************************************/ Directory contents =================== - Project.Uv2/.Opt: A pre-configured project file with the provided library structure that produces an executable image with RVMDK. - stm32f10x_vector.s: This file contains the vector table for STM32F10x, Stack and Heap definition. User can also enable the use of external SRAM mounted on STM3210E-EVAL board as data memory. - cortexm3_macro.s: Instruction wrappers for special Cortex-M3 instructions. - note.txt : Steps to follow when using the default startup file provided by RVMDK when creating new projects. How to use it ============= - Open the Project.Uv2 project - In the build toolbar select the project config: - STM3210B-EVAL: to configure the project for STM32 Medium-density devices - STM3210E-EVAL: to configure the project for STM32 High-density devices - Rebuild all files: Project->Rebuild all target files - Load project image: Debug->Start/Stop Debug Session - Run program: Debug->Run (F5) NOTE: - Medium-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 32 and 128 Kbytes. - High-density devices are STM32F101xx and STM32F103xx microcontrollers where the Flash memory density ranges between 256 and 512 Kbytes. ******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****** ******************* (C) COPYRIGHT 2009 MiNiSoft Lab. *************************** 已经定义的I/O管脚: 1、 MCDAC输出 stm32f10x_MCdac.c 定义了TIM3的 PB0,PB1为DAC输出脚。 2、 TIMER2缺省定义为 ENCODER的采集。管脚定义参考void ENC_Init(void)函数。 同时对应的 中断处理函数也被定义了。 stm32f10x_encoder.c文件里。使用TIM2->PA0,PA1,使用TIM3-> PA6,PA7,使用TIM4->PB6,PB7。 3、 TIMER2缺省定义为 hall的采集,管脚定义参考void HALL_HallTimerInit(void)函数,同时 中断定位为input capture and Update (overflow) events generate interrupt。 stm32f10x_hall.c文件里。使用TIM2->PA0,PA1,PA2,使用TIM3->PA6,PA7,PB0,使用TIM4->PB6 PB7,PB8。中断处理类型与ENCODER使用类型不同。 4、 MC_pwm_1shunt_prm.h和MC_pwm_3shunt_prm.h文件定义了三相电流检测ADC通道以及温度和 直流母线电压检测ADC通道。 我们使用单总线电流检测,三相电流使用通道为:PC0、PC1、PC2。 直流母线电压检测->PA3,温度使用->PC0。电位器调速用PC4,用10K电位器。 7、 stm32f10x_Timebase.c文件里定义了整个系统的时钟(脉搏),还有void SysTickHandler(void) 中断函数,该中断函数内部提供对扭矩和磁通的PID控制。引起MOTOR的速度改变。 8、 STM32x_svpwm_1shunt.c、STM32x_svpwm_3shunt.c以及STM32x_svpwm_ics.c里面分别定义了 驱动三相电机的6个PWM通道输出以及使用DMA方式的定义,ADC的工作方式、TIM1的4个通道的 工作方式以及中断向量的使能。具体参考void SVPWM_1ShuntInit(void)和void SVPWM_3ShuntInit(void) 9、 stm32f10x_it.c文件里定义了void ADC1_2_IRQHandler(void)中断向量、里面包含了启动状态, 其中使用HALL时,直接把状态设为RUN,其他2个有个启动函数,一般是三段式加速启动。还包含了 2个中断向量处理函数:void TIM1_BRK_IRQHandler(void)刹车中断和void TIM1_UP_IRQHandler(void) TIM1 overflow and update interrupt。 10、 stm32f10x_lcd.c文件里定义了LCD驱动的管脚、芯片型号以及数据读写函数,需要把相关函数转换 到使用FSMC工作。(该工作已经完成。) 11、PC0-PC4->A/D转换,PC4为电位器调节输入。 PA3为直流母线电压检测。 PA0-PA2缺省为TIM2捕获输入,ENCODER输入。PE15为TIM1的刹车浮空输入端(紧急停车按钮) PD13为单独的刹车电阻,开关量输出,PD10为NTC电阻旁路继电器输出开关量控制,改善PFC因数。 PB0、PB1为TIM3的2个PWM通道输出,仿真D/A转换。PE8-PE13为TIM1的6个互补PWM通道,驱动6个 桥臂,其中PE9、PE11、PE13上桥臂的引脚定义锁定,防止程序跑飞,烧掉功率模块。PE14为TIM1 的第4通道,提供A/D采集中断触发周期。PE8-PE14为REMAP引脚功能。 12、 按键定义:上-PD8、下-PD14、左-PE1、右-PE0、SEL-PD12、USER-PB9。 13、 使用FSMC时,不能使用TIM4_CH2通道和USART2的CK信号冲突。 ================================================================================================= 14、 红牛的4个按键定义:PA0、PA8、PC13、PD3。 15、 为了使用TIM2的CH1-CH3通道,需要取下ST3232芯片,使用管脚定义为:PA0-PA2。 PA1作为TFT模块的LED背光。 16、 取下ST3232,使用PA8-PA11,不能使用USB口了,使用TIM1的CH1-CH4。 17、 使用PB0、PB1,作为TIM3的CH3、CH4,作为仿真D/A转换输出。 18、 PC0-PC6共计7个A/D转换通道可以使用,PC3已经定义为电位器。 19、 取下3.2TFT屏幕上的ADS7843,可以用PB12-PB15,作为TIM1的BKIN、CH1N-CH3N。 20、 如果取下AT45DB161D,可以使用PA6、PA7、PB0、PB1作为TIM1的BKIN、CH1N-CH3N。 21、 除此之外,还需要8-10个开关量。其中6个按键、2个NTC旁路继电器和独立的刹车电阻 继电器。 ========================================================= 使用MINISTM32F103RBT6的板子测试PMSM程序按下面的接线顺序: 1、TIM1BKIN--------PB12 TIM1CH1-----------PA8 TIM1CHIN--------PB13 TIM1CH2-----------PA9 TIM1CH2N--------PB14 TIM1CH3-----------PA10 TIM1CH3N--------PB15 TIM1CH4-----------PA11 (REMAP功能) 2、TIM2的三个通道输入 = PA0、PA1、PA2 (没有FT,注意用DIODE保护) TIM3的二个通道输出 = PB4、PB5 可作为DA转换的PWM源 (REMAP功能) TIM4的二个通道输入 = PB8、PB9 ---------CH3、CH4 注意:凡是可以使用A/D的口线,都不是FT的. 3、PA3、PA4、PA5为三个A/D转换,采样2相电流和母线电压, PA6为散热 温度,PA7为外部模拟电压输入,PB0,PB1为备用A/D输入. 4、可以作为通用I/O的口线为:PB10、PB11、PA13、PA14、PA15、PB3可作为 键盘输入和其他状态指示。PD2为LED,PC13为TFT背光。 UP----PB11 DOWN------PB10 LEFT----PA14 RIGHT-----PA13 SEL-----PA15 USER------PB3 5、其他通讯口定义:PA11、PA12可以作为USB/CAN总线,PD2为LED指示,PB4,PB5为 DA0,DA1。PB6,PB7为485口,PB8,PB9为TIM4的3、4输入捕捉通道。 5、需要处理的模块功能: MAX3232的RX1、TX1接到了PA9、PA10。 发光LED-D2、D3为PA0、PA1,PA2为电位器调整。 6、如果口线可以调整,把TFT的驱动改为SPI或者4线方式,或者 取消LCD,改用74HC595驱动的数码管显示。尽量增加有复用 功能的口线,比如A/D或者通讯口的引脚。 ================================================================= DISPLAY_LCD使用的函数为: LCD_DisplayStringLine(Line0, ptr); LCD_ClearLine(Line2); LCD_SetTextColor(Blue); LCD_DisplayChar(Line4, (u16)(320 -(16*(18-i))),'-') LCD_DrawRect(161,97,1,2); 核心函数: LCD_DrawChar(Line, Column, &ASCII_Table[Ascii * 24]); ======================================================================================== // When using Id = 0, NOMINAL_CURRENT is utilized to saturate the output of the // PID for speed regulation (i.e. reference torque). // Whit MB459 board, the value must be calculated accordingly with formula: // NOMINAL_CURRENT = (Nominal phase current (A, 0-to-peak)*32767* Rshunt) /0.*** // 使用MB459时: 每A电流对应的A/D采样值(S16)= Rshunt * Aop(电流增益 = 2.57)* 65536 / 3.3(V) // = Rshunt * 32767 / 0.*** //这里 0.*** = 1.65 / 2.57 // 同理如果使用ICS,那么电流增益为AV =62.5(mv/A), 那么 每A电流对应的A/D采样值(S16)= // Av * 65536 / 3.3 = Av * 32767 / 1.65 = 1241 (s16类型) // 则该电流ICS可以采样的最大电流为 = 32767 / 1241 = 2***(A) // 如果使用其他类型的电流传感器,那么电流增益的解释为:每变化1安培的电流,输出变化的电压值。 ============================================================================================

近期下载者

相关文件


收藏者