您好,欢迎来到保捱科技网。
搜索
您的当前位置:首页直流电机控制原理及C程序

直流电机控制原理及C程序

来源:保捱科技网


项目八 键盘控制电机方向和转速

【教学目标】

终极目标

能利用ATS52单片机及键盘,通过C语言程序实现键盘控制步进电机和直流电机的速度和方向,完成单片机输入输出控制系统的设计、运行及调试。 促成目标

1. 了解单片机产品开发的流程;

2. 了解步进电机和直流电机结构和工作原理;

3. 掌握步进电机和直流电机速度、方向控制关键技术; 4. 掌握头文件的编写方法;

5. 掌握电机速度、方向控制的电路设计和编程的方法; 6. 会利用单片机I/O口实现电机速度、方向控制。

8.1 单片机产品开发

单片机产品开发是为完成某项任务而研制开发的单片机应用系统,是以单片机为核心,配以外围电路和软件,能实现确定任务、功能的实际应用系统。根据不同的用途和要求,单片机产品的系统配置及软件也有所不同,但它们的开发流程和方法大致相同。 8.1.1 单片机产品的结构

单片机产品是由硬件和软件组成。硬件是指单片机、扩展的存储器、输入输出设备等硬件部件组成的,软件是各种工作程序的总称。一个典型单片机产品结构如图8-1所示。

单片机 MCU EEPROM RAM 人机通道 输入/输出设备 输入通道 传感器等 执行机构 测控 对象 输出通道 通信接口 其他计算机系统或智能设备 图8-1典型单片机产品结构

从图8-1不难看出单片机产品所需要的一般配置:

(1)单片机。如ATC51、ATC52、ATS51以及ATS52等单片机。

(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(16 KB)、27256(32 KB)或27512( KB)等。尽量避免用小容量的芯片组合扩充成大容量的存储器,程序存储器容量大些,则编程空间宽裕些,价格相差也不会太多。

(2)数据存储器和I/O接口

根据系统功能的要求,如果需要扩展外部RAM或I/O口,那么RAM芯片可选用6116(2 KB)、62(8 KB)或62256(32 KB),原则上应尽量减少芯片数量,使译码电路简单。

I/O接口芯片一般选用8155(带有256 KB静态RAM)或8255。这类芯片具有口线多、硬件逻辑简单等特点。若口线要求很少,且仅需要简单的输入或输出功能,则可用不可编程的TTL电路或CMOS电路。

A/D和D/A电路芯片主要根据精度、速度和价格等来选用,同时还要考虑与系统的连接是否方便。

(3)地址译码电路

通常采用全译码、部分译码或线选法,应考虑充分利用存储空间和简化硬件逻辑等方面的问题。MCS-51系统有充分的存储空间,包括 KB程序存储器和 KB数据存储器,所以在一般的控制应用系统中,主要是考虑简化硬件逻辑。当存储器和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~12 MHz之间任选。在不影响系统技术性能的前提下,时钟频率选择低一些为好,这样可降低系统中对元器件工作速度的要求,从而提高系统的可靠性。

4.抗干扰措施

单片机产品的工作环境往往都是具有多种干扰源的现场,抗干扰措施在单片机产品设计中显得尤为重要。

根据干扰源引入的途径,抗干扰措施可以从以下两个方面考虑。 (1)电源供电系统

为了克服电网以及来自系统内部其它部件的干扰,可采用隔离变压器、交流稳压、线滤波器、稳压电路各级滤波等防干扰措施。

(2)电路上的考虑

为了进一步提高系统的可靠性,在硬件电路设计时,应采取一系列防干扰措施:

1)大规模IC芯片电源供电端VCC都应加高频滤波电容,根据负载电流的情况,在各级供电节点还应加足够容量的退耦电容;

2)开关量I/O通道与外界的隔离可采用光电耦合器件,特别是与继电器、可控硅等连接的通道,一定要采用隔离措施;

3)可采用CMOS器件提高工作电压(+15 V),这样干扰门限也相应提高;

4)传感器后级的变送器尽量采用电流型传输方式,因电流型比电压型抗干扰能力强; 5)电路应有合理的布线及接地方式; 6)与环境干扰的隔离可采用屏蔽措施。

5.软件设计

单片机产品的软件设计是产品研制过程中任务最繁重的一项工作,难度也比较大。对于某些较复杂的应用系统,不仅要使用汇编语言来编程,有时还要使用高级语言。

单片机产品的软件主要包括两大部分:用于管理单片机工作的监控程序和用于执行实际具体任务的功能程序。

