1.0电机的分类及永磁同步电机的控制技术介绍

1.0电机的分类及永磁同步电机的控制技术介绍

  • 基础的电磁感应产生力的作用,这类似的初中物理知识不再讨论;
  • 与直流无刷及永磁同步电机知识太发散的就不再讨论;
本文介绍的几点内容
  1. 电机的分类及日常生活中的电机类型
  2. 无刷直流/永磁同步电机的运行原理
  3. 无刷直流与永磁同步的异同
  4. 永磁同步电机的控制技术

1.电机的分类及日常生活中的电机类型

电机种类
  如图中所示,电动机的种类,可以首先按照交直流类型来区别。
  直流电动机在日常生活中遇到的非常多,用电池或5V电源作为能量的几乎都是,电动玩具、剃须刀、小风扇。这类电机的分类在换向式的细分类别中。控制手段也非常简单,两极上通电就能转,电压给的越大转的越快,两根电极线对调就能反转。如果曾经拆开过玩具四驱车里面的直流有刷电机就会记得,里面有个II型的两极电刷,转子的电流换向就是靠电刷来完成。这类电机,也会发现里面有磁铁存在,磁极是固定不动的,作为定子。其他细分支的单极式电机、换向电励磁式电机,生活中不太常见,不作介绍了。
  交流电动机分为两类,同步电动机和异步电动机。
  异步电动机在普通日常生活中见的相对较少,都相对较为大型。单相的异步电动机,在农村家里的各类加工机器、普通的小型工厂里的加工机器上会见的比较多;使用的电源就是普通的市电220V就行,一零一火线就可以工作运行。单相异步电机的更细分类型,差别就不是那么大了,这类电机上常常会有两个非常大的电容:启动电容、工作电容。如果这两个电容坏了,启动或工作的时候就会异常。
  多相异步电动机,在起重机械、大型加工机械上会见的非常多;多相异步电机的体积在这所有电机分类中都相对较大,功率也都不低。使用这类电机大都配有相应的变频器。其供电时会接入三相电。三相电在工业中常用,但日常生活不常见。
  最后介绍交流电动机的同步电动机。这类电机的细分种类在日常生活中会多少有些影子。同步电动机主要分为四类,无刷直流、永磁同步、步进电机、磁滞电机、磁阻电机。无刷直流电机,一提到,都见过;日常使用的电动自行车、电摩的后轮,就是一种直流无刷同步电动机。这种电机还有一种称呼叫轮毂电机,就是指长在车轮的轮毂上的电机。步进电机的应用非常广泛,主要是因为其控制的步进精度,使得可以用在高精度的场合。激光切割,3D打印中都用的蛮多的。
  还有一种分支的电机类型,永磁同步电机。这种电机,当前,有一个非常火的应用,昂贵的那款吹风机就是永磁同步电机的。永磁同步电机结合优良的控制方法,可使得电机的转速精确可控,噪声非常低,给人静音静躁并且高效的感觉。
  同步电机大多是永磁式的。其他励磁类型的也有,但不常见了。

2.无刷直流/永磁同步电机的运行原理

  这里一起阐述无刷直流和永磁同步运行原理的原因是因为这两类的区别着实不大,后文会详细对比异同的。
  直流有刷电机,定子是永磁体,转子是绕线线圈;磁性有两极,同斥异吸。所以,在转子线圈中通上直流电,则能让转子转动,直到与定子力矩最小的位置;这时由于电刷换向,本来力矩最小的位置又成了力矩最大;最后,周而复始,转子不断旋转。
  无刷直流,那就确实没有电刷;同时,直流有刷电机中定子为永磁体,转子为绕线的结构,在直流无刷中变成了定子为绕组,转子为永磁体。如果绕组依然在转子上面,那还得靠物理接触给绕组通电,没有解决掉电刷老化的问题。直流无刷电机中,绕组在定子中存在,有三根相线;工作的时候,相继的给三根相线输入输出电流,变达到了换向的目的。直流无刷中,转子定子由于电磁生力的作用与直流有刷是相同的。
  无刷直流电机,具体是定子在内部还是在外部,不一定。转子在外,定子在内的,一般称为外转子电机。轮毂电机就是很特殊的外转子电机。
  直流无刷电机,为什么在大分类下却又是交流电机?
  是因为,我们在给无刷直流、永磁同步电动机的控制器供电的时候,供给的是直流电源,所以称呼为了无刷直流;但是,直流电源经由电机控制器,逆变之后,在与电机相连的三根相线上,电源类型变成了交流,交流变化的相电压才能使电机三根相线上的电流不停换向,所以电机的分类是交流电动机。

3. 无刷直流与永磁同步的异同

  • 无刷直流电机,英文BLDC,英文全称Brushless Direct Current Motor
  • 永磁同步电机,英文PMSM, 英文全称 Permanent Magnet Synchronous Motor

