小功率的云台电机的驱动可以直接采用驱动芯片(一般芯片内部会加各种保护)进行控制,但是对于较大功率的电机则采用MOS组成的H桥(有刷)和三相全桥(无刷)进行控制,过流过温保护需要自行添加。
MOS并联的增流作用:
并联方法:将多个MOS管的栅极、源极、漏极分别连接在一起,从而形成一个并联电路。
无刷电机的KV值是指其每分钟转速与电压之间的线性关系。具体来说,KV值等于每伏特(V)所能产生的转速(RPM)。KV值越高,表示无刷电机在给定电压下转速越快。因此,无刷电机的转速、功率、电流和效率会受到KV值的影响。又要大功率、大扭矩,又要体积小,成本还最好不要太高,选择低KV值的无刷电机显然是最合适的。若想额外增加电机的扭矩可以加装减速器,参考RM英雄机器人pitch电机。
在电机领域中,CW和CCW是两个常用的术语,表示电机的旋转方向。CW表示顺时针方向旋转,即正转。CCW表示逆时针方向旋转,即反转。
结构体与函数复用:
// 定义电机结构体
typedef struct {
// 电机的属性,例如PWM值、状态等
uint16_t pwm_duty;
// 其他属性...
} Motor;
// 定义电机实例
Motor g_bldc_motor1;
Motor g_bldc_motor2;
// 初始化电机
void init_motors(void) {
// 初始化g_bldc_motor1的代码...
// 初始化g_bldc_motor2的代码...
}
void m1_whvl(Motor *motor)
{
if (motor == &g_bldc_motor1) {
g_atimx_handle.Instance->CCR2 = 0;
g_atimx_handle.Instance->CCR3 = motor->pwm_duty;
g_atimx_handle.Instance->CCR1 = 0;
HAL_GPIO_WritePin(M1_LOW_SIDE_V_PORT, M1_LOW_SIDE_V_PIN, GPIO_PIN_SET);
HAL_GPIO_WritePin(M1_LOW_SIDE_U_PORT, M1_LOW_SIDE_U_PIN, GPIO_PIN_RESET);
HAL_GPIO_WritePin(M1_LOW_SIDE_W_PORT, M1_LOW_SIDE_W_PIN, GPIO_PIN_RESET);
} else if (motor == &g_bldc_motor2) {
// 对于g_bldc_motor2的相应操作
}
// 可以继续添加更多的电机实例操作
}
int main(void) {
// 初始化电机
init_motors();
// 获取电机实例的地址
Motor *motor1_ptr = &g_bldc_motor1;
Motor *motor2_ptr = &g_bldc_motor2;
// 使用指针调用函数
m1_whvl(motor1_ptr);
m1_whvl(motor2_ptr);
return 0;
}
在电子设备的电源部分,220欧姆的电阻常用于电源滤波电路中,起到抑制高频噪声的作用。在LED电路中,220欧姆的电阻可以用作限流电阻,控制LED的亮度和保护LED免受过大电流的损坏。
齐纳二极管的替代品:
电压基准芯片ME432AXG,是一款低电压(1.25V)可编程精密稳压器,在全温度范围内如同低温度系数的齐纳管一样稳定。ME432具有较宽的工作电流范围:70uA到100mA。较低的温度系数和较低的动态阻抗使其在开关电源、充电管理、运放电路等许多应用中代替齐纳二极管。ME432工作最高电压为18V,输出电压可以通过外部电阻在Vref(1.25V)到18V之间灵活设置。
ME431AXG稳压为2.5V,和ME432AXG一样有3.3V提供电源,得到基准电压后为运放器件提供所需的基准电压。
搞不懂运放电路?一定要看这一文20种运放典型电路,电路图+公式 - 知乎 (zhihu.com)
条件编译#if #endif:
无感控制:
有感控制通过霍尔传感器得到三相的位置从而通过六步换向改变6中MOS组合的通断来控制电机连续转动,无感控制不用传感器通过检测反电动势(通过过零信号的组合判断转子当前的位置)也可以控制电机转动,在低速时检测不精准控制不准确。电调通常属于无感控制,现在基本都是无感FOC技术。相比于传统的方波控制技术,FOC低噪音、响应快、转矩平顺。FOC可以实现速度环、电流环的双闭环,收发自如。
过零点:反电动势从正变为负或者从负变为正的点,发生在不通电的那一项
无刷电机的反电动势是指在无刷电机运转时,由于电机转子在磁场中运动,会产生电磁感应力,导致在电机内部形成一个反向的电动势。这种电动势被称为反电动势。
当无刷直流电机转子旋转时,定子的电枢绕组会切割磁力线。根据电磁感应定律,在磁场中运动的导体因切割磁力线会产生感应电动势。由于产生的电动势方向与电枢绕组电流的方向相反,因此称之为反电动势。
在无刷电机中,反电动势的大小和相位会随着转子位置的变化而变化,从而实现对电流的控制和调节。反电动势在电机控制中具有重要的作用,它可以用于检测转子位置、实现换相控制和速度闭环等。
第一个60度内,A相电流为正B相电流为负,C相电流为0,这说明电机的AB相导通,电流从A相流向B相,反电动势的过零点恰好出现在C相,因此只要在每个60度内检测一次检测出不通电导通那一项的电压,即可检测反电动势。
用一个过零比较器产生0或1,检测反电动势,通过过零点的组合可以检测出转子的位置,过零点发生在换向前的30度时刻,则检测出过零点后延时30分钟为需要换向的时刻。过零点前通常有尖峰电压,可以后续通过RC低通滤波器或程序低通滤波滤除。
BEMF_V为虚拟中性点,为三相的共同连接。之后每项都有一个比较器进行电压比较,参考电压为虚拟中性点的电压。比较器输出0和1得出比较结果。中间的运放电压跟随器起到隔离的作用。左边图中的电阻起到分压作用由于相电压过大。
如何根据过零信号计算出电机的速度:
计算转速:转速与反电动势的频率成正比。如果知道一个周期内过零点的数量,就可以计算出转速。例如,如果每分钟检测到60个过零点,那么电机的转速就是60转/分钟。