对于监控程序,应尽可能利用现成的监控程序。为了适应各种应用的需要,现代的单片

机开发系统的监控软件功能相当强,并附有丰富的实用子程序,可供用户直接调用,例如键盘管理程序、显示程序等。因此,在设计系统硬件逻辑和确定应用系统的操作方式时,就应充分考虑这一点。 这样可大大减少软件设计的工作量,提高编程效率。

对于功能程序要根据产品的功能要求来编程序。例如,外部数据采集、控制算法的实现、外设驱动、故障处理及报警程序等。

单片机产品的软件设计千差万别,不存在统一模式。进行软设计时,尽可能采用模块化结构。根据系统软件的总体构思,按照先粗后细的方法,把整个系统软件划分成多个功能、大小适当的模块。应明确规定各模块的功能,尽量使每个模块功能单一,各模块间的接口信息简单、完备,接口关系统一,尽可能使各模块间的联系减少到最低限度。这样,各个模块可以分别设计、编制和调试,最后再将各个程序模块连接成一个完整的程序进行总调试。

6.单片机产品调试

单片机产品开发必须经过调试阶段,只有经过调试才能发现问题,改正错误,最终完成开发任务。实际上,对于较复杂的程序,大多数情况下都不可能一次性就调试成功,即使是资深设计人员也是如此。

单片机产品调试包括硬件调试和软件调试。硬件调试的任务是排除系统的硬件电路故障,包括设计性错误和工艺性故障。软件调试是利用开发工具进行在线仿真调试,除发现和解决程序错误外,也可以发现硬件故障。

程序调试一般是一个模块一个模块地进行,一个子程序一个子程序地调试,最后联起来统调。利用开发工具的单步和断点运行方式,通过检查应用系统的CPU现场、RAM和SFR的内容以及I/O口的状态,来检查程序的执行结果和系统I/O设备的状态变化是否正常,从中发现程序的逻辑错误、转移地址错误以及随机的录入错误等。

也可以发现硬件设计与工艺错误和软件算法错误。在调试过程中,要不断调整、修改系统的硬件和软件,直到其正确为止。联机调试运行正常后,将软件固化到EPROM中,脱机运行,并到生产现场投入实际工作,检验其可靠性和抗干扰能力,直到完全满足要求,单片机产品才算研制成功。

8.2 工作模块21 步进电机控制系统设计与实现

【工作任务】

利用ATS52单片机及键盘控制步进电机的速度和方向。键盘有反转按键、加速按键、减速按键和正转按键。步进电机电气参数:工作电压4.5~6.5V,步进角是18。 8.2.1 步进电机控制技术

步进电机的结构及基本知识点在工作模块5中已经介绍过了,在这里只对实现步进电机速度和方向控制的关键技术进行介绍。

1.速度控制技术

本工作模块使用的步进电机的步进角是18,由于步进电机旋转角度与输入脉冲数目成正比,所以输入20个脉冲信号,步进电机就会旋转20个步进角,且刚好转一圈

