乒乓球升降高度自动控制装置G题论文_第1页
乒乓球升降高度自动控制装置G题论文_第2页
乒乓球升降高度自动控制装置G题论文_第3页
乒乓球升降高度自动控制装置G题论文_第4页
乒乓球升降高度自动控制装置G题论文_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、题目名称:乒乓球升降高度自动控制装置(G题) 摘 要本装置由两部分组成,即乒乓球升降高度设置和显示单元A、乒乓球升降高度控制单元B。A与B之间采用双向无线通讯方式收发控制信息,在单元A上能设定乒乓球升降高度、停留时间、动作次序等,并能够实时显示乒乓球高度及其误差信息以及动作状态等;单元B可以接收单元A的信息,通过超声波测距模块乒乓球的升降,并将乒乓球的动作信息通过无线传输技术反馈给A,使信息可以在单元A中显示,乒乓球在升降控制过程中不需要进行任何的人工干预。AbstractThis device consists of two parts,That table tennis lifting h

2、eight setting and display unit A、Table tennis lifting height control unit B.Between A and B by two-way wireless communication mode and control information,In the unit on A can set up table tennis lifting height、residence time、residence time、Action sequence, etc,And the ability to real-time display t

3、able tennis height and the error information and motion state, etc;Unit B can receive A unit of information,Through the ultrasonic ranging module table tennis lifting,And the table tennis movement information through the wireless transmission technology feedback to A,Make information can be shown in

4、 A unit,Table tennis in the elevator control process do not need to undertake any manual intervention.关键词:双向无线通信 超声波测距模块 无线传输技术 目 录题目名称:乒乓球升降高度自动控制装置(G题)2一、方案分析与论证41.1 小球装置41.2 控制装置5二、系统设计与分析62.1 总体设计62.2 局部设计6三、系统测试10四、结论11五、附件13一、方案分析与论证1.1 小球装置方案一:利用红外收发对管,测试乒乓球位置红外对管是红外线发射管与光敏接收管,或者红外线接收管,或者红外线接

5、收头配合在一起使用时候的总称。发射管与接收管之间的红外光束被完全遮断或按给定百分比遮断时能产生报警状态。通过红外收发对管发射、接收红外线来检测发射端与接收端之间是否有障碍。将红外收发对管与单片机连接,通过单片机来处理接收信息。乒乓球在细管中运动,在细管两侧安装两排红外收发对管,将发射端与接收端置于同一条水平线上,且距离在可接收范围之内。当电源接通时,发射管发出红外线,并与接收管保持通信,这时两者电压发生变化,当遇到乒乓球时,两者压降没有改变,在发射端或者接收端安装一个发光二级管,通过发光二极管的亮灭就能确定乒乓球的位置。从理论上来讲,这种办法可以达到测量乒乓球高度的目的,但是红外收发对管的连接

6、与安装非常复杂,经测量,流过发光二极管的电流非常小,导致发光二级管不能发光,所以此方案无法实施。方案二:在管子底部安装超声波测距模块,测试小球位置乒乓球在细管中运动,在细管底部安装超声波测距模块,其工作原理如(图1-1)所示。当接通电源时,超声波测距模块的发射器会源源不断的发出超声波,乒乓球运动时,超声波达到乒乓球上会反射信号,并将信号返回给接收器,然后通过单片机处理,在LCD上实时显示相应数据。超声波检测往往比较迅速、方便、易于做到实时控制,测量精度高,能实现乒乓球位置的检测。所以此方案为最佳方案!障碍物89C52 单片机发射器接收器图1-1 超声波测距工作原理图1.2 控制装置方案一:通过

7、控制排风量来控制风速乒乓球在细管中运动,在细管口安装风扇与发动机,通过单片机控制发动机转速来控制风扇速度,进而控制风速,可达到控制乒乓球上升或下降的目的。电动机的基本工作原理是:通电导体在磁场中产生电磁力,使导体产生旋转运动,实现了电能与机械能的转变。用电动机带动风扇运动,产生风力,从而实现乒乓球的上升或下降。发动机转速控制起来不稳定,难以控制,而且不容易实现,风力忽大忽小,要控制乒乓球缓慢柔和的运动是非常困难的。所以此方案不可行。方案二:通过进风量(转动通风口挡板)来控制风速乒乓球在细管中运动,在细管口安装一个硬质薄片作为挡风板,通过单片机控制步进电机转动来控制挡板转动角度,控制进风量进而控

