直流电机控制原理及C程序.docx
- 文档编号:26191847
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:26
- 大小:325.22KB
直流电机控制原理及C程序.docx
《直流电机控制原理及C程序.docx》由会员分享,可在线阅读,更多相关《直流电机控制原理及C程序.docx(26页珍藏版)》请在冰豆网上搜索。
直流电机控制原理及C程序
项目八键盘控制电机方向和转速
【教学目标】
终极目标
能利用AT89S52单片机及独立键盘,通过C语言程序实现键盘控制步进电机和直流电机的速度和方向,完成单片机输入输出控制系统的设计、运行及调试。
促成目标
1.了解单片机产品开发的流程;
2.了解步进电机和直流电机结构和工作原理;
3.掌握步进电机和直流电机速度、方向控制关键技术;
4.掌握头文件的编写方法;
5.掌握电机速度、方向控制的电路设计和编程的方法;
6.会利用单片机I/O口实现电机速度、方向控制。
8.1单片机产品开发
单片机产品开发是为完成某项任务而研制开发的单片机应用系统,是以单片机为核心,配以外围电路和软件,能实现确定任务、功能的实际应用系统。
根据不同的用途和要求,单片机产品的系统配置及软件也有所不同,但它们的开发流程和方法大致相同。
8.1.1单片机产品的结构
单片机产品是由硬件和软件组成。
硬件是指单片机、扩展的存储器、输入输出设备等硬件部件组成的,软件是各种工作程序的总称。
一个典型单片机产品结构如图8-1所示。
图8-1典型单片机产品结构
从图8-1不难看出单片机产品所需要的一般配置:
(1)单片机。
如AT89C51、AT89C52、AT89S51以及AT89S52等单片机。
(2)人机交流设备。
输入设备有键盘和按键,输出设备有数码管、液晶显示模块和指示灯等。
(3)信号采集的输入通道。
如出租车的测距、测速装置,温控系统的温度传感器、洗衣机的水位测量等设备。
(4)向操作对象发出各种控制信号的输出通道。
如空调启动压缩机的开关电路,控制彩电的频道切换、颜色、音量等的接口电路。
(5)与其他计算机系统或智能设备实现信息交换,还需配置通信接口电路。
如RS-232、RS-485等。
(6)有时还需扩展外部RAM、EEPROM用于存放数据。
如彩电遥控系统中存放系统数据的存储器。
8.1.2单片机产品开发流程
1.确定功能技术指标
单片机产品开发流程是以确定产品的功能和技术指标开始的。
首先要细致分析、研究实际问题,明确各项任务与要求,综合考虑系统的先进性、可靠性、可维护性以及成本、经济效益,拟订出合理可行的技术性能指标。
2.单片机产品总体设计
在对单片机产品进行总体设计时,应根据单片机产品提出的各项技术性能指标,拟订出性价比最高的一套方案。
首先,应根据任务的繁杂程度和技术指标要求选择机型。
选定机型后,再选择产品中要用到的其它外围元器件,如传感器、执行器件等。
在总体方案设计过程中,对软件和硬件进行分工是一个首要的环节。
原则上,能够由软件来完成的任务就尽可能用软件来实现,以降低硬件成本,简化硬件结构。
同时,还要求大致规定各接口电路的地址、软件的结构和功能、上下位机的通信协议、程序的驻留区域及工作缓冲区等。
总体方案一旦确定,系统的大致规模及软件的基本框架就确定了。
3.硬件设计
硬件设计是指应用系统的电路设计,包括主机、控制电路、存储器、I/O接口、A/D和D/A转换电路等。
硬件设计时,应考虑留有充分余量,电路设计力求正确无误,因为在系统调试中不易修改硬件结构。
硬件电路设计时应注意以下几个问题:
(1)程序存储器
一般可选用容量较大的EPROM芯片,如27128(16KB)、27256(32KB)或27512(64KB)等。
尽量避免用小容量的芯片组合扩充成大容量的存储器,程序存储器容量大些,则编程空间宽裕些,价格相差也不会太多。
(2)数据存储器和I/O接口
根据系统功能的要求,如果需要扩展外部RAM或I/O口,那么RAM芯片可选用6116(2KB)、6264(8KB)或62256(32KB),原则上应尽量减少芯片数量,使译码电路简单。
I/O接口芯片一般选用8155(带有256KB静态RAM)或8255。
这类芯片具有口线多、硬件逻辑简单等特点。
若口线要求很少,且仅需要简单的输入或输出功能,则可用不可编程的TTL电路或CMOS电路。
A/D和D/A电路芯片主要根据精度、速度和价格等来选用,同时还要考虑与系统的连接是否方便。
(3)地址译码电路
通常采用全译码、部分译码或线选法,应考虑充分利用存储空间和简化硬件逻辑等方面的问题。
MCS-51系统有充分的存储空间,包括64KB程序存储器和64KB数据存储器,所以在一般的控制应用系统中,主要是考虑简化硬件逻辑。
当存储器和I/O芯片较多时,可选用专用译码器74S138或74LS139等。
(4)总线驱动能力
MCS-51系列单片机的外部扩展功能很强,但4个8位并行口的负载能力是有限的。
P0口能驱动8个TTL电路,P1~P3口只能驱动4个TTL电路。
在实际应用中,这些端口的负载不应超过总负载能力的70%,以保证留有一定的余量。
如果满载,会降低系统的抗干扰。
在外接负载较多的情况下,如果负载是MOS芯片,因负载消耗电流很小,所以影响不大。
如果驱动较多的TTL电路,则应采用总线驱动电路,以提高端口的驱动能力和系统的抗干扰能力。
数据总线宜采用双向8路三态缓冲器74LS245作为总线驱动器,地址和控制总线可采用单向8路三态缓冲区74LS244作为单向总线驱动器。
(5)系统速度匹配
MCS-51系列单片机时钟频率可在2~12MHz之间任选。
在不影响系统技术性能的前提下,时钟频率选择低一些为好,这样可降低系统中对元器件工作速度的要求,从而提高系统的可靠性。
4.抗干扰措施
单片机产品的工作环境往往都是具有多种干扰源的现场,抗干扰措施在单片机产品设计中显得尤为重要。
根据干扰源引入的途径,抗干扰措施可以从以下两个方面考虑。
(1)电源供电系统
为了克服电网以及来自系统内部其它部件的干扰,可采用隔离变压器、交流稳压、线滤波器、稳压电路各级滤波等防干扰措施。
(2)电路上的考虑
为了进一步提高系统的可靠性,在硬件电路设计时,应采取一系列防干扰措施:
1)大规模IC芯片电源供电端VCC都应加高频滤波电容,根据负载电流的情况,在各级供电节点还应加足够容量的退耦电容;
2)开关量I/O通道与外界的隔离可采用光电耦合器件,特别是与继电器、可控硅等连接的通道,一定要采用隔离措施;
3)可采用CMOS器件提高工作电压(+15V),这样干扰门限也相应提高;
4)传感器后级的变送器尽量采用电流型传输方式,因电流型比电压型抗干扰能力强;
5)电路应有合理的布线及接地方式;
6)与环境干扰的隔离可采用屏蔽措施。
5.软件设计
单片机产品的软件设计是产品研制过程中任务最繁重的一项工作,难度也比较大。
对于某些较复杂的应用系统,不仅要使用汇编语言来编程,有时还要使用高级语言。
单片机产品的软件主要包括两大部分:
用于管理单片机工作的监控程序和用于执行实际具体任务的功能程序。
对于监控程序,应尽可能利用现成的监控程序。
为了适应各种应用的需要,现代的单片机开发系统的监控软件功能相当强,并附有丰富的实用子程序,可供用户直接调用,例如键盘管理程序、显示程序等。
因此,在设计系统硬件逻辑和确定应用系统的操作方式时,就应充分考虑这一点。
这样可大大减少软件设计的工作量,提高编程效率。
对于功能程序要根据产品的功能要求来编程序。
例如,外部数据采集、控制算法的实现、外设驱动、故障处理及报警程序等。
单片机产品的软件设计千差万别,不存在统一模式。
进行软设计时,尽可能采用模块化结构。
根据系统软件的总体构思,按照先粗后细的方法,把整个系统软件划分成多个功能独立、大小适当的模块。
应明确规定各模块的功能,尽量使每个模块功能单一,各模块间的接口信息简单、完备,接口关系统一,尽可能使各模块间的联系减少到最低限度。
这样,各个模块可以分别独立设计、编制和调试,最后再将各个程序模块连接成一个完整的程序进行总调试。
6.单片机产品调试
单片机产品开发必须经过调试阶段,只有经过调试才能发现问题,改正错误,最终完成开发任务。
实际上,对于较复杂的程序,大多数情况下都不可能一次性就调试成功,即使是资深设计人员也是如此。
单片机产品调试包括硬件调试和软件调试。
硬件调试的任务是排除系统的硬件电路故障,包括设计性错误和工艺性故障。
软件调试是利用开发工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。
程序调试一般是一个模块一个模块地进行,一个子程序一个子程序地调试,最后联起来统调。
利用开发工具的单步和断点运行方式,通过检查应用系统的CPU现场、RAM和SFR的内容以及I/O口的状态,来检查程序的执行结果和系统I/O设备的状态变化是否正常,从中发现程序的逻辑错误、转移地址错误以及随机的录入错误等。
也可以发现硬件设计与工艺错误和软件算法错误。
在调试过程中,要不断调整、修改系统的硬件和软件,直到其正确为止。
联机调试运行正常后,将软件固化到EPROM中,脱机运行,并到生产现场投入实际工作,检验其可靠性和抗干扰能力,直到完全满足要求,单片机产品才算研制成功。
8.2工作模块21步进电机控制系统设计与实现
【工作任务】
利用AT89S52单片机及独立键盘控制步进电机的速度和方向。
独立键盘有反转按键、加速按键、减速按键和正转按键。
步进电机电气参数:
工作电压4.5~6.5V,步进角是18。
8.2.1步进电机控制技术
步进电机的结构及基本知识点在工作模块5中已经介绍过了,在这里只对实现步进电机速度和方向控制的关键技术进行介绍。
1.速度控制技术
本工作模块使用的步进电机的步进角是18,由于步进电机旋转角度与输入脉冲数目成正比,所以输入20个脉冲信号,步进电机就会旋转20个步进角,且刚好转一圈(2018=360)。
那么怎么控制步进电机的转速呢?
下面我们先分析如何实现步进电机转速为30转/分和转速为60转/分。
(1)转速为30转/分
旋转一圈的时间是60s/30圈=2s,旋转一个步进角的时间是2s/20=100ms(每圈20个步进角)。
也就是说给一个脉冲信号,旋转一个步进角,延时100ms,再给一个脉冲信号,旋转一个步进角,延时100ms,…,这样就可以获得转速为30转/分。
(2)转速为60转/分
旋转一圈的时间是60s/60圈=1s,旋转一个步进角的时间是1s/20=50ms(每圈20个步进角)。
和转速为30转/分比较,脉冲信号之间的延时时间为50ms,延时时间变短,转速提高了。
根据以上分析,我们只要改变脉冲信号之间的延时时间,即改变每步之间的延时时间,便可控制步进电机的转速。
延时时间变短,转速提高,延时时间变长,转速降低。
注意:
步进电机的负载转矩与转速成反比,转速越快负载转矩越小,当转速快至其极限时,步进电机不再旋转。
所以每走一步,必须延时一段时间。
2.方向控制技术
本工作模块是采用1相励磁顺序,四种励磁状态为一个循环。
只要改变励磁顺序,就可以改变步进电机旋转方向。
(1)正转时,1相励磁顺序为:
A→B→C→D→……
(2)反转时,1相励磁顺序为:
D→C→B→A→……
8.2.2步进电机控制系统电路设计
按照工作任务要求,步进电机控制系统电路是由AT89S52单片机最小应用系统、步进电机驱动电路、键盘电路等模块构成。
1.键盘模块设计
步进电机控制系统具有反转、加速、减速和正转4个功能,可以用4个按键实现。
由于按键数目少,键盘模块设计采用独立键盘。
这4个按键分别接到P2口的P2.0、P2.1、P2.2和P2.3引脚,为反转按键、加速按键、减速按键和正转按键。
如图8-2所示。
图8-2键盘电路
2.步进电机驱动模块设计
由于步进电机的功率较大,步进电机驱动电路设计采用了高电压、大电流的ULN2003A,ULN2003A的详细介绍请参阅项目二技能拓展部分。
P3口的P3.0、P3.1、P3.2和P3.3四个引脚通过步进电机驱动电路分别接在步进电机的A、B、C、D。
如图8-3所示。
图8-3步进电机驱动电路
通过前面的键盘模块电路和步进电机驱动模块电路设计,运行Proteus软件,新建“步进电机控制系统”设计文件。
按图8-2和图8-3所示放置并编辑AT89S52、CRYSTAL、CAP、CAP-ELEC、RES、MOTOR-STEPPER、ULN2003A、74LS04及BUTTON等元器件。
完成步进电机控制系统电路设计后,进行电气规则检测,直至检测成功。
如图8-4所示。
8.2.3步进电机控制系统程序设计
步进电机控制系统程序由main.h头文件、头文件包含和定义全局变量、步进电机运行函数run()以及主函数组成。
1.编写main.h头文件
为了程序的可读性和编程方便,在main.h头文件里面对用到的数据类型、接在P3口上步进电机以及接在P3口上按键进行宏定义。
宏定义如下:
#ifndef__MAIN_H__
#define__MAIN_H__
#defineuintunsignedint
#defineucharunsignedchar
#definestep_moto_portP3
#defineFZ_KEY(!
(P2_0))
#defineUP_KEY(!
(P2_1))
#defineDOWN_KEY(!
(P2_2))
#defineZZ_KEY(!
(P2_3))
#endif
2.头文件包含和定义全局变量
#include
#include
uintspeed=1000;//设置延时参数初值为最小值,既转速最快
uintspeed_change=1000;//延时参数初值
uchardir=0;//设置方向,dir=1为反转,dir=0为正转
3.步进电机运行函数run()
这里采用的是1相励磁顺序,控制状态与P3口的控制码对应关系如表8-1所示。
表8-1控制状态与P3口的控制码的对应关系
控制状态
P3口
控制码
P3.3
P3.2
P3.1
P3.0
D相
B相
C相
A相
A相绕组通电
01H
0
0
0
1
B相绕组通电
02H
0
0
1
0
C相绕组通电
04H
0
1
0
0
D相绕组通电
08H
1
0
0
0
由表8-1可以看出,正转时,初始控制码为0x01,然后控制码左移1位,获得下一位控制码。
反转时,初始控制码为0x08,然后控制码右移1位,获得下一位控制码。
代码如下:
voidrun(void)
{
speed=speed_change;
while(speed--);//延时
if(dir==1)
/*dir=0,正转*/
{
if(step_moto_port>=0x08)
//如果控制码>=0x08(一个循环完成),取初始控制码
step_moto_port=0x01;
else
//左移1位,获得下一位控制码,并从P3口输出
step_moto_port<<=1;
}
else
/*dir=1,反转*/
{
if(step_moto_port<=0x01)
//如果控制码<=0x01(一个循环完成),取初始控制码
step_moto_port=0x08;
else
//右移1位,获得下一位控制码,并从P3口输出
step_moto_port>>=1;
}
}
4.步进电机主函数main()
voidmain(void)
{
step_moto_port=0x01;
while
(1)
{
if(FZ_KEY)//设置反转
{dir=1;
while(LEFT_KEY)run();//等待按键释放
}
if(ZZ_KEY)//设置正转
{dir=0;
while(RIGHT_KEY)run();
}
if(UP_KEY)//加速
{if(speed_change>=2000)
//延时参数减量为1000,每按一次UP_KEY键减少1000
speed_change=speed_change-1000;
while(UP_KEY)run();
}
if(DOWN_KEY)//减速
{if(speed_change<20000)
//延时参数增量为1000,每按一次DOWN_KEY键增加1000
speed_change=speed_change+1000;
while(DOWN_KEY)run();
}
run();
}//endwhile
(1)
}//endmain
步进电机控制系统程序设计好以后,打开“步进电机控制系统”Proteus电路,加载“步进电机控制系统.hex”文件。
进行仿真运行,观察步进电机运行是否与设计要求相符。
如图8-4所示。
图8-4步进电机控制系统仿真运行
8.3工作模块22直流电机控制系统设计与实现
【工作任务】
利用AT89S52单片机及独立键盘控制直流电机的速度和方向。
独立键盘有反转按键、加速按键、减速按键和正转按键。
直流电机电气参数:
额定工作电压5.0V。
8.3.1直流电机控制技术
1.认识直流电机
永磁式换向器直流电机,是应用很广泛的一种,只要在它上面加适当电压电机就转动。
(1)结构与工作原理
永磁式换向器直流电机是由定子(主磁极)、转子(绕组线圈)、换向片(又称整流子)、电刷等组成,定子作用是产生磁场,如图8-5所示。
图8-5直流电机结构
直流电压加在电刷上,经换向片加到电枢绕组(转子线圈),使电枢导体有电流流过,由于电机内部有定子磁场存在,所以电枢导体将受到电磁力f的作用(左手定则),电枢导体产生的电磁力作用于转子,使转子以n(转/分)旋转,以便拖动机械负载。
通过左手定则,可以判别电磁力f方向(即转子旋转方向),如图8-6所示。
图8-6转子旋转方向
也就是说,转于是在定子磁场作用下,得到转矩而旋转起来。
当它转动时,由于磁场的相互作用,也将产生反电动势,它的大小正比于转子的速度,方向和所加的直流电压相反。
(2)永磁式换流器电机特点
1)当电机负载固定时,电机转速正比于所加的电源电压。
2)当电机直流电源固定时,电机的工作电流正比于转予负载的大小。
3)加于电机的有效电压,等于外加直流电压减去反电动势。
因此当用固定电压驱动电机时,电机的速度趋向于自稳定。
因为负载增加时,转子有慢下来的倾向,于是反电动势减少,而使有效电压增加,反过来又将使转子有快起来的倾向,所以总的效果使速度稳定。
4)当转子静止时,反电动势为零,电机电流最大。
最大电流出现在刚起动的时候。
5)转子转动的方向,可由电机上所加电压的极性来控制。
6)体积小,重量轻。
起动转矩大。
由于具备上述的那些特点,所以在医疗器械、小型机床、电子仪器、计算机、气象探空仪、探矿测井、电动工具、家用电器及电子玩具等各个方面,都得到广泛的应用。
对这种永磁式电机的控制,主要有电机的起停控制、方向控制、可变速度控制和速度的稳定控制。
2.速度控制技术
调节直流电机转速最方便有效的调速方法是对电枢(即转子线圈)电压U进行控制。
控制电压的方法有多种,广泛应用脉宽调制PWM技术来控制直流电机电枢的电压。
所谓PWM控制技术,就是利用半导体器件的导通与关断,把直流电压变成电压脉冲序列,通过控制电压脉冲宽度或周期以达到变压的目的。
3.方向控制技术
直流电机的转子转动方向可由直流电机上所加电压的极性来控制,可用桥式电路来控制直流电机的转动方向。
控制直流电机正反转的桥式驱动电路有单电源和双电源两种驱动方式,通常采用单电源的驱动方式,就可以满足实际的应用需要,所以这里只介绍单电源的驱动方式。
单电源方式的桥式驱动电路又称为全桥方式驱动或者H桥方式驱动,如图8-7所示。
图8-7H桥方式驱动电路
图8-7中的二极管称为续流二极管,主要作用是消除直流电机所产生的反向电动势。
三极管是PNP三极管,基极为高电平时三极管关断,为低电平时三极管导通。
直流电机正转时三极管Q1和Q4导通,反转时三极管Q2和Q3导通,在这两种情况下,加在直流电机两端的电压极性相反。
当四个三极管全部关断时,直流电机停止转动。
若是Q1与Q3关断、Q2与Q4导通时,直流电机处于短路制动状态,将立即停止转动。
这四种状态所对应的H桥式驱动电路状态如图8-8所示。
正转反转停止制动
图8-8直流电机和H桥式驱动电路四种对应状态
8.3.2直流电机控制系统电路设计
按照工作任务要求,直流电机控制系统电路是由AT89S52单片机最小应用系统、H桥式驱动电路、独立键盘及直流电机构成。
P3口的P3.0、P3.1、P3.4和P3.5四个引脚分别接在H桥式驱动电路的PWM1、PWM2、PWM3和PWM4。
P2口的P2.0、P2.1、P2.2和P2.3四个引脚分别接反转按键、加速按键、减速按键和正转按键。
直流电机控制系统电路设计如图8-9所示。
图8-9直流电机控制系统电路
运行Proteus软件,新建“直流电机控制系统”设计文件。
按图8-9所示放置并编辑AT89S52、CRYSTAL、CAP、CAP-ELEC、RES、MOTOR、1N4148(二极管)、2N5771(三极管)、BUTTON。
等元器件。
完成直流电机控制系统电路设计后,进行电气规则检测,直至检测成功。
8.3.3直流电机控制系统程序设计
直流电机有正转、反转、停止和制动四种运行状态。
在这四种运行状态下,P3口引脚与H桥式驱动电路对应关系如表8-2所示。
表8-2运行状态与P3口引脚的对应关系
运行状态
P3.5
P3.4
P3.1
P3.0
PWM4(Q4)
PWM3(Q3)
PWM2(Q2)
PWM1(Q1)
正转
0
1
1
0
反转
1
0
0
1
停止
1
1
1
1
制动
0
1
0
1
直流电机控制系统程序主要由头文件、初始化、按键功能处理、直流电机运行中断处理等组成。
1.编写main.h头文件
在这里只给出与工作模块21的main.h头文件不一样部分。
电机驱动接口是接在P3.0、P3.1、P3.4和P3.5,为了以后能对殊功能寄存器P3口这4个寻址位进行操作,定义了4个sbit类型位变量,代码如下:
……
#define_Nop()_nop_()
……
sbitPWM1=P3^0;
sbitPWM4=P3^5;
sbitPWM2=P3^1;
sbitPWM3=P3^4;
……
2.头文件包含和定义全局变量
#include
#include
#include
bitMoto_Dir=0;//定义位变量,为0正转,为1反转
ucharirq_count;//中断次数计数器
ucharirq_count_t;//设置需要中断的次数
ucharPWM_TIME_H;//设置输出高电平的宽度
ucharPWM_TIME_L;//设置输出低电平的宽度
biti=0;//i=1输出高电平状态,i=1输出低电平状态
3.直流电机控制系统初始化
/*使Q1、Q2、Q3、Q4同时关断,电机处于停止状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直流电机 控制 原理 程序