正点原子
步进电机:
35-步进电机专题-第2讲 步进电机控制原理_哔哩哔哩_bilibili
步进电机的开环效果很好,一般用作开环控制
静态指标
动态指标
DengFOC
【手把手教写FOC算法】4_帕克变换_哔哩哔哩_bilibili
帕克逆变换(Inverse Park Transform)的作用是将旋转坐标系(d-q坐标系)中的直流量转换回静止坐标系(α-β坐标系)中的交流量。
问题:
iq是控制力矩的,那id是干嘛的? 旋转速度快慢是不是由计算这个过程快慢,计算周期多久转得快,计算周期少就转得慢
解答:
id 则表示电机的磁场定向,也就是电机转子磁场与 d 轴之间的夹角。 在交流电路中,电流和电压的相位差会导致电能的传输出现一些特殊的现象,其中包括有功功率和无功功率。有功功率是指在交流电路中产生有用功率的能量,用于推动电机等设备的运转。而无功功率是指由于电路中的电感和电容等元件的存在,电能在电路中来回流动而未转化为有用功率,只是在电路中形成一种能量储存和释放的状态。 无刷电机也是一种交流电路元器件,因此也有有功功率和无功功率,其体现主要与电机的电感和电容等特性有关。当电机运行时,会在电机内部产生磁场,该磁场会与电机绕组中的电流之间存在相位差,从而导致电机产生一定的无功功率。该无功功率不会对电机的实际运行产生有用的功效,只会浪费能量并引起电机的热损耗。 因此,对于电机而言,为了提高电机的效率和运行稳定性,需要尽可能降低电机的无功功率,设定id的值,就可以改变电机转子磁场与 d 轴之间的夹角,从而对“相位差”产生微调,进而达到效率最优。 当然也不是所有情况下id都=0,这得看电机是凸极性还是非凸,非凸下,id一般=0就能获取最优效率,而凸极性电机,id可能会不为0才能达到最优效率,具体往下就可以写很长了,可以看看这方面的文章。
至于旋转速度快慢,因为我们已经能够实现力矩的输出,力矩可以用来加速或者减速,因此只需要有一个闭环速度传感器,力矩作为其内环就可以控速。
所以最本质的都是基于力矩的生成,把其作为内环以实现电机的控制。
【手把手教写FOC算法】5b_开环速度代码编程+硬件调试教学_哔哩哔哩_bilibili
【手把手教写FOC算法】7a1_写闭环速度代码的前置知识_哔哩哔哩_bilibili
AS5600编码器是测得的角度是在0-6.28之间变化的
【手把手教写FOC算法】8a_撰写电流环代码的前置知识_哔哩哔哩_bilibili
【手把手教写FOC算法】9b_电流环改进速度和位置闭环代码编程+硬件调试教学_哔哩哔哩_bilibili
可以作为参考使用的闭环案例:
【手把手教写FOC算法】8b_精确电流力矩环代码编程+硬件调试教学_哔哩哔哩_bilibili
欧拉电子
pwm中央对齐设置
SVPWM电流采样时刻详细讲解:
结论:在计数器溢出时做adc采样
9.2_Hall速度控制 - 建模+CubeMX配置+代码集成_哔哩哔哩_bilibili
Simulink
在Simulink中使用的mod函数的作用
例:利用mod(t, T)
将时间变量t映射到周期T内
本身是取余的计算mod(),不过也可以在这种情况用作归一化
SVPWM
stm32高级定时器实现
浮点运算通过转化为整数的比例放大和缩放实现性能优化
SVPWM参考模型:
对比于SPWM,SVPWM模型在park逆和克拉克逆变换之间多了一个SVPWM的转换
自己实现SPWM
注意事项:
使用DengFOC提供的软件IIC读取as5600角度(FOC调出来会很顺滑),但是自己通过stm32的hal库硬件IIC实现读取(FOC调出来会很抖)。都放在while(1)里实现,所以不会是因为延时的问题,猜测是因为HAL库IIC代码内部实现方式导致实时性的影响。
自己实现SVPWM
void Set_CurTorque(float Target)
{
//Target=0.01;
current = GetPhaseCurrent();
cur_q[0]=cal_Iq_Id(current.I_a,current.I_b,electricAngle());
cur_q[1] = Lowpassfilter(¤t_low,cur_q[0]);
cur_out = PID_Controller(¤t_pid,-(Target - cur_q[1]) );
/*要注意这里的输入ERROR(Target - cur_q[1])这个整体,如果正负弄反了
就无法形成负反馈,导致控制异常*/
SetPhaseVoltage(cur_out, 0, electricAngle());
}
知识普及:
线电压:
UVW端点两两测得的电压
例:Uvw Uuw
相电压:
UVW端点相对于电机中共同连接点(N 类似于零线)的电压
例:Uvn Uwn
端电压:
UVW端点相对于GND(O)的电压
例:Uvo Uwo
在控制电机时的波形变化:
方波六部换相法 | SPWM法 | SVPWM法 | |
端电压 | 梯形波 | 正弦波 | 马鞍波 |
线电压 | 正负变化的梯形波 | 正弦波 | 正弦波 |
相电压 | 梯形波 | 正弦波 | 正弦波 |
H桥驱动:
PWM的占空比决定了每个两个相线之间(UV UW VW )的导通时间和导通方向(是UW还是WU)
为什么下图没有连接VDC电源?
因为下桥臂的电流是从相线流过来的
上下两端的MOS管不能同时导通,因为他们之间没有负载连接 而其他mos之间有所以可以同时导通(相线有等效电感电阻作为负载)
这里采集的是什么电流?为什么电阻这么小?为什么要用运放?
相电流
这个采样电阻是算在电机的相电阻中的,如果采样电阻大了会影响控制算法
因为电流很小 需要放大
为什么要使用偏置电路?
因为相电压存在负值
Iq代表的是准确的电机力矩大小 和Ia Ib Ic(相电流)有关系(Ia Ib Ic先通过克拉克变换 再帕克变换得到Iq和Id) 但不一样
这里做的电流环闭环也是闭环的力矩,有关系但不是真正的相电流
问题:
1、使用AS5600编码器的时候出现了速度瓶颈问题
到150的时候速度提不上去了
目前的思路是因为编码器的通信速度较慢,导致更高的采集频率也不能提升速度上限
V=Angle/dt(dt采集频率无法提高)
2、速度的采集有时会出现突变
猜测是因为磁铁装的位置不好
3、六不换相无法实现
暂时在解决