8、制风速,可达到乒乓球上升或下降的目的。步进电机是一种感应电机,它的工作原理是利用电子电路,将直流电变成分时供电的,多相时序控制电流,用这种电流为步进电机供电,步进电机才能正常工作,驱动器就是为步进电机分时供电的,多相时序控制器。单片机控制步进电机转动是比较容易实现的,而且所使用的步进电机每次可转动0.18°,可实现步进电机带动挡板缓慢的转动,乒乓球所受到的风力比较容易控制,从而控制乒乓球柔和缓慢运动,达到预期效果。所以此方案可行!二、系统设计与分析2.1 总体设计系统结构框图如(图2-1)所示:图2-1 系统结构框图整体方案描述:根据题目要求,为便于实现乒乓球升降高度自动控制,本装置

9、应分为乒乓球升降高度设置和显示单元A和乒乓球升降高度控制单元两个单元,A单元由单片机、LCD液晶显示器、矩阵键盘、无线收发等模块构成,B单元由单片机、吹风装置、步进电机、细长管,乒乓球等构成。采用双向无线通信模式传递信息,用89C52单片机控制系统,用矩阵键盘输入指令,用LCD液晶显示器显示数据,用步进电机控制挡板进而调节风速,用超声波测距模块控制乒乓球高度。整个装置分为A与B两个单元。在单元A中主要实现目标的设定、数据显示,以及与B通信。在B单元中主要实现乒乓球的高度控制以及与A通信。2.2 局部设计1、 LCD液晶显示器此模块为整个系统的显示装置,通过单片机来控制。LCD液晶显示器也叫16

10、02液晶(如图2-2),它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。图2-2 LCD液晶二、矩阵键盘此模块为整个系统的指令输入装置,通过单片机控制。矩阵键盘又称为行列式键盘(如图2-3),它是用4条I/O线作为行线,4条I/O线作为列线组成的键盘。在行线和列线的每一个交叉点上,设置一个按键。这样键盘中按键的个数是4×4个。这

11、种行列式键盘结构能够有效地提高单片机系统中I/O口的利用率。图2-3 矩阵键盘LCD显示与矩阵键盘电路图:图2-4 LCD显示与矩阵键盘电路图2、 风源装置用直流电动机带动风叶旋转,从而产生风。用风力来带动乒乓球运动。电动机(Motors)是把电能转换成机械能的一种设备。它是利用通电线圈(也就是定子绕组)产生旋转磁场并作用于转子鼠笼式式闭合铝框形成磁电动力旋转扭矩。电动机按使用电源不同分为直流电动机和交流电动机,电力系统中的电动机大部分是交流电机,可以是同步电机或者是异步电机(电机定子磁场转速与转子旋转转速不保持同步速)。电动机主要由定子与转子组成,通电导线在磁场中受力运动的方向跟电流方向和磁

12、感线(磁场方向)方向有关。电动机工作原理是磁场对电流受力的作用,使电动机转动。本装置中使用直流电动机。原理图如(图2-5)所示:图2-5 风扇工作原理图3、 改变风力装置在细管的管口加一个薄片硬质挡板,然后用步进电机控制挡板转动,从而改变进风口的的大小,进而改变风力,改变乒乓球运动。步进电机基本原理:通常电机的转子为永磁体,当电流流过定子绕组时,定子绕组产生一矢量磁场。该磁场会带动转子旋转一角度,使得转子的一对磁场方向与定子的磁场方向一致。当定子的矢量磁场旋转一个角度。转子也随着该磁场转一个角度。每输入一个电脉冲,电动机转动一个角度前进一步。它输出的角位移与输入的脉冲数成正比、转速与脉冲频率成

13、正比。改变绕组通电的顺序,电机就会反转。所以可用控制脉冲数量、频率及电动机各相绕组的通电顺序来控制步进电机的转动。有关步进电机电路图如(图2-6)所示:图2-6 步进电机电路图4、 超声波测距装置在乒乓球运动路径最底部安装一个超声波测距模块(Y401 US-100),用来接收与发送小球运动情况,并与单片机之间进行双向通信。超声波测距原理:超声波测距原理是通过超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播时碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为v ,而根据计时器记录的测出发射和接收回波的时间差t ,就可以计算出发射