(2018=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 步进电机控制系统电路设计

按照工作任务要求,步进电机控制系统电路是由ATS52单片机最小应用系统、步进电机驱动电路、键盘电路等模块构成。

1.键盘模块设计

步进电机控制系统具有反转、加速、减速和正转4个功能,可以用4个按键实现。由于按键数目少,键盘模块设计采用键盘。这4个按键分别接到P2口的P2.0、 P2.1 、P2.2和 P2.3引脚,为反转按键、加速按键、减速按键和正转按键。如图8-2所示。 U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617R210kR310kR410kR510k18XTAL29RSTUP293031PSENALEEAFZDOWNZZ12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATC52 图8-2 键盘电路 2.步进电机驱动模块设计 由于步进电机的功率较大,步进电机驱动电路设计采用了高电压、大电流的ULN2003A,ULN2003A的详细介绍请参阅项目二技能拓展部分。P3口的P3.0、 P3.1 、P3.2和 P3.3四个引脚通过步进电机驱动电路分别接在步进电机的A、B、C、D。如图8-3所示。 U119XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617174LS14U2:A2ADB+88.8C18XTAL2U2:B374LS144D1U312345671B2B3B4B5B6B7BCOM1C2C3C4C5C6C7C916151413121110ABCDLED-RED9R6220RST293031PSENALEEAU2:C574LS146D2LED-REDR722012345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATC52D3LED-REDU2:D1374LS1412R8220ULN2003AD4LED-REDR9220 图8-3 步进电机驱动电路 通过前面的键盘模块电路和步进电机驱动模块电路设计,运行Proteus软件,新建“步进电机控制系统” 设计文件。按图8-2和图8-3所示放置并编辑ATS52、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__

#define uint unsigned int #define uchar unsigned char #define step_moto_port P3 #define FZ_KEY (!(P2_0)) #define UP_KEY (!(P2_1)) #define DOWN_KEY (!(P2_2)) #define ZZ_KEY (!(P2_3)) #endif

2.头文件包含和定义全局变量

#include #include

uint speed=1000; //设置延时参数初值为最小值,既转速最快 uint speed_change=1000; //延时参数初值

uchar dir=0; //设置方向,dir=1为反转,dir=0为正转 3.步进电机运行函数run()

这里采用的是1相励磁顺序,控制状态与P3口的控制码对应关系如表8-1所示。

表8-1 控制状态与P3口的控制码的对应关系 控制状态 A相绕组通电 B相绕组通电 C相绕组通电 D相绕组通电 P3口 控制码 01H 02H 04H 08H P3.3 D相 0 0 0 1 P3.2 B相 0 0 1 0 P3.1 C相 0 1 0 0 P3.0 A相 1 0 0 0 由表8-1可以看出,正转时,初始控制码为0x01,然后控制码左移1位,获得下一位控制码。反转时,初始控制码为0x08,然后控制码右移1位,获得下一位控制码。代码如下:

void run(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() void main(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();

} // end while(1)

} // end main

步进电机控制系统程序设计好以后,打开“步进电机控制系统”Proteus电路,加载 “步进电机控制系统.hex”文件。进行仿真运行,观察步进电机运行是否与设计要求相符。如图8-4所示。 C130pFR210kR310kR410kR510kU1X119XTAL1CRYSTAL18XTAL2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617174LS14R110kC230pFUP9RSTC310uFRST293031PSENALEEAFZDOWNZZU2:A2AB-236DC12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATC52U2:B374LS144D1U312345671B2B3B4B5B6B7BCOM1C2C3C4C5C6C7C916151413121110ABCDLED-REDR6220U2:C574LS146D2LED-REDR7220D3LED-REDU2:D1374LS1412R8220ULN2003AD4LED-REDR9220 图8-4 步进电机控制系统仿真运行 8.3工作模块22 直流电机控制系统设计与实现

【工作任务】

利用ATS52单片机及键盘控制直流电机的速度和方向。键盘有反转按键、加速按键、减速按键和正转按键。直流电机电气参数:额定工作电压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.速度控制技术 U1X119XTAL1CRYSTAL18XTAL210k10k10k10k调节直流电机转速最方便有效的调速方法是对电枢(即转子线圈)电压U进行控制。控

39制电压的方法有多种,广泛应用脉宽调制PWM技术来控制直流电机电枢的电压。 P0.0/AD038P0.1/AD137P0.2/AD2所谓就是利用半导体器件的导通与关断,把直流电压变成电压脉冲序列,36PWM控制技术,P0.3/AD335P0.4/AD434通过控制电压脉冲宽度或周期以达到变压的目的。 P0.5/AD5UP33P0.6/AD6P0.7/AD732R2R3R4R59RST293031PSENALEEA12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATC52直流电机的转子转动方向可由直流电机上所加电压的极性来控制,可用桥式电路来控制直流电机的转动方向。控制直流电机正反转的桥式驱动电路有单电源和双电源两种驱动方式,通常采用单电源的驱动方式,就可以满足实际的应用需要,所以这里只介绍单电源的驱10PWM1P3.0/RXD11PWM2P3.1/TXD12P3.2/INT0动方式。单电源方式的桥式驱动电路又称为全桥方式驱动或者H桥方式驱动,如图8-7所示。 13P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD14151617PWM3PWM4P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A153.方向控制技术 21LEFT22232425262728DOWNRIGHTQ3PWM1R633Q12N5771R8D1DC MOTOD3332N5771PWM3Q4PWM2R733Q22N57715VR9D2D4332N5771PWM4 图8-7 H桥方式驱动电路 图8-7中的二极管称为续流二极管,主要作用是消除直流电机所产生的反向电动势。三极管是PNP三极管,基极为高电平时三极管关断,为低电平时三极管导通。 直流电机正转时三极管Q1和Q4导通,反转时三极管Q2和Q3导通,在这两种情况下,加在直流电机两端的电压极性相反。当四个三极管全部关断时,直流电机停止转动。若是Q1与Q3关断、Q2与Q4导通时,直流电机处于短路制动状态,将立即停止转动。这四种状态所对应的H桥式驱动电路状态如图8-8所示。

正转 反转 停止 制动

图8-8 直流电机和H桥式驱动电路四种对应状态

8.3.2直流电机控制系统电路设计

按照工作任务要求,直流电机控制系统电路是由ATS52单片机最小应用系统、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所示。 C130pFR210kR310kR410kR510kU1X119XTAL1CRYSTAL18XTAL2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617PWM1PWM2PWM1PWM3PWM4R110kC230pFUP9RSTC310uFRST293031PSENALEEAFZDOWNZZ12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATC52Q3R633Q12N5771R8D1DC MOTOD3332N5771PWM3Q4PWM2R733Q22N57715VR9D2D4332N5771PWM4 图8-9 直流电机控制系统电路 运行Proteus软件,新建“直流电机控制系统” 设计文件。按图8-9所示放置并编辑ATS52、CRYSTAL、CAP、CAP-ELEC、RES、MOTOR、1N4148 (二极管)、2N5771(三极管)、BUTTON。等元器件。完成直流电机控制系统电路设计后,进行电气规则检测,直至检测成功。 8.3.3直流电机控制系统程序设计

直流电机有正转、反转、停止和制动四种运行状态。在这四种运行状态下,P3口引脚与H桥式驱动电路对应关系如表8-2所示。

表8-2 运行状态与P3口引脚的对应关系

运行状态 正转 反转 停止 制动 P3.5 PWM4(Q4) 0 1 1 0 P3.4 PWM3(Q3) 1 0 1 1 P3.1 PWM2(Q2) 1 0 1 0 P3.0 PWM1(Q1) 0 1 1 1 直流电机控制系统程序主要由头文件、初始化、按键功能处理、直流电机运行中断处理

等组成。

1.编写main.h头文件

在这里只给出与工作模块21的main.h头文件不一样部分。电机驱动接口是接在P3.0、P3.1、P3.4和P3.5,为了以后能对殊功能寄存器P3口这4个寻址位进行操作,定义了4个sbit类型位变量,代码如下:

……

#define _Nop() _nop_() ……

sbit PWM1 = P3^0; sbit PWM4 = P3^5; sbit PWM2 = P3^1; sbit PWM3 = P3^4; ……

2.头文件包含和定义全局变量

#include < ATX52.h >

#include //程序中使用了_nop_(),此函数后面介绍 #include

bit Moto_Dir=0; //定义位变量,为0正转,为1反转 uchar irq_count; //中断次数计数器 uchar irq_count_t; //设置需要中断的次数 uchar PWM_TIME_H; //设置输出高电平的宽度 uchar PWM_TIME_L; //设置输出低电平的宽度

bit i=0; // i=1输出高电平状态,i=1输出低电平状态 3.直流电机控制系统初始化

/*使Q1、Q2、Q3、Q4同时关断,电机处于停止状态*/ PWM1=1; PWM2=1; PWM3=1; PWM4=1;

irq_count=0; //中断次数计数器清0 i=0;

PWM_TIME_H=80; //设置占空比为1:5,PWM脉冲周期是100ms PWM_TIME_L=20;

/*定时器T1初始化*/

ET1=1; // 开T1中断

TMOD=0x11; // T1都为方式1计时*/

TH1=0xFC; TL1=0x18; // T1初值,定时时间1ms(12MHz) TR1=1; // 定时器启动 EA=1; // 开总中断 4.直流电机控制系统按键功能处理 (1)反转按键处理 if(FZ_KEY) {

ShortDelay();

if(FZ_KEY) // 延时去抖 {

Moto_Dir=1; PWM3=0; PWM4=1; }