这两种电机类型要作以区别,最根本的原因是因为气隙磁场的设计就不同。所以产生了以下的不同

  1. 反电势波形不同:
    BLDC :近似梯形波(理想状态);
    PMSM :正弦波(理想状态);
  2. 三相电流波形不同:
    BLDC :近似方波或梯形波(理想状态);
    PMSM :正弦波(理想状态);
  3. 控制系统的区别:
    BLDC:通常包括位置控制器、速度控制器和电流(转矩)控制器;
    PMSM:不同控制策略的会有不同的控制系统;
  4. 控制不同:
    BLDC:120度方波电流,采用PWM控制;
    PMSM:正玄波电流,采用SPWM SVPWM控制。

  但是,在实际的控制中,直流无刷也会用FOC控制,永磁同步电机也能用方波进行控制。
  就像电动车的控制器,我拆来研究过三四个,接口都是一样的,控制芯片不一样,当然控制算法也不一样。用正弦波控制的电动车,启动、运行声音都很低,运行过程中没有抖动;但是方波控制的电动车,声音会非常明显,运行时的抖动也能感知得到。抖动是因为明确的转矩脉动。
  方波控制的电机,电源使用效率较高,因为正弦波控制的电机,在有效电压上就会被打折一点。

4. 永磁同步电机的控制技术

永磁同步电机,直流无刷电机可以用同样的控制手段来使之运行。

  • 根据有无位置传感器来区别,首先分为有感无感。也就是有无使用霍尔等类似的位置传感器来感知定子转子的位置角度。在风泵类的应用中,很多使用无感方式控制,通孔优良的算法是电机运转起来后,检测感知相电流的变化来切换相电流。一些重载或精确控制的应用中,都会使用有感方式。
  • 根据逆变的三相电源,可以分为方波控制和正弦波控制。方波控制策略简单,控制过程直接有效,采用六步换向策略,CPU调制 出PWM来驱动功率开关管就可是生成能使电机运转的三相电源。正弦波的控制策略相对复杂得多,但是在控制效果上又优良的多。
  • 正弦波控制时,主要有两种控制策略。
    一种是,直接转矩控制DTC百度百科。其作法是依量测到的马达电压及电流,去计算马达磁通和转矩的估测值,而在控制转矩后,也可以控制马达的速度,直接转矩控制是欧洲ABB公司的专利。
    第二种是,空间矢量控制FOC百度百科。其实质是将交流电动机等效为直流电动机,分别对速度,磁场两个分量进行独立控制;通过控制转子磁链,然后分解定子电流而获得转矩和磁场两个分量,经坐标变换,实现正交或解耦控制。
  • 正弦波控制时,会有很多衍生的更精细的控制策略,比如前馈控制、最大转矩控制、弱磁控制等。
  • 在对电机的控制过程中,会有多个反馈控制环。在控制电机的出力情况时,有电流环;再此基础上,控制转速的控制环;伺服电机应用时,便有位置环的控制。