14、点距障碍物的距离S ,即: S = v·t /2 。US-100超声波测距模块(图2-7)可实现2cm4.5m的非接触测距功能,拥有2.45.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。六、无线双向通信装置本装置主要用S002 nRF24LO1+无线数传模块来实现A与B之间的无线双向通信,是整个作品的重要组成部分。nRF24LO1+(如图2-2-6)是一款工作在2.42.5GHz世界通用ISM频段的单片无线收发器芯片。无线收发器包括:频率发生器、增强型SchockBurstTM模式控制器、

15、功率放大器、晶体振荡器调制器、解调器。输出功率频道选择和协议的设置可以通过SPI接口进行设置。 图2-2-6极低的电流功耗,当工作在发射模式下发射功率为0dBm时电流消耗为11.3mA,接收模式时为13.5mA,掉线模式和待机模式下电流消耗更低。nRF24LO1+使用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。本装置中分别在A、B两个单元安装S002 nRF24LO1+无线数传模块,通过该模块使单片机之间进行通信,系统模式图如(图2-2-7)所示:信号无线 收发模块89C52单片机无线 收发模块89C52单片机 (图2-2-7)双向无线通信系统流程图如(图2-2-

16、8)所示:上电上电初始化单片机初始化单片机配置24L01接收模式配置24L01发射模式检测载波信号写数据并开启发送切换到下个频率发送是否收到应答信号?存在当前频点的载波信号? 否 否 是否收到应答信号?跳到下一个频率向串口传送数据 是 是 数据包 是 否 是否收到应答信号? 结束 接收端结束已关机或者 信号干扰严重 (图2-2-8)3、 系统测试1. 测试使用的仪器设备测试使用的仪器设备如表3-1所示。表3-1 测试使用的仪器设备序号名称数量备注1秒表一个用来测量LCD液晶显示器显示的时间2圆珠笔、本各一个用来记录数据装置全部安装完成后,接通电源,输入乒乓球的升降高度数据,然后按下开始键,同时

17、用秒表进行记时,与LCD液晶显示器显示的时间数据进行对比。同时,要看乒乓球升降的具体高度和在LCD液晶显示器上显示的高度以及举行键盘输入的数据进行对比。3.测试数据输入高度5cm10cm15cm20cm25cm30cm显示高度5cm10cm15cm20cm25cm30cm实际高度4.2cm9.8cm15.1cm20.0cm24.6cm30.0cm高度误差0.8cm0.2cm0.1cm0.0cm0.4cm0.0cmLCD显示时间3s6s9s12s16s21s实际时间3.6s6.8s8.2s12.8s15.12s22s时间误差0.6s0.8s0.8s0.8s0.88s1s2. 测试结果分析由测试数

18、据可知,题目中的要求本装置均可达到,且误差不超1cm,是比较精确的。乒乓球的运动缓慢融合,易于观察。并且整个运动过程都不需要人工干预。LCD液晶显示器能够实时显示信息。综上所述,本装置是非常可行、合理的。四、总结通过一系列的方案论证与分析,我们确定了一套比较合理的实施方案,方案流程图如图4-1-1所示:A单元: 单片机 89C524×4矩形键盘LCD 液晶显示器 输入 时间、距离 信息 显示 双向 通信nRF24l01无线通信模块 与B 通信 与A通信 nRF24l01无线通信模块风扇乒乓球装置 双 通 向 信 单片机 89C52 测试 乒乓球高度 控制 风速步进电机超声波测距模块

19、US-100 信息传递 控制转动 图4-1-1在本装置中,主要以单片机为控制中心,以C语言为基本语言,通过对各单元信息的接收与处理,完成了乒乓球上升、下降、连续起伏运动,并且在LCD显示器上能够显示出乒乓球的高度,以及停留的时间。当乒乓球的质量变大时,以上动作也均能完成。由于系统架构设计合理,功能电路实现较好,系统性能优良、稳定,较好地达到了题目要求的各项指标。五、附件(1) 原件清单元件名称元件型号元件数量单片机STC 89C512个双向无线收发模块S002 nRF24LO1+2对步进电机四项五线1个LCD液晶显示器16021个超声波测距模块Y401 US-1001个乒乓球2.8克2个乒乓球