while(FZ_KEY); //等待FZ_KEY释放 } // end if(FZ_KEY) (2)正转按键处理 if(ZZ_KEY) {

ShortDelay();

if(ZZ_KEY) // 延时去抖 {

Moto_Dir=0; PWM3=1; PWM4=0; }

while(ZZ_KEY); //等待ZZ_KEY释放 } // end if(ZZ_KEY) (3)加速按键处理 if(UP_KEY) {

ShortDelay();

if(UP_KEY) // 延时去抖 {

if(PWM_TIME_H > 10) //最大占空比为9:10 {

PWM_TIME_H--;

PWM_TIME_L = 100-PWM_TIME_H; }

} // end if(UP_KEY) while(UP_KEY); } // end if(UP_KEY) (4)减速按键处理 if(DOWN_KEY) {

ShortDelay();

if(DOWN_KEY) // 延时去抖 {

if(PWM_TIME_H < 90) //最小占空比为1:10 {

PWM_TIME_H++;

PWM_TIME_L = 100-PWM_TIME_H; }

} // end if(DOWN_KEY)

while(DOWN_KEY); } // end if(DOWN_KEY) 5.直流电机控制系统中断处理

按照按键处理设置,控制直流电机运行。T1定时器中断发PWM脉冲,周期是100ms。interrupt 3:是T1定时器中断,using 1:选择第一组工作寄存器。代码如下:

