嵌入式数控系统设计.docx
- 文档编号:4454000
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:30
- 大小:845.66KB
嵌入式数控系统设计.docx
《嵌入式数控系统设计.docx》由会员分享,可在线阅读,更多相关《嵌入式数控系统设计.docx(30页珍藏版)》请在冰豆网上搜索。
嵌入式数控系统设计
课程设计
课程名称数字控制系统技术
题目名称嵌入式数控系统设计
学生学院信息工程学院
专业班级
学号
学生姓名
指导教师
2014年01月08日
广东工业大学课程设计任务书
嵌入式数控系统设计
以小组(不超过4人)为单位,每个小组完成两个项目设计。
也可以独立完成1个项目设计。
在12月24日(17周2)以前提交设计报告、项目工程。
12月27日前完成答辩。
设计报告要标明每位同学负责的具体设计内容。
1.开环数控系统
(1)以LPC2000处理器构造数控系统并用Proteus仿真。
采用2个4相8拍步进电机分别控制X和Y轴进给。
分别用4个GPIO引脚通过软件编程实现环形分配器功能;
(2)设计人机操作界面(键盘、LCD显示器)。
在键盘输入数控程序,实现平面直线和圆弧图形加工。
(3)设计译码程序,把数控程序命令和参数存入内存(数据结构或变量);
(4)按照脉冲当量计算X和Y轴步进电机的坐标脉冲;
(5)采用逐点比较法编写进给插补程序得到X和Y轴的进给脉冲并通过GPIO环形分配器输出,经过信号功率放大后驱动相应步进电机运动。
(6)在LCD显示器显示X和Y轴进给运动图形、速度等。
(7)通过键盘输入辅助操作命令,由GPIO管脚输出给LED指示灯显示。
2.闭环数控系统
(8)以LPC2000处理器构造数控系统并用Proteus仿真。
采用2个直流伺服电机(带脉冲编码盘)分别控制X和Y轴进给。
分别用2个GPIO引脚通过PWM输出控制直流伺服电机的速度,用2个GPIO输入脉冲编码盘信号检测直流伺服电机的转角和速度。
(9)设计人机操作界面(键盘、LCD显示器)。
在键盘输入数控程序,实现平面直线和圆弧图形加工。
(10)设计译码程序,把数控程序命令和参数存入内存(数据结构或变量);
(11)按照脉冲当量计算X和Y轴伺服电机的坐标脉冲;
(12)采用数字增量插补法编写进给插补程序得到每个插补周期X和Y轴的进给PWM输出,经过信号功率放大后驱动相应伺服电机运动。
(13)在LCD显示器显示X和Y轴进给运动图形、速度等。
(14)通过键盘输入辅助操作命令,由GPIO管脚输出给LED指示灯显示。
摘要
数控课程设计主要利用LPC2000处理器构成数控系统,可大概由四个部分组成,分别是键盘,电机,LCD12864液晶和串口通信四个部分。
其功能是以LPC2000构成的数控系统中,利用模拟人机操作界面键盘,在键盘输入数控程序,实现平面直线和圆弧图形的加工并且通过LCD12864液晶显示出来。
通过模拟键盘输入辅助操作命令,八拍的电机转动并在LED指示灯用二进制显示圈数,在LCD12864显示X,Y轴进给运动图形。
关键词:
LPC2000,键盘扫描,八拍电机,LCD12864显示器
一、引言
数字控制技术室当今世界制造业中的现代机械系统、机器人、CAD/CAM、FMS和CIMS等高新技术的基础,数控系统是电子信息技术与传统机床技术相融合的机电一体化产品,是工业装备自动化的重要手段。
随着电子技术、计算机技术、传感器技术、信息处理、自动控制等的发展以及它们与工业特别是机械制造业的不断结合应用,数字控制的设备特别是数控机床在生产中的应用越来越普遍,数字控制技术在今天的工业生产中发挥着举足轻重的作用。
现代机床数控已经在整个现在制造系统中处于核心的地位,其拥有量已成为衡量一个国家的制造技术水平和工业水平的重要指标。
1.1简介
用代表加工顺序、加工方式和加工参数的数字码作为控制指令的数字控制系统,数字程序控制系统简称数控(NC)系统。
在数控系统中通常配备专用的电子计算机,反映加工工艺和操作步骤的加工信息用数字代码预先记录在穿孔带、穿孔卡、磁带或磁盘上。
系统在工作时,读数机构依次将代码送入计算机并转换成相应形式的电脉冲,用以控制工作机械按照顺序完成各项加工过程。
数控系统的加工精度和加工效率都较高,特别适合于工艺复杂的单件或小批量生产。
它广泛用于工具制造、机械加工、汽车制造和造船工业等。
1.2发展
早期多采用固定接线的硬线数控系统,用一台专用计算机控制一台设备。
后来采用微型计算机代替专用计算机,利用编制不同的程序软件实现不同类型的控制,可增强系统的控制功能和灵活性,称为计算机数控系统(CNC)或软线数控系统。
后来又发展成为用一台计算机直接管理和控制一群数控设备,称为计算机群控系统或直接数控系统(DNC)。
进一步又发展成为由多台CNC与NC设备和DNC计算机组成的网络,实现多级控制。
到了80年代则发展成将一群机床与工件、刀具、夹具和加工自动传输线相配合,由计算机统一管理和控制,构成计算机群控自动线,称为柔性制造系统(FMS)。
数控系统的更高阶段是向机械制造工业设计和制造一体化发展,将计算机辅助设计(CAD)与计算机辅助制造(CAM)相结合,实现产品设计与制造过程的完整自动化系统。
1.3组成
数控系统由信息载体、数控装置、伺服系统和受控设备组成。
信息载体采用纸带、磁带、磁卡或磁盘等,用以存放加工参数、动作顺序、行程和速度等加工信息。
数控装置又称插补器,根据输入的加工信息发出脉冲序列。
每一个脉冲代表一个位移增量。
插补器实际上是一台功能简单的专用计算机,也可直接采用微型计算机。
插补器输出的增量脉冲作用于相应的驱动机械或系统用来控制工作台或刀具的运动。
如果采用步进电机作为驱动机械,则数控系统为开环控制。
对于精密机床,需要采用闭环控制的方式,以伺服系统为驱动系统。
二、主要芯片介绍
2.1LPC2000
嵌入式处理器是嵌入式系统硬件最核心的部分,飞利浦推出十余款基于ARM7的高性能低功耗LPC2000系列微控制器,来满足不断增长的嵌入式市场需求。
LPC2000系列微处理器工作频率为60MHz,采用基于ARMTDMI内核的32位RISC。
LPC2000的外设接口非常丰富,包括UART、SPI、I2C、CAN、ADC、PWM、RTC等。
这一系列微控制器LPC2114/2124/2119/2129/2194、LPC2210/2212/2214、LPC2290/2292/2294借助片上存储器加载模块实现了“零等待访问”高速闪存功能,提高了指令执行的效率。
在高性能低功耗的基础上提供了增强的通信功能和片上代码保护机制。
由于内置了宽范围的串行通信接口,它们也非常适用于通信网关、协议转换器、嵌入式软调制解调器等。
6通道的PWM更能用于复杂的马达控制应用。
LPC2000系列微控制器能够实现零等待访问的高速闪存,这主要归功于片上的存储器加速模块。
图2为存储器加速模块的结构框图。
128位宽度的闪存阵列通过单独的局部总线与处理器接口,每周期可为ARM内核提供四条32位指令。
这使得MCU无需经过等待状态就可直接从闪存上执行指令,从而消除了一般闪存读取时的等待时间。
为了解决指令序列的变化,指令和数据的不同处理带来的等待时间,模块内部实现了预取缓冲器、避免数据读/写打乱地址序列的数据旁路和跳转跟踪缓冲器三个功能块的联合工作,并用两组128位宽度的存储器来进行并行访问,消除延时。
存储器加速模块的作用取决于系统时钟的大小。
LPC2000系列片上闪存的访问时间为50nS,对于系统时钟不高于20MHZ的应用,在1个周期内就可将闪存的内容读出,此时没必要使用存储器加速模块。
时钟频率越高,当直接执行闪存中的代码时,系统性能受影响越大,此时使能存储器加速模块,可以得到接近4倍速度的加速,真正实现零等待高速闪存。
由于LPC2000可直接从闪存执行指令,无需引导期间将代码传送到SRAM,这不仅省掉了耗时又耗能的系统启动步骤,还节省了昂贵的SRAM。
对片内闪存的编程可通过几种方法来实现:
通过内置的串行JTAG接口,通过串口进行在系统编程(ISP),或通过在应用编程(IAP)。
LPC2000系列的矢量中断控制器可以支持最多32个中断请求,可根据需要将其编程分为3类:
FIQ、矢量IRQ和非矢量IRQ。
快速中断请求(FIQ)要求具有最高优先级。
矢量IRQ具有中等优先级。
该级别可分配32个请求中的16个。
非矢量IRQ的优先级最低。
这种可编程分配机制意味着不同外设的中断优先级可以动态分配并调整。
对于任意矢量中断,一旦发出请求,CPU可在一个周期内过读取VIC并跳转到相应的中断服务程序的入口地址,这将中断延时降低到最低。
2.2LCD12864液晶器
一、带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
二、基本特性:
(1)、低电源电压(VDD:
+3.0--+5.5V)
(2)、显示分辨率:
128×64点
(3)、内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)
(4)、内置128个16×8点阵字符
(5)、2MHZ时钟频率
(6)、显示方式:
STN、半透、正显
(7)、驱动方式:
1/32DUTY,1/5BIAS
(8)、视角方向:
6点
(9)、背光方式:
侧部高亮白色LED,功耗仅为普通LED的1/5—1/10
(10)、通讯方式:
串行、并口可选
(11)、内置DC-DC转换电路,无需外加负压
(12)、无需片选信号,简化软件设计
(13)、工作温度:
0℃-+55℃,存储温度:
-20℃-+60℃
表2.112864液晶管脚号
管脚号
管脚名称
电平
管脚功能描述
1
VSS
0V
电源地
2
VCC
3.0~+5V
电源正
3
V0
-
对比度(亮度)调整
4
RS(CS)
H/L
RS=“H”,表示DB7——DB0为显示数据
RS=“L”,表示DB7——DB0为显示指令数据
5
R/W(SID)
H/L
R/W=“H”,E=“H”,数据被读到DB7——DB0
R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR
6
E(SCLK)
H/L
使能信号
7
DB0
H/L
三态数据线
8
DB1
H/L
三态数据线
9
DB2
H/L
三态数据线
10
DB3
H/L
三态数据线
11
DB4
H/L
三态数据线
12
DB5
H/L
三态数据线
13
DB6
H/L
三态数据线
14
DB7
H/L
三态数据线
15
PSB
H/L
H:
8位或4位并口方式,L:
串口方式(见注释1)
16
NC
-
空脚
17
/RESET
H/L
复位端,低电平有效(见注释2)
18
VOUT
-
LCD驱动电压输出端
19
A
VDD
背光源正端(+5V)(见注释3)
20
K
VSS
背光源负端(见注释3)
三、原理分析
3.1LPC2000管脚分析
P0.0:
用于串口通信;
P0.1-P0.11:
作为I/O口输出,控制LED灯显示X电机和Y电机进给步数;
P0.12-P0.15:
用于控制“X”电机;
P0.26-P0.30:
用于控制“Y”电机;
P0.16:
中断,用于判断键盘是否有键按下;
P0.18-P0.21:
用于连接键盘的L1-L4;
P0.22-P0.25:
用于连接键盘的R1-R4;
P1.16:
连接NEXT键(按下后可以开始从键盘输入指令);
P1.17:
连接“退格键”(指令输错时可用于退格改错);
P1.18:
连接clear键(用于清除LCD12864的屏幕);
P1.19-P1.26:
用于连接LCD12864的数据总线;
P1.27-P1.31:
分别用于连接LCD12864的E,RW,RS,CS2和CS1端口;
3.2步进电机原理分析
数控机床的开环伺服系统采用功率步进电动机作为执行元件,实现进给运动。
本次课程设计使用的是4相8拍控制方式的步进电机,其通电顺序为:
AABBBCCCDDDAA,步进电机每驱动电路每接受一个指令脉冲,就控制步进电机转过一个固定的角度,所以只要控制指令脉冲的数量即可控制工作台移动的位移量,而控制指令脉冲的频率即可控制工作台移动的速度。
3.3插补原理分析
本次课程设计使用逐点比较法进行插补,以直线插补为例,在得到起始坐标X1、Y1和终点坐标X2、Y2后,首先进行偏差判别,即判别当前运动点偏离理论曲线的位置,从而确定进给坐标以及进给进给方向,以逼近理论曲线;然后用新位置重新进行偏差判别,直到完成整个插补工作。
其中每走一步都要查询一次,若到达终点,就立即停止插补。
同理可得到圆弧插补的方式。
3.4键盘扫描原理分析
本次课程设计使用的是4×4键盘,每个按键都设定为高电平,当有按键按下时,则该按键变为低电平,通过键盘扫描方式,即首先确定该按键的所在行,然后确定按键的所在列,便可确定按键的位置,然后通过串口发送到芯片,芯片通过虚拟显示器显示相应值,以方便检查,从而实现键盘输入。
3.5液晶显示原理分析
本次课程设计所使用的液晶显示器为12864液晶显示器,整个屏幕分左、右两个屏,每个半屏右8页,每页有8行,注意数据是竖行排列。
显示一个字要16*16点,全屏有128*64个点,故可显示32个中文汉字。
每两页显示一行汉字,可显示4行汉字,每行8个汉字,共32个汉字。
而显示数据需要16*8个点,可显示数据是汉字的两倍。
屏幕是通过CS1、CS2两信号来控制的,不同的组合方式所选的屏幕是不同的。
在设定完开始页地址、列地址和读写模式后,再结合单片机的指令系统,就能通过编写C语言程序来达到混合显示汉字与数字的目的。
通过程序将字的代码写入相应的DDRAM地址,就可以再相应的位置显示相应的字。
3.5二极管显示原理分析
本次课程设计通过发光二极管来显示X和Y步进电机所完成的步数,其中X和Y步进电机各用5个发光二极管来完成,每一个二极管代表一个二进制数字,最后通过观察全部二极管的发光情况,我们就可以换算出X和Y步进电机都完成的步数。
四、protues仿真
4.1键盘扫描
如图4.1,在通过键盘输入,我们可以通过VIRTUAL显示器来检查输入的正确性。
图4.1VIRTUAL显示器和键盘扫描
4.2步进电机
当有键盘按下后,步进电机开始工作,转动的圈数差补总步数除以8来决定。
图4.2八拍步进电机部分仿真电路
4.3串口通信
当有按键按下后,信息会通过串口通信会把信息发送到芯片当中。
图4.3串口通信仿真电路
4.4LCD显示
运行程序,我们可以在LCD屏幕上看到我的信息。
其中这些字的信息是利用“液晶字模软件zimo221”软件进行字模的C51信息转换,放进程序就可以显示出来了。
图4.4LCD显示仿真电路
4.5LED显示
在步进电机完成工作后,我们可以通过LED显示的二进制码,推算出X步进电机和Y步进电机各走的步数(二进制码*八)。
图4.5LED显示仿真电路
4.6电路系统
各个部分协调工作,形成一个完整的电路系统。
图4.6电路系统仿真
五、各部分程序
5.1键盘扫描程序
#include"button.h"
uint8real_row,real_key,key_flag,i,key_null;
uint8number[20]={'','','','','','','','','','','','','','','','','','','','',};
uint8button_number[16]={49,50,51,'F',52,53,54,'X',55,56,57,'Y',32,48,'O','G'};
voidkey_irq()__irq;
key_init()
{
PINSEL1&=~(0x3<<0);
PINSEL1|=(0x01<<0);
EXTMODE|=(1<<0);
VICVectCntl0=0x2E;
VICVectAddr0=(unsigned)key_irq;
VICIntEnable=0x6000;
}
uint8row_scan()
{
IO0CLR=0x0F<<22;
IO0SET=0X0E<<22;
key_null=(IO0PIN>>18)&0x0F;
if(0x0f!
=key_null)
{
while(0x0f!
=key_null)
{
key_null=(IO0PIN>>18)&0x0F;
}
return0;
}
IO0CLR=0x0F<<22;
IO0SET=0X0D<<22;
key_null=(IO0PIN>>18)&0x0F;
if(0x0f!
=key_null)
{
while(0x0f!
=key_null)
{
key_null=(IO0PIN>>18)&0x0F;
}
return1;
}
IO0CLR=0x0F<<22;
IO0SET=0X0B<<22;
key_null=(IO0PIN>>18)&0x0F;
if(0x0f!
=key_null)
{
while(0x0f!
=key_null)
{
key_null=(IO0PIN>>18)&0x0F;
}
return2;
}
IO0CLR=0x0F<<22;
IO0SET=0X07<<22;
key_null=(IO0PIN>>18)&0x0F;
if(0x0f!
=key_null)
{
while(0x0f!
=key_null)
{
key_null=(IO0PIN>>18)&0x0F;
}
return3;
}
}
uint8key_scan()
{
if(0x0e==key_null)
{
real_row=row_scan();
returnreal_row;
}
if(0x0d==key_null)
{
real_row=row_scan();
return(real_row+4);
}
if(0x0b==key_null)
{
real_row=row_scan();
return(real_row+8);
}
if(0x07==key_null)
{
real_row=row_scan();
return(real_row+12);
}
}
voidkey_irq()__irq
{
//UART0_SendByte(8);
key_flag=1;
EXTINT=0x01;
VICVectAddr=0x00000000;
}
5.2LCD显示程序
voiddelay(uint32i)
{
while(--i);
}
voidIO_set()
{
IO1DIR|=0xf8<<24;
}
voidread_busy()
{
uint32temp;
IO1SET=RS;
IO1SET=RW;
IO1SET=EN;
temp=IO1PIN;
temp&=LCD_DATA;
temp=(temp>>19);
while(temp&0x80)
{
temp=IO1PIN;
temp&=LCD_DATA;
temp=(temp>>19);
}
IO1CLR=EN;
}
uint8read_data()
{
uint32temp;
delay
(2);
IO1SET=RS;
IO1SET=RW;
IO1SET=EN;
IO1CLR=EN;
IO1SET=EN;
delay
(1);
temp=IO1PIN;
temp&=LCD_DATA;
temp=(temp>>19);
IO1CLR=EN;
return(uint8)temp;
}
voidwrite_LCD_command(uint8value)
{
delay(10);
IO1DIR|=LCD_DATA;
IO1CLR=RS;
IO1CLR=RW;
IO1CLR=LCD_DATA;
IO1SET=value<<19;
IO1SET=EN;
delay
(2);
IO1CLR=EN;
IO1DIR&=~LCD_DATA;
}
voidwrite_LCD_data(uint8value)
{
delay(10);
IO1DIR|=LCD_DATA;
IO1SET=RS;
IO1CLR=RW;
IO1CLR=LCD_DATA;
IO1SET=value<<19;
IO1SET=EN;
delay
(2);
IO1CLR=EN;
IO1DIR&=~LCD_DATA;
}
voidset_page(uint8page)
{
page=0xb8|page;
write_LCD_command(page);
}
voidset_line(uint8startline)
{
startline=0xC0|startline;
write_LCD_command(startline);
}
voidset_column(uint8column)
{
column=column&0x3f;
column=0x40|column;
write_LCD_command(column);
}
voidset_on_off(uint8onoff)
{
onoff=0x3e|onoff;
write_LCD_command(onoff);
}
voidselectscreen(uint8screen)
{
switch(screen)
{
case0:
IO1CLR=CS1;
IO1CLR=CS2;
break;
case1:
IO1CLR=CS1;
IO1SET=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 数控系统 设计