基于传统图书馆的智能整架系统
复旦大学附属中学
1.1.1电路部分(Circuits )
整个机器人的电路部分由四个单元组成:传感单元,通信单元,控制器单元,驱动单元.传感单元主要分两部分,其一是条形码扫描器,负责监测所要存取的书,其二是各种<a name=baidusnap0></a><B style=\'color:black;background-color:#ffff66\'>位置传感器</B>,将对机器人的手臂,书架,轨道位置,运行线路做出反应.通信单元主要将电脑的信号传送到单片机,主要由TTL-RS232起转换作用,是由一个MAX232集成电路块和电容组成的.控制器单元主要对整个机器人系统进行控制,采用ATMEL的51型单片机.驱动单元会根据信号驱动对应的马达,驱动单元有8个马达,1个电磁阀组成,马达驱动主要采用了74LS273锁存器和L293D驱动模块控制.而电磁阀采用光电耦合的方式来控制.
整个电路的工作过程是这样的:机器人接到取书的命令后,驱动底盘马达行动,开始依次逐一扫描,寻找所要存取的书籍,当条形码扫描仪探测的所要找的书后,机器人停下,通过单片机告知计算机,由计算机给出行动命令,通过通信单元传输到单片机,经过解码后,配合各种<B style=\'color:black;background-color:#ffff66\'>位置传感器</B>给出的信息做出动作,给驱动单元驱动信号.完成相应的取书,还书工作.
执行过程如下
传感器部分.由于书被放入书架后必须被感知,而且将按需放入不同的储书格,还书时也需要对书的行进路线加以了解,所以必须采用至少3个触感分别对书的前进,后退作限位,对书的侧移作定位,使书的行进准确无误.为了达到这个目的,且不在程序中做无谓的循环检查浪费资源,本人采用了中断的方式,由于3个触感位于不同部位,不可能同时被触发,所以共用一个中断源,以达到节省中断资源的效果.3个中断共同接到INT0,触发中断,再分别接出一根线到P2.0,P2.1,P2.2口,再通过程序进行判断,做出不同的动作.
传感器部分还包括一个电流检测装置,由于取书和放书时,带动手臂夹紧的马达由于所受阻力作用使马达负载加大使流经马达的电流增大,所以设置这么一个电流检测装置可以对手臂的位置进行检测,当手臂所受阻力超过某一临界值时,即认为手臂已经夹紧书时,电流的变化通过MAX471被检测到,在输出端输出高电压,再通过一个反相器,接入单片机的INT1中断口,引起中断处理,对机器人的下一步动作做出指示.该集成块的原理图及电路图如下,电流从RS ,RS (2脚,3脚)流入,RS-,RS-(6脚,7脚)流出,通过调节8脚上的电阻值,可以调到一个临界阻值,使输出电压为所需的电平,电阻与电压之间的关系满足Rout=Vout/(Iload*500uA/A).这是理想的情况,但在实践中却发现,电流的变化量并不与马达所受阻力呈确定的线性变化,实际情况中经常会出现电流的突变,导致误触发.所以为保证机器人运作的精确性,最终并没有采用这个装置,而是由Visual Basic 数据库中所含的关于书的厚度的参数来决定手臂的开合量.
MAX471电路图
MAX471原理图
通信单元主要起TTL-RS232转换作用,是由一个MAX232集成电路块和电容组成的.电路图如下
控制单元主要由单片机的程序控制.详情见下文单片机程序部分
在驱动单元中,本人原来用了电磁继电器来控制电机,但由于控制一个电机需要两个继电器,体积大,控制上非常不方便,也不够可靠.最后,通过查资料发现,有集成块可以直接驱动电机,所以最后采用这种方法驱动电机.驱动电机的集成块L293D有六个输入端,可控制两个马达,每个马达各占用三个输入端——1A,2A,1-2EN,其中1A和2A是控制马达正转还是反转的,EN是开关端口,始终呈\"开\"的状态.在这里本人对每个马达仅用了两个控制器的I/O口进行控制,输出0,1,1,0,0,0分别代表马达正转,反转和停止,这样每控制一个马达需要占用2个I/O口,但通过灵活应用74LS273锁存器,可以用8个I/O口控制8个马达,达到节省控制器的I/O口的目的.
74LS273锁存器的作用.由于单片机8路输出要控制8个马达的正传,反转,停止,常规思路肯定不行,所以本人采用了这样的一种方法,使用P0.0----P0.7作为输出,再用P1.0,P1.1输出控制信号,即单片机8路输出的同时,再加上一个\"载波\"控制信号,接到锁存器的使能端,设1到4号马达由锁存器A控制,锁存器再输出到L293D控制电机,则当单片机发出不同的控制指令时,先后发出两条指令,分别对锁存器A和锁存器B发生作用,对锁存器A和锁存器B所控制的马达的动作进行定义.由于两条指令间隔极短,可近似认为是同步发出.即先对锁存器A的使能端发出脉冲信号,当有一个上升沿时,锁存器A被激活,发生作用,对L293D进行输出,间隔很小的一段时间后,再对锁存器B发出指令,这样就可以用四句语句对8路输出进行控制,达到控制8个马达的目的.
驱动模块另一个主要部分是底盘的驱动部分,起初本人采用与驱动马达相同的思路,即不采用继电器,而用集成块来驱动,但由于该机器人自重过大,且手边没有合适的马达,该马达空载时电流为200毫安,当该机器人贴地行走时,电流达到2.7安培之巨,用L293D无法带动,由于要加大电流输出的能力,我们首先想到在原来1块L293D的基础上并联一块L293D,达到增大电流输出的效果,但实践证明该方法并不起作用,输出电流并没有达到理想的增大效果,发热量却大得惊人,由此想到采有更大输出电流的集成块,经过查阅资料发现L298的最大输出电流达到4安培,可以满足驱动底盘马达的需要.于是采用了L298作为驱动集成块.该集成块的示意图及原理图如下,尤其值得注意的是,该集成块的引脚排布不同于其他集成块,是交错的排布的,安装时应加以注意.
L293D内部结构图
L293D实物图
由于大电流的存在,导致发热量急剧增加,所以本人加装了散热片,并与底盘铝板相连,增加了散热效率.
驱动部分另一个重要单元就是通过控制电磁阀来带动气泵使机器人可以上下移动以适应不同层次存取书籍的要求,在该单元电路中,本人采用了光电耦合的方式来控制电磁阀,既安全又可靠.
整个电路的电路图见附录.
1.1.2单片机程序部分(Assemble Language in Micro-processors)
本来,单片机就具有比较强大的运算处理能力,可以独立作为运算器,控制器使用,但鉴于操作对象的特殊性,即图书馆中的书目有大量的数据需要记录,用单片机或用片外存储器都有一定的局限性,对记录大量可变更的数据有一定难度,而且在实际操作中考虑到visual basic具有较强的数据库处理能力,于是本人打破常规,将visual basic作为主控部分,对单片机的行动做出指挥,而单片机则成为一个执行者.
单片机的程序主要有以下几个部分:设置部分,通信部分,译码部分,操纵部分.其中设置部分主要是设置单片机的中断模式,时钟模式,串行通信模式以及时钟初值等一些内容,通信部分是一个串行中断服务程序,主要执行收发信息的功能,编码部分对收发的信息进行编码解码,使之成为一方需要传递的命令.操纵部分是由一系列对I/O口操作的语句组成的,旨在使马达完成所要求的动作.
设置部分,包括端口,中断的初始化,
MOV TMOD, #20H
MOV TL1, #0FAH
MOV TH1, #0FAH
MOV PCON, #00H
MOV SCON, #01010000B
SETB EA
SETB IT0
SETB IT1
SETB TR1
SETB EX0
SETB EX1
SETB ES
通信部分
SSEV: PUSH ACC
PUSH PSW
CLR ES
JB TI, TINT
JB RI, RINT
AJMP INT_OVER
TINT: CLR TI
AJMP INT_OVER
RINT: CLR RI
MOV A, SBUF
MOV COMP, A
CLR C
MOV A, COMP
SUBB A, #41H
JNZ NEXT1
LCALL R_A
AJMP INT_OVER
译码部分
NEXT1: CLR C
MOV A, COMP
SUBB A, #42H
JNZ NEXT2
LCALL R_B
AJMP INT_OVER 收\"A\"
NEXT2: CLR C
MOV A, COMP
SUBB A, #43H
JNZ NEXT3
LCALL R_C
AJMP INT_OVER 收\"B\"
.
.
.
.
..
.
INT_OVER:
POP PSW
POP ACC
RETI
操纵部分
R_A: MOV P1, #0FFH
LCALL PULSE1
RET
R_B: MOV P1, #00H
LCALL PULSE1
RET
.
.
.
.
.
.
需要说明的是,PULSE1,PULSE2分别是在P1.0,P1.1口输出脉冲信号的子程序,用来控制锁存器74LS273的使能端.
1.1.3总结与展望
不可否认,在完成作品的过程中充满艰辛,每跨出一步都要付出极大的努力未知的困难不断出现在面前等待我们注意解决.作品不可避免的存在这样那样的缺憾,在硬件软件上都有改进的余地,例如,硬件上,面对大量马达的控制,可以设计出更为合理的电路图;在探头上安装微型摄像头,把摄入的每一桢图象都传到计算机里处理,通过模式识别,判断出书与书之间的缝隙.软件上,面对大量的译码工作,为避免不断的反复循环,完全可以用查表的方式来对指令做出判断.经过实践的检测,发现这种将单片机只作为执行器的效果并不理想,最理想的方案是控制部分完全没有电脑的介入,电脑只作为数据库应用,存储书的信息,而传感,控制,驱动部分完全集中于单片机,但由于时间仓促,推翻原有设想从头再来需要大量时间,在日后的设计中可以加以改进.使之更具有可实践性.可以想见,该机器人在经过不断的更新与改进后,将是充满希望的一项作品.
参考文献(References)
胡汉才.单片机原理及其接口技术.北京:清华大学出版社,1996.7
高鹏,安涛,寇怀成.Protel99入门与提高.北京:人民邮电出版社,2002.2
梁廷贵,现代集成电路实用手册---锁存器分册
何立民,点片机系列教程,北京航空航天大学出版社,1999.12
曹巧媛,单片机原理及应用,电子工业出版社,2001.10
鸣谢(Acknowledgment)
在这次研究过程中,得到了复旦附中,复旦大学多位老师的帮助以及许多关心我们项目的老师的指点和支持,在这里向他们表示感谢.
附:完整电路图
·上一篇:汽油喷射技术和涡轮增压技术是近年来发动机技术领域的...复旦大学附属中学
1.1.1电路部分(Circuits )
整个机器人的电路部分由四个单元组成:传感单元,通信单元,控制器单元,驱动单元.传感单元主要分两部分,其一是条形码扫描器,负责监测所要存取的书,其二是各种<a name=baidusnap0></a><B style=\'color:black;background-color:#ffff66\'>位置传感器</B>,将对机器人的手臂,书架,轨道位置,运行线路做出反应.通信单元主要将电脑的信号传送到单片机,主要由TTL-RS232起转换作用,是由一个MAX232集成电路块和电容组成的.控制器单元主要对整个机器人系统进行控制,采用ATMEL的51型单片机.驱动单元会根据信号驱动对应的马达,驱动单元有8个马达,1个电磁阀组成,马达驱动主要采用了74LS273锁存器和L293D驱动模块控制.而电磁阀采用光电耦合的方式来控制.
整个电路的工作过程是这样的:机器人接到取书的命令后,驱动底盘马达行动,开始依次逐一扫描,寻找所要存取的书籍,当条形码扫描仪探测的所要找的书后,机器人停下,通过单片机告知计算机,由计算机给出行动命令,通过通信单元传输到单片机,经过解码后,配合各种<B style=\'color:black;background-color:#ffff66\'>位置传感器</B>给出的信息做出动作,给驱动单元驱动信号.完成相应的取书,还书工作.
执行过程如下
传感器部分.由于书被放入书架后必须被感知,而且将按需放入不同的储书格,还书时也需要对书的行进路线加以了解,所以必须采用至少3个触感分别对书的前进,后退作限位,对书的侧移作定位,使书的行进准确无误.为了达到这个目的,且不在程序中做无谓的循环检查浪费资源,本人采用了中断的方式,由于3个触感位于不同部位,不可能同时被触发,所以共用一个中断源,以达到节省中断资源的效果.3个中断共同接到INT0,触发中断,再分别接出一根线到P2.0,P2.1,P2.2口,再通过程序进行判断,做出不同的动作.
传感器部分还包括一个电流检测装置,由于取书和放书时,带动手臂夹紧的马达由于所受阻力作用使马达负载加大使流经马达的电流增大,所以设置这么一个电流检测装置可以对手臂的位置进行检测,当手臂所受阻力超过某一临界值时,即认为手臂已经夹紧书时,电流的变化通过MAX471被检测到,在输出端输出高电压,再通过一个反相器,接入单片机的INT1中断口,引起中断处理,对机器人的下一步动作做出指示.该集成块的原理图及电路图如下,电流从RS ,RS (2脚,3脚)流入,RS-,RS-(6脚,7脚)流出,通过调节8脚上的电阻值,可以调到一个临界阻值,使输出电压为所需的电平,电阻与电压之间的关系满足Rout=Vout/(Iload*500uA/A).这是理想的情况,但在实践中却发现,电流的变化量并不与马达所受阻力呈确定的线性变化,实际情况中经常会出现电流的突变,导致误触发.所以为保证机器人运作的精确性,最终并没有采用这个装置,而是由Visual Basic 数据库中所含的关于书的厚度的参数来决定手臂的开合量.
MAX471电路图
MAX471原理图
通信单元主要起TTL-RS232转换作用,是由一个MAX232集成电路块和电容组成的.电路图如下
控制单元主要由单片机的程序控制.详情见下文单片机程序部分
在驱动单元中,本人原来用了电磁继电器来控制电机,但由于控制一个电机需要两个继电器,体积大,控制上非常不方便,也不够可靠.最后,通过查资料发现,有集成块可以直接驱动电机,所以最后采用这种方法驱动电机.驱动电机的集成块L293D有六个输入端,可控制两个马达,每个马达各占用三个输入端——1A,2A,1-2EN,其中1A和2A是控制马达正转还是反转的,EN是开关端口,始终呈\"开\"的状态.在这里本人对每个马达仅用了两个控制器的I/O口进行控制,输出0,1,1,0,0,0分别代表马达正转,反转和停止,这样每控制一个马达需要占用2个I/O口,但通过灵活应用74LS273锁存器,可以用8个I/O口控制8个马达,达到节省控制器的I/O口的目的.
74LS273锁存器的作用.由于单片机8路输出要控制8个马达的正传,反转,停止,常规思路肯定不行,所以本人采用了这样的一种方法,使用P0.0----P0.7作为输出,再用P1.0,P1.1输出控制信号,即单片机8路输出的同时,再加上一个\"载波\"控制信号,接到锁存器的使能端,设1到4号马达由锁存器A控制,锁存器再输出到L293D控制电机,则当单片机发出不同的控制指令时,先后发出两条指令,分别对锁存器A和锁存器B发生作用,对锁存器A和锁存器B所控制的马达的动作进行定义.由于两条指令间隔极短,可近似认为是同步发出.即先对锁存器A的使能端发出脉冲信号,当有一个上升沿时,锁存器A被激活,发生作用,对L293D进行输出,间隔很小的一段时间后,再对锁存器B发出指令,这样就可以用四句语句对8路输出进行控制,达到控制8个马达的目的.
驱动模块另一个主要部分是底盘的驱动部分,起初本人采用与驱动马达相同的思路,即不采用继电器,而用集成块来驱动,但由于该机器人自重过大,且手边没有合适的马达,该马达空载时电流为200毫安,当该机器人贴地行走时,电流达到2.7安培之巨,用L293D无法带动,由于要加大电流输出的能力,我们首先想到在原来1块L293D的基础上并联一块L293D,达到增大电流输出的效果,但实践证明该方法并不起作用,输出电流并没有达到理想的增大效果,发热量却大得惊人,由此想到采有更大输出电流的集成块,经过查阅资料发现L298的最大输出电流达到4安培,可以满足驱动底盘马达的需要.于是采用了L298作为驱动集成块.该集成块的示意图及原理图如下,尤其值得注意的是,该集成块的引脚排布不同于其他集成块,是交错的排布的,安装时应加以注意.
L293D内部结构图
L293D实物图
由于大电流的存在,导致发热量急剧增加,所以本人加装了散热片,并与底盘铝板相连,增加了散热效率.
驱动部分另一个重要单元就是通过控制电磁阀来带动气泵使机器人可以上下移动以适应不同层次存取书籍的要求,在该单元电路中,本人采用了光电耦合的方式来控制电磁阀,既安全又可靠.
整个电路的电路图见附录.
1.1.2单片机程序部分(Assemble Language in Micro-processors)
本来,单片机就具有比较强大的运算处理能力,可以独立作为运算器,控制器使用,但鉴于操作对象的特殊性,即图书馆中的书目有大量的数据需要记录,用单片机或用片外存储器都有一定的局限性,对记录大量可变更的数据有一定难度,而且在实际操作中考虑到visual basic具有较强的数据库处理能力,于是本人打破常规,将visual basic作为主控部分,对单片机的行动做出指挥,而单片机则成为一个执行者.
单片机的程序主要有以下几个部分:设置部分,通信部分,译码部分,操纵部分.其中设置部分主要是设置单片机的中断模式,时钟模式,串行通信模式以及时钟初值等一些内容,通信部分是一个串行中断服务程序,主要执行收发信息的功能,编码部分对收发的信息进行编码解码,使之成为一方需要传递的命令.操纵部分是由一系列对I/O口操作的语句组成的,旨在使马达完成所要求的动作.
设置部分,包括端口,中断的初始化,
MOV TMOD, #20H
MOV TL1, #0FAH
MOV TH1, #0FAH
MOV PCON, #00H
MOV SCON, #01010000B
SETB EA
SETB IT0
SETB IT1
SETB TR1
SETB EX0
SETB EX1
SETB ES
通信部分
SSEV: PUSH ACC
PUSH PSW
CLR ES
JB TI, TINT
JB RI, RINT
AJMP INT_OVER
TINT: CLR TI
AJMP INT_OVER
RINT: CLR RI
MOV A, SBUF
MOV COMP, A
CLR C
MOV A, COMP
SUBB A, #41H
JNZ NEXT1
LCALL R_A
AJMP INT_OVER
译码部分
NEXT1: CLR C
MOV A, COMP
SUBB A, #42H
JNZ NEXT2
LCALL R_B
AJMP INT_OVER 收\"A\"
NEXT2: CLR C
MOV A, COMP
SUBB A, #43H
JNZ NEXT3
LCALL R_C
AJMP INT_OVER 收\"B\"
.
.
.
.
..
.
INT_OVER:
POP PSW
POP ACC
RETI
操纵部分
R_A: MOV P1, #0FFH
LCALL PULSE1
RET
R_B: MOV P1, #00H
LCALL PULSE1
RET
.
.
.
.
.
.
需要说明的是,PULSE1,PULSE2分别是在P1.0,P1.1口输出脉冲信号的子程序,用来控制锁存器74LS273的使能端.
1.1.3总结与展望
不可否认,在完成作品的过程中充满艰辛,每跨出一步都要付出极大的努力未知的困难不断出现在面前等待我们注意解决.作品不可避免的存在这样那样的缺憾,在硬件软件上都有改进的余地,例如,硬件上,面对大量马达的控制,可以设计出更为合理的电路图;在探头上安装微型摄像头,把摄入的每一桢图象都传到计算机里处理,通过模式识别,判断出书与书之间的缝隙.软件上,面对大量的译码工作,为避免不断的反复循环,完全可以用查表的方式来对指令做出判断.经过实践的检测,发现这种将单片机只作为执行器的效果并不理想,最理想的方案是控制部分完全没有电脑的介入,电脑只作为数据库应用,存储书的信息,而传感,控制,驱动部分完全集中于单片机,但由于时间仓促,推翻原有设想从头再来需要大量时间,在日后的设计中可以加以改进.使之更具有可实践性.可以想见,该机器人在经过不断的更新与改进后,将是充满希望的一项作品.
参考文献(References)
胡汉才.单片机原理及其接口技术.北京:清华大学出版社,1996.7
高鹏,安涛,寇怀成.Protel99入门与提高.北京:人民邮电出版社,2002.2
梁廷贵,现代集成电路实用手册---锁存器分册
何立民,点片机系列教程,北京航空航天大学出版社,1999.12
曹巧媛,单片机原理及应用,电子工业出版社,2001.10
鸣谢(Acknowledgment)
在这次研究过程中,得到了复旦附中,复旦大学多位老师的帮助以及许多关心我们项目的老师的指点和支持,在这里向他们表示感谢.
附:完整电路图
·下一篇:办公自动化概述

文件类型:DOC/Microsoft Word 文件大小:字节