20、14克2个(2) 参考文献1 彭伟.单片机C语言程序设计实训100例基于8051+Proteus仿真 北京:电子工业出版社, 2009. 2 朱清慧 张凤蕊等.Proteus 教程电子线路设计、制版与仿真 北京:清华大学出版社, 2011. 3 视频: 红外对射报警器电子制作 diy套件 散件演示 (3) 部分程序清单1、Led显示 超声波测距#include <reg51.h>sbit Trig=P20;/超声波发sbit Echo=P32;/超声波收sbit wlen=P27;sbit wlrs=P26;sbit RW=P25;#define uchar unsigned ch

21、ar#define uint unsigned intuint succeed_flag,timeL,timeH,test,time;uint LedOut10;uchar i,DelayCNT=0;uchar a="0123456789.L="uchar b=" WALL.E 1 "/*.延时程序,延时1ms.*/void delay(uchar z)uchar x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void delay_20us()uchar a;for(a=0;a<100;a+);/*.1602

22、命令函数.*/void write_com(uchar com)wlrs=0; /写命令0/写数据1RW=0; /读0/写1P0=com; /给1602送命令delay(5);wlen=1;delay(5);wlen=0;/*.1602数据函数.*/void write_date(uchar date)wlrs=1; RW=0;P0=date;delay(5);wlen=1;delay(5);wlen=0;void init()/1602初始化函数wlen=0;write_com(0x38);write_com(0x01);write_com(0x0c);write_com(0x04);/显示

23、数据转换程序void display(uint LedNumVal) if(+DelayCNT>=20) /控制数字变化速度 DelayCNT=0; /20个扫描周期清零一次 write_com(0x84); i=0; while(bi!='0') /显示字符 write_date(bi);i+; write_com(0x80+0x44); write_date(a11); write_com(0x80+0x45); write_date(a12); write_com(0x80+0x46); write_date(aLedNumVal%10000/1000); writ

24、e_com(0x80+0x47); write_date(a10); write_com(0x80+0x48); write_date(aLedNumVal%1000/100); write_com(0x80+0x49); write_date(aLedNumVal%100/10); write_com(0x80+0x4a); write_date(aLedNumVal%10);void main()uint distance;test =0;Trig=0;/首先拉低脉冲输入引脚EA=1; /打开总中断0TMOD=0x10; /定时器1,16位工作方式init();/1602初始化函数dela

25、y(10);while(1)EA=0; /关总中断Trig=1;/超声波输入端delay_20us();/延时20usTrig=0; /产生一个20us的脉冲while(Echo=0); /等待Echo回波引脚变高电平succeed_flag=0; /清测量成功标志EA=1;EX0=1; /打开外部中断0TH1=0; /定时器1清零TL1=0; /定时器1清零TF1=0; /计数溢出标志TR1=1; /启动定时器1delay(20); /等待测量的结果TR1=0; /关闭定时器1EX0=0; /关闭外部中断0if(succeed_flag=1)time=timeH*256+timeL;dist

26、ance=time*0.172; /厘米display(distance);if(succeed_flag=0)distance=0; /没有回波则清零/外部中断0,用做判断回波电平void exter() interrupt 0 / 外部中断0是0号timeH =TH1; /取出定时器的值timeL =TL1; /取出定时器的值succeed_flag=1;/至成功测量的标志EX0=0; /关闭外部中断/定时器1中断,用做超声波测距计时void timer1() interrupt 3TH1=0;TL1=0;2、步进电机 #include <reg51.h>sbit SET=P1

27、0;sbit ADD=P12;sbit SUB=P11; sbit AA=P13;sbit BB=P14; sbit CC=P15; sbit DD=P16; sbit EE=P17;sbit Pa=P34;sbit Pb=P35;sbit Pd=P37;sbit Pc=P36;unsigned char cnt;bit sec,key_mark,direct; shuzhi;void key();int n,speed,index;unsigned char step1=0x80,0x40,0x20,0x10,step2=0x80,0xc0,0x40,0x60,0x20,0x30,0x10,

