智能自动豆浆机设计报告.doc_第1页
智能自动豆浆机设计报告.doc_第2页
智能自动豆浆机设计报告.doc_第3页
智能自动豆浆机设计报告.doc_第4页
智能自动豆浆机设计报告.doc_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

机电工程系机电创意小组智能豆浆机的设计系 部 名 称: 机电工程系学 生 姓 名: 刘鹏浩、刘鹏慧、李乔专 业: 机械制造及其自动化班 级: 1102指 导 教 师: 王新海设计思路:由于以前的豆浆机,磨浆要过滤豆渣,豆浆熬煮也要自己动手,还要特别注意豆浆溢锅的问题,程序繁琐麻烦,给人们带来不便,针对这些情况拟定开发家用豆浆机全自动控制电路装置。家用豆浆机全自动控制装置是在单片机的程序控制下进行工作的。打浆时,插上电源插头,接通电源, 直接按“启动”键,控制电路控制豆浆机工作。先给黄豆加热,并由传感器检测温度,当温度达到80度左右时,停止加热。启动磨浆电机开始磨浆,运转20秒后停止转运,间歇10秒后再启动打浆电机,如此循环进行打浆6次或者4次。磨浆完后,开始对豆浆加热,豆浆温度达到一定值时,豆浆上溢。豆浆加工自动进入防溢延煮程序,豆浆加工完成后发出声光报警信号。关键词:豆浆机,控制系统,全自动,传感器。Abstract一、全自动豆浆机的工作原理用STC12C5A60S2单板设计一款全自动豆浆机,豆浆机的工作原理如下:先给电路上电,按下启动键开始加热;加热到80C开始打浆(打15秒,停15秒,共4次),磨浆完后,开始对豆浆加热,豆浆温度达到一定值时,豆浆上溢。豆浆加工自动进入防溢延煮程序,豆浆加工完成后发出声光报警信号。本设计原理如图1所示 STC12C5A60S2 温度检测电路防溢电路放干烧电路按键加热电路电机声光报警显示屏控制系统首先通过电源对系统供电,其中温度传感器、防溢电路、放干烧电路、按键、均是输入部分,声光报警、显示屏、电机、加热电路均是输出部分。二、 方案设计方案1:此方案由单片机、加热电路、温度检测电路、打浆电路、报警电路、显示电路组成。其工作原理是先加热,加热到一定温度后,开始打浆,打浆完后,打浆停止,又开始加热即煮沸后,立即停机,报警提示。打浆电路加热电路温度检测电路报警电路显示电路表 2.1 方案一设计框图方案2:此方案由单片机、温度检测电路、加热电路、沸腾检测电路、打浆电路、报警电路、显示电路等组成。其工作原理是豆浆机加电后直接按“启动”键,控制电路控制豆浆机进行加热,当温度达到80度左右时,停止加热,开始打浆;打浆电机按间歇方式打浆:运转15秒后停止转运,间歇15秒后再启动打浆电机,如此循环进行打浆4次。打浆结束后开始对豆浆加热,豆浆温度达到一定值时,豆浆上溢。当豆浆沫要溢出时,停止加热,间歇20秒后再开始加热,如此循环4次,豆浆加工完成后发出声光信号。单片机防干烧、防溢电路打浆电路温度检测电路报警电路加热电路显示电路表 2 .2 方案二设计框图3、方案论证方案一如图1.1所示,由单片机、温度检测电路、打浆电路、加热电路、报警电路等组成。工作过程是,接上电源,按下“功能键”,开始加热,加热到一定温度后,开始打浆,打浆浆结束后,又加热直到豆浆沸腾煮熟,停止加热,发出报警声,提示豆浆已做好。其缺点是:粉碎后煮浆时间过长所易造成的糊锅现象。方案二如图1.2所示, 由单片机、温度检测电路、防干烧电路电路、防溢电路、打浆电路、加热电路、报警电路等组成。工作过程是,接上电源,蜂鸣器长鸣一声,提示已接通电源,指示灯绿色LED亮,处于待命状态。按下全自动启动键,开始加热,温度达到80度时,停止加热;搅拌马达运转,将黄豆粉碎,豆浆过滤,然后马达停转,又开始加热,直到豆浆沸腾煮熟,停止加热,发出报警声,提示豆浆已做好。进行论证后,我选择第二方案。其原因是:间歇打浆方式可以提高工作效率;缩短粉碎后加热至豆浆沸腾时间,防止粉碎后煮浆时间过长所易造成的糊锅现象。三、硬件电路设计:1、单片机的选用:STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。单片机简介:1 .增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统80512 .工作电压:STC12C5A60S2系列工作电压:5.5V- 3.3V(5V单片机)STC12LE5A60S2系列工作电压:3.6V- 2.2V(3V单片机)3. 工作频率范围:0 - 35MHz,相当于普通8051的0420MHz4. 用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节.5. 片上集成1280字节RAM6. 通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55mA7. 时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟常温下内部R/C振荡器频率为:5.0V单片机为:11MHz15.5MHz3.3V单片机为:8MHz12MHz精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准8. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在P3.5/T1输出时钟 9.A/D转换, 10位精度ADC,共8路,转换速度可达250K/S(每秒钟25万次)10.工作温度范围:-40 - +85(工业级) / 0 - 75(商业级)21.封装:PDIP-40,LQFP-44,LQFP-48I/O口不够时,可用2到3根普通I/O口线外接74HC164/165/595(均可级联)来扩展I/O口,还可用A/D做按键扫描来节省I/O口,或用双CPU,三线通信,还多了串口。引脚图:2、温度检测电路的设计当豆浆机正常工作时,需要先加热到80左右的温度,然后停止加热继续下一步的工作,这就需要一个温度检测电路,我设计的温度检测电路由一个电位器来代替,通过单片机接口的AD转换功能,通过调节电位器的阻值来模拟豆浆机温度的变化,当电位器的阻值达到一定阻值时,豆浆机停止加热,进行下一步工作。3、加热和打浆电路的设计:加热电路的作用是通过加热管把磨成粉末的黄豆煮熟;打浆电路的作用是通过电机把黄豆搅拌成粉沫。 单片机输出电流经三极管放大,来驱动继电器必合,使加热管发热把豆浆煮熟。同理,继电器闭合使电机运转把黄豆搅碎。加热及打浆电路的工作原理如图1所示,加热及磨浆电路由继电器RL1、RL2,三极管Q1、Q2,电阻R14、R15以及二极管Dl、D2,单片机AT89C51。当单片机工作时,赋给Pl.l一个低电平,使三极管Q2饱和导通,电流流过继电器RL2,使触点闭合,于是加热管通电开始对水加热,当温度达到80度时,温度信号(电位器)传给单片机,单片机检测到这个信号后,使P1.1脚变为高电平,三极管Q2截止,继电器触点断开,电阻停止加热。加热结束后,单片机P1.0脚变为低电平,使三极管RL1饱和导通,从而让继电器触点闭合,于是电机通电开始打浆,在系统程序得控制下,电机进行打浆。电机运转20秒或者15秒后,单片机P1.0脚变为高电平,使三极管Q1截止,继电器触点断开,电机停止打浆,问歇15秒后,单片机P1.0脚又恢复为低电平,从而继续驱动电机工作,如此循环4次后打浆结束。热敏电阻一般有一个误差范围,用来规定样品之间的一致性。根据使用的材料不同,误差值通常在1%至10%之间。有些热敏电阻设计成应用时可以互换,用于不能进行现场调节的场合,例如一台仪器,用户或现场工程师只能更换热敏电阻而无法进行校准,这种热敏电阻比普通的精度要高很多,价格也要贵得多。4、屏幕显示电路的设计:显示屏的作用是显示当前豆浆机的工作状态,将LCD显示屏按照图2的接法和单片机连接起来。5、报警电路的设计:报警电路的作州是通过蜂呜器发出声音信号,红色LED点亮提醒豆浆已经煮好了。通过事先编写的程序,在单片机的控制下,系统开始工作,当加热完成后,单片机P1.4、P1.5脚自动输出一个高低平,使蜂鸣器、发光二极管通电导通,于是蜂鸣器发出报警,红色LED点亮提醒豆浆加热6、电源电路的设计:7、防干烧及防溢出电路的设计:防干烧及防溢出电路的作用是以传感器作为信息采集系统的前端单元来控制自动豆浆机缺水时干烧及沸腾溢出等问题。这单采用探针作为传感器来检测水位及沸腾溢出,然后通过比较器输出高低电平,这样就可以通过单片机检测比较器输出电平的高低来检测水位及沸腾时的溢出状态。水位检测及沸腾溢出电路的原理如图4.13所示,K1,K2分别是水位检测传感器和沸腾溢出传感器,为了减少成本,这单采用探针来代替这两个传感器,使用中将接控制电路的公共点“地”,探针分别通过传输。单片机的P3.2,P1.3端连接。正常工作时,Kl被水淹没,它和地之问的电阻较小,与R13共同对+5V分压,U+得到比U-低的电平,比较器输出低电平。缺水时,Kl露出水面,它的电阻很大,R13共同对+5V分压,U+得到比U-高的电压,比较器输出高电平,通过非门后输出低电平产生下降沿。用软件检测比较器的电平变化,便知是否缺水用同样的方法检测豆浆是否沸腾溢出。豆浆沸腾之前,电极K2远离水而,它和地之间的电阻很大,与R9共同对+5V分压,U+得到比U-高的电压,比较器输出高电平。豆浆沸腾时,泡沫淹没K2,电阻小,与R14共同对+5V分压,U+得到比U-低的电压,比较器输出低电平。用软件检测比较器的输出电平,便知豆浆是否沸腾溢出。三、 软件设计豆浆机控制系统的流程图:通电启动温度是合适加热报警提示NNi4?打浆15s,加热15sYY加热至煮沸程序:#includesbit key =P20;/全自动开关sbit LED1=P21;/加热豆浆sbit LED=P22;/sbit BEEP =P23;/蜂鸣sbit M =P24;/搅拌豆浆sbit jre=P25;/加热豆浆#include /51基本运算(包括_nop_空函数?typedef unsigned char uint8; / 无符号8位整型变量 /*/ 引脚定义 / (使用者根据实际更改)/*/#defineLCM2402_DB0_DB7P1/ 定义LCM2402的数据总线sbit LCM2402_RS = P3 2;/ 定义LCM2402的RS控制线sbit LCM2402_RW = P3 3;/ 定义LCM2402的RW控制线sbit LCM2402_E = P3 4;/ 定义LCM2402的E控制线sbit LCM2402_Busy = P1 7;/ 定义LCM2402的测忙线(与LCM2402_DB0_DB7关联)data unsigned char TIME_DD,TIME_MO,TIME_YY,TIME_WW,TIME_HH,TIME_MM,TIME_SS;/设置日、月、年、周、时、分、秒和温度存放区data bit DAY_BIT = 0;/天数增加标志位(用于日期进位的启动)data unsigned char DIS_BIT = 0; /多种信息的切换显示data unsigned char cou = 0; / 软计数器,对10ms时基信号累加到1s /*/ 定义LCM2402指令集 / (详细请见技术手册)/*/#defineCMD_clear0x01 / 清除屏幕#defineCMD_back0x02 / DDRAM回零位#defineCMD_dec10x04 / 读入后AC(指针)减1,向左写#defineCMD_add10x06 / 读入后AC(指针)加1,向右写#defineCMD_dis_gb10x0f / 开显示_开光标_开光标闪烁#defineCMD_dis_gb20x0e / 开显示_开光标_关光标闪烁#defineCMD_dis_gb30x0c / 开显示_关光标_关光标闪烁#defineCMD_OFF_dis0x08 / 关显示_关光标_关光标闪烁#defineCMD_set820x38 / 8位总线_2行显示#defineCMD_set810x30 / 8位总线_1行显示(上边行)#defineCMD_set420x28 / 4位总线_2行显示#defineCMD_set410x20 / 4位总线_1行显示(上边行)#definelin_10x80 / 4位总线_1行显示(上边行)#definelin_20xc0 / 4位总线_1行显示(上边行)/*函数名:毫秒级CPU延时函数调 用:DELAY_MS (?);参 数:165535(参数不可为0)返回值:无结 果:占用CPU方式延时与参数数值相同的毫秒时间备 注:应用于1T单片机时i600,应用于12T单片机时i125/*/void DELAY_MS (unsigned int a)unsigned int i;while( -a != 0)for(i = 0; i 600; i+);/*/*/ 读LCM忙程序 底层协议 / (所有底层协议都无需关注)/ LCM2402测忙,若LCM2402处于忙状态,本函数将等待至非忙状态 /*/void LCM2402_TestBusy(void) LCM2402_DB0_DB7 = 0xff;/设备读状态 LCM2402_RS = 0; LCM2402_RW = 1; LCM2402_E = 1; while(LCM2402_Busy);/等待LCM不忙 LCM2402_E = 0;/*/ 写指令程序 / 向LCM2402写命令 本函数需要1个指令集的入口参数 /*/void LCM2402_WriteCMD(uint8 LCM2402_command) LCM2402_TestBusy(); LCM2402_RS = 0; LCM2402_RW = 0; LCM2402_DB0_DB7 = (LCM2402_command/16)4;/0x45 0x40 LCM2402_E = 1; LCM2402_E = 0; LCM2402_DB0_DB7 = (LCM2402_command%16)4;/0x45 0x50 LCM2402_E = 1; LCM2402_E = 0;/*/ 写数据程序 / 向LCM2402写数据 /*/void LCM2402_WriteData(uint8 LCM2402_data) LCM2402_TestBusy(); LCM2402_RS = 1; LCM2402_RW = 0;LCM2402_DB0_DB7 = (LCM2402_data/16)4; LCM2402_E = 1; LCM2402_E = 0;LCM2402_DB0_DB7 = (LCM2402_data%16)4; LCM2402_E = 1; LCM2402_E = 0;/*/ 打印字符串程序 / (本函数调用指针函数)/ 向LCM发送一个字符串,长度48字符之内 / 第一行位置 0x000x17 第二行位置 0x400x57 / 应用举例:print(0x80,); /在第一行第一位处从左向右打印字符串/*/void print(uint8 a,uint8 *str)LCM2402_WriteCMD(a | 0x80);while(*str != 0)LCM2402_WriteData(*str+);*str = 0;/*/ 打印单字符程序 / / 第一行位置 0x000x17 第二行位置 0x400x57 / 向LCM发送一个字符,以十六进制(0x00)表示 / 应用举例:print(0xc0,0x30); /在第二行第一位处打印字符“0”/*/void print2(uint8 a,uint8 t)LCM2402_WriteCMD(a | 0x80);LCM2402_WriteData(t);/*/ 定义小汉字 / 可写入8个自字义字符,写入后可用其CGRAM代码直接提取显示。/ 字符定义方法请参考技术手册 /*/uint8 code Xword= 0xff,0x00,0x1f,0x11,0x1f,0x11,0xff,0x00, /,代码 0x00 0x00,0x00,0x00,0x00,0xff,0x00,0x00,0x00, /一,代码 0x01 0x00,0x00,0x00,0x0e,0x00,0xff,0x00,0x00, /二,代码 0x02 0x00,0x00,0xff,0x00,0x0e,0x00,0xff,0x00, /三,代码 0x03 0x00,0x00,0xff,0xf5,0xfb,0xf1,0xff,0x00, /四,代码 0x04 0x00,0xfe,0x08,0xfe,0x0a,0x0a,0xff,0x00, /五,代码 0x05 0x00,0x04,0x00,0xff,0x00,0x0a,0x11,0x00, /六,代码 0x06 0x00,0x1f,0x11,0x1f,0x11,0x11,0x1f,0x00, /日,代码 0x07;void CgramWrite(void) / 装入CGRAM / uint8 i;LCM2402_WriteCMD(0x06);/ CGRAM地址自动加1LCM2402_WriteCMD(0x40);/ CGRAM地址设为00处 for(i=0;i64;i+) LCM2402_WriteData(Xwordi);/ 按数组写入数据 /*/ LCM2402初始化 /(使用者可自定义,加 * 号程序行必须保留但可修改)/*/void LCM2402_Init(void) LCM2402_WriteCMD(CMD_set42);/* 显示模式设置:显示2行,每个字符为5*7个像素 LCM2402_WriteCMD(CMD_set42);/* 显示模式设置:显示2行,每个字符为5*7个像素 LCM2402_WriteCMD(CMD_clear);/ 显示清屏 LCM2402_WriteCMD(CMD_back);/* 数据指针指向第1行第1个字符位置 LCM2402_WriteCMD(CMD_add1);/ 显示光标移动设置:文字不动,光标右移 LCM2402_WriteCMD(CMD_dis_gb3); / 显示开及光标设置:显示开,光标开,闪烁开CgramWrite();/ 向CGRAM写入自定义字符/*/以上是LCM2402驱动程序/*/*函数名:10位A/D转换初始化函数调 用:Read_init (?);参 数:输入的端口(0000 0XXX 其中XXX是设置输入端口号,可用十进制07表示,0表示P1.0,7表示P1.7)返回值:无结 果:开启ADC功能并设置ADC的输入端口备 注:使用ADC功能时需要将对应的IO接口设置为高阻输入方式(例如:P1M1 = 0x01;)/*/void Read_init (unsigned char CHA)unsigned char AD_FIN=0; /存储A/D转换标志 CHA &= 0x07; /选择ADC的8个接口中的一个(0000 0111 清0高5位) ADC_CONTR = 0x40;/ADC转换的速度(0XX0 0000 其中XX控制速度,请根据数据手册设置) _nop_(); ADC_CONTR |= CHA; /选择A/D当前通道 _nop_(); ADC_CONTR |= 0x80; /启动A/D电源 DELAY_MS(1); /使输入电压达到稳定(1ms即可)/*/*函数名:10位A/D转换函数调 用:? = ADC_Read();参 数:无返回值:10位ADC数据高(从0到1023(十进制)结 果:读出指定ADC接口的A/D转换值,并返回数值备 注:适用于STC12C5A60S2系列单片机(必须使用STC12C5A60S2.h头文件)/*/unsigned int ADC_Read (void)unsigned char AD_FIN=0; /存储A/D转换标志 ADC_CONTR |= 0x08; /启动A/D转换(0000 1000 令ADCS = 1) _nop_(); _nop_(); _nop_(); _nop_(); while (AD_FIN =0) /等待A/D转换结束 AD_FIN = (ADC_CONTR & 0x10); /0001 0000测试A/D转换结束否 ADC_CONTR &= 0xE7; /1111 0111 清ADC_FLAG位, 关闭A/D转换, return (ADC_RES*4+ADC_RESL);/返回A/D转换结果(10位ADC数据高8位在ADC_RES中,低2位在ADC_RESL中)/*/*/ 测试用函数 /void main (void)unsigned int m;unsigned char i=0;/init();/初始化 LCM2402_Init();/LCM2402初始化while(1) print(0x00, huan ying); print(0x40, shi yong);LED=0; BEEP=0; DELAY_MS (2000); LED=1; BEEP=1; while(key=1); DELAY_MS (1000); print(0x00, jia re); print(0x40, ); LED1=0; while(m!=83) /主线程/ /RealTime_Display(); P1M1 = 0x01;/ Read_init (0); m = ADC_Read (); print2(0x40,m/1000+0x30);/ print2(0x41,(m%1000)/100+0x30);/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论