冲床自动计数控制系统设计.docx
《冲床自动计数控制系统设计.docx》由会员分享,可在线阅读,更多相关《冲床自动计数控制系统设计.docx(49页珍藏版)》请在冰豆网上搜索。
冲床自动计数控制系统设计
毕业设计说明书
题目:
冲床自动计数控制系统设计
学号:
姓名:
班级:
专业:
机械设计制造及其自动化
指导教师:
学院:
机械工程学院
答辩日期:
摘要
本文简要介绍了冲床自动计数控制系统的设计方法及工作原理。
冲床自动计数控制系统具有设置加工参数、计数报警、测试加工、减1、实时查询、断电记忆、时间设置等功能。
本设计以STC89C52为主控芯片,利用电感式接近传感器接收信号,采用MAX7219数码管实时显示加工数据,还可通过键盘设置加工参数、查询历史记录、设置时间,同时采用LED灯和蜂鸣器进行指示、报警。
本次设计是通过KeilC软件进行软件编程,利用Protel99SE画出原理图及PCB图,并且完成了硬件的制作,达到了设计的要求。
关键词:
冲床;自动计数;STC89C52
Abstract
Inthispaper,thedesignmethodofautomaticcountingcontrolsystemanditsworkingprinciplearebrieflyintroduced..Automaticcountingcontrolsystemhasfunctionsofsettinguptheparameterofprocessing,countingalarm,testprocessing,minus1,real-timequery,powerandmemory,settingtimeandsoon.STC89C52isusedasthemaincontrolchipinthisdesign,whichusinginductiveproximitysensorreceiptsignal,andMAX7219digitaltubereal-timedisplayofdataprocessing,torealizetransitionthroughthekeys,atthesametimerealizeindicationandalarmthroughLEDlightsandbuzzer.ItisdesignedtousesoftwareprogrammingbyKeilCsoftware,anduseProtel99SEtodrawtheschematicdiagramandPCBdiagram,thencompletetheproductionofhardware,andmeetthedesignrequirement.
Keywords:
punchingmachine;automaticcounting;STC89C52
第1章绪论
电子技术的飞速发展,电子计算机和集成电路的广泛应用,以及电子信息技术的发展对科学技术、国民经济的日益影响和渗透,使数字电子技术的知识、理论和方法在相关专业的地位越来越重要。
电子计数器是数字电路中的一个典型应用。
随着人们生活水平的日益提高,人们越来越追求人性化、智能化和自动化的事物,人们需求的是一种能给生产和生活带来非常方便和便利的电子产品。
1666年,在英国SamuelMorland发明了一部可以计算加数及减数的机械计数机,随之以后的技术发展到现在计数器已经非常成熟了,计数器是一款应用广泛的技术产品,随着技术的发展,这就催生出了新一代的计数器。
数字式电子计数器有直观和计数精确的优点,目前已在各种行业中普遍使用。
数字式电子计数器有多种计数触发方式,它是由实际使用条件和环境决定的。
有采用机械方式的接触式触发的,有采用电子传感器的非接触式触发的,电感式接近传感器是其中之一,它是一种非接触测量的位置传感器。
采用电感式接近传感器的电子计数器在工厂的生产流水线上作产品统计,有着其他计数器不可取代的优点。
它具有工作可靠、性能稳定、重复定位精度高、无机械磨损、使用寿命长、无火花、无噪音、抗干扰能力强、环境适应性强等突出优点,给人们进行的自动计数带来了方便。
自动计数控制系统的设计提供了一次单片机理论知识和实践相结合的机会。
计数器在工业生产中应用越来越多,特别是在冲床行业中,已成为不可缺少的一部分。
常规的机械计数和人工计数不仅耗时费力,更加浪费资源。
随着自动化的不断普及,冲床计数急需一种自动计数的装置。
本设计要求的计数器可将机械或人工计数方式变为电子式计数形式,并且采用数码管来显示计数,简单直观明了。
在社会需求日益增大的今天,冲床行业发展蒸蒸日上,计数器的应用必将涌起一番风潮。
第2章控制系统的总体设计方案
2.1冲床计数器的安装
图2.2 计数器安装图
在冲床行业中,常规的机械计数和人工计数不仅耗时费力,更加浪费资源。
所以随着自动化的不断普及,冲床计数需要一种自动计数的装置。
其安装位置:
当冲床有凸轮箱的,可以将其中一个凸轮接入计数器的信号输入端;当冲床没有凸轮箱的,可以将以接近开关装在机身靠近滑块侧,感应滑块的上死点位置。
计数器安装图如图2.1所示。
2.2设计的内容
本设计是一个冲床自动计数控制系统,采用单片机作为控制器核心,实现冲床自动计数器的设计。
计数器主要要实现下述功能:
1.计数报警功能:
用户可以设置报警总量值、分组报警值、冲件计数比例以及零件的图号和批号,传感器接收冲头的位置信息,按计件比例计数,对分组量提前5次进行报警提醒。
当计数值达到总量设定值时,报警系统一直报警,直到按下“开始”按键重新计数。
2.测试加工功能:
按下“测试加工”键,系统不对加工进程进行计数,在这种条件下,要恢复计数功能,只需再按一次该键。
3.减1功能:
若冲出废品,按下“减1”键,则实际加工数减1,而无效加工数加1,总加工数保持不变。
4.实时查询、历史查询功能:
在系统计数状态进行时,可以按下“设置”分别循环查看各个参数值,查看不影响计数过程。
按下查询并设置查询条件(比如图号和批号),可以按照条件显示符合条件的历史加工记录。
2.3设计方案的选择与论证
(1)编程方式的选择:
根据自己已学过的编程语言以及适用于单片机控制的编程方法,采用C语言作为编程基础,亦可考虑汇编语言。
(2)主控模块:
采用STC89C52单片机作为主控制器。
(3)数据显示软硬件模块选择:
采用数码管及其接口电路,亦可采用LCD液晶显示器及其接口电路。
虽然数码管与LCD显示器相比,有许多缺点,但数码管的价格要低很多,显示比较清楚,由于本次设计只需数码管就可完成,所以采用MAX7219数码管作为显示器。
(4)按键输入软硬件模块:
采用独立按键,亦可采用4×4矩阵按键及其接口电路。
独立式按键电路配置较灵活,且软件结构也简单。
但是每个按键必须占用一根I/O口线,所以这种按键方式适用于按键需要较少或操作速度较快的场合。
矩阵式键盘电路结构复杂,但提高了I/O口利用率,所以这种按键方式适用于需使用大量按键的场合。
由于本系统需要用到的按键较多,所以采用4×4矩阵按键。
(5)报警软硬件模块:
采用由蜂鸣器及继电器组成的接口电路。
(6)存储器软硬件模块:
采用单片机自带的EEPROM,亦可采用采用I2C总线的24C08存储器及其接口电路。
考虑到节约资源,选择单片机自带的EEPROM。
(7)传感器模块:
传感器的种类很多,考虑到实际应用,本系统采用LJ18A3-8-Z/BX电感式接近传感器。
2.4整体方案的设计
图2.2 系统总体框图
该冲床自动计数控制系统以单片机STC89C52为控制核心,采用LJ18A3-8-Z/BX电感式接近传感器接收信号,并通过MAX7219数码管显示数据,还可通过键盘设置加工参数、查询历史记录、设置时间等。
同时当分组量提前5次以及有效加工数达到加工总量时,采用蜂鸣器进行报警。
系统框图如图2.2所示。
第3章控制系统硬件设计
3.1单片机最小系统电路
在本设计的自动计数控制系统中,控制的核心是STC89C52单片机,该单片机是51系列增强型8位单片机,它提供了4个8位的I/O口,分别为P0、P1、P1、P2和P3,实现数据的输入和输出,内部有2个16位定时器/计数器,用于实现定时和计数功能,并且片内含有256个RAM单元以及8KB的ROM存储单元实现数据和程序的存储,便于用电的方式瞬间擦除和改写,且价格便宜,其外部晶振一般用11.0592MHz,一个指令周期为1us。
其最小系统主要包括:
复位电路、振荡电路以及存储器选择模式(EA脚的高低电平选择),电路如下图3.1所示:
图3.1 单片机最小系统
3.2端口分配
本论文设计的自动计数控制系统其主控制芯片选型为STC89C52单片机,充分地运用了芯片的各个引脚,能够合理使用各个端口使计数器功能得以实现。
现将各个模块使用端口情况作如表3.2配置
表3.2 单片机端口分配表
单片机端口
外围接口电路硬件模块
P0.0-P0.7,P2.3,P2.4
指示灯电路模块
P2.0,P2.1,P2.2
显示电路模块
P2.5,P2.6,P2.7
时钟芯片电路模块
P3.6
报警电路模块
P3.2
接近开关电路模块
P1.0-P1.7
矩阵按键电路模块
3.3接近开关电路模块
本系统采用电感式接近传感器,它是一种非接触测量的位置传感器,具有工作可靠、性能稳定、重复定位精度高、无机械磨损、使用寿命长、无火花、无噪音、抗干扰能力强、环境适应性强等突出优点。
单片机输出与传感器分别属于弱电与强电部分,需要进行隔离处理,这里采用光耦元件在控制部分进行光电隔离。
利用光电藕合器件来完成电路之间的信号传输,使之前端与负载完全隔离,目的在于增加安全性,减小电路干扰,减化电路设计。
TLP521是可控制的光电藕合器件,TLP521-1是由红外发光二极管耦合到光三极管。
当传感器有信号传入时,光耦元件导通,P3.2口得到外部触发脉冲,软件内部进行计数。
在本设计中LJ18A3-8-Z/BX电感式接近传感器的接口电路如图3.3所示。
图3.3 电感式接近传感器电路设计图
3.4显示电路模块
由于本设计的显示采用八位数码管,所以直接购买了MAX7219数码管模块,以简化硬件电路。
MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。
其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存储每一个数据。
只有一个外部寄存器用来设置各个LED的段电流。
MAX7219同样允许用户对每一个数据选择编码或者不编码。
整个设备包含一个150μA的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示1-8位数据,还有一个让所有LED发光的检测模式。
如图3.4为MAX7219数码管接线图:
图3.4 MAX7219数码管接线图
3.5矩阵按键电路模块
本设计需要用到的按键较多,所以选用矩阵式键盘接口。
矩阵式键盘是4根I/O接口线(P1.0-P1.3)作为行线,另外4根I/O接口线(P1.4-P1.7)作为列线,按键跨接在行线和列线上,按键按下时,行线和列线发生短路。
为了提高CPU的效率,采用中断扫描方式。
当按下键盘上任意键时,则表明向单片机申请中断,单片机响应中断请求后,在中断服务程序中扫描按键的行、列值,以形成键号值。
为了提高扫描速度,判断按键所在位置的方法采用线反转法:
先将行线作为输出线,列线作为输入线,行线输出全“0”信号,读入列线的值,那么在闭合键所在的列线上的值必为0;然后从列线输出全“0”信号,再读取行线的输入值,闭合键所在的行线值必为0。
这样,当一个键被按下时,必定可读到一对唯一的行列值。
再由这一对行列值可以求出闭合键所在的位置。
矩阵键盘电路如图3.5所示:
图3.5 矩阵键盘接线图
根据设计要求,各键定义如图3.6所示:
图3.6 矩阵键盘功能图
3.6指示灯电路模块
本设计的指示灯模块采用LED流水灯和74LS164芯片来实现。
一般发光二极管的工作电流是十几毫安至几十毫安,正向压降为1.3V-2.5V。
所有发光二极管在电路中一般都要串一个电阻用来限流。
发光二极管的电流不同,亮度也不同,并且寿命也会受到影响,这个电流通常就是由接入的电阻来调整。
本系统的发光二极管串联了一个电阻后接在5V的电压上。
LED灯电路接在单片机的P0口上。
LED灯的阳极接电源,阴级接单片机的I/0口,因此是低电平驱动,只要单片机在相应引脚给出低电平,LED就会发光。
但是由于硬件的限制,所以使用74LS164芯片。
74LS164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。
它是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
LED灯电路如图3.7所示:
图3.7 LED灯电路图
74LS164芯片接线图如图3.8所示:
图3.8 74LS164芯片接线图
根据设计要求,指示灯定义如表3.9所示:
表3.9 指示灯定义表
端口
定义
P0.7
设置状态
P0.6
计数状态
P0.5
测试加工状态
P0.4
加工总量(1-9999)
P0.3
分组量(1-9999)
P0.2
计件比例(1-9)
P0.1
加工图号(1-9999)
P0.0
加工批号(1-9999)
Q6
有效加工数
Q5
无效加工数
Q4
总加工数
Q3
测试加工数
Q2
任务开始时间(月.日.时.分)
Q1
任务结束时间(月.日.时.分)
Q0
最后测试时间(月.日.时.分)
3.7报警电路模块
报警装置采用的是有源蜂鸣器与指示灯。
相比一般的蜂鸣器,其体积大,声音响亮。
当单片机STC89C52的P3.6脚置0时,三极管Q1就会导通,蜂鸣器发出报警。
指示灯采用220v交流电源进行供电,所以采用继电器进行电气隔离。
当单片机STC89C52的P3.7脚置0时,三极管Q2就会导通,从而驱动继电器工作,使其开关闭合,指示灯电路导通。
报警电路接线图如图3.10所示:
图3.10 报警电路接线图
继电器电路接线图如图3.11所示:
图3.11 继电器电路接线图
3.8时钟电路模块
本系统要有时间设置功能,所以采用DS1302时钟芯片。
当前DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。
实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。
工作电压宽达2.5~5.5V。
采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。
时钟芯片电路如图3.12所示
图3.12 时钟电路接线图
第4章控制系统软件设计
作为一个自动计数控制系统设计,其每一个动作细节都是确定和符合设计要求的,这些细节就是软件的设计过程和任务,如同设计一个更为详细的产品使用说明书,这个工作必须由系统研发者设计、完成。
本次设计的计数器拥有“设置状态”、“计数状态”、“测试加工状态”、“查询状态”、“时间设置状态”五个状态。
状态转换如图4.1所示。
当系统上电后,系统先进入自检状态,显示屏、指示灯全亮同时蜂鸣器鸣叫1s左右。
自检结束后,若上次计数任务没有完成,则自动进入“计数状态”。
若计数任务完成,则自动进入“设置状态”。
在设置状态下,系统可以设置加工参数。
设置完加工参数,按下“开始/新建”键,则系统进入“计数状态”。
在设置状态下,如果按下“查询”键,系统进入“查询状态”,此时可以查询保存的数据;如果依次按下“测试加工”键、“清除/减1”键、“测试加工”键,系统进入“时间设置状态”,此时可以修改时间。
修改完时间,按下“开始/新建”键,系统保存输入的时间并回到“设置状态”。
在计数状态下,系统根据设置的参数和信号的进入进行计数。
在此状态下,如果按下“测试加工”键,系统进入“测试加工状态”,如果再次按下“测试加工”键,系统退出“测试加工状态”,回到“计数状态”;如果按下“查询”键,系统进入“查询状态”;如果按下“开始/新建”键,系统进入到“设置状态”。
在查询状态下,系统可以查询存入的数据。
按下“查询”键,如果进入原状态是“计数状态”,则回到“计数状态”;如果进入原状态是“设置状态”,则回到“设置状态”。
图4.1 状态转换图
4.1系统主程序设计
系统的软件主要是采用C语言,对单片机进行编程实现各项功能。
该控制器软件的设计采用模块化架构。
主程序的主要功能是当芯片开始工作时,内部程序先是初始化、自检和主循环。
首先,系统上电时进行初始化,主要包括时钟芯片、定时、MAX7129数码管等初始化。
然后开始自检,自检结束后,若上次计数任务没有完成,则自动进入“计数状态”。
若计数任务完成,则自动进入“设置状态”,并且上屏显示上次加工的有效加工数,下屏显示加工总数。
再采用判断按键来确定系统进入的状态。
其主程序流程如图4.2所示:
图4.2 主程序流程图
具体程序:
voidmain()
{
InitDisplay();//MAX7219数码管初始化
Initial_DS1302();//时钟芯片初始化
while
(1)
{
DS1302_GetTime(&time1);//读取时间参数
if(flag2==2)//按键按下
{if(status==0)}……
}}
4.2设置状态程序
设置状态子程序主要是设置加工参数。
上屏闪烁显示的内容是上一次任务的有效加工数、无效加工数、总加工数和测试加工数。
继续按“加工显示”键,上屏可以在这4个值中循环显示其中的一个值。
下屏闪烁显示加工总量,此时处于可设置值状态,默认值为上次任务的设置值。
继续按“设置/显示”键,下屏可以再加工总量、分组量、计件比例、加工图号和加工批号之间循环显示并设置。
按“清除/减1”键可以将当前的设置值清零。
当所有的参数设置完成后,按“开始/新建”键后,系统进入“计数状态”并按所设置参数开始当前任务,同时,系统自动记录本次任务的开始时间并将设置的参数存入EEPROM。
在设置状态下,如果依次按下“测试加工”键、“清除/减1”键、“测试加工”键,系统进入“时间设置状态”。
其程序流程框图如图4.3所示:
图4.3 设置状态流程图
具体程序:
if(status==0)//进入设置状态
{//设置加工参数
if(led5==0){jgph=shuju;flag18=0;}
elseif(led4==0){jgth=shuju;flag18=0;}
elseif(led2==0){fzl=shuju;flag18=0;}
elseif(led1==0){new_shuju=shuju;flag18=0;}
}
4.3时间设置状态程序
时间设置状态子程序主要是对时间进行设置并存入时间芯片。
在设置状态下,按一次测试加工,按一次清除,按一次测试加工,任务开始时间、任务结束时间、最后测试时间灯全亮。
屏幕显示系统当前时间。
按下“加工显示”键,count20加1.当count20=1时,重新输入月;当count20=2时,重新输入日;当count20=3时,重新输入时;当count20=4时,重新输入分(每项2位,共8位)。
输入后按“开始/新建”键确定。
系统保存输入的时间为当前时间。
其程序流程框图如图4.4所示:
图4.4 时间设置状态流程图
具体程序:
if(status==5)//进入时间设置状态
{//写入设置的时间
DS1302_SetTime(0x88,shi21);
DS1302_SetTime(0x86,shi22);
DS1302_SetTime(0x84,shi23);
DS1302_SetTime(0x82,shi24);
}
4.4计数状态程序
计数状态子程序主要是对对一个零件分两次以上冲的零件计数、对于空冲或冲出废品能够使得计数减1并且记录空冲的个数、实冲个数、空冲和实冲的总个数。
系统进入运行状态后,上屏显示当前任务的有效加工数,下屏显示当前任务设置的参数。
这时连续按“加工显示”键,上屏显示的数值可以再有效加工数、无效加工数、总加工数、测试加工数、任务开始时间、任务结束时间和最后测试时间7个值中切换显示其中的一个值(任务开始时间、任务结束时间和最后测试时间均为8位,此时上下屏均为时间。
时间用“月.日.时.分”表示,24小时制。
如1月2日下午3点零4分表示为“01.02.15.04”)。
若当前任务尚未结束,则任务结束时间为0。
若当前任务不曾进入测试状态,则最后测试时间为0。
这时连续按“设置/显示”键,下屏显示的数值在加工总量、分组量、计件比例、加工图号和加工批号之间切换显示。
计数状态下,当系统接收到的信号等于计件比例,则有效加工数加1,总加工数加1。
按下“清除/减1”键,如果系统接收到的信号小于计件比例,有效加工数不变,无效加工数加1,总加工数加1;如果系统接收的信号等于计件比例,有效加工数减1,无效加工数加1,总加工数不变。
加工过程中,如果按下“查询”键,系统进入“查询状态”;如果按下“测试加工”键,系统进入“测试加工状态”。
系统运行状态中或当前任务完成后,按下“开始/新建”键则结束当前任务,新建一个新的任务并将当前任务的参数存入EEPROM,新建任务的参数默认为和上次任务参数相同,但也可以修改。
新建任务同时清除所有警报状态。
其程序流程框图如图4.5所示:
图4.5 计数状态流程图
具体程序:
if(status==1)//进入计数状态
{
if(cishu==bili)//进行计数
{shuju4++;shuju3++;shuju1=shuju4;cishu=0;}
}
4.5测试加工状态程序
测试加工状态子程序主要是系统不对加工进程进行计数,只是对系统进行加工测试。
系统进入测试加工状态,测试状态指示灯亮。
系统自动记录当前时间作为最后测试时间。
此时,系统每接收到一次信号,测试加工数加一,其他值不变(测试加工数不计入加工总数)。
在测试加工中再按一次“测试加工”键,系统退出测试加工状态,返回计数状态。
其程序流程框图如图4.6所示:
图4.6 测试加工状态流程图
具体程序:
if(status==2)//进入测试加工状态
{
if(cishu==1)//计数
{shuju1=0;
shuju5++;
cishu=0;
shuju1=shuju5;}
}
4.6查询状态程序
查询状态子程序主要是对历史数据进行查询(最多十组)。
系统在任意状态下按下“查询”键均可进入查询模式,此时指示灯全灭,上屏显示系统中的记录条数。
下屏显示设置查询条件。
查询可以按照记录的加工图号匹配、加工批号匹配、加工图号和加工批号同时匹配以及查询所有记录四种模式进行。
设置完查询条件后,按下“开始/新建”键则开始查询。
系统按照任务开始时间从后往前查询。
若查