LPC步进电机控制标准系统Word格式文档下载.docx
- 文档编号:18094694
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:18
- 大小:205.04KB
LPC步进电机控制标准系统Word格式文档下载.docx
《LPC步进电机控制标准系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《LPC步进电机控制标准系统Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。
我国数控系统在初期就是以单板机或单片机为数控核心,以步进电机为执行元件,由于其结构简单,价格便宜,只需一万元左右就可以装备一台经济型数控机床,很适合我国中小型企业使用。
采用步进电机作为伺服执行元件,不仅可以应用于经济型数控伺服系统,而且也可以辅以先进的检测和反馈元件,组成高精度全闭环数控系列,从而达到很高的加工精度。
优点明显的步进电机被广泛应用在电子计算机的许多外围设备中,例如打印机,卡片阅读机,主动轮驱动机构和存储器存取机构等,步进电机也在军用仪器,通信和雷达设备,光电组合装置,阀门控制,数控机床,医疗设备及自动绘图仪,数字控制系统,程序控制系统以及许多航天工业的系统中得到应用。
因而,对于步进电机控制的研究显得更加重要了。
为了得到良好的控制性能,对步进电机的控制的研究就一直没有停止过,许多重大的技术得以实现。
上世纪80年代以后,由于微型计算机以多功能的姿态出现,步进电动机的控制方式变得更加灵活多样。
原来的步进电机控制系统采用分立元件的控制回路,或者集成电路,不仅调试安装复杂,要消耗大量元器件,而且一旦定型之后,要改变控制方案就一定要重新设计电路,不利于系统的改进升级。
基于微型单片机的控制系统则通过软件来控制步进电机,能够更好地发挥步进电机的潜力。
因此,用微型单片机控制步进电机己经成为了一种必然的趋势,也符合数字化的时代发展要求。
还比如为了适应一些领域中高精度定位和运行平稳性的要求,出现的步进电机细分驱动技术,就包括振荡器、环形分配器控制的细分驱动、基于单片机斩波恒流驱动、基于单片机的直流电压驱动三种常见驱动方式,除上述三种步进电机的驱动方案之外,目前报道的驱动方案还有根据汇编语言或C语言进行软件开发,最终实现由PC机直接控制步电机的方法;
在windows平台下和单片机配合控制步进电机,PLC控制的脉冲驱动方案等等。
但是在有些应用场合,并不需要高精度的控制,而是需要在满足一般工作要求的情况下,尽量使控制系统做到:
系统硬件结构简单,成本低;
电机各种运行状态指示一目了然,操作方便;
功能较为齐全;
系统抗干扰和可靠性高;
适应性强等特点。
本文就是采用这个思路进行设计。
一般步进电机控制器都用硬件实现,虽然电路可以做到了高集成度,可价格较贵,功能相对较单一,并且设计要求有所改变,就得改变整个硬件电路,比较麻烦。
而采用微控制器的软件和硬件结合进行控制,运用其强大的可编程和运算功能,充分利用ARM的各种资源,能灵活的对步进电机进行控制,实现其不同模式、步数、转速等控制,如果需改变控制要求,一般只需改变软件就能适应新的环境,并且在本设计中利用上位机显示和键盘电路,能做到一定的人机交换,在软件设计上加入去抖动,因此具有一定的应用价值。
三、步进电机控制系统设计简介:
1、设计的原则:
步进电机控制系统的目的是在满足其基本功能的情况下,最大限度的提高可靠性,为此,在设计时应遵循以下原则
(1)完整性原则。
最大限度的满足工业生产过程或机械设备的控制要求。
(2)可靠性原则。
确保控制系统的可靠性。
(3)经济性原则。
力求控制系统简单,实用,合理。
2、系统设计的主要步骤:
系统设计包括硬件设计和软件设计。
所谓硬件设计,是指步进电机控制器整套设备的设计,而软件设计即应用程序的设计。
整个系统的设计大致分为以下几步:
(1)深入了解被控系统是设计控制系统的基础,收集资料,对被控对象结构功能作全面细致的了解。
(2)系统I/O设备以及器件的选择和设计。
输入设备的选择即控制按钮的选择,输出设备的选择即LED显示灯及发光二极管的选择。
(3)选择驱动设备。
根据被控对象技术指标的要求,如输出电压电流等,据此确定驱动设备的类型和配置。
(4)分配ARM的I/O端口分配。
(5)绘制外部接线图。
(6)编写应用程序。
(7)编辑调试修改程序。
四、系统及系统特点简介:
步进电机控制系统是一个有机的完整的整体,由运动控制系统和操作控制系统组成。
由操作系统完成把操作者的操作转化为运动控制系统能接受的电信号,运动控制系统随之作出反应,完成规定动作。
运动控制系统的组成如图所示:
图2-1运动控制系统组成
步进电机是一种将电脉冲转化为角位移的执行机构。
当步进电驱动器接受到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;
同时可以通过控制脉冲频率来控制电机转动的速度,从而达到调速的目的,该系统是在开环系统条件下实现的调速,较闭环系统下的调速简单。
步进电机的运行要有一电子装置进行驱动,这种装置就是步进电机驱动器,它是把控制系统发出的脉冲信号,加以放大来驱动步进电机。
步进电机的转速与脉冲信号的频率成正比,控制步进脉冲信号的频率,可以对电机精确调速;
控制步进脉冲的个数,可以对电机精确定位。
因此典型的步进电机驱动控制系统主要由三部分组成:
步进控制器、驱动器(把控制器输出的脉冲加以放大,来驱动步进电机)、步进电机。
不同的控制方案,步进控制器、驱动器也有不同的类型。
下面着重介绍以ARM为控制器的步进电机控制系统。
步进电机是数控式电机,其最大特点是通过输入脉冲信号来进行控制,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
它具有输入脉冲与电机轴转角成比例的特征,将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度。
五、系统软件设计(孙宇翔)
1、软件设计主要分为系统初始化、按键、显示及控制脉冲输出几部分,事实上每一部分都是紧密相关的,每个功能模块对于整体设计都是非常重要ARM通过软件编程才能使系统真正的运行起来,软件设计的好坏也直接决定了系统的运行质量。
程序流程图的设计遵循自顶向下的原则,即从主体逐步分到每一个模块的流程。
在流程图中把设计者的控制过程梳理清楚。
本程序主要由键盘程序、上位机显示程序、步进电机驱动程序三部份组成,主程序首先初始化各变量,设定指示灯状态,步进电机驱动的各引脚输出高低电平,便进入待机状态,等待键入相应操作。
然后调用键盘程序,并作判断,如果有键按下,则调用键盘处理程序。
在各个调用程序中相应的上位机显示的程序。
2、系统软件简易流程图:
系统简易流程图
3、软件源程序代码:
/****************************************************************************
*文件名:
main.c
*功能:
LED显示控制。
*通过GPIO控制步进电机
*说明:
将跳线JP14和JP19全部短接。
****************************************************************************/
#include"
config.h"
unsignedintflag=1;
#defineLED11<
<
16//P0.16
#defineKEY1<
20//定义按键key接口(P0.20)
#defineMOTOA1<
24//P0.24
#defineMOTOB1<
25//P0.25
#defineMOTOC1<
26//P0.26
#defineMOTOD1<
27//P0.27
#defineLEDCON0x00ff0000//LED控制字
#defineMOTOCON0x0f000000//MOTO控制字
#defineGPIOSET(PIN)IO0SET=PIN//方便修改置位端口
#defineGPIOCLR(PIN)IO0CLR=PIN//方便修改清位端口
#defineUART_BPS9600//定义通讯波特率
uint8constSEND_STRING1[]="
单四拍!
\r\n"
;
uint8constSEND_STRING2[]="
双四拍!
uint8constSEND_STRING3[]="
单双八拍!
/******voidDelayNS(uint32dly);
voidMOTO_Mode1(uint8i);
//A-B-C-D
voidMOTO_Mode2(uint8i);
//AB-BC-CD-DA-AB
voidMOTO_Mode3(uint8i);
//A-AB-B-BC-C-CD-D-DA-A
voidkeyscan();
//声明键盘扫描函数
voidUART0_Init();
//串口初始化函数
voidUART0_SendByte();
//串口发送字节函数
voidUART0_SendStr();
//串口发送字符串函数****
***********/
*名称:
DelayNS()
长软件延时
*入口参数:
dly延时参数,值越大,延时越久
*出口参数:
无
voidDelayNS(uint32dly)
{uint32i;
for(;
dly>
0;
dly--)
{
for(i=0;
i<
5000;
i++);
}
}
MOTO_Mode1()
单四拍程序
uint8i延时参数,值越大,延时越久
voidMOTO_Mode1(uint8i)//A-B-C-D
{
//while(((IO0PIN&
KEY)!
=0))//当外界无键按下时才一直执行
GPIOCLR(LED1);
//点亮LED1,方便监视程序状态
/*A*/
GPIOSET(MOTOA);
DelayNS(i);
GPIOCLR(MOTOA);
/*B*/
GPIOSET(MOTOB);
GPIOCLR(MOTOB);
/*C*/
GPIOSET(MOTOC);
GPIOCLR(MOTOC);
GPIOSET(LED1);
//熄灭LED1,方便监视程序状态
/*D*/
GPIOSET(MOTOD);
GPIOCLR(MOTOD);
MOTO_Mode2()
双四拍程序
voidMOTO_Mode2(uint8i)//AB-BC-CD-DA-AB
{
=0))
/*AB*/
/*BC*/
/*CD*/
/*DA*/
MOTO_Mode3()
单双八拍程序
voidMOTO_Mode3(uint8i)//A-AB-B-BC-C-CD-D-DA-A
//while(((IO0PIN&
UART0_Ini()
初始化串口0。
设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
voidUART0_Init(void)
{uint16Fdiv;
U0LCR=0x83;
//DLAB=1,可设置波特率
Fdiv=(Fpclk/16)/UART_BPS;
//设置波特率
U0DLM=Fdiv/256;
U0DLL=Fdiv%256;
U0LCR=0x03;
}
UART0_SendByte()
向串口发送字节数据,并等待发送完毕。
data要发送的数据
voidUART0_SendByte(uint8data)
U0THR=data;
//发送数据
while((U0LSR&
0x40)==0);
//等待数据发送完毕
UART0_SendStr()
向串口发送一字符串
srt要发送的字符串的指针
voidUART0_SendStr(uint8const*str)
while
(1)
{
if(*str=='
\0'
)break;
UART0_SendByte(*str++);
//发送数据
voidkeyscan()
if((IO0PIN&
KEY)==0)
DelayNS(10);
KEY)==0)//延时消抖
//DelayNS(20);
flag++;
if(flag>
3)
flag=1;
}
}
/*if((IO0PIN&
KEY)==0)
{
flag=2;
DelayNS(20);
if((IO0PIN&
/{
flag=3;
DelayNS(20);
if((IO0PIN&
flag=1;
}
}
}*/
if(flag==1)
UART0_SendStr(SEND_STRING1);
MOTO_Mode1(5);
//A-B-C-D,单四拍
if(flag==2)
UART0_SendStr(SEND_STRING2);
MOTO_Mode2(5);
//AB-BC-CD-DA-AB,双四拍
if(flag==3)
UART0_SendStr(SEND_STRING3);
MOTO_Mode3(5);
//A-AB-B-BC-C-CD-D-DA-A,单双八拍
main()
根据表DISP_TAB来控制LED显示。
intmain(void)
{
IO0DIR=LEDCON|MOTOCON;
//配置LED控制I/O方向
PINSE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LPC 步进 电机 控制 标准 系统