28、0x90; void delay() unsigned char i,j; for(i=0;i<4;i+) for(j=0;j<100;j+); void key() if(!AA) /direct=!direct; shuzhi=5; elseif(!BB) /direct=!direct; shuzhi=10; elseif(!CC) /direct=!direct; shuzhi=15; elseif(!DD) /direct=!direct; shuzhi=20; elseif(!EE) /direct=!direct; shuzhi=30; else if(!ADD) i

29、f(+speed>2000) speed=2000; else if(!SUB) if(-speed<1) speed=1; P2=speed;void t0() interrupt 1 TH0=-50000>>8;TL0=-50000;if(+cnt>=speed) cnt=0; sec=1;void init_t0() TMOD|=0X01;IE|=0X82;TR0=1; void main() float b; b=30; /待输入的超声波返回值 init_t0();speed=10; while(1) if(!AA | !ADD | !SUB|!BB|!C

30、C|!DD|!EE) && !key_mark) delay(); if(!AA | !ADD | !SUB|!BB|!CC|!DD|!EE) key(); key_mark=1; else if(AA && ADD && SUB &&BB&&CC&&DD&&EE) key_mark=0; if(sec) sec=0; if(b<(shuzhi+1) if(+index>3) index=0; if(b>shuzhi-1) if(-index<0) index

31、=3; P3=step1index; 3、矩形键盘与1602#include<reg52.h>#include<math.h>#include<absacc.h>#define uchar unsigned char#define uint unsigned int/*定义变量区*sbit dula=P26; /关闭数码管显示之用sbit wela=P27;sbit lcden=P34; /LCD使能信号sbit lcdrs=P35; /LCD数据/命令选择信号uchar tab_key50;uchar code tab="0123456789ab

32、cdef" uchar n=0,temp,key;/*函数声明区*void lcd_disp(); /LCD显示函数void lcd_init(); /LCD初始化函数void write_com(uchar); /写命令函数void write_data(uchar); /写数据函数void delay(uint); /延迟函数void key_scan(); /键盘扫描函数void key_manage1(); /键盘功能分配函数void key_manage2(); void key_manage3(); void key_manage4(); void key_manage5

33、(); void key_manage6(); void key_manage7(); void key_manage8(); void key_manage9(); void key_manage10();void key_manage11(); void key_manage12(); void key_manage13(); void key_manage14(); void key_manage15(); void key_manage16();/*主函数开始*void main() lcd_init(); write_com(1); while(1) key_scan(); lcd_

34、disp(); /*LCD显示函数开始*void lcd_disp() uchar a,i=0; write_com(0x80); for(i=0;i<n;i+) a=tab_keyi; write_data(taba); /*LCD初始化函数开始*void lcd_init() dula=0; wela=0; / 关闭数码管显示 lcden=0; write_com(0x38); /设置显示模式:16X2,5X7,8位数据接口 write_com(0x0c); /开显示,显示光标,光标闪烁 write_com(0x06); /读写一个字符后,地址指针及光标加一,且光标加一整屏显示不移动

35、 write_com(0x80); /设置光标指针/*写命令函数开始*void write_com(uchar com) lcdrs=0; /低电平写命令 P0=com; /写入命令 delay(3); /延时约3ms delay(5); /延时约5ms lcden=0; /LCD使能端拉低电平/*写数据函数开始*void write_data(uchar dat) lcdrs=1; /低电平写数据 P0=dat; /写入命令 delay(3); /延时约3ms lcden=1; /LCD使能端置高电平 delay(5); /延时约5ms lcden=0; /LCD使能端拉低电平/*键盘扫描函

36、数开始*void key_scan() /*扫描第一行* P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(100); if(temp!=0xf0) temp=P3; switch(temp) case 0xee: key_manage1(); break; case 0xde: key_manage2(); break; case 0xbe: key_manage3(); break; case 0x7e: key_manage4(); break; while(temp!=0xf0) temp=P3; temp=temp&

37、amp;0xf0; /*扫描第二行* P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(100); if(temp!=0xf0) temp=P3; switch(temp) case 0xed: key_manage5(); break; case 0xdd: key_manage6(); break; case 0xbd: key_manage7(); break; case 0x7d: key_manage8(); break; while(temp!=0xf0) temp=P3; temp=temp&0xf0; /*扫描第三行* P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(100); if(temp!=0xf0) temp=P

温馨提示

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

评论

0/150

提交评论