void timer1(void) interrupt 3 using 1 {

TH1=0xFC; TL1=0x18; //重装T1初值 irq_count++;

if (irq_count>=irq_count_t) //判断中断次数是否到 {

irq_count=0; //计数器清0

i=~i; //高电平或低电平状态标志转换

if(i==1)

irq_count_t = PWM_TIME_H; else

irq_count_t = PWM_TIME_L; if(Moto_Dir==1)

{ PWM2=~PWM2; PWM1=1; } else

{ PWM2=1; PWM1=~PWM1; } } }

直流电机控制系统程序设计好以后,打开“直流电机控制系统”Proteus电路,加载 “直流电机控制系统.hex”文件。进行仿真运行,观察直流电机运行是否与设计要求相符。

8.4 技能拓展 步进电机智能控制

步进电机是利用输入数字信号转换成机械能量的电气设备,由于步进电机旋转角度与输入脉冲数目成正比,只要控制输入的脉冲数目便可控制步进电机转动角度。因此,常用于精确定位和精确定速,如机器人均使用步进电机作动力,并且可以精确控制机器人的动作。 8.4.1步进电机智能控制思路

通过工作模块5和工作模块21的学习,我们已经知道了步进电机必须加上驱动电路才能转动,驱动电路的信号输入端必须输入脉冲信号,若无脉冲输入时,转子保持一定的位置,维持静止状态;反之,若加入适当的脉冲信号时,转子则会以一定的角度转动,如果加入连续脉冲时,则转子旋转的角度与脉冲频率成正比。

为此,我们掌握了如何使用按键对步进电机进行方向和转速控制。但是我们如何对步进电机进行精确定位和精确定速呢?

由于步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,它的旋转是以固定的角度一步

一步运行的。这样,我们就可以通过以下两个方面对步进电机进行智能控制,达到精确定位和精确定速的目的。

(1)通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;

(2)通过控制脉冲频率来控制电机转动的速度和加速度,从而达到精确定速和调速的目的。

作为一种数字伺服执行元件,步进电机具有结构简单、运行可靠、控制方便、控制性能好等优点,步进电机智能控制可以广泛应用在数控机床、机器人、自动化仪表等领域。 8.4.2步进电机智能控制组成

步进电机智能控制主要包括:单片机、键盘输入模块、显示模块以及步进电机动控制模块等部分。步进电机智能控制的结构框图如图8-10所示。

图8-10 步进电机智能控制结构框图

键盘输入模块主要完成数据输入及控制输入;显示模块主要对步进电机设置和运行状态进行显示(如显示步进电机设置要旋转的数圈以及正反转指示等);步进电机控制模块主要是由单片机输出控制码到驱动电路控制步进电机的运转。 【技能训练8-1】步进电机智能控制设计

设计一个步进电机智能控制。要求能从键盘上输入步进电机转数,控制步进电机的正、反转及启停,并显示转数。

1.键盘设计

键盘采用的是矩阵式键盘,键盘电路设计参考工作模块10,键盘功能分配如下: (1)0-9:为数字键

(2)*:正逆转转数设定完成后,按“*”启动步进马达。 (3)#:清除设定为正转及转数为00。

(4)A:设定正逆转。按“A”键则LED亮,表示反转,再按则LED指示灯灭,表示正转,再按LED亮。

2.数码管显示模块设计

数码管显示模块电路采用硬件译码输出字型码控制显示内容,数码管是阳极数码管,七段字形译码器用的是74LS47,电路设计参考技能训练3-2。

3. 步进电机控制模块设计

步进电机控制模块电路采用有施密特触发器的六反方器74LS14和高电压、大电流的达灵顿晶体管数组产品ULN2003A,电路设计参考工作模块21。

4. 步进电机智能控制电路实现

