饮料罐装生产流水线的单片机控制系统设计.docx
- 文档编号:5537747
- 上传时间:2022-12-19
- 格式:DOCX
- 页数:22
- 大小:647.47KB
饮料罐装生产流水线的单片机控制系统设计.docx
《饮料罐装生产流水线的单片机控制系统设计.docx》由会员分享,可在线阅读,更多相关《饮料罐装生产流水线的单片机控制系统设计.docx(22页珍藏版)》请在冰豆网上搜索。
饮料罐装生产流水线的单片机控制系统设计
XX大学
课程设计报告
课题名称饮料罐装生产流水线的单片机控制系统设计
院〔系〕机电工程学院
专业机械设计制造与其自动化
姓名XXXX
学号XXXX
起讫日期2016.8.29-2016.9.9指导教师XX
2016年9月9日
饮料罐装生产流水线的单片机控制系统设计
摘要
本设计是饮料灌装生产流水线的单片机控制系统。
其硬件局部主要包括电源电路、开关电路、光电传感器模块、数码显示模块、继电器控制模块、报警模块6个主要组成局部。
硬件选择以AT89C51为主体、数码显示采用74LS164串行显示方案,光电传感器采用对射式光电开关电路方案,继电器控制模块采用单片机控制5V继电器,进而控制交流接触器方案。
软件设计主要完成信号检测,多种工作状态的转换,以与显示灌装计数值三个工作。
关键词:
灌装流水线单片机光电传感器串行数码管显示继电器控制
摘要……………………………………………………………………………………………....1
课程设计内容
设计一套饮料罐装生产流水线的PLC控制系统,控制要求:
〔1〕系统通过开关设定为自动操作模式,一旦启动,如此传送带的驱动电机启动并一直保持到停止开关动作或罐装设备下的传感器检测到一个瓶子时停止;瓶子装满饮料后,传送带驱动电机必须自动启动,并保持到又检测到一个瓶子或停止开关动作。
〔2〕当瓶子定位在罐装设备下时,停顿1秒,罐装设备开始工作,罐装过程为5秒钟,罐装过程应有报警显示,5秒后停止并不再显示报警。
〔3〕一旦系统启动,记录罐装瓶数,设最多不超过9999瓶。
〔4〕可以手动对计数值清零〔复位〕。
1.2课程设计要求
〔1〕采用MCS-51单片机控制,画出控制系统的硬件电路图;
〔2〕采用220V交流电源供电,设计控制系统直流电源模块硬件电路图;
〔3〕编制控制程序,并画出程序框图;
〔4〕撰写课程设计报告。
2.控制系统的硬件电路设计
硬件电路设计proteus软件简介
Proteus软件是英国LabCenterElectronics公司出版的EDA工具软件〔该软件中国总代理为某某风标电子技术某某〕。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机与外围器件。
它是目前比拟好的仿真单片机与外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
[1]
2.2控制系统硬件电路详细设计
控制系统结构图
图〔1〕
如图〔1〕所示整个控制系统输入量有四个,分别为启动开关、停止开关、复位计数值开关以与光电传感器输入信号。
输出有三个,分别为数码管显示、传送带继电器以与灌装设备继电器。
单片机在接收到启动开关信号后,控制4位数码管显示初始计数值,同时输出信号使传送带继电器线圈得电,进而闭合在强电电路中的相应的继电器开关,使传送带带动瓶子运动。
当光电传感器检测到瓶子到达灌装位置时,向单片机发送信号,单片机接收到信号后立即停止传送带,通过内部计时器计时1S后启动灌装设备,同时报警指示灯保持常亮。
单片机内部定时器继续计时5S后,停止灌装设备,关灭报警指示灯,数码管显示值加1,然后启动传送带等待光电传感器检测到下一个信号开启再一次的循环。
在系统运行期间如果接收到停止信号系统会立即关闭传送带和灌装设备,以与数码管显示;如果接收到复位信号,单片机控制的数码管计数值立即清零;如果数码管当前的计数值达到了9999,再接收到灌装完成的信号数码管显示值会变成0进而重新计数。
2.2.2电源电路设计
由于设计要求用220V交流电供电,而单片机电路需要的电源是直流5V。
故需要设计220V转5V的直流稳压电路。
本系统采用的为常见的直流稳压方案如图〔2〕所示。
图〔2〕
变压器输出端的9V电压经桥式整流并电容滤波,在电容C1两端大约会有11V多一点的电压,假设从电容两端直接接一个负载,当负载变化或交流电源有少许波动都会使C1两端的电压发生较大幅度的变化,因此要得到一个比拟稳定的电压,在这里接一个三端稳压器的元件U2。
三端稳压器是一种集成电路元件,内部由一些三极管和电阻等构成,在分析电路时可简单的认为这是一个能自动调节电阻的元件,当负载电流大时三端稳压器内的电阻自动变小,而当负载电流变小时三端稳压器内的电阻又会自动变大,这样就能保持稳压器的输出电压保持根本不变。
因为我们要输出5V的电压,所以选用7805,7805。
前面的字母可能会因生产厂家不同而不同。
LM7805最大可以输出1A的电流,内部有限流式短路保护。
三端稳压器后面接有电容,起滤波和阻尼作用。
单片机开关按钮设计
由于单片机上电P2、P3口均为高电平,故此处设计最简单的开关电路,单片机口接按钮接地。
以停止开关为例,如图3所示
图〔3〕
光电传感器电路设计
如图4所示
图〔4〕
光电传感器由两局部组成,一局部是发光的二极管,一局部是由光电三极管组成的光电开关。
当左局部和右局部没有物体遮挡时,发光二极管的光照射到光电三极管基极上,光电三极管导通,电压比拟器LM3933脚电平输出电压为低电平0V;当左局部和右局部有物体遮挡时,光电三极管截止,电压比拟器LM3933脚电平低于2脚电平2,5V输出电压为高电平5V。
数码管显示模块
图〔5〕
显示模块选用4个LED共阴极数码管,为节省单片机输入输出口选用用74LS164芯片进展串行数码显示。
接线图如下列图,4个74LS164芯片串行连接,U2接收来自单片机的数据,U3、U4、U5输入端接在前一个数据输出的最高位。
每一次刷新显示时,单片机通过第一个74LS164向显示模块输入4个字节通过串行移位的方式,分别保存在U2、U3、U4、U5内进而控制4个数码管的显示。
报警模块
图〔6〕
报警模块选用LED指示灯,由于单片机驱动电流较小故电路中参加三极管进展电流放大。
当三极管的基极接收到来自单片机的低电平信号,三极管正向导通,LED指示灯亮。
2.2.7传送带模块
传送带电机模块由两局部组成:
一局部为弱电的控制电路〔图7〕,一局部是强电电路如〔图8,图9〕。
图〔7〕图〔8〕图〔9〕
当三极管的基极接收到来自单片机的低电平信号时,三极管正向导通吸合继电器开关K1,位于强电电路中的KM1线圈得电,传送带电机启动运行。
当三极管的基极接收到来自单片机的高电平信号时,三极管截止,继电器的线圈通过二极管D1放电,K1断开,KM1线圈掉电,KM1断开,电机停止运行。
2.2.8灌装设备模块
此模块和传送带模块类似,此处不再赘述,电路图如图10、图11、图12所示。
图〔10〕图〔11〕图(12)
3.1控制程序设计平台软件keiluvision2简介
KeiluVision2是德国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。
KEILC51标准C编译器为8051微控制器的软件开发提供了C语言环境,同时保存了汇编代码高效,快速的特点。
C51编译器的功能不断增强,使你可以更加贴近CPU本身,与其它的衍生产品。
C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:
编译器,汇编器,实时操作系统,项目管理器,调试器。
uVision2IDE可为它们提供单一而灵活的开发环境。
[2]
3.2控制程序详细设计
控制程序流程图
控制程序框图包括主程序框图图〔13〕和定时器中断函数框图〔14〕。
图〔13〕
N
Y
Y
Y
N
图〔14〕
3.2.2详细程序设计
〔1〕数码管显示函数
voiddisplay()
{
ucharLED_code[4];//存放四个数码管显示代码
uchari,j,chr,sel;
for(i=0;i<4;i++)//将显示的数值转换为显示代码
LED_code[i]=LED_Map[disdata[i]];
for(i=0;i<4;i++)//74LS164数码管串行显示程序
{
chr=LED_code[i];//
sel=0x80;
for(j=0;j<8;j++)
{
Din=chr&sel;
CLK=0;
sel=sel>>1;
delay
(1);
CLK=1;
delay
(1);
}
}
}
(2)计数显示函数
void cunt_disp() //计数显示
{
disdata[0]=cunt%1000%100%10;//取个位
disdata[1]=cunt%1000%100/10;//取十位
disdata[2]=cunt%1000/100;//取百位
disdata[3]=cunt/1000;//取千位
display();
}
计数显示函数,取出计数值的各个位送给disdata数组。
(3)关闭显示函数
void disp_off() //关闭显示函数
{
uchar i,j,chr,sel;
for(i=0;i<4;i++)
{
chr= 0x00; //关闭数码管显示
sel=0x80;
for(j=0;j<8;j++)
{
Din=chr&sel;
CLK=0;
sel=sel>>1;
delay
(1);
CLK=1;
delay
(1);
}
}
}
关闭显示函数本质上是通过单片机赋值将数码管的每个LED灯关灭。
〔4〕初始化函数
void init() //初始化
{
TMOD=0x01; //定时器初始化
TH0=(65536-50000)/256; //50ms
TL0=(65536-50000)%256;
EA=1;//开中断
ET0=1;
t0=0; //时间变量
chuansong=1; //传送带关闭
guanzhuang=1; //灌装设备关闭
disp_off(); //显示关闭
cunt=0; //初始值
TR0=0;
}
初始化函数为系统未启动状态,此时初始化系统变量并且关闭所有设备。
〔5〕定时器中断函数
void timer0() interrupt 1//50ms定时器中断函数
{
TH0=(65536-50000)/256;//50ms设置
TL0=(65536-50000)%256;
t0++;
if(t0==20) //1s停顿
{
guanzhuang=0;
baojing=0;
}
if(t0==120) //1S停顿加5秒灌装
{
guanzhuang=1;//灌装设备启动
baojing=1;//报警灯亮
chuansong=0;//传送带关闭
t0=0;//t0重新赋值0
TR0=0;//关闭定时器
cunt++;//显示值加1
if (cunt==10000)//计数值重置
cunt=0;
cunt_disp();//刷新显示
}
}
〔6〕主函数
void main() //主函数
{
loop:
init(); //初始化
while(auto_on); //等待启动
chuansong=0; //传送带启动
cunt_disp(); //显示当初始计数值
while
(1) //主运行程序
{
if(!
no_stop) goto loop; //判断是否有停止信号
if(rst_cunt==0) //判断是否复位计数值
{
cunt=0; //复位
cunt_disp(); //刷新显示
}
if(!
cunt_in) //接收到传感器信号
{
chuansong=1; //传送带停止
TR0=1; //定时器打开
while(!
cunt_in); //等待信号完毕
}
}
}
3.3控制系统Protues仿真
光电传感器仿真
此处用按钮将发光二极管短路来模拟有物体遮挡的情况。
按钮未按下〔无物体遮挡〕时电压比拟器输出高电平,按钮按下之后输出为低电平。
灌装设备和传送带仿真
此处选用protues中的直流单相电机仿真交流电机。
3.3.3数码管显示仿真
3.3.4整体仿真图
完毕语
通过本次的课程设计,学到了很多关于单片机仿真的东西。
在做仿真电路事,遇到了一些困难尤其是电源稳压模块和光电传感器模块,但是通过上网查资料最终还是比拟好的解决了这些问题,另外在编写C51程序时也遇到了一些问题,包括中断函数的编写和信号的处理,但最终也是通过不断地调试,思考解决了问题。
通过本次本次的课程设计,我对专业知识有了更深的认识,相信会对我以后的学习或者工作有很大帮助。
参考文献
[1]XX百科.Protues.baike.baidu./link?
url=wr6Khr4kYydYD-K01yBexH2-RlbjW6MMtxw7TC5siqUE4Ye_l_u3t2ZU5i--FKZQ08TrQVXD_jKd9gfXz2Wc5a
[2]XX百科.keil.baike.baidu./link?
url=yOZ4_pNldquRnwc5MuhZpPUfD1qzE25ax7SPdLfDhbMRUKvWiJY6fUfzYyf_5_dfhjYOObCkexJAXk7UlMgdLq
附录I电路图
单片机板电路图
强电电路电路图
附录IIC51源代码
#include
typedef unsigned char uchar;
typedef unsigned int uint;
sbit Din=P1^0;//数码管数据输入
sbit CLK=P1^1;//时钟输入
sbit auto_on=P2^2;//自动模式开启
sbit rst_cunt=P2^3;//复位计数值
sbit baojing=P2^7;//报警信号输出
sbit cunt_in=P2^4;//传感器输入
sbit guanzhuang=P2^5;//灌装设备控制端
sbit chuansong=P2^6;//传送带控制端
sbit no_stop=P3^0;//停止信号输入
uchar data disdata[4];
uint cunt,t0,t1;
unsigned char code LED_Map[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f };//0-9
void init();
void delay(int count)
{
unsigned int i;
for(i=0;i } //数码显示 void display() { uchar LED_code[4]; //存放四个数码管显示代码 uchar i,j,chr,sel; for(i=0;i<4;i++)//将显示的数值转换为显示代码 LED_code[i]=LED_Map[disdata[i]]; for(i=0;i<4;i++)//74LS164数码管串行显示程序 { chr= LED_code[i]; // sel=0x80; for(j=0;j<8;j++) { Din=chr&sel; CLK=0; sel=sel>>1; delay (1); CLK=1; delay (1); } } } void cunt_disp() //计数显示 { disdata[0]=cunt%1000%100%10;//取个位 disdata[1]=cunt%1000%100/10;//取十位 disdata[2]=cunt%1000/100;//取百位 disdata[3]=cunt/1000;//取千位 display(); } void disp_off() //关闭显示函数 { uchar i,j,chr,sel; for(i=0;i<4;i++) { chr= 0x00; // sel=0x80; for(j=0;j<8;j++) { Din=chr&sel; CLK=0; sel=sel>>1; delay (1); CLK=1; delay (1); } } } void main() //主函数 { loop: init(); //初始化 while(auto_on); //等待启动 chuansong=0; //传送带启动 cunt_disp(); //显示当初始计数值 while (1) //主运行程序 { if(! no_stop) goto loop; //判断是否有停止信号 if(rst_cunt==0) //判断是否复位计数值 { cunt=0; //复位 cunt_disp(); //刷新显示 } if(! cunt_in) //接收到传感器信号 { chuansong=1; //传送带停止 TR0=1; //定时器打开 while(! cunt_in); //等待信号完毕 } } } void init() //初始化 { TMOD=0x01; //定时器初始化 TH0=(65536-50000)/256; //50ms TL0=(65536-50000)%256; EA=1;//开中断 ET0=1; t0=0; //时间变量 chuansong=1; //传送带关闭 guanzhuang=1; //灌装设备关闭 disp_off(); //显示关闭 cunt=9998; //初始值 TR0=0; } void timer0() interrupt 1//定时器中断函数 { TH0=(65536-50000)/256;//50ms TL0=(65536-50000)%256; t0++; if(t0==20) //1s停顿 { guanzhuang=0; baojing=0; } if(t0==120) //1S停顿加5秒灌装 { guanzhuang=1; baojing=1; chuansong=0; t0=0; TR0=0; cunt++; if (cunt==10000) cunt=0; cunt_disp(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 饮料 罐装 生产 流水线 单片机 控制系统 设计