全自动可遥控旗帜升降系统的设计与制作毕业设计.docx
《全自动可遥控旗帜升降系统的设计与制作毕业设计.docx》由会员分享,可在线阅读,更多相关《全自动可遥控旗帜升降系统的设计与制作毕业设计.docx(117页珍藏版)》请在冰豆网上搜索。
全自动可遥控旗帜升降系统的设计与制作毕业设计
全自动可遥控旗帜升降系统的设计与制作
摘要:
全自动可遥控旗帜升降系统以AVR单片机为核心,由PWM对电机进行变频调速,高精度光电编码器测速,闭环式电路控制。
能够利用按键输入相应的指令控制旗帜的升降,还可以实现在特定位置停留的功能。
利用LCD可以显示旗帜的实时高度和相应的控制命令,用LED指示旗帜是否处于半旗状态,具有语音提示报警功能,并可利用无线模块实现遥控功能,准确均匀地实现旗帜的升降。
关键词:
PWM调速无线数据传输MP3解码码盘闭环控制STA013
(一)系统特性
ØPWM变频调速
利用L298和PWM配合可以对电机实现高精度的速度调节。
Ø高精度光电编码器测速
具有最小7.5度的角度精度。
系统精度高达0.05MM.
Ø闭环式控制PID算法
利用PID算法构成的闭环式控制电路具有精度高,实时反馈等优点。
Ø高速无线数据传输
以MEGA8为核心,使用cc1000芯片,速度高达38400bps。
ØMP3解码芯片的应用
利用STA013芯片对MP3进行解码,实现音乐的播放与控制。
Ø语音提示与报警功能
Ø采用高达1G容量的SD存储卡
系统采用高达1G的SD卡存储MP3及各种音频数据,容量大。
Ø利用非接触式霍尔传感器进行上下限位
Ø128*32LCD显示系统信息
(二)系统框图
(三)方案比较与论证
(1)电机的选择
方案一:
采用步进电机
步进电机是一种将电脉冲转化为角位移的执行机构,具有精度高易调控的特点。
但是步进电机的力矩会随转速的升高而下降,调速潜力不大。
并且低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。
所以放弃使用步进电机。
方案二:
采用减速电机+闭环控制
减速电机是减速器与电机联体,相对于步进电机具有高效率、传递力矩大、可靠性高等显著优点。
但是如果采用开环的控制方式精度不高。
为了提高它的精度,我们采用减速电机+闭环控制的方案。
闭环控制利用PID算法通过检测电机速度对电机进行实时的调节,从而提高系统的调节精度。
(2)电机升旗方案
方案一:
采用恒速上升的方案使用步进电机
如果采用恒速上升的方法则只需要测定启动初期的速度即可,上升过程中不进行测速。
但是系统处在外界,难免会受到各种因素的影响,如果旗帜在上升的过程中受到影响速度改变的话就会使升旗出现误差。
所以这种方式虽然简单但是非常不稳定。
方案二:
闭环控制PID算法
闭环控制是从输出量变化取出控制信号作为比较量反馈给输入端控制输入量,一般这个取出量和输入量相位相反,所以也叫负反馈控制。
PID是比例,积分,微分的缩写。
它是本系统实现闭环控制的核心。
比例调节作用:
是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差。
比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定。
积分调节作用:
是使系统消除稳态误差,提高无差度。
因为有误差,积分调节就进行,直至无差,积分调节停止,积分调节输出一常值。
积分作用的强弱取决于积分时间常数Ti,Ti越小,积分作用就越强。
反之Ti大则积分作用弱,加入积分调节可使系统稳定性下降,动态响应变慢。
积分作用常与另两种调节规律结合,组成PI调节器或PID调节器。
微分调节作用:
微分作用反映系统偏差信号的变化率,具有预见性,能预见偏差变化的趋势,因此能产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除。
因此,可以改善系统的动态性能。
在微分时间选择合适情况下,可以减少超调,减少调节时间。
微分作用对噪声干扰有放大作用,因此过强的加微分调节,对系统抗干扰不利。
此外,微分反应的是变化率,而当输入没有变化时,微分作用输出为零。
微分作用不能单独使用,需要与另外两种调节规律相结合,组成PD或PID控制器。
本系统采用PID算法,适当的调节比例,积分,微分的份额,实现闭环控制电动机的速度以保证旗帜准时升到顶。
相关原理图如下:
(3)速度测量方式
方案一:
单脉冲计数
单脉冲计数的方式是电动机每转一周,系统就获得一个脉冲。
这种计数方式虽然比较简单,但是它的精度不够高。
方案二:
透过式高精度光电编码器(码盘)
原理图如图所式:
码盘从光电对管中间穿过,马盘上有很多细线,细线将马盘均匀的分割开。
本系统采用的码盘共有48条阻隔线,所以电机每转过7.5度系统就获得一个脉冲。
电动机与码盘相连的轴直径为0.800MM,所以系统的位置测量精度高达0.005MM。
根据速度等于位移变化量除以时间间隔的计算公式可以高精度地测量电机速度从而判断是否需要调速。
方案三:
反射式码盘开关
反射式码盘开关的原理与透过式码盘开关的原理类似,但是它必须采取静态固定的方式,对固定的位置、牢固性等的要求较高。
而透过式码盘开关则不同,对固定的要求没有那么高。
所以从这方面考虑不采用反射式码盘开关。
(4)调速方式
方案一:
调压
通过调压的方式进行电机调速的原理是将一部分电压转化成热,这样就浪费了能源,与建设节约型社会的宗旨相背离,况且对于移动式的设备来说节能也至关重要。
调压方式下转速与外界的负载有关,另外,当电压较低时,电机力矩小,输出不稳定。
方案二:
PWM调速
PWM(脉宽调制)是一种对模拟信号电平进行数字编码的方法,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。
通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。
相比电压调速的方法,PWM调速具有精度高,易于控制等优点。
另外,它的调速方式为脉宽调制所以不会有太多的能源浪费,可以保证系统较长时间的工作,这对于移动设备而言是巨大的优势。
因此采用PWM调速的方式。
PWM调速电路图:
L298:
L298是内含两个H桥的高电压大电流双全桥式驱动器,是性能优越的小型直流电机驱动芯片之一。
接受标准TTL逻辑电平信号,可驱动电压46V、每相2.5A及以下的减速电机或者是步进电机,在4--46V的电压下,可以提供2A的驱动电流。
它具有两个使能输入端,在不受输入信号影响的情况下允许或禁止器件工作,每个桥对的下部三极管的发射极接在一起并引出,用以外接检测电阻,它设置了一附加电源输入端使逻辑部分在低电压下工作。
L298还有过热自动关断功能,并有反馈电流检测功能,符合电机驱动的需要。
L298的图解:
L298引脚图示:
(5)音乐同步播放
方案一:
利用系统控制录音机
这种方案虽然简单,但是无法对音乐曲目、播放时间、播放速度进行精确的选择和控制。
系统要求既能播放音乐又能进行适当的语音报错,所以这样无法满足系统需求。
方案二:
语音存储芯片
语音存储芯片同样存在无法精确巧妙跳跃式地控制音乐播放的缺点。
方案三:
模拟MP3按键控制MP3
这种方式只是将MP3的按键控制移植到系统中。
利用系统模拟按键的功能实现对MP3的控制。
但是系统要求可以跳跃式地任意播放曲目,MP3尚不能满足这种要求。
方案四:
MP3音频解码芯片STA013+1G的SD卡
采用STA013芯片+1G的SD卡的音频处理模式,利用LM386进行音频的放大,利用TWI或者是I2C进行通信,能够对音乐播放进行较好的控制。
可以实现只要输入音乐的名称就可以播放的功能,刚好满足了系统语音报错和音乐播放的功能要求,另外超大容量的存储芯片可以使系统功能具有较大的扩展空间。
另外通过对99年国庆阅兵典礼的反复观看,发现标准的国歌播放时间有46秒,而前3秒不升旗,所以真正的升旗时间有43秒,这就要求系统有延时的功能。
这可以利用MP3音频解码器轻松准确地实现。
3秒占46秒的6.5%,当MP3播放到6.5%的时候会向系统发出升旗的请求,系统做出反应进行升旗,轻松准确地实现延时。
STA013芯片:
STA013芯片是一颗标准的MP3音讯译码器(audiodecoder)。
若不考虑体积大小、耗电量、额外的复杂功能、生产成本,它是能以单一的技术整合方案,来实现一台可用的(workable)MP3播放机。
STA013具有高可设定性(configurable)的功能,不同的设定组合可以满足不同的应用需求。
另外STA013会忽略掉不属于MP3格式的数据—它们不会产生声音。
所以,不需要另外设计程序,以求事先将MP3档案的ID3标签(tag)去除掉。
可以直接将一个完整的MP3档案,传送给STA013处理。
万一将毁损的MP3数据串流(例如:
由于下载中断,造成档案被截断)输入给STA013,它会忽略掉大部分已经毁损的数据;只有一部分毁损的数据,会产生一个短暂的吱喳声(通常这视紧接在毁损部位后面的数据而定),但是STA013会自动立即与毁损部位后面的正常数据同步。
STA013芯片MP3解码原理图如下:
STA013引脚连接图:
MP3音频解码器的原理图:
(6)限位开关
方案一:
行程开关
该开关的关键之处就是在旗子到达最顶端或者最底端时对行程开关造成碰撞从而使开关接触,这一动作会即时反馈到单片机,单片机对此做出相应的反应。
但是,小型行程开关弹簧触片太短太小以至于使开关起作用需要的力较大,有可能在使用过程中出现意外,大型行程开关装在该设备上极不美观。
所以放弃该方案。
方案二:
霍尔传感器
霍尔元件是基于霍尔效应来测量电位差的一种器件,霍尔元件与磁铁配合是一种很好的可实现非接触式信号传递的组合,也称霍尔传感器。
霍尔传感器利用霍尔元件中的磁通量使电子在霍尔元件的一侧聚集,在霍尔元件两侧产生电压差,并由霍尔器件检测出霍尔电压信号,经过放大器放大,该电压信号精确地反映原边电流,或者是磁通量的变化。
从而根据事先预定好的情况做出相应的反应。
但是这又存在另外一个问题,如果旗杆使用铁制的则将会被磁铁磁化从而对霍尔传感器产生不良影响。
这套仪器采用合金材料制作旗杆,不会或极少被磁化,所以综合考虑以后选择方案二。
霍尔元件连接电路如图所示:
(7)显示方式
系统具有的显示功能是体现人机交互的重要方式。
通过系统的显示信息,人们可以知道它在干什么,从而决定自己应该干什么。
方案一:
采用LED(数码管)显示
LED(数码管)是light-emittingdiode的缩写,它经过合理的设置可以完成显示旗帜位置信息的任务,并且经济耐用。
同时LED具有高亮度,高刷新率的优点,能提供宽达160°的视角,可以在较远的距离上看清楚。
但是它的显示存在信息量少,显示不直观,不易理解的缺点。
方案二:
采用LCD(液晶屏)显示
LCD(液晶屏)是LiquidCrystalDisplay的缩写,它具有汉字显示的功能,不但可以指示旗帜的位置,还可以显示相应的控制命令,如升旗、降旗等,信息量丰富且直观易懂。
另外,液晶显示有功耗低,体积小,质量轻,寿命长,不产生电磁辐射污染等优点。
综合二者的优缺点,半旗的指示用LED显示,旗帜位置和控制命令的显示用LCD显示。
相关电路连接图如下:
(8)掉电检测
系统要求在任意时刻掉电后系统的数据信息不丢失,但是又不可能每一时刻的数据都写入EEPROM,因为EEPROM擦写次数有限而单片机数据变化迅速。
因此必须进行掉电检测,只有判断掉电以后才可以将数据写入EEPROM。
电路连接状况如下:
VCC输入一个12V的电压使稳压电容保持4.7V的电压。
当系统掉电时会破坏稳压电容的电压,反馈到系统使系统将数据写入EEPROM。
此时系统CPU靠4700uF的大电容供电,为了防止其它耗电元件耗电,在电容之前接一个二极管,保证单向连通。
(9)掉电数据不丢失的实现
EEPROM是电子可擦写可编程只读存储器(electricallyerasableprogrammableread-onlymemory)的缩写。
它是一种非挥发性记忆体(Memory),与抹除式唯读记忆体(EPROM)相似,电源消失后,储存的资料(Data)依然存在,要消除储存在其中的内容,不是用紫外线照射方式,而是以电子讯号直接消除即可。
一般消费者常用的电视遥控器,内部所用的一、二千位元(bit)的非挥发性记忆体(NVRAM),通常就是EEPROM。
DRAM断电后存在其中的数据会丢失,而EEPROM断电后存在其中的数据不会丢失。
另外,EEPROM可以清除存储数据和再编程。
正是由于EEPROM具有以上特点,该器件可广泛应用于对数据存储安全性及可靠性要求高的应用场合,如门禁考勤系统,测量和医疗仪表,非接触式智能卡,税控收款机,预付费电度表或复费率电度表、水表、煤气表以及家电遥控器等应用场合。
该类型存储器在可靠数据存储领域会获得越来越广泛的应用。
在平常情况下,EEPROM是只读的,需要写入时,在指定的引脚加上一个高电压即可写入或擦除,而且其擦除的速度极快!
它可以电改写,也可以逐字节改写。
但是,EEPROM有固定的使用寿命,这是指某一位由1写为O或由O写为1的次数。
不同厂家的产品,相同厂家不同型号、系列的产品,它们的寿命也不尽相同,100万次为常见主流产品。
这种寿命已经足以满足本系统的要求。
为了实现在任意时刻任意位置掉电后旗帜位置数据不丢失的功能,本系统采用EEPROM作为数据存储芯片。
(10)遥控方式
方案一:
FM模拟遥控
这种遥控器由形成遥控信号的微处理器芯片、晶体振荡器、放大晶体管、红外发光二极管以及键盘矩阵组成。
其工作原理是微处理器芯片IC1内部的振荡器通过2、3脚与外部的振荡晶体X组成一个高频振荡器,产生高频振荡信号(480kHz)。
此信号送入定时信号发生器后产生40KHz的正弦信号和定时脉冲信号。
正弦信号送入编码调制器作为载波信号;定时脉冲信号送制扫信号发生器、键控输入编码器和指令编码器作为这些电路的时间标准信号。
IC1内部的扫描信号发生器产生五中不同时间的扫描脉冲信号,由5~9脚输出送至键盘矩阵电路。
当按下某一键时,相应于该功能按键的控制信号分别由10~14脚输入到键控编码器,输出相应功能的数码信号。
然后由指编码器输出指令码信号,经过调制器调制在载波信号上,形成包含有功能信息的高频脉冲串,由17脚输出经过晶体管BG放大,推动红外线发光二极管D发射出脉冲调制信号。
这种遥控方式遥控距离短,传输速率低,而且易受干扰。
方案二:
数字遥控
这种方案采用速度高达38400bps的无线传输模块进行数据传输。
采用CC1000芯片,以MEGA8为核心,充分显示了现代单片机技术在无线传输中应用的优势。
具有传输距离远,速率高,不易受干扰等优点。
而且可传输的信息多种多样,只要能够转化成数字信号就能传输。
所以采用这种传输方式作为无线模块。
(11)出错提示音
为了防止误操作,系统需要对一些情况进行错误提示。
方案一:
在特定情况下屏蔽掉相关按键
这种方式虽然简单但是不能体现人性化,如果操作者不知道自己的错误往往造成操作者摸不清头脑,甚至以为设备出了毛病。
方案二:
嘀嘀声作为错误提示
这种方式虽然可以让操作者知道自己操作错误但不能知道为什么,功能仍然不够完善。
方案三:
语音提示
这种方式更能够体现人机交互。
当操作者无操作时,系统会利用音频播放设备播放相应的提示音,使人们知道式自己操作不当,并且知道哪里出了错。
这样更能够体现人性化。
(12)分机设计
分机的设计相对简单,包括键盘模块,无线模块,LCD显示模块和MCU模块,在此不过多叙述。
LCD的电路连接如图所示:
分机整体电路图如图所示:
(四)系统工作原理
主机电路图:
工作原理:
系统由按键控制,利用PWM驱动电机按照程序设计的转速和方向利用滑轮实现旗帜的升降。
按上升键以后,旗帜按照预定速度匀速上升,并由音频设备流畅地演奏国歌。
上升到最高端时,旗帜停止上升,国歌停奏。
按下降键后,旗帜按照预定速度匀速下降,此时音频设备不演奏国歌。
按特定的停止键可以实现在特定的位置上停留。
旗帜上安装有磁铁,旗杆的顶端和底端安装有霍尔元件,当旗帜上升到顶端或下降到底端时,霍尔元件做出感应,以免误操作。
当旗帜在顶端时如果按上升键或者旗帜在底端时按下降键则会听到语音报警提示音。
由测量模块实时测量旗帜的高度并由LCD显示出来。
由一个半旗开关控制旗帜是否处于半旗状态,由LED指示是否处于半旗状态。
半旗状态下(根据《国旗法》)升旗时,按上升键,奏国歌,国旗从最低端上升到最高端之后,国歌停奏,然后自动下降到总高度的2/3高度处停止;降旗时,按下降键,国旗先从2/3高度处上升到最高端,再自动从最高端下降到底之后自动停止,国歌停奏。
由EEPROM实时记录旗帜的位置,不论旗帜是在顶端还是在底端,关断电源之后重新合上电源,旗帜所在的高度数据不会丢失,显示不变。
旗帜的升降速度可调,在旗杆高度不变的情况下,升旗的时间范围在30秒到120秒之间,步进1秒。
用停止键可以实现任意位置的急停。
另外,利用无线模块可以实现遥控旗帜的升降及停止。
程序流程图:
(五)成员分工与时间安排
在系统的框图完成以后,小组成员对自己的工作已经有了比较明确的认识,根据个人的具体情况大家进行了分工。
擅长程序编写的就负责系统所需程序的编写工作,精通硬件的则负责元器件的选购和硬件的架设,而我则负责文档的整理,毕竟团结协作才算是一个团体嘛。
由于时间紧迫,我们把时间进行了细分,从9月8号到9月11号大家吃住在一起,每天至少工作18个小时,每一个小时都有具体的任务,如果有任务完不成则自己挤出休息的时间来完成。
为了大家互相监督以及自我提醒,我们还特意打印了这几天每一个小时的时间表。
每过一个小时大家就在表上填上自己这一个小时的工作成果并相互提醒时间又少了一个小时。
这样虽然有些忙,但是大家感到很充实,工作效率也很高,经常是提前完成计划的任务。
大家就这样忙并快乐着。
(六)系统功能调式与结果测量
虽然我们在制作的过程中进行过无数次的测试,但是最后还是要进行总体性能的测试。
9月11号上午,我们对经过多次调式的系统进行了总体性能的测试。
测试的内容主要有升旗、降旗、半旗、语音报错、掉电数据保存、LCD、LED显示等。
经过测试系统能够按照键盘设定的时间将旗帜升到旗杆顶部,键盘可设定的时间范围是30到120秒,当然也能在43秒钟完成升旗任务。
在错误的操作下,系统准确的进行了语音报错。
半旗状态下,LED指示灯亮,此时按升旗键奏国歌,国旗从最低端上升到最高端之后,国歌停奏,然后自动下降到总高度的2/3高度处停止;降旗时,按下降键,国旗先从2/3高度处上升到最高端,再自动从最高端下降到底之后自动停止,国歌停奏。
LCD能正确显示旗帜高度和所用时间,掉电后旗帜高度的数据不丢失。
可实现任意位置停止的功能,无线遥控能够正常工作。
(七)参考文献:
(1)《AVR单片机C语言开发入门指导》沈文Eaglelee詹卫前编著清华大学出版社
(2)《音讯放大器LM386简介》(作者:
陈明周(2003-04-07))
(3)(室外LED显示屏技术规范)
(4).(霍尔元件概念一览)
(5)(步进电机驱动器恒流脉宽调制(pwm)的原理)
(6)http:
//designer.mech.yzu.edu.tw/article/articles/technical/file/(2003-04-07)%20%AD%B5%B0T%A9%F1%A4j%BE%B9LM386%C2%B2%A4%B6.pdf(音频放大器LM386简介)
(7)(数码存储卡技术介绍)
(8)(在线自动宽度测量仪的研制*北京化工大学学报990114)
(八)本系统部分程序源代码
**(c)Copyright2006-2008,*****
**AllRightsReserved
**
**V1.2.0
/*****************************************************************************
**文件名:
main.c工程主文件
******************************************************************************/
/********************************************************
//eeprom0x0a:
旗帜位置0x0b:
是否半旗
//0:
底;244,顶:
其他:
中间1:
y0:
n
*********************************************************/
#include"config.h"
externuint16haveused_time;//已经耗时
externuint16s,get_s,T;
externuint8S;
uint8position_flag=0;//旗帜位置,0:
底254:
顶1~180:
高度cm
uint8if_half_flag=0;//是否半旗,默认0:
否1:
是
uint8move_flag;//是否在移动
volatileuint8up_or_down=1;//在上升
(1)还是下降(0)
volatileuint8half_up_or_down;//半旗升旗到顶
(1),还是半旗降旗到顶(0)。
volatileuint8lcd_fresh_flag;//是否允许刷新LCD
volatileuint8speed_change_flag=0;//是否允许调速度
uint8SIO_buff[10];//遥控数据缓冲
uint8lcd_show[32];//LCD显示缓冲
uint8timer_i=0;//内部计时循环
voidmain(void)
{
uint8read;//readkey
//floatpass_speed,forward_speed;
init_devices();
position_flag=EepromRead(0x0a);//读旗帜位置和是否半旗
if(position_flag==255)position_flag=0;
if_half_flag=EepromRead(0x0b);
if(if_half_flag>1)if_half_flag=0;//防止读到错误数据
strcpy(lcd_show,"高度:
000CM时间:
000MS");
Lcd_init();
Lcd_s