基于stm32f030的4kHz电流环FOC控制程序

上传者: zhvngchvng | 上传时间: 2023-08-22 21:22:08 | 文件大小: 16.52MB | 文件类型: ZIP
参考simpleFOC代码,在stm32G431上实现了20kHz的FOC电流环。为了降低驱动器成本,将主控由G431改为F030,目前所有代码均为浮点计算,实现了4kHz的电流环(FOC单周期时间成本约230us),控制效果一般,可作为初步参考。后续需要改为定点计算,提高电流环频率以优化控制效果。。程序架构采用了ST电机库的方案,在ADC采样完成中断里执行FOC程序。驱动方式为3个EN端加TIM1三通道PWM输出,TIM3采集编码器AB相输入,3通道ADC扫描采样三相电桥低边通道采样电阻电压。TIM1为中心对齐模式1,PWM模式2,RCR设为1(每两次溢出触发一次中断,即在下溢时触发ADC采样)。上电后电机开环运行,校对Z相(外部上升沿中断)信号,确定编码器初始偏移量,调试时将变量start_run修改为1以开始执行闭环程序。电流环程序放在ADC采样完成回调函数里面,首先获取编码器计数值并计算电角度,然后获取电流采样值并经过clarke变换和park变换得到qd电流,再经低通滤波和PID计算后得到qd电压控制量,然后逆park变换并计算SVPWM占空,最后经TIM1输出三相占空。

文件下载

资源详情