步进电机控制模块电路、键盘电路、数码管显示模块电路分别接在ATS52单片机的P0口、P1口、P2口,接在P3.0的LED是步进电机正反转的指示灯,步进电机智能控制电路设计如图8-11所示。 C130pFU1X119XTAL1CRYSTAL18XTAL2P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617*0741R110kC230pF8529RSTC310uFRST293031PSENALEEA#963A12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7ATC52R210kR310kR410kR510kU2:A1274LS14ADD1LED-REDR10220B+88.8CU2:B3474LS14AR6220U471253ABCDBI/RBORBILT74LS47QAQBQCQDQEQFQG1312111091514U312345671B2B3B4B5B6B7BCOM1C2C3C4C5C6C7C916151413121110BU2:C574LS146R7220U571253ABCDBI/RBORBILT74LS47QAQBQCQDQEQFQG131211109151413U2:D1274LS14CR8220ULN2003ADR9220 图8-11步进电机智能控制电路

5.步进电机智能控制工作过程

由键盘输入转数,设定正反转后,按确认键。单片机则根据设定由P0口送出控制码经74LS14和ULN2003A达林顿管驱动步进电机转动。同时,LED数码管显示设定的转数,步进电机每转动一圈,数码显示的数字减1,当减至零时,步进电机停止转动。LED亮,表示反转,LED指示灯灭,表示正转。步进电机智能控制C语言程序设计请参考工作模块10、工作模块21以及技能训练3-2。

【关键知识点小结】

1.单片机产品是由硬件和软件组成。硬件是指单片机、扩展的存储器、输入输出设备等硬件部件组成的,软件是各种工作程序的总称。

2.单片机产品开发过程包括确定任务、总体设计、硬件设计、软件设计、系统调试、产品化等几个阶段。它们不是绝对分开的,有时是交叉进行的。 3.步进电机速度和方向控制的关键技术。

(1)速度控制关键技术:只要改变脉冲信号之间的延时时间,即改变每步之间的延时时间,便可控制步进电机的转速。延时时间变短,转速提高,延时时间变长,转速降低。每走一步,必须延时一段时间。

(2)方向控制关键技术:只要改变励磁顺序,就可以改变步进电机旋转方向。如: 正转时,1相励磁顺序为:A→B→C→D→…… 反转时,1相励磁顺序为:D→C→B→A→……

4.键盘控制步进电机的方向和速度是由ATS52单片机最小应用系统、步进电机驱动电路、键盘电路等模块构成。反转按键、加速按键、减速按键和正转按键分别接到P2口的P2.0、 P2.1 、P2.2和 P2.3引脚。驱动电路采用高电压、大电流的ULN2003A,分别接到P3口的

P3.0、 P3.1 、P3.2和 P3.3引脚。 5.永磁式换向器直流电机是由定子(主磁极)、转子(绕组线圈)、换向片(又称整流子)、电刷等组成,定子作用是产生磁场。转于是在定子磁场作用下,得到转矩而旋转起来。 6. 直流电机速度和方向控制的关键技术。

(1)速度控制关键技术:调节直流电机转速最方便有效的调速方法是对电枢(即转子线圈)电压U进行控制。广泛应用脉宽调制PWM技术来控制直流电机电枢的电压。PWM控制技术就是利用半导体器件的导通与关断,把直流电压变成电压脉冲序列,通过控制电压脉冲宽度或周期以达到变压的目的。

(2)方向控制关键技术:通过改变直流电机上所加电压的极性来控制。可用H桥式驱动电路来控制直流电机的转动方向。

7.直流电机和H桥式驱动电路有四种对应状态。正转时三极管Q1和Q4导通,反转时三极管Q2和Q3导通,在这两种情况下,加在直流电机两端的电压极性相反。当四个三极管全部关断时,直流电机停止转动。若是Q1与Q3关断、Q2与Q4导通时,直流电机处于短路制动状态,将立即停止转动。

8. 键盘控制直流电机的方向和速度是由ATS52单片机最小应用系统、H桥式驱动电路、键盘及直流电机构成。反转按键、加速按键、减速按键和正转按键分别接到P2口的P2.0、 P2.1 、P2.2和 P2.3引脚。H桥式驱动电路的PWM1、PWM2、PWM3和PWM4分别接在P3口的P3.0、 P3.1 、P3.4和 P3.5引脚。

【问题与讨论】

8-1 如图8-11所示,请用C语言程序完成步进电机智能控制。

8-2 请试一试对步进电机智能控制(图8-11)增加一个速度控制功能。提示:还有三个未定义键可以使用。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务