ST的开源方案–空间矢量控制,驱动永磁同步电机的学习及分享计划CSDN链接

  • 9
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本文小编为大家总结下电动机的分类。   按其功能可分为驱动电动机和控制电动机;按电能种类分为直流电动机和交流电动机;从电动机的转速与电网电源频率之间的关系来分类可分为同步电动机与异步电动机;按电源相数来分类可分为单相电动机和三相电动机;按防护型式可分为开启式、防护式、封闭式、隔爆式、防水式、潜水式;按安装结构型式可分为卧式、立式、带底脚、带凸缘等;按绝缘等级可分为E级、B级、F级、H级等。   1、按结构及工作原理分类电动机按结构及工作原理可分为异步电动机和同步电动机。   同步电动机还可分为永磁同步电动机、磁阻同步电动机和磁滞同电动机。   异步电动机可分为感应电动机和交流换向器电动机。感应电动机又分为三相异步电动机、单相异步电动机和罩极异步电动机。交流换向器电动机又分为单相串励电动机、交直流两用电动机和推斥电动机。   直流电动机按结构及工作原理可分为无刷直流电动机和有刷直流电动机。有刷直流电动机可分为永磁直流电动机和电磁直流电动机。电磁直流电动机又分为串励直流电动机、并励直流电动机、他励直流电动机和复励直流电动机。永磁直流电动机又分为稀土永磁直流电动机、铁氧体永磁直流电动机和铝镍钴永磁直流电动机。   2、按工作电源分类根据电动机工作电源的不同,可分为直流电动机和交流电动机。其中交流电动机还分为单相电动机和三相电动机。   3、按转子的结构分类电动机按转子的结构可分为笼型感应电动机(旧标准称为鼠笼型异步电动机)和绕线转子感应电动机(旧标准称为绕线型异步电动机)。   4、按起动与运行方式分类电动机按起动与运行方式可分为电容起动式电动机、电容盍式电动机、电容起动运转式电动机和分相式电动机。   5、按运转速度分类电动机按运转速度可分为高速电动机、低速电动机、恒速电动机、调速电动机。   低速电动机又分为齿轮减速电动机、电磁减速电动机、力矩电动机和爪极同步电动机等。   调速电动机除可分为有级恒速电动机、无级恒速电动机、有级变速电动机和无极变速电动机,还可分为电磁调速电动机、直流调速电动机、PWM变频调速电动机和开关磁阻调速电动机。   6、按用途分类电动机按用途可分为驱动用电动机和控制用电动机。   驱动用电动机又分为电动工具(包括钻孔、抛光、磨光、开槽、切割、扩孔等工具)用电动机、家电(包括洗衣机、电风扇、电冰箱、空调器、录音机、录像机、影碟机、吸尘器、照相机、电吹风、电动剃须刀等)用电动机及其它通用小型机械设备(包括各种小型机床、小型机械、医疗器械、电子仪器等)用电动机。   控制用电动机又分为步进电动机和伺服电动机等。
以下是一个简单的永磁同步电机FOC控制的转速和电流环的C代码: ```c #include <stdio.h> #include <stdlib.h> #include <math.h> #define PI 3.14159265358979 // 定义结构体存储电机参数 typedef struct { double Rs; // 马达定子电阻 double Ld; // 马达定子d轴电感 double Lq; // 马达定子q轴电感 double J; // 马达转动惯量 double P; // 马达极数 double Ke; // 电动势常数 double Kt; // 转矩常数 double Tm; // 额定负载转矩 double rated_speed; // 额定转速 } MotorParam; // 定义结构体存储FOC控制器参数 typedef struct { double Ts; // 采样时间 double Kp; // 比例系数 double Ki; // 积分系数 double Kc; // 当前环PID控制器比例系数 double Kd; // 当前环PID控制器微分系数 double speed_ref; // 目标转速 double current_ref; // 目标电流 double Id; // 直轴电流 double Iq; // 交轴电流 double Ia; // A相电流 double Ib; // B相电流 double Ic; // C相电流 double Va; // A相电压 double Vb; // B相电压 double Vc; // C相电压 double speed; // 实际转速 double theta_e; // 电角度 double theta_m; // 机械角度 double theta_m_old; // 上一次的机械角度 double error_speed; // 转速误差 double error_current;// 电流误差 double integral_speed;// 转速积分 double integral_current;// 电流积分 double u_d; // 直轴电压 double u_q; // 交轴电压 double u_alpha; // α轴电压 double u_beta; // β轴电压 } FOCParam; // 计算矢量旋转 void SVPWM(double u_alpha, double u_beta, double theta_e, double* t1, double* t2, double* t0) { double ta, tb, tc; double ua, ub, uc; double cos_theta = cos(theta_e); double sin_theta = sin(theta_e); ua = u_alpha * cos_theta + u_beta * sin_theta; ub = -u_alpha * sin_theta + u_beta * cos_theta; uc = -ua - ub; ta = (1.0 / sqrt(3)) * (ua - 0.5 * ub - 0.5 * uc); tb = (1.0 / sqrt(3)) * (ub - 0.5 * ua - 0.5 * uc); tc = (1.0 / sqrt(3)) * (uc - 0.5 * ua - 0.5 * ub); *t1 = 0.5 * (1.0 - ta - tb); *t2 = 0.5 * (1.0 - tb - tc); *t0 = 0.5 * (1.0 - tc - ta); } // FOC控制器 void FOCControl(MotorParam* motor, FOCParam* foc) { double omega_r; // 转子电角速度 double T_r; // 电磁转矩 double T_e; // 机械转矩 double theta_r; // 转子电角度 double theta_m; // 机械角度 double dIq; // 交轴电流变化量 double dId; // 直轴电流变化量 double u_alpha, u_beta; double t1, t2, t0; double u_d_old, u_q_old; double Ta, Tb, Tc; // 计算转矩 omega_r = foc->speed / motor->P; T_r = motor->Ke * (foc->Iq * sin(foc->theta_e) - foc->Id * cos(foc->theta_e)); T_e = T_r - motor->Tm; dIq = foc->Ki * foc->Ts * (foc->current_ref - foc->Iq); dId = foc->Ki * foc->Ts * (0.0 - foc->Id); foc->Iq += dIq; foc->Id += dId; // 计算电角度和机械角度 theta_r = foc->theta_e + motor->P * omega_r * foc->Ts; theta_m = theta_r / motor->P; foc->theta_m = fmod(theta_m, 2.0 * PI); if (foc->theta_m < 0.0) { foc->theta_m += 2.0 * PI; } // 转速控制 foc->error_speed = foc->speed_ref - foc->speed; foc->integral_speed += foc->error_speed * foc->Ts; foc->u_q = foc->Kp * foc->error_speed + foc->Ki * foc->integral_speed; foc->u_q = fmax(fmin(foc->u_q, 10.0), -10.0); // 电流控制 foc->error_current = foc->current_ref - foc->Iq; foc->integral_current += foc->error_current * foc->Ts; foc->u_d = foc->Kp * foc->error_current + foc->Ki * foc->integral_current; foc->u_d = fmax(fmin(foc->u_d, 10.0), -10.0); // 转换到直交坐标系 u_alpha = foc->u_d * cos(foc->theta_e) - foc->u_q * sin(foc->theta_e); u_beta = foc->u_d * sin(foc->theta_e) + foc->u_q * cos(foc->theta_e); // 计算SVPWM波形 SVPWM(u_alpha, u_beta, foc->theta_e, &t1, &t2, &t0); // 更新电压 foc->u_alpha = u_alpha; foc->u_beta = u_beta; // 计算电流 Ta = motor->Kt * (t1 - 0.5 * t2 - 0.5 * t0); Tb = motor->Kt * (t2 - 0.5 * t0 - 0.5 * t1); Tc = motor->Kt * (t0 - 0.5 * t1 - 0.5 * t2); foc->Ia = Ta / motor->Ke; foc->Ib = Tb / motor->Ke; foc->Ic = Tc / motor->Ke; // 计算电角度 foc->theta_e += omega_r * foc->Ts; // 保存直轴电压 u_d_old = foc->u_d; u_q_old = foc->u_q; // 计算直轴电压 foc->u_d = foc->Kp * (foc->Id - (motor->Ld / motor->Rs) * foc->Ia) - foc->Kc * (foc->u_d - u_d_old) / foc->Ts; foc->u_d = fmax(fmin(foc->u_d, 10.0), -10.0); // 计算交轴电压 foc->u_q = foc->Kp * (foc->Iq - (motor->Lq / motor->Rs) * foc->Ib) - foc->Kc * (foc->u_q - u_q_old) / foc->Ts; foc->u_q = fmax(fmin(foc->u_q, 10.0), -10.0); // 更新电流 dIq = foc->Ki * foc->Ts * (foc->current_ref - foc->Iq); dId = foc->Ki * foc->Ts * (foc->u_d - foc->Id); foc->Iq += dIq; foc->Id += dId; } // 主函数 int main() { MotorParam motor; FOCParam foc; // 初始化电机参数 motor.Rs = 1.0; motor.Ld = 0.01; motor.Lq = 0.02; motor.J = 0.1; motor.P = 4; motor.Ke = 0.1; motor.Kt = 0.1; motor.Tm = 0.0; motor.rated_speed = 2000.0; // 初始化FOC控制器参数 foc.Ts = 0.0001; foc.Kp = 0.1; foc.Ki = 50.0; foc.Kc = 0.1; foc.Kd = 0.0; foc.speed_ref = 1000.0; foc.current_ref = 1.0; foc.Id = 0.0; foc.Iq = 0.0; foc.Ia = 0.0; foc.Ib = 0.0; foc.Ic = 0.0; foc.Va = 0.0; foc.Vb = 0.0; foc.Vc = 0.0; foc.speed = 0.0; foc.theta_e = 0.0; foc.theta_m = 0.0; foc.theta_m_old = 0.0; foc.error_speed = 0.0; foc.error_current = 0.0; foc.integral_speed = 0.0; foc.integral_current = 0.0; foc.u_d = 0.0; foc.u_q = 0.0; foc.u_alpha = 0.0; foc.u_beta = 0.0; // 模拟FOC控制 for (int i = 0; i < 10000; i++) { FOCControl(&motor, &foc); foc.speed = motor.rated_speed * motor.P * (foc.theta_m - foc.theta_m_old) / (2.0 * PI * foc.Ts); foc.theta_m_old = foc.theta_m; printf("%lf,%lf,%lf,%lf\n", foc.speed, foc.current_ref, foc.Iq, foc.u_q); } return 0; } ``` 这段代码实现了一个简单的FOC控制器,包括转速和电流环控制。在`FOCControl`函数中,我们首先计算电机转矩和角度,然后进行转速和电流控制,最后计算SVPWM波形,更新电压和电流。在主函数中,我们模拟了10000个采样周期,每个周期的时长为0.0001秒,输出了转速、目标电流、实际电流和交轴电压。 需要注意的是,这段代码仅供参考,实际应用中需要根据具体电机和控制器的参数进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值