[{"title":"( 946 个子文件 16.52MB ) 基于stm32f030的4kHz电流环FOC控制程序","children":[{"title":"iar_cortexM0b_math.a <span style='color:#111;'> 2.80MB </span>","children":null,"spread":false},{"title":"iar_cortexM0l_math.a <span style='color:#111;'> 2.80MB </span>","children":null,"spread":false},{"title":"libarm_cortexM0l_math.a <span style='color:#111;'> 2.61MB </span>","children":null,"spread":false},{"title":"arm_linear_interp_data.c <span style='color:#111;'> 4.12MB </span>","children":null,"spread":false},{"title":"arm_common_tables.c <span style='color:#111;'> 987.04KB </span>","children":null,"spread":false},{"title":"arm_dct4_init_f32.c <span style='color:#111;'> 808.96KB </span>","children":null,"spread":false},{"title":"arm_dct4_init_q31.c <span style='color:#111;'> 637.25KB </span>","children":null,"spread":false},{"title":"arm_dct4_init_q15.c <span style='color:#111;'> 493.82KB </span>","children":null,"spread":false},{"title":"arm_rfft_init_f32.c <span style='color:#111;'> 341.23KB </span>","children":null,"spread":false},{"title":"arm_rfft_init_q31.c <span style='color:#111;'> 326.38KB </span>","children":null,"spread":false},{"title":"transform_tests_common_data.c <span style='color:#111;'> 273.04KB </span>","children":null,"spread":false},{"title":"arm_rfft_init_q15.c <span style='color:#111;'> 252.44KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_tim.c <span style='color:#111;'> 245.91KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_i2c.c <span style='color:#111;'> 238.92KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_uart.c <span style='color:#111;'> 143.19KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_spi.c <span style='color:#111;'> 141.82KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_usart.c <span style='color:#111;'> 113.20KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_smartcard.c <span style='color:#111;'> 113.09KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_irda.c <span style='color:#111;'> 108.62KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_smbus.c <span style='color:#111;'> 97.58KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_adc.c <span style='color:#111;'> 94.69KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_tim_ex.c <span style='color:#111;'> 80.88KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_can.c <span style='color:#111;'> 80.42KB </span>","children":null,"spread":false},{"title":"filtering_test_common_data.c <span style='color:#111;'> 63.97KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_rtc.c <span style='color:#111;'> 63.23KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_i2s.c <span style='color:#111;'> 61.90KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_pcd.c <span style='color:#111;'> 58.01KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_rtc_ex.c <span style='color:#111;'> 55.63KB </span>","children":null,"spread":false},{"title":"arm_cfft_radix4_q15.c <span style='color:#111;'> 54.95KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_rcc.c <span style='color:#111;'> 49.91KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_tim.c <span style='color:#111;'> 44.49KB </span>","children":null,"spread":false},{"title":"arm_fft_bin_data.c <span style='color:#111;'> 43.27KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_fast_q15.c <span style='color:#111;'> 42.93KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_dac.c <span style='color:#111;'> 39.09KB </span>","children":null,"spread":false},{"title":"arm_cfft_radix4_q31.c <span style='color:#111;'> 39.04KB </span>","children":null,"spread":false},{"title":"arm_conv_fast_q15.c <span style='color:#111;'> 38.48KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_dac_ex.c <span style='color:#111;'> 37.91KB </span>","children":null,"spread":false},{"title":"arm_correlate_fast_q15.c <span style='color:#111;'> 36.48KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_rcc_ex.c <span style='color:#111;'> 35.05KB </span>","children":null,"spread":false},{"title":"arm_cfft_radix4_f32.c <span style='color:#111;'> 34.21KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_tsc.c <span style='color:#111;'> 33.21KB </span>","children":null,"spread":false},{"title":"controller_test_common_data.c <span style='color:#111;'> 32.55KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_cec.c <span style='color:#111;'> 31.95KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_uart_ex.c <span style='color:#111;'> 31.85KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_flash_ex.c <span style='color:#111;'> 31.24KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_comp.c <span style='color:#111;'> 30.86KB </span>","children":null,"spread":false},{"title":"arm_fir_f32.c <span style='color:#111;'> 28.48KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_dma.c <span style='color:#111;'> 26.90KB </span>","children":null,"spread":false},{"title":"fir_tests.c <span style='color:#111;'> 26.33KB </span>","children":null,"spread":false},{"title":"fast_math_tests_common_data.c <span style='color:#111;'> 26.12KB </span>","children":null,"spread":false},{"title":"conv_tests.c <span style='color:#111;'> 25.47KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_q15.c <span style='color:#111;'> 24.55KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_rtc.c <span style='color:#111;'> 24.10KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_usb.c <span style='color:#111;'> 23.89KB </span>","children":null,"spread":false},{"title":"arm_correlate_q7.c <span style='color:#111;'> 23.71KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_q7.c <span style='color:#111;'> 23.56KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_adc.c <span style='color:#111;'> 23.42KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_utils.c <span style='color:#111;'> 23.02KB </span>","children":null,"spread":false},{"title":"arm_graphic_equalizer_example_q31.c <span style='color:#111;'> 22.81KB </span>","children":null,"spread":false},{"title":"biquad.c <span style='color:#111;'> 22.76KB </span>","children":null,"spread":false},{"title":"arm_correlate_f32.c <span style='color:#111;'> 22.32KB </span>","children":null,"spread":false},{"title":"arm_mat_inverse_f64.c <span style='color:#111;'> 22.18KB </span>","children":null,"spread":false},{"title":"arm_mat_inverse_f32.c <span style='color:#111;'> 22.18KB </span>","children":null,"spread":false},{"title":"arm_correlate_q15.c <span style='color:#111;'> 21.79KB </span>","children":null,"spread":false},{"title":"lms.c <span style='color:#111;'> 21.64KB </span>","children":null,"spread":false},{"title":"arm_biquad_cascade_stereo_df2T_f32.c <span style='color:#111;'> 21.55KB </span>","children":null,"spread":false},{"title":"intrinsics_tests_common_data.c <span style='color:#111;'> 21.54KB </span>","children":null,"spread":false},{"title":"arm_conv_q15.c <span style='color:#111;'> 21.45KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_f32.c <span style='color:#111;'> 20.98KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_spi.c <span style='color:#111;'> 20.87KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_flash.c <span style='color:#111;'> 20.78KB </span>","children":null,"spread":false},{"title":"arm_conv_q7.c <span style='color:#111;'> 20.60KB </span>","children":null,"spread":false},{"title":"arm_fir_q15.c <span style='color:#111;'> 20.58KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_fast_opt_q15.c <span style='color:#111;'> 20.57KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_fast_q31.c <span style='color:#111;'> 20.53KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_opt_q7.c <span style='color:#111;'> 20.50KB </span>","children":null,"spread":false},{"title":"arm_correlate_q31.c <span style='color:#111;'> 20.23KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_opt_q15.c <span style='color:#111;'> 20.19KB </span>","children":null,"spread":false},{"title":"arm_biquad_cascade_df1_32x64_q31.c <span style='color:#111;'> 19.94KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_usart.c <span style='color:#111;'> 19.79KB </span>","children":null,"spread":false},{"title":"arm_signal_converge_data.c <span style='color:#111;'> 19.76KB </span>","children":null,"spread":false},{"title":"arm_correlate_fast_q31.c <span style='color:#111;'> 19.26KB </span>","children":null,"spread":false},{"title":"arm_conv_partial_q31.c <span style='color:#111;'> 18.99KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_gpio.c <span style='color:#111;'> 18.92KB </span>","children":null,"spread":false},{"title":"arm_conv_f32.c <span style='color:#111;'> 18.66KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_rcc.c <span style='color:#111;'> 18.47KB </span>","children":null,"spread":false},{"title":"stm32f0xx_ll_dma.c <span style='color:#111;'> 18.30KB </span>","children":null,"spread":false},{"title":"arm_fir_interpolate_f32.c <span style='color:#111;'> 18.25KB </span>","children":null,"spread":false},{"title":"arm_fir_decimate_q15.c <span style='color:#111;'> 18.21KB </span>","children":null,"spread":false},{"title":"arm_conv_fast_q31.c <span style='color:#111;'> 18.07KB </span>","children":null,"spread":false},{"title":"arm_cfft_f32.c <span style='color:#111;'> 17.67KB </span>","children":null,"spread":false},{"title":"arm_depthwise_separable_conv_HWC_q7_nonsquare.c <span style='color:#111;'> 17.55KB </span>","children":null,"spread":false},{"title":"arm_biquad_cascade_df2T_f64.c <span style='color:#111;'> 17.42KB </span>","children":null,"spread":false},{"title":"arm_biquad_cascade_df2T_f32.c <span style='color:#111;'> 17.42KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_crc.c <span style='color:#111;'> 17.17KB </span>","children":null,"spread":false},{"title":"arm_cfft_radix2_q15.c <span style='color:#111;'> 16.99KB </span>","children":null,"spread":false},{"title":"arm_depthwise_separable_conv_HWC_q7.c <span style='color:#111;'> 16.94KB </span>","children":null,"spread":false},{"title":"lms_tests.c <span style='color:#111;'> 16.73KB </span>","children":null,"spread":false},{"title":"arm_conv_q31.c <span style='color:#111;'> 16.63KB </span>","children":null,"spread":false},{"title":"stm32f0xx_hal_pwr.c <span style='color:#111;'> 16.53KB </span>","children":null,"spread":false},{"title":"......","children":null,"spread":false},{"title":"<span style='color:steelblue;'>文件过多,未全部展示</span>","children":null,"spread":false}],"spread":true}]

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明