电机控制.docx
- 文档编号:8558103
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:85.71KB
电机控制.docx
《电机控制.docx》由会员分享,可在线阅读,更多相关《电机控制.docx(14页珍藏版)》请在冰豆网上搜索。
电机控制
直流电动机构成及工作原理
一、直流电动机构成
直流电动机由定子和转子两大部分组成。
(一)、定子部分:
1)机座机座一般用导磁性能较好的铸钢件或钢板焊接而成。
机座有两方面的作用:
一方面起导磁作用,作为电机磁路的一部分。
另一方面起安装、支撑作用。
2)主磁极主磁极通入直流励磁电流,产生电机工作的主磁场,它由主磁极铁心和励磁绕组组成。
主磁极铁心为电机磁路的一部分,主磁极绕组的作用是通入直流电产生励磁磁场。
3)换向磁极换向磁极是位于两个主磁极之间的小磁极,又称为附加磁极,其作用是产生换向磁场,改善电机的换向。
它由换向磁极铁心和换向磁极绕组组成。
4)电刷装置电刷装置的作用是通过电刷与换向器的滑动接触,把电枢绕组中的电动势(或电流)引到外电路,或把外电路的电压、电流引入电枢绕组。
(二)、转子(电枢):
直流电动机的转子又称电枢,它是产生感应电动势、电流、电磁转矩而实现能量转换的部件。
1)电枢铁心电枢铁心是直流电动机主磁路的一部分,在铁心槽中嵌放电枢绕组。
电枢铁心一般采用硅钢片叠压而成。
2)电枢绕组电枢绕组的作用是通过电流产生感应电动势和电磁转矩实现能量转换。
3)换向器换向器的作用是将电枢中的交流电动势和电流转换成电刷间的直流电动势和电流,从而保证所有导体上产生的转矩方向一致。
4)转轴转轴作用是用来传递转矩。
为了使电机能可靠地运行,转轴一般用合金钢锻压加工而成。
5)风扇风扇用来降低运行中电机的温升。
二、直流电动机的工作原理
直流电动机的工作原理如下:
如下上图所示为最简单的直流电动机的原理图。
其换向器是由二片互相绝缘的半圆铜环(换向片)构成的,每一换向片都与相应的电枢绕组连接,与电枢绕组同轴旋转,并与电刷A、B相接触。
若电刷A是正电位,B是负电位,那么在N极范围内的转子绕组ab中的电流从a流向b,在S极范围内的转子绕组cd中的电流从c流向d。
转子载流导体在磁埸中要受到电磁力的作用,根据磁场方向和导体中的电流方向,利用电动机左手定则判断,如图中ab边受力方向是向左,而cd则向右。
由于磁场是对称的,导体中流过的又是相同的电流,所以ab边和cd边所受的电磁力的大小相等。
这样转子线圈上受到的电磁力f的作用而按逆时针方向旋转。
当线圈转到磁极的中性面时,线圈中的电流为零。
因此,电磁力也等于零。
但由于惯性的作用,线圈继续转动。
线圈转过半圈之后,虽然ab与cd的位置调换了,ab转到S极范围内,cd转到N极范围内,但是由于电刷和换向片的作用,转到N极下的cd边中的电流方向也变了,是从d流向c,在S极下的ab边中的电流,则从b流向a。
因此,电磁力f的方向仍然不变,转子线圈仍按逆时针方向转动。
可见,分别在N,S极范围内的导体中的电流方向总是不变的。
因此,线圈二边受力方向也不变。
这样,线圈就可以按受力方向不停地旋转。
这就是直流电动机的工作原理。
三、结论:
直流电机的运行是可逆的。
即一台直流电机即可作为发电机运行,也可作为电动机运行。
当它作为发电机运行时,外加转矩拖动转子旋转,绕组产生感应电动势,接通负载以后提供电流,从而将机械能转变成电能。
当它作为直流电动机运行时,通电的绕组导体在磁场中受力,产生电磁转矩并拖动负载转动,从而将电能变成机械能。
上图所示为他励电机。
励磁绕组与电枢回路各自分开,励磁绕组由独立的直流电源供电。
也有用永久磁铁作为主极磁场的电机,也可作他励。
图中与电枢串接小磁极N、S为换向磁极。
要改变直流电动机的旋转方向,就需要改变直流电动机的电磁转矩方向,而电磁转矩决定于主极磁通和电枢电流的相互作用,故改变电动机转向的方法有二种:
一是改变励磁电流的方向;另一种是改变电枢电流的方向。
如果同时改变励磁电流和电枢电流的方向,则电机的转向不变。
直流永磁电机按照是否采用电刷换向可分为有刷电机和无刷电机两种,有刷电机是直流电机的主流产品,目前绝大多数电动自行车电机都是有刷电机。
无刷电机是一种特殊的直流电机,它采用内置传感器外加电子换向器的方法进行电子换向,无刷电机主要是为了消除电刷的磨损,以及电刷接触所产生的噪声。
有刷电机
目前被国内大多数电动自行车生产厂家所选用,它采用碳刷作为电机电源的两个触点,利用调速转把和控制器来控制,通过齿轮二次减速及超越离合器来达到电动自行车0-20公里/小时的无极调速。
目前采用的这种有刷高速电机含金量高,电机减速齿轮强度较强,耐磨性好,设计合理,故返修率较低;而且维修更换齿轮和电机的成本较少,有效的降低了电动自行车的维修费用;并且有刷电机可以通过超越离合器和飞轮实现轻松人力骑行。
无刷电机
目前被电动自行车生产厂家采用的一般都是无刷无齿电机。
它的转速控制系统的造价比有刷高速电机的转速控制系统要高,控制器在使用中容易发生故障。
装有无刷电机的电动自行车行驶速度必须到35公里/小时以上时,才能发挥其最佳的工作效率,但是我们知道电动自行车作为非机动车来管理,时速必须在20公里/小时以下,故无刷电机被电动自行车选用降低了工作效率,可取性不强。
现在它被采用的主要一点是噪音小。
无刷电机与有刷电机的结构比较
电动机的定子绕组多做成三相对称星形接法,同三相异步电动机十分相似。
电动机的转子上粘有已充磁的永磁体,为了检测电动机转子的极性,在电动机内装有位置传感器。
驱动器由功率电子器件和集成电路等构成,其功能是:
接受电动机的启动、停止、制动信号,以控制电动机的启动、停止和制动;接受位置传感器信号和正反转信号,用来控制逆变桥各功率管的通断,产生连续转矩;接受速度指令和速度反馈信号,用来控制和调整转速;提供保护和显示等等。
结构上,无刷电机和有刷电机有相似之处,也有转子和定子,只不过和有刷电机的结构相反;有刷电机的转是线圈绕组,和动力输出轴相连,定子是永磁磁钢;无刷电机的转子是永磁磁钢,连同外壳一起和输出轴相连,定子是绕组线圈,去掉了有刷电机用来交替变换电磁场的换向电刷,故称之为无刷电机。
有刷电机控制器与无刷电机控制器的接法区别
有刷和无刷无论从电机来区别还是从控制器区别都是不同的,有刷电机只有两根线即正负极,它的转子是线圈所以要安装碳刷。
它成本小工艺较简单但动力小噪音大。
无刷电机为三相电机以磁缸为转子,无需碳刷但需安装霍尔传感器来识别相位,所以无刷控制器有三根电机相线和五根霍尔传感电路线与电机连接。
目前为解决霍尔传感器易损坏造成电机无法正常使用又开发出的自学习控制器则无需连接霍尔传感器。
但相线依然为三根。
有刷电机的优点:
电刷磨损和电机噪声是有“有刷”相对与无刷的两个最主要的缺点,但尽管存在这两个缺点,为什么国内绝大多数品版厂家仍采用有刷电机的方案呢,难道他们没有意识到这个问题吗?
脉宽调制(PWM)是利用微处理器的数字输出来对直流电机速度进行控制的一种非常有效的技术。
本设计采用AT89S51作为主控芯片,选用L298作为直流电机的驱动器,利用软件编程,能够设置多个占空比不同的脉冲,使得电机转速可以逐步增大或减小,在单片机的控制下L298的输出开关速度很快,稳定性也极佳。
介绍了一种基于AT89C2051单片机的直流电机调速装置,该装置以小型直流电机为对象,由AT89C2051单片机控制输出PWM信号,经过功率放大后驱动直流电机,用按键实现直流电机的加速、减速控制。
该装置成本低廉且极容易实现,在实际轻载系统中运行稳定、可靠。
所谓PWM就是脉宽调制器,通过调制器给电机提供一个具有一定频率的脉冲宽度可调的脉冲电。
脉冲宽度越大即占空比越大,提供给电机的平均电压越大,电机转速就高。
反之脉冲宽度越小,则占空比越越小。
提供给电机的平均电压越小,电机转速就低。
Pwm(脉宽调制)是常用的一种调速方法,原理:
改变电机电枢(定子)电压的接通和断开的时间比(占空比)来控制马达的速度,在脉宽调制系统中,当电机通电时,其速度增加;电机断电,其速度减低。
只要按照一定的规律改变通、断电时间,即可是电机的速度达到并保持一稳定值。
实验板与PC机的连接:
一般对现成购买的开发板来说,会有一个USB接口提供5v电源、提供通信或另一个USB用来下载接口驱动程序,同时有RS232串口(USB转9针串口),实现MAX232电平与单片机TTL电平之间转换,用来进行通信下载程序和数据;单片机程序要烧录到单片机rom中,通过仪器烧,或用软件烧入,
电脑上的RS232接口采用的是负逻辑电平:
-15~-3表示逻辑1; +15~+3表示逻辑0;
且采用PWM技术构成的无级调速系统.启停时对直流系统无冲击,并且具有启动功耗小、运行稳定的特点。
电机始终接通电源时,最大平均电压,对应电机转速最大为Vmax,且设占空比为D=t/T,则电机的平均速度Vd为:
Vd=VmaxD
由公式可知,当改变占空比D=t/T时,就可以得到不同的电机平均速度Vd,从而达到调速的目的。
严格地讲,平均速度与占空比D并不是严格的线性关系,在一般的应用中,可将其近似地看成线性关系。
在直流电机驱动控制电路中,PWM信号由外部控制电路提供,并经高速光电隔离电路、电机驱动逻辑与放大电路后,驱动H桥下臂MOSFET的开关来改变直流电机电枢上平均电压,从而控制电机的转速,实现直流电机PWM调速。
长距离信号传输的问题:
PC端配一个蓝牙适配器,单片机端配一个蓝牙串口模块(MCU->蓝牙串口模块——蓝牙适配器-->PC)
程序1
给你个能正反转的!
#include
#include
unsignedcharcodetable[]={0x01,0x02,0x04,0x08};
unsignedcharcodetable0[]={0x08,0x04,0x02,0x01};
voiddelay(unsignedcharms)
{
unsignedchari,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
voidmain()
{
unsignedchari;
while
(1)
{
for(i=0;i<4;i++)
{
P0=table[i];
delay(100);
}
}
}
如果反转的话把table改为table0就行了
首先要看你的电机是直流电机还是步进电机。
直流电机就简单了,只有两根线,电机两端电压正负极改变就可以实现正转反转。
不过要加电机驱动芯片,或者H桥电路,电机驱动芯片可以选择L298N,加上适当的外围电路就可以直接用单片机控制电机了。
比如让单片机P1.0=0,P1.1=1;(单片机I/0口要与电机驱动芯片的输入脚相连)这样的话,电机驱动芯片就会输出一个电压差,可以使直流电机向一个方向转,如果使P1.0=1,P1.1=0,则电机驱动芯片会输出一个和刚才相反的电压,使电机向相反的方向转动。
H桥电路和电机驱动芯片的原理差不多,网上多的是。
我这说的只是简单的原理,实际中,L298N的输入端和单片机相连的时候要加光耦隔离,否则单片机会工作不正常。
步进电机就稍微复杂点,也得需要电机驱动芯片才行,只不过控制信号是按一定的规律给的,规律变了,电机转动的方向也就变了。
楼上给出的貌似是步进电机的驱动程序。
程序2
#include
#defineucharunsignedchar
/*****************************************************************************
*TH0和TL0是计数器0的高8位和低8位计数器,计算办法:
TL0=(65536-C)%256;*
*TH0=(65536-C)/256,其中C为所要计数的次数即多长时间产生一次中断;TMOD是计数器*
*工作模式选择,0X01表示选用模式1,它有16位计数器,最大计数脉冲为65536,最长时*
*间为1ms*65536=65.536ms*
******************************************************************************/
#defineV_TH00XFF
#defineV_TL00XF6
#defineV_TMOD0X01
voidinit_sys(void);/*系统初始化函数*/
voidDelay5Ms(void);
unsignedcharZKB1,ZKB2;
voidmain(void)
{
init_sys();
ZKB1=40;/*占空比初始值设定*/
ZKB2=70;/*占空比初始值设定*/
while
(1)
{
if(!
P1_1)//如果按了+键,增加占空比
{
Delay5Ms();
if(!
P1_1)
{
ZKB1++;
ZKB2=100-ZKB1;
}
}
if(!
P1_2)//如果按了-键,减少占空比
{
Delay5Ms();
if(!
P1_2)
{
ZKB1--;
ZKB2=100-ZKB1;
}
}
/*对占空比值限定范围*/
if(ZKB1>99)ZKB1=1;
if(ZKB1<1)ZKB1=99;
}
}
/******************************************************
*函数功能:
对系统进行初始化,包括定时器初始化和变量初始化*/
voidinit_sys(void)/*系统初始化函数*/
{
/*定时器初始化*/
TMOD=V_TMOD;
TH0=V_TH0;
TL0=V_TL0;
TR0=1;
ET0=1;
EA=1;
}
//延时
voidDelay5Ms(void)
{
unsignedintTempCyc=1000;
while(TempCyc--);
}
/*中断函数*/
voidtimer0(void)interrupt1using2
{
staticucharclick='0';/*中断次数计数器变量*/
TH0=V_TH0;/*恢复定时器初始值*/
TL0=V_TL0;
++click;
if(click>=100)click='0';
if(click<=ZKB1)/*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/
P1_3=0;
else
P1_3=1;
if(click<=ZKB2)
P1_4=0;
else
P1_4=1;
}只是调占空比的,希望对你有帮助,调试好的
程序3
voiddelayms(INT16Uk)。
。
。
。
。
。
。
可以设置一段延时程序这里大约是1ms
{INT16Ua,s;
for(a=k;a>0;a--)
for(s=110;s>0;s--);
}
voidPWM()M1,M4为电机的使能端,为1时电机工作,为0时电机不工作,
通过电机导通和不导通的时间的控制就能产生PWM信号,在这
里只要调节speed的变化就可以调节PWM信号的占空比了。
{
M1=1;M4=1;
delayms(speed);
M1=0;M4=0;
delayms(30-speed);
}
//你可以在这里加一个键盘检测程序来控制电机的占空比来调节减速还是加速
这是加速程序
{
speed=speed+5;
if(speed>=30)
speed=30;
}
这是减速程序
{
if(speed!
=5)
speed=speed-5;
else
speed=5;
}
程序4
电机转速表设计
#include
#include
sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚
sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚
sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚
sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚
unsignedcharcodedigit[]={"0123456789"};//定义字符数组显示数字
unsignedintv;//储存电机转速
unsignedcharcount;//储存定时器T0中断次数
bitflag;//计满1秒钟标志位
/*****************************************************
函数功能:
延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
voiddelay1ms()
{
unsignedchari,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
/*****************************************************
函数功能:
延时若干毫秒
入口参数:
n
***************************************************/
voiddelay(unsignedcharn)
{
unsignedchari;
for(i=0;i delay1ms(); } /***************************************************** 函数功能: 判断液晶模块的忙碌状态 返回值: result。 result=1,忙碌;result=0,不忙 ***************************************************/ unsignedcharBusyTest(void) { bitresult; RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1;//E=1,才允许读写 _nop_();//空操作 _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 result=BF;//将忙碌标志电平赋给result E=0;//将E恢复低电平 returnresult; } /***************************************************** 函数功能: 将模式设置指令或显示地址写入液晶模块 入口参数: dictate ***************************************************/ voidWriteInstruction(unsignedchardictate) { while(BusyTest()==1);//如果忙就等待 RS=0;//根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲, //就是让E从0到1发生正跳变,所以应先置"0" _nop_(); _nop_();//空操作两个机器周期,给硬件反应时间 P0=dictate;//将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=1;//E置高电平 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令 } /***************************************************** 函数功能: 指定字符显示的实际地址 入口参数: x ***************************************************/ voidWriteAddress(unsignedcharx) { WriteInstruction(x|0x80);//显示位置的确定方法规定为"80H+地址码x" } /***************************************************** 函数功能: 将数据(字符的标准ASCII码)写入液晶模块 入口参数: y(为字符常量) ***************************************************/ voidWriteData(unsignedchary) { while(BusyTest()==1); RS=1;//RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0;//E置低电平(根据表8-6,写指令时,E为高脉冲, //就是让E从0到1发生正跳变,所以应先置"0" P0=y;//将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=1;//E置高电平 _nop_(); _nop_(); _nop_(); _nop_();//空操作四个机器周期,给硬件反应时间 E=0;//当E由高电平跳变成低电平时,液晶模块开始执行命令 } /***************************************************** 函数功能: 对LCD的显示模式进行初始化设置 ***************************************************/ voidLcdInitiate(void) { delay(15);//延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38);//显示模式设置: 16×2显示,5×7点阵,8位数据接口 delay(5);//延时5ms ,给硬件一点反应时间 WriteInstruction(0x38); delay(5); WriteInstruction(0x38);//连续三次,确保初始化成功 delay(5); WriteInstruction(0x0c);//显示模式设置: 显示开,无光标,光标不闪烁 delay(5); WriteInstruction(0x06);//显示模式设置: 光标右移,字符不移 delay(5); WriteInstruction(0x01);//清屏幕指令,将以前的显示内容清除 delay(5); } /****************************************************************************** 函数功能: 显示速度提示符 *********************************************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电机 控制
![提示](https://static.bdocx.com/images/bang_tan.gif)