【电机控制】FOC算法验证步骤——PWM、ADC

【电机控制】FOC算法验证步骤
请添加图片描述



前言

【电机控制】直流有刷电机、无刷电机汇总——持续更新
使用工具:
1.示波器:PICO7


提示:以下是本篇文章正文内容,下面案例可供参考

一、PWM——不接电机

载波频率12.5K

#define  PWM_Fre            12.5

#define  PWM_Perload        72000/(uint32_t)(PWM_Fre*2) //2880

分别让寄存器上桥发波50%,25%,0%,下桥互补输出,50%,75%,100%

	 CMPA = 1440;	//(0.5+1)*2880/2
	 CMPB = 720;	
	 CMPC = 0;

将寄存器的值串口打印至上位机
在这里插入图片描述
同时在仿真器显示
在这里插入图片描述

采样点,控制芯片引脚输出至预驱芯片引脚,本次实验采的是驱动器引脚,直接采集控制芯片引脚也可以
在这里插入图片描述

1、PWMA-H-50%

在这里插入图片描述

2、PWMB-H-25%

在这里插入图片描述

3、PWMC-H-0%

在这里插入图片描述

4、PWMA-L-50%

在这里插入图片描述

5、PWMB-L-75%

在这里插入图片描述

6、PWMC-L-100%

在这里插入图片描述

7、PWM频率与占空比计算方式——载波周期

ARR(TIM_Period) 是计数值;
PSC(TIM_Prescaler) 是预分频值。
计算公式:F_PWM = 主频 / ((ARR+1)*(PSC+1))(单位:Hz)

  Timerbasetypdf.TIM_Prescaler = 0;//72M
  Timerbasetypdf.TIM_Period = PWM_Perload;//12.5kµÄƵÂÊ
#define  PWM_Perload        72000/(uint32_t)(PWM_Fre*2) //
#define  PWM_Fre            6//12.5

而定时器配置为向上-向下计数模式,所以实际的计数周期是2 * PWM_Perload

	Timerbasetypdf.TIM_CounterMode = TIM_CounterMode_CenterAligned1;//

F_PWM = 主频/ (2 * (ARR+1)*(PSC+1))(单位:Hz)
F_PWM =72M/2/2880=6k
在这里插入图片描述

二、ADC——不接电机

1.电流零点稳定性、ADC读取的OFFSET

串口打印出AD采样寄存器的值,看是否稳定

 printf("%.4d,%.4d,%.4d\n", ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1),ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_2),ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_3));	
				

打印结果
在这里插入图片描述
U相V相约有450个ADC值,W相约有1500个ADC值OFFSET

2.电流钳准备

直流稳压电源输出0.6A
请添加图片描述
电流钳抓到0.6A左右
在这里插入图片描述

3.运放电路分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.电路OFFSET

程序上读取offset值的时候是在初始化阶段,电机处于停止状态,此时的相电流等于0。
(VM_IA -V6)/R28=(V6-VGND)/R36
VM_IA=3×V6
V5=VA×R42/(R41+R42)+VREF×R41/(R41+R42)=0.91VA+0.159
由虚短可得,V5=V6
VM_IA=2.73VA+0.477<=3.3V
下桥几乎没有电流通过时,不带电机测试时,可以测得为0.48V

2.AOP

AOP=Vout/Vin=VM_IA/VA=2.73

3.采样电路的采样值范围

2.73VA+0.477<=3.3V
VA<=1.03V,Rshout=0.05Ω
IA=VA/Rshout<=20.6A
相电流最大采集20A

4.相电流与ADC采样值的关系

我们需要计算相电流与ADC采样值的关系,也就是说,通过ADC采样的值,经过数学公式计算,可以计算出来当前相电流为多少,再根据相电流进行FOC变换

IA=7.3×VM_IA-3.5=7.3×VM_IA×3.3/4096-3.5-offset
此时VM_IA为ADC采样值,通过单片机引脚接入

电流=(ADC原始值/4096∗3.3-offset)/采样电阻阻值/运放放大倍数

相电流=(offset-ADC原始值)/4096∗3.3/采样电阻阻值/运放放大倍数
采样电阻阻值= 0.05
运放放大倍数=2.73
在这里插入图片描述
相电流=(offset-ADC原始值)/ 0.006

