电梯控制模型设计与总结报告

上传人:仙*** 文档编号:34985827 上传时间:2021-10-25 格式:DOC 页数:34 大小:4.45MB
收藏 版权申诉 举报 下载
电梯控制模型设计与总结报告_第1页
第1页 / 共34页
电梯控制模型设计与总结报告_第2页
第2页 / 共34页
电梯控制模型设计与总结报告_第3页
第3页 / 共34页
资源描述:

《电梯控制模型设计与总结报告》由会员分享,可在线阅读,更多相关《电梯控制模型设计与总结报告(34页珍藏版)》请在装配图网上搜索。

1、武汉理工大学电子竞赛设计报告电梯控制模型设计与总结报告摘要: 本文设计并制作了一个电梯控制模型。用水晶玻璃实现外观设计制作,AVR单片机作为主控芯片。成功设计电机控制算法,加载重物与否运行时间不受影响。实现了电梯的调度,如距离优先,方向优先。设计全部原创。关键词:电梯模型、电梯调度、电机控制。目 录1、系统方案选择与论证311、控制部分方案比较312、显示部分方案比较313、按键部分方案比较314、动力部分方案选择316、电源方案42、外形设计53、硬件电路设计731、电源部分732、主控部分733、电机控制部分834、光电开关835、显示部分936、按键部分94、软件设计1041、系统框图与

2、主程序流程图1042、电机控制及速度控制程序1043、按键处理程序1344、目标楼层生成程序135、系统测试1451、方向优先测试:电梯按某方向运行时,优先响应该运行方向的按钮;1452、距离优先测试:同一方向有多个按钮呼叫时,优先响应最近的楼层。1553、综合测试1554、运行时间测试156、主要材料清单167、结束语17附录:181、系统方案选择与论证11、控制部分方案比较一、使用电梯专用PLC电路,优点是技术成熟,但成本较高。二、使用MCU-51单片机(如AT89S52)作为电梯的控制部分,优点是制作简单,资料丰富,元件易得,缺点为稳定性较差,运行速度不高,且片上外设较少。三、使用AVR

3、单片机(如ATmega16)作为电梯的控制部分,此单片机稳定性好,运行速度较高,片上外设丰富,具有PWM功能的定时器,可方便用于电机控制。且同样有51单片机的优点,成本也很低。本设计使用ATmega16L作为电梯模型的主控芯片。12、显示部分方案比较一、使用七段数码管动态显示,优点为电路简单,使用元件较少,成本较低,但占用较多的CPU资源。二、使用LCD显示,优点为显示弹性比较大,可显示很多状态。缺点为成本较高,编程较复杂。三、使用七段数码管静态显示,用串并转换器74164驱动七段数码管,将74164连起来,使用AVR单片机片上外设SPI接口进行串行显示较出。本方案编程极其方便,成本也不高。故

4、本设计采用此方案。13、按键部分方案比较一、使用矩阵键盘,优点为电路简单,使用元件较少,成本较低,但占用较多的CPU资源。二、使用专用的编码键盘。但在本设计中按键不是很多,没有必要用成本很高的专用编码键盘,且在安装方面不方便。三、使用编码芯片。如74148,74147。使用此方案在安装上有很大我方便性。电路也比较简单,只占用单片机的8个I/O口,编程方便,故本设计采用本方案。14、动力部分方案选择一、步进电机。优点为控制方便精确,但成本较高,且随着电机转速增加,其精确度会降低。二、普通直流电机。优点为成本低,控制简单。但是安装不方便,转速较高,电梯使用不宜,电梯停时容易自动下滑。三、减速直流电

5、机。减速直流电机控制方便,转速符合要求,动力很大。当掉电时,电机自身的强大束握力可使用电梯停在当前位置。故本设计采用减速直流电机。15、电机驱动模块方案选择一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的,但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵,存在干扰。一般电机的电阻比较小,但电流比较大,分压不仅会降低效率,而且实现很困难。二:采用三极管组成的PWM电路。通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。在电机的控制部分采用不同的三极管的组合,实现对驱动电机的控制。系统输入有两个,分别由单片机控制输出,通过输入电