printf("%.4f,%.4f,%.4f\n",(AdcValue.PhaseUCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006,(AdcValue.PhaseVCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006,(AdcValue.PhaseWCurrOffset-ADC_GetInjectedConversionValue(ADC1, ADC_InjectedChannel_1))*0.006);	

5.V相电流

在这里插入图片描述

4.电流极性判断——接电机

	 CMPA = 1440;	//50%
	 CMPB = 288;	//10%
	 CMPC = 288;	//10%

在这里插入图片描述

5.ADC采样时间计算

配置的STM32的系统时钟频率,例如:72MHZ。
设置的ADC分频因子,例如:RCC_PCLK2_Div6,即6分频。

   RCC_ADCCLKConfig(RCC_PCLK2_Div6);

设置的ADC采样时间,例如:ADC_SampleTime_13Cycles5, 即13.5个周期。

    ADC_InjectedChannelConfig(ADC1,ADC_Channel_5,1,ADC_SampleTime_13Cycles5);
    ADC_InjectedChannelConfig(ADC1,ADC_Channel_6,2,ADC_SampleTime_13Cycles5);
    ADC_InjectedChannelConfig(ADC1,ADC_Channel_7,3,ADC_SampleTime_13Cycles5);

以系统时钟频率为72MHZ,ADC分频因子为RCC_PCLK2_Div6, ADC的采样时间为ADC_SampleTime_13Cycles5,进行计算

ADCCLK(ADC的时钟频率 ) = 72MHZ(系统时钟频率) / 6 (ADC分频因子) = 12MHZ。

一个ADC周期占用的时间 = 1 / 时钟频率 = 1 / 12MHZ = 0.0833334 uS
计算ADCCLK为12MHZ时的最大采样间隔时间 =13.5周期 + 12.5周期 = 26周期 = 2.08uS

三、参考文献

运放-同相放大与反相放大
foc学习笔记3——电流环
关于FOC相电流采样电路参数的分析
FOC(电机矢量控制)调试记录
STM32之ADC
STM32 ADC 采样时间计算与误差处理

总结

本文仅仅简单介绍了【电机控制】FOC算法验证步骤,评论区欢迎讨论。

### 回答1: 电机FOC(Field-Oriented Control)调试步骤如下: 1. 首先,确认电机的连接,包括电源和控制器的正确连接。此外,确保电机的机械系统(如机械转子、滑动轴承等)正常,并且没有外部故障。 2. 在调试FOC控制算法之前,需要进行电机参数识别。这包括识别电机的电感、电阻、转子转动惯量等参数。可以通过电机转矩测试台或者其他专用设备进行参数识别,也可以利用现有的参数手册进行参考。 3. 调试FOC控制算法时,首先需要设定好控制器的参数。这些参数包括PI控制器的比例增益、积分时间、速度环和电流环的带宽等。合适的参数设定能够保证系统的稳定性和性能。 4. 进行FOC控制算法的调试。在调试过程中,可以通过调整控制器的参数,逐步优化系统的性能。可以通过监测电机转速、电流和角度等变量,来评估系统的响应和跟踪性能。 5. 在调试过程中,需要遵循逐步递进的原则。首先进行开环控制的调试,通过设定期望值和观察实际值,来验证系统的基本功能。随后,可以逐步引入闭环控制,调试PID控制器的参数,提高系统的稳定性和跟踪性能。 6. 在调试过程中,可以利用相关的工具和软件,如示波器、matlab等,来监测和分析系统的性能。可以通过实时的图形和数据,来判断系统的控制效果,以及优化控制器的参数。 ### 回答2: 电机FOC(Field Oriented Control,场向控制)是一种用于控制交流电机转速和电流的技术。FOC通过将电机的转子和磁场的方向进行分离,能够实现高效的电机控制。 电机FOC调试步骤主要包括以下几个方面: 1. 硬件配置:首先,需要确保电机驱动器的硬件配置正确。包括连接电机、传感器(如编码器、霍尔效应传感器等)和控制器等,确保信号线连接正确,并检查电源电压和电流的稳定性。 2. 传感器校准:如果使用了编码器或其他传感器进行反馈,需要进行传感器校准。这包括码盘校准、霍尔传感器校准等,确保传感器的输出准确反映了电机转子的位置和速度。 3. 控制参数设置:根据具体的电机类型和应用需求,设置合适的控制参数。包括设置电机的额定电流、最大速度、最大加速度等,以及PID控制器的参数,如比例、积分和微分增益等。 4. FOC算法调试:在FOC控制器中,需要调试磁场定向和电流环。通过调整磁场定向的角度和反馈电流的控制,实现电机的平稳运行和高效控制。可以通过调整电流环的控制参数,来优化电机的动态响应和静态误差。 5. 性能测试:最后,对电机进行性能测试。包括测试电机的速度响应、力矩响应、效率以及负载能力等。根据测试结果,可以进一步优化控制参数,以达到更好的性能。 总结起来,电机FOC调试步骤包括硬件配置、传感器校准、控制参数设置、FOC算法调试和性能测试等。通过逐步调整参数和算法,可以实现对电机的准确控制和优化性能。 ### 回答3: 针对电机FOC调试的步骤,可以简要概括为以下几个方面: 1. 硬件连接:首先需要确保电机与控制器之间的连接正确无误。检查电机的三相线、霍尔传感器连接是否正确,并通过舵机控制器的电源连接正确供电。 2. 参数设置:根据具体的电机参数,设置转子位置传感器的偏置、霍尔传感器的信号增益等参数。可以通过控制器软件进行相应的参数设置。 3. 初始方向校准:在调试过程中,需要进行电机的初始方向校准。通过按下特定的按钮或者发送特定的控制命令,让电机旋转一定角度,并校准其初始位置。 4. 磁场定位:电机FOC调试的重要环节是磁场定位。通过施加恒定电流并逐渐增加电机转速,观察电机的转子位置响应,以确定电机的磁场位置。 5. PID参数调节:根据电机的实际情况和要求,对PID控制器进行参数调节。通过分析电机实际转速和期望转速之间的偏差,调整PID参数,使电机的转速响应更加稳定和准确。 6. 性能测试:完成上述步骤后,可以进行电机的性能测试。通过调整控制器的输入信号,观察电机的转速、扭矩等性能指标,并记录和分析测试结果,以评估控制系统的性能和稳定性。 需要注意的是,以上只是电机FOC调试的一般步骤,实际调试中可能还需要根据具体的电机型号、控制器软件等因素进行一些特殊的调整和设置。同时,调试过程中要确保安全,避免电机过载、短路等情况,以保证调试的顺利进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kisorge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值