6、平变化来精确控制电机的转动变化。如图1所示: 图1.1 PWM电机驱动电路三:采用继电器对电动机的开或关进行控制,通过控制开关的切换速度实现对物体的运动速度进行调整。电路较为简单,但是由于继电器响应时间长,易损坏,寿命通常比较短,可靠性不高。四:采用L298N电机驱动芯片组成驱动电路。驱动芯片L298是驱动电机的专用芯片,利用它来驱动直流电机有一系列的优点,控制简单,电路设计也简单,大大简化了电路的复杂性。综上所述,采用方案四。16、电源方案一、电池供电。优点为方便,线性较好。但随着电量降低,电压也会降低,影响电梯性能。一、开关电源。优点为输出能力大,但成本较高。二、自做线性电源。由于设计者手

7、头有这部分材料,性能上完全可以满足要求,故采用此方案。2、外形设计本部分采用水晶玻璃制作外形。设计图如下。 图2.1 电梯模型外观图 图2.2 电梯模型传动机械部分图2.3 电梯内部结构俯视图 图2.4 实际外观图3、硬件电路设计31、电源部分32、主控部分33、电机控制部分34、光电开关35、显示部分36、按键部分4、软件设计41、系统框图与主程序流程图图4.1系统结构图 图4.2电梯主程序流程图42、电机控制及速度控制程序电机控制程序主要负责电机的正转和反转。L298的输入IN1和IN2,分别为10时为正转,01时为反转,为11时为快速停止。程序如下。void elevator_down(

8、void) PD66(0);PD55(1);OCR2=0xc8;void elevator_up(void) PD55(0);PD66(1);OCR2=0xc8;void elevator_stop(void) PD55(1);PD66(1);OCR2=0xff;beep(); 电机的速度控制则是利用AVR单片机的定时器2(timer2)生成的PWM波形对电机的速度进行控制。PWM波可看作一占空比可调的方波,占空比越大,电机速度越快,反之越慢。Timer2设置如下:快速pwm模式,匹配清零,溢出置位 8分频。则占空比可由以下公式求得:占空比(OCR2-0x01)/(0xFF-OCR2)即OCR

9、2越大,占空比越大定时器2初始化程序如下;void timer2_init(void) TCCR2 = 0x00; /stop TCNT2= 0x01; /set count TIMSK |= (1TOIE2);/溢出中断使能 OCR2 = 0xd9; /set compare, TCCR2 = (1WGM20)|(1WGM21)|(1fullspeed)if(OCR2=252) OCR2+=3;else OCR2=255;if(moter_cntrfullspeed-5)OCR2-=3;moter_cntr = 0;moter_cntr_c = 1; /开始下一轮计数由上述程序就可进行速度控

10、制。由于系统时钟采用8MHz的晶振提供,Timer2的时钟来源为系统时钟的8分频,Timer2为8位定时器。所以Timer2中断的频率 = (8000000/8)/(28)=3096.25Hz外部中断1的中断频率由电机的转速决定,每中断一次,电机正转或反转过的角度为= 360/36=10 度。电梯带动拉绳的直径为6.5CM。则外部中断1中断一次,电梯轿箱上升或下降的距离为L = 6.5*10*pi /360 = 0.567cm由程序可知,外部中断1两次中断时间间隔为T = moter_cntr *(1/3096.25)则可求得电梯轿箱运行的速度为:V = L / T .可根据此速度控制OCR2

11、的值,以获得符合要求的速度。43、按键处理程序图4.3 按键处理程序(根据按键值以及电梯轿当前状态计算是否要进行呼叫登记)44、目标楼层生成程序程序如下:void gen_aim_layer(void)/产生下一目标楼层 char i;if(UP=state)/上升for(i=current_layer;i=6) for(i=5;i=current_layer;i-) if(calldowni=1) aim_layer=i+1; /锁定目标层后退出.break;if(DOWN=state)if(current_layer=2)for(i=(current_layer-2);i=0;i-) if

12、(callini=1|calldowni=1) aim_layer=i+1; /锁定目标层后退出.break; if(i(current_layer-2);i+)if(callupi=1) aim_layer=i+1; /锁定目标层后退出.break; if(PAUSE=state) for(i=0;i6) if_reach_aim_layer();aim_layer=0;state=PAUSE;5、系统测试51、方向优先测试:电梯按某方向运行时,优先响应该运行方向的按钮;测试初始时,轿箱位于一楼,按下二楼,四楼的上下按呼叫,和五楼的向下呼叫。按键顺序可随意。测试结果停止楼层电梯方向显示2上2

13、楼上呼叫注销4上4楼上呼叫注销5上5楼下呼叫注销4下4楼下呼叫注销2下2楼下呼叫注销结论,测试正常。52、距离优先测试:同一方向有多个按钮呼叫时,优先响应最近的楼层。测试初始时,电梯位于任一层,如二楼。此时三楼和四楼分别向上呼叫。测试结果:先响应三楼呼叫,再响应四楼呼叫。结论:测试正常。各按钮呼叫时指示灯显示正常,电梯响应该按钮的呼叫后,其指示灯应自动熄灭。53、综合测试测试条件:电梯位于1楼,进入三人,其中一人要到3楼,另两人到5楼。电梯运行后,3楼和4楼有人向上呼叫欲到6楼,3楼有人向下呼叫到1楼。测试结果:停止楼层电梯方向显示3上3楼内部和向上呼叫注销。内部6楼呼叫4上4楼向上呼叫注销5

14、上5楼内部呼叫注销6下6楼内部呼叫注销3下3楼向下呼叫注销,内部1楼呼叫1下内部1楼呼叫注销测试结论:正常。54、运行时间测试桥厢模型无加载重物时,一楼到6楼上升时间为9.1秒;下降时间为9.2秒桥厢模型加载重物(约800g)时,一楼到6楼上升时间为9.3秒;下降时间为9.1秒桥厢模型单层运行时间约为2秒。测试结论:测试正常。6、主要材料清单1、有机玻璃板一张(1.85m*1.25m)2、ATmega16L3、8M晶振4、max2325、74HC164 10片6、74LS147,两片7、LM324一片8、光电开关(FS-H12A5)9、按键开关 16个10、变压器一个11、整流器一片12、电压

15、稳压器7805两片,7815一片。13、7段数码管13个。14、发光二极管17个15、蜂鸣器一个。16、三极管9个17、减速电机一只18、L298N一片19、万能板20、电阻,电容若干21、排线若干22、杜邦头若干23、其它(502、透明胶带、热融胶等)若干7、结束语 本设计为参加武汉理工大学第一届电子设计大赛而作。由张杰(信研0702班)、俞飞宇(信研0704班)、李春洋(信研0707班)共同完成。项目主要由张杰负责,完成了外观设计、硬件设计和软件设计。经过一个月的努力,基本功能已经完成。称重部分因时间限制,没有完成,但已为称重部分预留接口。特别感谢陶金同学,本设计需要的资金他投入了50%,

16、并帮助我们报名,给了我们很大的精神支持。附录:电梯运行程序/* AVR mega16 电梯控制程序 * * 作者: 张杰 * 编译器: WINAVR20060421 * 时间: 2008-32008-5 */*程序说明:*/#include #include #include #include /管脚定义#define PIN_RXD0 /PD0 RXD#define PIN_TXD1 /PD1 TXD#define PD5 5#define PD6 6/宏定义#define PD66(a) PORTD=(PORTD&(1PD6)|(aPD6)#define PD55(a) PORTD=(PO

17、RTD&(1PD5)|(aPD5)#define PAUSE 0#define UP 1#define DOWN 2/常量定义#define BAUDRATE 9600 /波特率/#define F_CPU8000000 /使用外部8M晶振,这个已经在makefile里面定义了#define initspeed 240#define fullspeed 220/按键定义#define key1 0xf8#define key2 0xf7#define key3 0xfa#define key4 0xf9#define key5 0xf6#define key6 0xfb#define down

18、6 0xdf#define up5 0xcf#define down5 0xbf#define up4 0xaf#define down4 0x9f#define up3 0x8f#define down3 0x7f#define up2 0xfe#define down2 0xfd#define up1 0xfc#define floor2num 0x1f#define floor3num 0x40#define floor4num 0x61#define floor5num 0x82#define floor6num 0xa2/全局变量/如果变量会在中断服务程序中被修改,须加volatil

19、e限定/unsigned char Seg7Table12= 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0xce;/ 0 1 2 3 4 5 6 7 8 9 熄 P(Park)/串口通信全局变量volatile unsigned char FLAG;/按键标志volatile unsigned char PC_COMMAND;/PC发出的当前命令volatile unsigned char RX_BUFFER16;/存放接收数据的数组volatile unsigned char RX_index;/存放接收数据的个数/电梯调度

20、全局变量unsigned char state=0; /电梯运行状态指示.0为待呼叫,1为上,2为下unsigned char state_flag=0;volatile unsigned char current_layer=1; /当前层unsigned char callup6=0,0,0,0,0,0; /向上呼叫,内部呼叫和向下呼叫unsigned char callin6=0,0,0,0,0,0;unsigned char calldown6=0,0,0,0,0,0;volatile unsigned char aim_layer=0;volatile unsigned char p

21、aused=0;volatile unsigned int pause_time_cntr=0;volatile unsigned char pause_time_cntr_c=0;volatile unsigned char pause_time_over=0;volatile unsigned char current_num=0; /电机速度计数值volatile unsigned int time_cntr=0; /timer2中断次数.3906次为一秒钟volatile unsigned int moter_cntr=0; /num改变时间计数,为timer2的中断次数. /两次中断

22、间隔为(1/3906)秒volatile unsigned char moter_cntr_c=0; /控制motercnt何时计数.volatile unsigned char stopnums6=0xff,floor2num,floor3num,floor4num,floor5num,floor6num;/SPI通信全局变量volatile unsigned char SPI_TX_BUF10/共十个74164 =0,0,0,0,0,0,0xCE,0,0,0;volatile unsigned int display_refresh_cntr=0;volatile unsigned cha

23、r display_refresh_flag=0;volatile unsigned char hour,min10,min,sec10,sec,msec=1;unsigned char test=0; void beep(void); /蜂鸣器void if_reach_aim_layer(void);/-SPI接口,初始化与接收程序-void SPI_MasterInit(void) DDRB |= (15)|(17); /设置MOSI 和SCK 为输出 SPCR =(1SPE)|(1MSTR)|(1CPHA); /使能SPI 主机模式,设置时钟速率为fckSPSR |=(1SPI2X);

24、 void SPI_MasterTransmit(char cData) SPDR = cData; / 启动数据传输 while(!(SPSR & (1SPIF); / 等待传输结束/-void timer2_init(void) TCCR2 = 0x00; /stop TCNT2= 0x01; /set count TIMSK |= (1TOIE2);/溢出中断使能 OCR2 = 0xd9; /set compare TCCR2 = (1WGM20)|(1WGM21)|(1COM21)|0x02; /start timer 快速pwm模式,匹配清零,溢出置位 8分频/占空比高比低为:(OC

25、R2-0X01)/(0XFF-OCR2) /OX01+(OCR2)_OXFF (+表示输出高,_表示输出低)/即OCR2越大,占空比越大void ex_int_init(void) /外部中断 MCUCR |=(1ISC01)|(1ISC11); /下降沿触发GICR |= (1INT0)|(1INT1); /使能外部中断0和1DDRD &=(12)|(13); /输入PORTD|=(12)|(13); /上接电阻使能void init_USART(void) /USART 初始化 /USART 9600 8, n,1 UCSRC = (1URSEL) | 0x06; /异步,8位数据,无奇偶

26、校验,一个停止位,无倍速 UBRRL= (F_CPU/BAUDRATE/16-1)%256; UBRRH= (F_CPU/BAUDRATE/16-1)/256; UCSRA = 0x00; UCSRB = (1RXCIE)|(1RXEN)|(1TXEN); /使能接收中断,使能接收,使能发送void put_c(unsigned char c) /发送采用查询方式while( !(UCSRA & (1UDRE) );UDR=c;void put_s(unsigned char *ptr)while (*ptr)put_c(*ptr+);put_c(0x0D);put_c(0x0A); /结尾发

27、送回车换行void elevator_down(void) PD66(0);PD55(1);OCR2=0xc8;void elevator_up(void) PD55(0);PD66(1);OCR2=0xc8;void elevator_stop(void) PD55(1);PD66(1);OCR2=0xff;beep();void refresh_display(void) char i;if(sec=10) /时间更新sec=0;sec10+;if(sec10=6)sec10=0;min+;if(min=10)min=0;min10+;if(min10=6)min10=0;hour+;if

28、(hour=12)hour=0;SPI_TX_BUF0=Seg7Tableaim_layer;SPI_TX_BUF1=Seg7Tablesec;SPI_TX_BUF2=Seg7Tablesec10;SPI_TX_BUF3=Seg7Tablemin;SPI_TX_BUF4=Seg7Tablemin10;SPI_TX_BUF5=Seg7Tablehour;SPI_TX_BUF6=Seg7Tablecurrent_layer;for(i=0;i10;i+) SPI_MasterTransmit(SPI_TX_BUFi);/0xffSIGNAL(SIG_OVERFLOW2) /定时器2溢出中断服务程序

29、/*1.系统计时,sec一秒钟加1;2.显示刷新计时,display_refresh_flag=1时,表示刷新时间到.刷新后display_refresh_flag要清0;3.moter_cntr计数,moter_cntr_c=1时开始计数,moter_cntr由外部清,4.5秒钟计时.pause_time_cntr_c=1时开始计时,pause_time_over置1时计时结束, pause_time_over,清0后再开始下一轮计时.*/-系统计时-time_cntr+;if(time_cntr=3906)sec+;time_cntr=0;/-/=显示刷新=display_refresh_

30、cntr+;if(1300=display_refresh_cntr) /300ms刷新一次. display_refresh_cntr=0;display_refresh_flag=1; /=/+控制计数+if(moter_cntr_c) /电机控制脉冲计数 moter_cntr+;/+if(pause_time_cntr_c) /停止5秒计时 pause_time_cntr+;if(pause_time_cntr=19531) pause_time_cntr=0;pause_time_cntr_c=0;pause_time_over=1;/+SIGNAL(SIG_INTERRUPT0) /

31、外部中断0服务程序if(state!=UP) elevator_stop();pause_time_cntr_c=1; /停止状态计时开始paused =1;current_layer=1;current_num=0;SPI_TX_BUF7&=(10); /内部呼叫指示清除SPI_TX_BUF9&=(10); /1楼向上呼叫指示清除callin0=0; /一楼目的楼层清除callup0=0;SPI_TX_BUF7|= (16);SPI_TX_BUF7&=(1fullspeed)if(OCR2=252) OCR2+=3;else OCR2=255;if(moter_cntrfloor6num)&

32、(state=UP) elevator_stop();paused = 1;pause_time_cntr_c=1;/启动(停止时间)计数 current_layer=6; SPI_TX_BUF7&=(15); /内部呼叫指示清除 SPI_TX_BUF8&=(11); /6楼向下呼叫指示清除 callin5=0; /楼目的楼层清除 calldown5=0; state = PAUSE;SPI_TX_BUF7&=(16); SPI_TX_BUF7|= (1=16) RX_index=0;/防止数组溢出void call_reg(void)/呼叫登记 if(0xff!=PINA) switch(P

33、INA)/key1key5为内部呼叫,条件符合直接记入目的队列case key1 : if(UP!=state)&(current_layer1) SPI_TX_BUF7|=12)|(2!=state)&(current_layer2) SPI_TX_BUF7|=13)|(2!=state)&(current_layer3) SPI_TX_BUF7|=14)|(2!=state)&(current_layer4) SPI_TX_BUF7|=15)|(2!=state)&(current_layer5) SPI_TX_BUF7|=14;callin4=1;break;case key6 : if

34、(2!=state)&(current_layer5) SPI_TX_BUF7|=15;callin5=1;break; /以下为外部呼叫case up1: if(1=current_layer) break;SPI_TX_BUF9|=10;callup0=1;break;case down2 : if(2=current_layer) break; SPI_TX_BUF9|=11;calldown1=1;break;case up2 :if(2=current_layer) break;SPI_TX_BUF9|=12;callup1=1;break;case down3: if(3=curr

35、ent_layer) break;SPI_TX_BUF9|=13;calldown2=1;break;case up3: if(3=current_layer) break;SPI_TX_BUF9|=14;callup2=1;break;case down4: if(4=current_layer) break;SPI_TX_BUF9|=15;calldown3=1;break;case up4 : if(4=current_layer) break;SPI_TX_BUF9|=16;callup3=1;break;case down5:if(5=current_layer) break;SPI

36、_TX_BUF8|=13;calldown4=1;break;case up5: if(5=current_layer) break;SPI_TX_BUF8|=10;callup4=1;break;case down6: if(6=current_layer) break;SPI_TX_BUF8|=11;calldown5=1; break; default:break; void gen_aim_layer(void)/产生下一目标楼层 char i;if(UP=state)/上升for(i=current_layer;i=6) for(i=5;i=current_layer;i-) if(

37、calldowni=1) aim_layer=i+1; /锁定目标层后退出.break;if(DOWN=state)if(current_layer=2)for(i=(current_layer-2);i=0;i-) if(callini=1|calldowni=1) aim_layer=i+1; /锁定目标层后退出.break; if(i(current_layer-2);i+)if(callupi=1) aim_layer=i+1; /锁定目标层后退出.break; if(PAUSE=state) for(i=0;i6) if_reach_aim_layer();aim_layer=0;s

38、tate=PAUSE;void if_reach_aim_layer(void)/到达目标楼层后,注销对应项callincurrent_layer-1=0;if(state=UP) callupcurrent_layer-1=0;if(state=DOWN) calldowncurrent_layer-1=0;switch(current_layer)case 1:SPI_TX_BUF7&=(10);SPI_TX_BUF9&=(10);break;case 2:SPI_TX_BUF7&=(11);if(1=state) SPI_TX_BUF9&=(12);if(2=state) SPI_TX_

39、BUF9&=(11);break;case 3: SPI_TX_BUF7&=(12);if(1=state) SPI_TX_BUF9&=(14);if(2=state) SPI_TX_BUF9&=(13);break;case 4: SPI_TX_BUF7&=(13);if(1=state) SPI_TX_BUF9&=(16);if(2=state) SPI_TX_BUF9&=(15);break;case 5: SPI_TX_BUF7&=(14);if(1=state) SPI_TX_BUF8&=(10);if(2=state) SPI_TX_BUF8&=(13);break;case 6: SPI_TX_BUF8&=(11);SPI_TX_BUF7&=(15);callupcurrent_layer-1=0;state=0;break;default : break; void e

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!