开题论证记录.doc

太阳能农田虫害自动监控及诱蛾灭虫系统设计

收藏

压缩包内文档预览:
预览图 预览图
编号:23863432    类型:共享资源    大小:1.37MB    格式:RAR    上传时间:2019-11-12 上传人:qq77****057 IP属地:江苏
30
积分
关 键 词:
太阳能 农田 虫害 自动 监控 灭虫 系统 设计
资源描述:
太阳能农田虫害自动监控及诱蛾灭虫系统设计,太阳能,农田,虫害,自动,监控,灭虫,系统,设计
内容简介:
湖南农业大学东方科技学院毕业论文(设计)中期检查表学 部: 理工学部 学生姓名周卫民学 号200841930203年级专业及班级2008级汽车服务工程(2)班指导教师姓名康江指导教师职称副教授毕业论文(设计)题目太阳能农田虫害自动监控及诱蛾灭虫系统工作进度已完成的主要内容尚需解决的主要问题1、系统整体方案的设计;2、系统设计的时间安排;3、其他硬件部分的设计;1、系统程序的编写;2、系统软件部分程序的编写;3、系统的调试;4、设计文字部分;指导教师意见 指导教师签名: 年 月 日检查(考核)小组意见检查小组组长签名: 年 月 日湖南农业大学东方科技学院毕业论文(设计)任务书学生姓名周卫民学号200841930203年级专业及班级2008级汽车服务工程(2)班指导教师及职称康江副教授学部理工学部20年月日填写说明一、毕业论文(设计)任务书是学院根据已经确定的毕业论文(设计)题目下达给学生的一种教学文件,是学生在指导教师指导下独立从事毕业论文(设计)工作的依据。此表由指导教师填写。二、此任务书必须针对每一位学生,不能多人共用。三、选题要恰当,任务要明确,难度要适中,份量要合理,使每个学生在规定的时限内,经过自己的努力,可以完成任务书规定的设计研究内容。四、任务书一经下达,不得随意更改。五、各栏填写基本要求。(一)主要内容和要求:1工程设计类选题明确设计具体任务,设计原始条件及主要技术指标;设计方案的形成(比较与论证);该生的侧重点;应完成的工作量,如图纸、译文及计算机应用等要求。2实验研究类选题明确选题的来源,具体任务与目标,国内外相关的研究现状及其评述;该生的研究重点,研究的实验内容、实验原理及实验方案;计算机应用及工作量要求,如论文、文献综述报告、译文等。3文法经管类论文明确选题的任务、方向、研究范围和目标;对相关的研究历史和研究现状简要介绍,明确该生的研究重点;要求完成的工作量,如论文、文献综述报告、译文等。(二)主要参考文献与外文资料:在确定了毕业论文(设计)题目和明确了要求后,指导教师应给学生提供一些相关资料和相关信息,或划定参考资料的范围,指导学生收集反映当前研究进展的近13年参考资料和文献。外文资料是指导老师根据选题情况明确学生需要阅读或翻译成中文的外文文献。(三)毕业论文(设计)的进度安排:1设计类、实验研究类课题实习、调研、收集资料、方案制定约占总时间的20%;主体工作,包括设计、计算、绘制图纸、实验及结果分析等约占总时间的50%;撰写初稿、修改、定稿约占总时间的30%。2文法经管类论文实习、调研、资料收集、归档整理、形成提纲约占总时间的60%;撰写论文初稿,修改、定稿约占总时间的40%。六、各栏填写完整、字迹清楚。应用黑色签字笔填写,也可使用打印稿,但签名栏必须相应责任人亲笔签名。毕业论文(设计)题目太阳能农田虫害自动监控及诱蛾灭虫系统设计主要内容和要求(宋体五号,行间距单倍行距)主要内容:1.设计一太阳能农田虫害自动监控及诱蛾灭虫系统;2.该系统采用太阳能为主要能源,具有自动诱蛾灭虫及对虫害自动监控双重功能;3.系统采用AVR单片机作为系统主机,并使用变频技术将太阳电池中的直流升压至1000伏后,将高压电输送至外围电网进行杀虫;4.系统配置有自动清扫结构,能够有效地清扫电网上害虫遗体;5.系统通过对电网中电流脉冲的变化进行统计,从而能够初略估计出虫害的严重程度;6.系统具有无线电远程通讯手段,能够向1000米外的中心控制室汇报工作情况及虫害情况;7.系统整体制作成本应该控制在1500元以下,保证其向市场推广;8.系统能够方便地安装于田间山地等野外,能够有效适应恶劣自然环境。主要要求:1.完成1万字毕业设计论文2.提供2号电子设计图纸三张以上;3.程序完成计算机仿真运行;注:此表如不够填写,可另加附页。主要参考资料(具体格式以规范化要求规定为准)工作进度安排(宋体五号,行间距固定值22磅)起止日期主要工作内容要求完成日期:20年月日指导教师签名:接受任务日期:20年月日;学生本人签名:注:签名栏必须由相应责任人亲笔签名。湖南农业大学东方科技学院毕业论文(设计)选题审批表学 部: 理工学部 专业: 汽车服务工程 毕业论文题目太阳能农田虫害自动监控及诱蛾灭虫系统选题来源( )结合科研课题 课题名称:()生产实际或社会实际 ( )其他选题性质( )基础研究 ()应用研究 ( )其他选题完成形式( )毕业论文 ()毕业设计 ( )提交作品,并撰写论文指导教师姓名康江职称副教授是否主持或参与过科研课题()是( )否选题依据(科学性、可行性论证)和内容简要(宋体五号,行间距单倍行距)本系统使用太阳能作为系统总能源,对农田害虫成蛾时进行诱杀,并通过对系统电流进行计算,可以统计出单位时间中杀虫数量及一天的杀虫数,为生产者提供了较为全面的虫害统计数,既达到了杀虫的目的又能协助农田生产对虫害进行综合防治的目的。 系统使用单片机作为系统主机,使用了高频逆变技术,并具有远程无线计算机通讯能力。专业委员会意见专业委员会主任签名: 年 月 日 注:请在选项前的“( )”内打“”;意见栏必须由相应责任人亲笔填写,不够填写时可另加页。湖南农业大学东方科技学院全日制普通本科生毕业设计太阳能农田虫害自动监控及诱蛾灭虫系统AUTOMATIC MONITORING OF THE SOLAR FARMLAND PEST MOTH PEST CONTROL SYSTEM学生姓名:周 卫 民学 号:200841930203年级专业及班级:2008级汽车服务(2)班指导老师及职称:康江 副教授学 部:理工学部湖南长沙提交日期:2012年月湖南农业大学东方科技学院全日制普通本科生毕业设计诚信声明本人郑重声明:所呈交的本科毕业论文是本人在指导老师的指导下,进行研究工作所取得的成果,成果不存在知识产权争议。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个和集体在文中均作了明确的说明并表示了谢意。同时,本论文的著作权由本人与湖南农业大学东方科技学院、指导教师共同拥有。本人完全意识到本声明的法律结果由本人承担。 毕业设计作者签名: 年 月 日目 录摘要1关键词11 前言12 系统设计与关键2 2.1 国内外灭虫技术现状2 2.1.1 灭虫灯2 2.1.2 传统杀虫剂32.2 太阳能供电系统32.3 免维护蓄电池42.4 逆变器工作原理43 电机选择53.1 交流电机53.2 步进电机53.3 有刷直流电机63.4 无刷直流电机64 系统硬件电路设计84.1 太阳能电池板充电电路84.2 电机驱动电路94.3 逆变器电路10 4.3.1 SG3525简介124.4 蓄电池给单片机供电电路134.5 脉冲次数采样电路设计144.6 无线通信模块电路设计145 处理器AVR单片机简介15 5.1 单片机AVR优势特征15 5.2 AVR单片机内核结构示意图17 5.3 AVR单片机引脚功能18 5.4 Atmege16封装186 系统软件设计196.1 无线模块串口通讯程序设计196.2 定时器程序设计216.3 模拟比较器程序设计236.4 步进电机控制程序设计257 单片机在线仿真278 结论27参考文献28致谢29附录30太阳能农田虫害自动监控及诱蛾灭虫系统 学 生:周卫民 指导老师:康 江 (湖南农业大学东方科技学院,长沙 410628)摘 要:本系统是基于湖南农业大学工学院康江副教授太阳能农业应用课题研究设计的系统。该系统采用太阳能为主要能源,具有自动诱蛾灭虫及对虫害自动监控双重功能。系统采用AVR单片机作为系统主机,并使用变频技术将太阳电池中的直流升压至1000伏后,将高压电输送至外围电网进行杀虫。系统配置有自动清扫结构,能够有效地清扫电网上害虫遗体。系统通过对电网中电流脉冲的变化进行统计,从而能够初略估计出虫害的严重程度。系统具有无线电远程通讯手段,能够向1000米外的中心控制室汇报工作情况及虫害情况。关键词:太阳能; 自动监控; 诱蛾灭虫Automatic monitoring of the solar farmland pest moth pest control systemAuthor:zhou wei-mingTutor: kang-jiang(Oriental Science Technology College of Hunan Agricultural University, Changsha 410128)Abstract: The system is based on the Hunan Agricultural University Institute associate professor Kangjiang solar agricultural application research design system. It uses solar energy as the main energy, with automatic moth luring pest and the pest automatic monitoring function. The system adopts AVR chip as the system host, and the use of frequency conversion technology in the solar battery DC boost to 1000 volts, to high voltage electric delivery to peripheral grid insecticidal.System configuration having automatic cleaning structure, can effectively clean the grid of pest on body. System based on grid current pulse change statistics, which can estimate the insect pest of severity. System with radio remote communication means, to1000 meters outside the central control room and pest situation report.Key words: Solar; Automatic monitoring ;Moth pest1 前言 太阳能农田虫害自动监控及诱蛾灭虫系统是在太阳能农田灭虫灯的基础上研发的系统,但是由于太阳能农田灭虫灯的功效紧紧局限于杀虫,综合性价比不是很高。所以基于我校机器人小组的太阳能和逆变技术的研究相对成熟,所以采用逆变技术是本系统的亮点。将直流电池提高的低电压转变为高电压当诱蛾碰到网丝后即产生瞬时短路引起电路电压变化,将模拟电压装化为数字脉冲数,通过单片机计时器计数从而大致估计出害虫数量。系统的创新点在于可以对害虫数进行实时的统计从而可以为农户及农业科研提供实时快捷的数据。系统的网栏可以进行自动遗体清扫保证了系统的长期使用。农田地平开阔有充足的太阳能,且系统便与安装没有地形限制便于系统的广泛推广使用,本系统利用无线电通信进行数据的传输,有利于实现系统的远程操作,从而使农户可以足不出户边对农田的虫害情况了如指掌以便于把握好最佳的治虫时期提高作物的产量。总合本系统的所有功能模块,从供电系统、控制系统、显示系统、灭虫方式等环保、可循环利用优势都符合了我国可持续发展的发展战略。2 系统设计与创意2.1 国内外灭虫技术现状2.1.1 灭虫灯图1 太阳能灭虫灯Fig. 1 Solar pest control lights产品原理:首先它利用太阳能电池板将太阳光直接转换成电能, 提供能源给设备的日常使用, 然后利用 昆虫天生具有的趋光性、趋波性、趋色性的生理构造,辅以特定的光源和 36550nm 波长 而研制。 利用光谱变频技术突破了传统杀虫灯使用单一光波段的局限性, 使有效光波范围更 广,诱杀害虫种类及数量更多。夜晚害虫们被杀虫灯的特制灯光及波长所吸引,便会奋不顾 身的扑过来, 而在光源的外围 有一层高达三千五千伏的高压电网, 害虫们便会在飞往灯光 的过程中触电身亡,从而达到良好的杀虫效果。12.1.2 传统杀虫剂 杀虫剂:英文:Pesticide. Insecticide ,主要用于防治农业害虫和城市卫生害虫的药品使用历史长远、用量大、品种多。在二十世纪,农业的迅速发展,杀虫剂令农业产量大升。但是,几乎所有杀虫剂都会严重地改变生态系统,大部分对人体有害,其它的会被集中在食物链中。我们必须在农业发展与环境及健康中取得平衡。图2 常见杀虫用药Fig.2 Common insecticide medication2.2 太阳能供电系统太阳能电池是一种具有光伏效应的半导体器件。1839 年, 法国物理学家意外地发现,用两片金属浸入溶液构成的伏打 电池,受到阳光照射时会产生额外的伏打电势,他把这种现 象称为光生伏打效应。1883 年,有人在半导体硒和金属接触处发现 了固体光伏效应。后来就把能够产生光生伏打效应的器件称 为光伏器件。由于半导体PN 结器件在阳光下的光电转换效 率最高,所以通常把这类光伏器件称为太阳能电池,也称光 电池或太阳电池。 半导体中的电子的运动状态,按能量可分为导带和价带,二 者之间的能量间隙称为禁带。处在导带中的电子,可在整块 半导体中自由运动,传导电流。处在价带中的电子,只能绕 原子核运动,不能传导电流。3半导体受到光能、热能或其他外来能量激发时,价带中的电 子会跃迁入导带,在价带中留下一个空穴。空穴带正电,也 可在整块半导体中自由运动,传导电流。能够传导电流的电 子和空穴称为载流子。电子和空穴都是成对出现、成对存在 的。受光激发产生电子、空穴对的过程,称为光激发。典型的太阳能电池结构是一片厚为 0.2-0.3 毫米、面积为5 厘米5 厘米或10厘米10 厘米的硅薄片,上部是掺有5 价元素磷、并依靠大量电子导电的N 型硅。 下部是掺有三价元素硼、并依靠空穴导电的P 型硅。 界面处即为刚结。N 型硅表面布有很细的金属栅线,另一面紧贴P 型硅。为了 减少反射,整个电池表面覆盖着一层透明的减反射膜。2图3 太阳能电池板结构示意Fig.3 Solar panel structure to indicate2.3 免维护蓄电池在充电时,电能转化为化学能,放电时化学能又转化为电能。电池在放电时,金属铅是负极,发生氧化反应,被氧化为硫酸铅;二氧化铅是正极,发生还原反应,被还原为硫酸铅。电池在用直流电充电时,两极分别生成铅和二氧化铅。移去电源后,它又恢复到放电前的状态,组成内部动态平衡的化学电池。铅蓄电池是能反复充电、放电的电池,又叫做二次电池。 铅酸蓄电池反应化学方程式如下: 放电 PbO2+2H2SO4+PbPbSO4+2H2O+PbSO4 (1)充电免维护蓄电池由于自身结构上的优势,电解液的消耗量非常小,在使用寿命内基本不需要补充蒸馏水。它还具有耐震、耐高温、体积小、自放电小的特点。使用寿命一般为普通蓄电池的两倍。市场上的免维护蓄电池也有两种:第一种在购买时一次性加电解液以后使用中不需要维护(添加补充液);另一种是电池本身出厂时就已经加好电解液并封死,用户根本就不能加补充液。22.4 逆变器工作原理逆变器是一种 DC to AC 的变压器,它其实与转化器是一种电压逆变的过程。 转换器是将市电电网的交流电压转变为稳定的 12V 直流输出,而逆变器是将 Adapter 输出 的 12V 直流电压转变为高频的高压交流电;两个部分同样都采用了目前用得比较多的脉宽 调制(PWM)技术。其核心部分都是一个 PWM 集成控制器,Adapter 用的是 UC3842, 逆变器则采用 TL5001 芯片。 TL5001 的工作电压范围 3.640V, 其内部设有一个误差放大 器,一个调节器、振荡器、有死区控制的 PWM 发生器、低压保护回路及短路保护回路等。 以下将对逆变器的工作原理进行简要介绍:输入部分有 3 个信号, 12V 直流输入 VIN、 工作使能电压 ENB 及 Panel 输入接口部分: 电流控制信号 DIM。VIN 由 Adapter 提供,ENB 电压由主板上的 MCU 提供,其值为 0 或 3V,当 ENB=0 时,逆变器不工作,而 ENB=3V 时,逆变器处于正常工作状态;而 DIM 电 压由主板提供,其变化范围在 05V 之间,将不同的 DIM 值反馈给 PWM 控制器反馈端, 逆变器向负载提供的电流也将不同,DIM 值越小,逆变器输出的电流就越大。 电压启动回路:ENB 为高电平时,输出高压去点亮 Panel 的背光灯灯管。 PWM 控制器:有以下几个功能组成:内部参考电压、误差放大器、振荡器和 PWM、 过压保护、欠压保护、短路保护、输出晶体管。 直流变换:由 MOS 开关管和储能电感组成电压变换电路,输入的脉冲经过推挽放大器 放大后驱动 MOS 管做开关动作,使得直流电压对电感进行充放电,这样电感的另一端就能 得到交流电压。 LC 振荡及输出回路:保证灯管启动需要的 1600V 电压,并在灯管启动以后将电压降至 800V。22输出电压反馈:当负载工作时,反馈采样电压,起到稳定 I 逆变器电压输出的作用。63 电机选择电机的分类很多种,简单的分类有交流电机、步进电机、有刷直流、无刷电机等。3.1 交流电机交流电机没有碳刷及整流子,免维护、坚固、应用广,但特性上若要达到相当于直流电机的性能须用复杂控制技术才能达到。交流电动机分为异步电动机和同步电动机两类。异步电动机按照定子相数的不同分为单相异步电动机、两相异步电动机和三相异步电动机。三相异步电动机结构简单,运行可靠,成本低廉等。3.2 步进电机步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机、交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。3.3 有刷直流电机直流电机有定子和转子两大部分组成,定子上有磁极(绕组式或永磁式),转子有绕组,通电后,转子上也形成磁场(磁极),定子和转子的磁极之间有一个夹角,在定转子磁场(N极和S极之间)的相互吸引下,是电机旋转。改变电机两端电压方向就改变电机的旋转方向。优点:直流电机具有响应快速、较大的起动转矩、从零转速至额定转速具备可提供额定转矩的性能。缺点:直流电机的优点也正是它的缺点,因为直流电机有碳刷及整流子。碳刷及整流子在电机转动时会产生火花、碳粉因此除了会造成组件损坏之外,使用场合也受到限制。3.4 无刷直流电机无刷直流电动机的学名叫“无换向器电机”或“无整流子电机”,是一种新型的无级变速电机,它由一台同步电机和一组逆变桥所组成。它具有直流电机那样良好的调速特性,但是没有换向器,因而可做成无接触式,具有结构简单,制造方便,不需要经常性维护等优点,是一种现想的变速电机。无刷直流电动机Brushless Direct Current Motor,BLDC,采用方波自控式永磁同步电机,以霍尔传感器取代碳刷换向器,以钕铁硼作为转子的永磁材料;产品性能超越传统直流电机的所有优点,同时又解决了直流电机碳刷滑环的缺点,数字式控制,是当今最理想的调速电机,无刷直流电动机在先进国家已大量应用于军事、信息业(IT)、办公设备(OA)、家电业(HA)、DIY手动工具、伺服系统、电动汽车、电瓶车、磁旋浮列车等;经过本公司十多年的研究开发,目前生产容量已经达75kW,设计容量可达315kW,可以满足产业自动化及流体机械、空调机械的节电驱动应用,无刷直流电动机具有上述的三高特性,非常适合使用在24小时连续运转的产业机械及空调冷冻主机、风机水泵、空气压缩机负载;低速高转矩及高频繁正反转不发热的特性,更适合应用于机床工作母机及牵引电机的驱动;其稳速运转精度比直流有刷电机更高,比矢量控制或直接转矩控制速度闭环的变频驱动还要高,性能价格比更好,是现代化调速驱动的最佳选择。图4 电机效率的比较Fig .4 Compare of motor efficiency美国能源部对各种驱动电机效率的比较,无刷直流电动机的位置传感器编码使通电的两相绕组合成磁场轴线位置超前转子磁场轴线位置,所以不论转子的起始位置处在何处,电动机在启动瞬间就会产生足够大的启动转矩,因此转子上不需另设启动绕组。由于定子磁场轴线可视作同转子轴线垂直,在铁芯不饱和的情况下,产生的平均电磁转矩与绕组电流成正比,这正是他励直流电动机的电流-转矩特性。电动机的转矩正比于绕组平均电流:Tm=KtIav(Nm (1)电动机两相绕组反电势的差正比于电动机的角速度:ELL=Ke(V) (2)所以电动机绕组中的平均电流为:Iav=(Vm-ELL)/2Ra(A) (3)其中,Vm=VDC是加在电动机线间电压平均值,VDC是直流母线电压,是调制波的占空比,Ra为每相绕组电阻。由此可以得到直流电动机的电磁转矩:Tm=(VDC、Kt/2Ra)Kt(Kew/2Ra) (4)Kt、Ke是电动机的结构常数,为电动机的角速度(rad/s),所以,在一定的时,改变占空比,就可以线性地改变电动机的电磁转矩,得到与他励直流电动机电枢电压控制相同的控制特性和机械特性。无刷直流电动机的转速设定,取决于速度指令Vc的高低,如果速度指令最大值为+5V对应的最高转速:Vc(max)nmax,那么,+5V以下任何电平即对应相当的转速n,这就实现了变速设定。当Vc设定以后,无论是负载变化、电源电压变化,还是环境温度变化,当转速低于指令转速时,反馈电压Vfb变小,调制波的占空比就会变大,电枢电流变大,使电动机产生的电磁转矩增大而产生加速度,直到电动机的实际转速与指令转速相等为止;反之,如果电动机实际转速比指令转速高时,减小,Tm减小,发生减速度,直至实际转速与指令转速相等为止。可以说,无刷直流电动机在允许的电网波动范围内,在允许的过载能力以下,其稳态转速与指令转速相差在1%左右,并可以实现在调速范围内恒转矩运行。由于无刷直流电动机的励磁来源于永磁体,所以不象异步机那样需要从电网吸取励磁电流;由于转子中无交变磁通,其转子上既无铜耗又无铁耗,所以效率比同容量异步电动机高10%左右,一般来说,无刷直流电动机的力能指针(cos)比同容量三相异步电动机高12%-20%。综合以上电机的各功能,本系统采用的是步进电机作为自动清扫装置的驱动装置,在电网的两端采用触电开关保证电机的自动来回走动。184 系统硬件电路设计4.1 太阳能电池板对免维护蓄电池充电电路由于电网是需要的负载较高,所以在设计系统电源电路时采用浮充的方式,当光线弱时,负载可以使用蓄电池的电量浮充是蓄电池组的一种供(放)电工作方式,系统将蓄电池组与电源线路并联连接到负载电路上,它的电压大体上是恒定的,仅略高于蓄电池组的端电压,由电源线路所供的少量电流来补偿蓄电池组局部作用的损耗,以使其能经常保持在充电满足状态而不致过充电。因此,蓄电池组可随电源线路电压上下波动而进行充放电。当负载较轻而电源线路电压较高时,蓄电池组即进行充电,当负载较重或电源发生意外中断时,蓄电池组则进行放电,分担部分或全部负载。这样,蓄电池组便起到稳压作用,并处于备用状态。下图为升压式变换器电路,用少量单片太阳能电池构成电池组件,去给铅酸电池充电。电路由IC1及少量元器件组成。IC1直接由铅酸电池供电,就算太阳能电池不供电,电路仍能工作。电路所需电流很小,铅酸电池不很快的放电完毕。 太阳能电池接到连接器K1。IC1使场效应管FET-T1导通,引起通过电感线圈L1的电流。在这里将电能转换成磁能,并贮存在电感里。当电流超过某一确定值时,IC1使FET截止。在那一瞬间,电感力图保持电流的流通。这样就感应了一个电压,使电流通过D1流进电池。这样又把磁能转换成电能。通过电感的电流不应上升太快. IC1提供一种限流作用制止这种的发生。通过电感的电流变换成在分流电阻R1上的小电压。IC1一旦截止FET,这电压很快上升达0.1V 电阻R2、P1和R3组成分压器。在滑动点P1上的电压正比于输出电压。 IC1设法保持这电压固定在1.5V。,P1可以用于调节最大输出电压。19图5 太阳能转12V内部结构示意Fig.5 Solar energy to 12 V internal structure indicateMAX1771 是MAXIM 公司出品的一种DC-DC 转换器控制芯片可用于多种不同形式的 DC-DC 转换电路它采用BiCMOS 工艺制造因此兼有低功耗与高开关频率的特点正常工 作电流不超过110 A 进入停机状态时功耗可降低至5 A 以内开关频率可高达300kHz 因此可采用体积很小的外部功率元件整个DC-DC转换器尺寸可以做得非常小,另外器件内部集成了多种DC-DC 转换器所需的功能单元外围电路非常简单可以很容易地用它设计 出满足不同需要的DC-DC 转换器。2图6 MAX1771封装图Fig6 MAX1771 package diagram4.2 电机驱动电路设计图7 电机驱动电路Fig.7 Motor drive circuit自动清扫装置采用的是步进电机作为动力源,自动化密集的的场合会有很多被控元件如继电器,微型电机,风机,电磁阀,空调,水处理等 元件及设备,这些设备通常由 CPU 所集中控制,由于控制系统不能直接驱动被控元件,这需要由功率电路 来扩展输出电流以满足被控元件的电流,电压。本系统的电机驱动芯片为ULN2003A。ULN2003A是一个7路反向器电路,即当输入端为高电平时ULN2003A输出端为低电平,当输入端为低电平时ULN2003A输出端为高电平,输入电压为5V,输出电压最高可以达到50V。工作环境温度可以-20至80以保证了在野外农田的使用。在ULN2003外部采用四个不同阻值的电阻进行分压限流防止电机烧坏,因为电动机是由电磁线圈所组成,为感性负载,在通电断开的瞬间会产生反向感生电动势,这个感生出的能量必然要释放掉,否则会产生极高的反向电压导致驱动芯片击穿。接入二极管即可平滑泄放掉电机线圈所产生的感生能量,同时有助于对电机的驾驭。在单片机中利用计数器与设置的参数自行比较溢出中断,达到比较值步进电机开始工作,为了防止步进电机的“丢步”当电机没有按规定走完步数时,通过单片机的中断设置了反馈调节,计数器自动加1直至完成步数,电机开始反转。34.3 逆变器电路逆变电路是与整流电路(Rectifier)相对应,将低电压变为高电压,把直流电变成交流电的电路称为逆变电路。为了满足不同用电设备对交流电源性能参数的不同要求,已发展了多种逆变电路,并大致可按以下方式分类。按输出电能的去向分,可分为有源逆变电路和无源逆变电路。前者输出的电能不返回公共交流电网,后者输出的电能直接输向用电设备。按直流电源性质可分为由电压型直流电源供电的电压型逆变电路和由电流型直流电源供电的电流型逆变电路。按主电路的器件分,可分为:由具有自关断能力的全控型器件组成的全控型逆变电路;由无关断能力的半控型器件(如普通晶闸管)组成的半控型逆变电路。半控型逆变电路必须利用换流电压以关断退出导通的器件。若换流电压取自逆变负载端,称为负载换流式逆变电路。这种电路仅适用于容性负载;对于非容性负载,换流电压必须由附设的专门换流电路产生,称自换流式逆变电路。按电流波形分,可分为正弦逆变电路和非正弦逆变电路。前者开关器件中的电流为正弦波,其开关损耗较小,宜工作于较高频率。后者开关器件电流为非正弦波,因其开关损耗较大,故工作频率较正弦逆变电路低。按输出相数可分为单相逆变电路和多相逆变电路。本系统采用的是电压逆变电路,用SG3525集成电路产生20khz可调占空比的pwm波形。用两个以上IR3205场效应管把pwm波进行功率放大。放大后的PWM信号接入变压器把电压升高,通常最高要能升高到1000V。升高后的电压经整流二极管给电容充电。从电容上用电阻采样电压值把采样的电压值与一个TL431集成电路进行比较,让电容上的电压等于1000V。如果低于1000V,就自动增加SG3525输出pwm波的占空比,高了就减小占空比,使得电容上的电压始终稳定在1000V上。 这当中还要识别输出电流,过载了就控制SG3525停止输出信号进行保护,这样不会烧毁东西,12V不足时也要控制停机,以免输出不够和损坏电池。在12V电压快耗尽前用蜂鸣器报警,让使用者知道快没电了。16图8 逆变电路Fig.8 Inverter circuit4.3.1 SG3525简介SG3525 是一种性能优良、功能齐全和通用性强的单片集成PWM控制芯片,它简单可靠及使用方便灵活,输出驱动为推拉输出形式,增加了驱动能力;内部含有欠压锁定电路、软启动控制电路、PWM锁存器,有过流保护功能,频率可调,同时能限制最大占空比。管脚功能:直流电源 Vs 从脚 15 接入后分两路,一路加到或非门;另一路送到基准电压稳压器的输入端,产生稳定的元器件作为电源。振荡器脚 5 须外接电容 CT,脚 6 须外接电阻 RT。振荡器频率厂由外接电阻RT 和电容CT决定, 振荡器的输出分为两路,一路以时钟脉冲形式送至双稳态触发器及两个或非门;另一路以锯齿波形式送至比较器的同相输入端,比较器的反向输入端接误差放大器的输出,误差放大器的输出与锯齿波电压在比较器中进行比较,输出一个随误差放大器输出电压高低而改变宽度的方波脉冲,再将此方波脉冲送到或非门的一个输入端。或非门的另两个输入端分别为双稳态触发器和振荡器锯齿波。双稳态触发器的两个输出互补,交替输出高低电平,将PwM脉冲送至三极管VT1 及 VT2的基极,锯齿波的作用是加入死区时间,保证 VT1 及VT2不同时导通。最后,VTl及VT2分别输出相位相差为 180的 PWM波。22图9 SG3525引脚功能与封装Fig.9 SG3525 pin functions and packaging4.4 蓄电池给单片机供电电路图10 单片机供电电路Fig.10 Single-chip power supply circuits4.5 脉冲次数采样电路设计目前估算短路大约在1A到5A。则通过一个10W,2欧姆的电泥电阻R10进行电流采样。然后再经过电位器R8进行分压,COMP的电压范围在1V到5V左右。COMP的电压进入单片机的AIN0引脚,AIN1和AIN0的电压进行比较。如果AIN0大于AIN1的电压,则计录一次短路。AIN1的电压可以通电位器进行调。20图11 脉冲采样电路Fig.11 Pulse sampling circuit4.6 无线通信模块电路及主要参数无线通信模块广泛地运用在车辆监控、遥控、遥测、小型无线网络、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触RF智能卡、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器人控制、无线232数据通信、无线485/422数据通信。21 本系统采用的是CC1101作为无线通讯模块的芯片,CC1100E 是一款 Sub-GHz 高性能射频收发器,设计旨在用于极低功耗 RF应用。其主要针对工业、科研和医疗 (ISM) 以及 470-510 MHz 和 950-960MHz 频带的短距离无线通信设备 (SRD)。CC1100E 特别适合于那些针对日本ARIB STD-T96 标准和中国 470-510 MHz 短距离通信设备的无线应用。空旷传输距离500到1500米,高效的SPI串行编程接口,可用IO口模拟SPI时序,也可以用MCU的SPI口。工作温度范围为-40+85,工作电压为1.8-3.6 伏。模块采用晶振对芯片进行驱动。21图12 无线模块内部结构图Fig.12 The internal structure of the wireless module在系统的室外控制部和控制室部分各有一个无线模块接收,单片机通过SPI与无线模块连接进行通讯,然后控制室单片机对数据进行处理后通过1206进行显示,将室外的害虫的实际情况反映到控制室。2图13 无线通信模块Fig.11 Wireless communication module5 处理器AVR单片机简介:单片机又称单片微控制器,它是把一个计算机系统集成到一个芯片上,概括的讲:一块芯片就成了一台计算机。单片机技术是计算机技术的一个分支,是简易机器人的核心元件。1997年,由ATMEL公司挪威设计中心的A先生与V先生利用ATMEL公司的Flash新技术, 共同研发出RISC精简指令集的高速8位单片机,简称AVR。相对于出现较早也较为成熟的51系列单片机,AVR系列单片机片内资源更为丰富,接口也更为强大,同时由于其价格低等优势,在很多场合可以替代51系列单片机。155.1 AVR单片机的优势特征单片机已广泛地应用于军事、工业、家用电器、智能玩具、便携式智能仪表和机器人制作等领域,使产品功能、精度和质量大幅度提升,且电路简单,故障率低,可靠性高,成本低廉。单片机种类很多,在简易机器人制作和创新中,为什么选用AVR单片机呢。 1) 便易学,费用低廉 首先,对于非专业人员来说,选择AVR单片机的最主要原因,是进入AVR单片机开发的门槛非常低,只要会操作电脑就可以学习AVR单片机的开发。单片机初学者只需一条ISP下载线,把编辑、调试通过的软件程序直接在线写入AVR单片机,即可以开发AVR单片机系列中的各种封装的器件。AVR单片机因此在业界号称“一线打天下”。 其次,AVR单片机便于升级。AVR程序写入是直接在电路板上进行程序修改、烧录等操作,这样便于产品升级。 再次,AVR单片机费用低廉。学习AVR单片机可使用ISP在线下载编程方式(即把PC机上编译好的程序写到单片机的程序存储器中),不需购买仿真器、编程器、擦抹器和芯片适配器等,即可进行所有AVR单片机的开发应用,这可节省很多开发费用。程序存储器擦写可达10000次以上,不会产生报废品。 152) 高速、低耗、保密 首先,AVR单片机是高速嵌入式单片机: AVR单片机具有预取指令功能,即在执行一条指令时,预先把下一条指令取进来,使得指令可以在一个时钟周期内执行。 多累加器型,数据处理速度快。AVR单片机具有32个通用工作寄存器,相当于有32条立交桥,可以快速通行。 中断响应速度快。AVR单片机有多个固定中断向量入口地址,可快速响应中断。 其次,AVR单片机耗能低。对于典型功耗情况,WDT关闭时为100nA,更适用于电池供电的应用设备。有的器件最低1.8 V即可工作。 再次,AVR单片机保密性能好。它具有不可破解的位加密锁Lock Bit技术,保密位单元深藏于芯片内部,无法用电子显微镜看到。 3) I/O口功能强,具有A/D转换等电路 AVR单片机的I/O口是真正的I/O口,能正确反映I/O口输入/输出的真实情况。工业级产品,具有大电流(灌电流)1040 mA,可直接驱动可控硅SCR或继电器,节省了外围驱动器件。 AVR单片机内带模拟比较器,I/O口可用作A/D转换,可组成廉价的A/D转换器。ATmega48/8/16等器件具有8路10位A/D。 部分AVR单片机可组成零外设元件单片机系统,使该类单片机无外加元器件即可工作,简单方便,成本又低。 AVR单片机可重设启动复位,以提高单片机工作的可靠性。有看门狗定时器实行安全保护,可防止程序走乱(飞),提高了产品的抗干扰能力。 4) 有功能强大的定时器/计数器及通讯接口 定时/计数器T/C有8位和16位,可用作比较器。计数器外部中断和PWM(也可用作D/A)用于控制输出,某些型号的AVR单片机有34个PWM,是作电机无级调速的理想器件。17 AVR单片机有串行异步通讯UART接口,不占用定时器和SPI同步传输功能,因其具有高速特性,故可以工作在一般标准整数频率下,而波特率可达576K。 5) 片内EEPROM EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。EEPROM 的寿命至少为100,000 次擦除周期。EEPROM 的访问由地址寄存器、数据寄存器和控制寄存器决定。 通过SPI和JTAG及并行电缆下载EEPROM数据的操作。5.2 AVR单片机内核结构示意图图14 AVR单片机内核结构示意Fig.14 AVR microcontroller core structure indicate5.3 AVR单片机引脚功能VCC 数字电路的电源;GND地; 端口 A(PA7.PA0) 端口 A 做为 A/D转换器的模拟输入端。端口 A 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 A处于高阻状态。 端口 B(PB7.PB0) 端口 B 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 B处于高阻状态。端口 B 也可以用做其他不同的特殊功能。 端口 C(PC7.PC0) 端口 C 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 C 处于高阻状态。如果JTAG接口使能,即使复位出现引脚 PC5(TDI)、 PC3(TMS)与 PC2(TCK)的上拉电阻被激活。端口 C 也可以用做其他不同的特殊功能。端口 D(PD7.PD0) 端口 D 为 8 位双向 I/O 口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口 D 处于高阻状态。端口 D 也可以用做其他不同的特殊功能。RESET 复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位。 XTAL1 反向振荡放大器与片内时钟操作电路的输入端; XTAL2 反向振荡放大器的输出端。 AVCCAVCC是端口A与A/D转换器的电源。不使用ADC时,该引脚应直接与VCC连接。使用ADC时应通过一个低通滤波器与 VCC 连接。 AREFA/D 的模拟基准输入引脚。175.4 Atmage16的封装图15 Atmage16引脚示意Fig.15 Atmage16 pin hands本系统采用AVR做为处理器,AVR单片机吸取了PIC及8051等单片机的优点,同时在内部结构上还作了一些重大改进,系统可以采用两个单片机作为处理器一个为主机,主要负责数据的处理和显示,一个为数据采集把电网上的电流的短路次数通过外部数模转换电路变为数字信号,单片机将数据有采用串口通讯方式以无线通信为渠道进行通讯将数字传给主机,主机单片机读取数据并显示,当数据信息表明电网中害虫两达到一定程度时,采用外部中断驱动步进电机执行自动清扫工作。6. 系统软件设计6.1 无线模块串口通讯程序设计串口通信 ATmega16 单片机带有一个全双工的通用同步/异步串行收发模块 USART, 该接口是一个高度灵活的串行 通讯设备。其主要特点如下:全双工操作,可同时进行收发操作;支持同步或异步操作;支持 5、6、7、8 和 9 位数据位,1 位或者 2 位停止位的串行数据帧结构; 三个完全独立的中断,TX 发送完成,TX 发送数据寄存器空,RX 接收完成;支持多机通讯模式;相关寄存器:USART 数据寄存器UDR; USART 控制和状态寄存器UCSRA,UCSRB,UCSRC; 波特率寄存器UBRRL 和 UBRRH;串行同步通讯容易理解,约定一个同步时钟,每一时刻传输线上的信息就是要传送的信息单元。串行异步通讯是把一个字符看作一个独立的信息单元,每一个字符中的各位是以固定的时间传送。因此,这种传送 方式在同一字节内部是同步的,而字符间是异步的。在异步通信中收发双方取得同步的方法是采用在字符格式中设置起始位,而在字符结束时发送 12 个停止位。当接收器检测到起始位时,便能知道经接着的是有效的字符位,于是开始接收字符,检测到停止位时,就将接收到的有效字符装载到接收缓冲器中。最简单的串口通信使用 3 根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能串口够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口 串口通信最重要 串口 的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:1) 波特率:这是一个衡量通信速度的参数。它表示每秒钟传送的 bit 的个数。例如 300 波特表示每秒钟发 送 300 个 bit。当我们提到时钟周期时,我们就是指波特率例如如果协议需要 4800 波特率,那么时钟是4800Hz。这意味着串口 串口通信在数据线上的采样率为 4800Hz。通常电话线的波特率为 14400,28800 和 串口 36600。波特率可以远远大于这些值,但是波特率和距离成反比。高波特率常常用于放置的很近的仪器间 的通信,典型的例子就是 GPIB 设备的通信。2) 数据位:这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是 8 位的,标准的值是5、7和8位。如何设置取决于你想传送的信息。比如,标准的 ASCII 码是 0127(7 位)。扩 展的 ASCII 码是 0255(8 位)。如果数据使用简单的文本(标准 ASCII 码),那么每个数据包使用 7 位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议 的选取,术语“包”指任何通信的情况。3) 停止位:用于表示单个包的最后一位。典型的值为 1,1.5 和 2 位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表 示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程 度越大,但是数据传输率同时也越慢。4) 奇偶校验位:在串口 串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。当然没有校验位 串口 也是可以的。对于偶和奇校验的情况,串口 串口会设置校验位(数据位后面的一位),用一个值确保传输的数 串口 据有偶个或者奇个逻辑高位。例如,如果数据是 011,那么对于偶校验,校验位为 0,保证逻辑高的位数 是偶数个。如果是奇校验,校验位位 1,这样就有 3 个逻辑高位。高位和低位不真正的检查数据,简单置 位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信 或者是否传输和接收数据是否不同步14USART 接受以下 30 种组合的数据帧格式:1 个起始位5、6、7、8 或 9个数据位、无校验位、奇校验或偶校验位1或2个停止位。数据帧以起始位开始;紧接着是数据字的最低位,数据字最多可以有 9 个数据位,以数据的最高位结束。 如果使能了校验位,校验位将紧接着数据位,最后是结束位。当一个完整的数据帧传输后,可以立即传输下一个新的数据帧,或使传输线处于空闲状态。数据帧的结构由 UCSRB 和 UCSRC 寄存器中的 UCSZ2:0、UPM1:0、USBS 设定。接收与发送使用相同的设置。设置的任何改变都可能破坏正在进行的数据传送与接收。7因为无线模块的通讯波特率为9600,而本系统用是8M的晶振,所以串口的设置如下: UCSRB = 0x00; /disable while setting baud rate UCSRA = 0x00; /Bit1为1则倍速发送 UCSRC = 0x86; UBRRL = 0x33; /波特率:9600 Bps UBRRH = 0x00; /误差率:0.156%UCSRB = 0x18; 9 6.2 定时器选择及程序设计定时/计数器(Timer/Counter)是单片机中最基本的接口之一。它的用途是非常广泛的,常用于计数、延时,以及测量周期、频率、脉宽,并提供定时脉冲信号。相对于一般的8位单片机而言,AVR不仅配备了更多的定时/计数器接口,而且还是增强型的,定时/计数器与比较匹配寄存器相配合,生成占空比可变的方波信号,及脉宽度调制输出PWM信号,用于D/A转换、电机无极调速控制、变频控制等,功能非常的强大。Atmega16配置了2个8位和1个16位的共3个定时/计数器,它们是8位定时器/计数器T/C0、T/C2和16位定时器T/C1,其中8位定时器具有以下特点:1) 单通道计数器;2) 比较匹配清0计数器;3) 可产生无输出抖动(glitch-free)的、相位可调的脉宽调制(PWM)信号输出;4) 频率发生器;5) 外部事件计数器(仅T/C0);6) 溢出和比较匹配中断源(TOV0、OCF0、和TOV2、OCF2);7) 允许使用外部引脚的32768Hz晶体作为独立的计数器时钟源(仅T/C2);另外16位定时/计数器T/C1较8位的相比主要有以下特点:1) 2个独立的输出比较匹配单元;2) 周期可调的PWM波形输出;3) 频率发生器;4) 10位时钟预分频器;5) 比较匹配清0计数器;6) 1个输入捕捉单元;7) 双缓冲输出比较寄存器;8) 外部事件计数器;9) 真正的16位设计;10) 输入捕捉噪声抑制;11) 4个独立的中断源;图17 定时器内部结构Fig.17 Timer internal structure本系统是用定时器0来定时,大约是一秒来发一次数据给无线模块,而定时器1是用来产生三路的PWM来控制步进电的转动。它们的设置如下:void timer0_init(void) TCCR0 = 0x00; /stop TCNT0 = 0xB2; /set count OCR0 = 0x4E; /set compare TCCR0 = 0x05; /start timervoid motor_init(void) DDRD=0xf0; TCCR1B = 0x00; /stop TCNT1H = 0xFF; /setup TCNT1L = 0x83; OCR1AH = 0x00; OCR1AL = 0x7D; OCR1BH = 0x00; OCR1BL = 0x7D; ICR1H = 0x00; ICR1L = 0x7D; TCCR1A = 0x00; TCCR1B = 0x03; /start Timer TIMSK |= 0x04; /允许T1溢出中断 6.3 模拟比较器的程序设计ATmega16 的模拟比较器可以实现对两个输入端:正极 AIN0 和负极 AIN1(对应于 ATmage16 的引脚 PB2,PB3)的模拟输入电压进行比较.当 AIN0 上的电压高于 AIN1 的电压 时,模拟比较器输出 ACO 被设为1 .比较器的输出还可以被设置作为定时计数器 1 输入捕 获功能的触发信号.此外,比较器的输出可以触发一个独立的模拟比较器中断.用户可以选 择使用比较器输出的上升沿, 下降沿或事件触发作为模拟比较器中断的触发信号。10图18 定时比较器Fig.18 Timing comparator开始系统初始化设置比较器寄存器AV0AV1的电压? 昆虫计数器加1否是图19 模拟比较器流程图Fig.19 Analog comparator flow chart模拟比较器相关的寄存器和标志位 相关的寄存器 10.1.1 与模拟比较器相关的寄存器和标志位 .1,与模拟比较器相关的寄存器是 SFIOR,ACSR.用户通过这两个寄存器的相关位实现对模 拟比较器的设置和控制.17寄存器 SFIOR 中的第 3 位 ACME 为模拟比较器多路使能控制位.当该位为逻辑1,同 时模数转换(ADC)功能被关闭(ADCSRA 寄存器中的 ADEN 使能位为0)时,允许使用 ADC 多路复用器选择 ADC 的模拟输入端口作为模拟比较器反向端的输入信号源.当该位为零时, AIN1 引脚的信号将加到模拟比较器反向端. 2) 模拟比较器控制和状态寄存器ACSR位 $08 ($0028) 读/写 复位值 7 ACD R/W 0 6 ACBG R/W 0 5 ACO R N/A 4 ACI R/W 0 3 ACIE R/W 0 2 ACIC R/W 0 1 ACIS1 R/W 0 0 ACIS0 R/W 0 ACSRACSR 是模拟比较器主要的控制寄存器,其中各个位的作用如下: 位 7ACD:模拟比较器禁止 当该位设为1时,提供给模拟比较器的电源关闭.该位可以在任何时候被置位,从 而关闭模拟比较器.在 MCU 闲置模式,且无需将模拟比较器作为唤醒源的情况下,关闭模拟 比较器可以减少电源的消耗. 要改变 ACD 位的设置时, 应该先将寄存器 ACSR 中的 ACIE 位清 零,把模拟比较器中断禁止掉.否则,在改变 ADC 位设置时会产生一个中断. 位 6ACBG:模拟比较器的能隙参考源选择 当该位为1时,芯片内部一个固定的能隙(Bandgap)参考电源 1.22V 将代替 AIN0 的输入,作为模拟比较器的正极输入端.当该位被清零时,AIN0 的输入仍然作为模拟比较 器的正极输入端. 位 5ACO:模拟比较器输出 模拟比较器的输出信号经过同步处理后直接与 ACO 相连.由于经过同步处理,ACO 与模 拟比较器的输出之间,会有 12 个时钟的延时. 位 4ACI:模拟比较器中断标志位 当模拟比较器的输出事件符合中断触发条件时 (中断触发条件由 ACIS1 和 ACIS0 定义) , ACI 由硬件置1 .若 ACIE 位置1 ,且状态寄存器中的 I 位为1时,MCU 响应模拟比 较器中断.当转入模拟比较中断处理向量时,ACI 被硬件自动清空.此外,也可使用软件方 式清零 ACI:对 ACI 标志位写入逻辑1来清零该位. 位 3ACIE:模拟比较器中断允许 当 ACIE 位设为1 ,且状态寄存器中的 I 位被设为1时,允许模拟比较器中断触发. 当 ACIE 被清0时,模拟比较器中断被禁止. 位 2ACIC:模拟比较器输入捕获允许 当该位设置为1时,定时计数器 1 的输入捕获功能将由模拟比较器的输出来触发. 在这种情况下,模拟比较器的输出直接连到输入捕获前端逻辑电路,从而能利用定时器/计 数器 1 输入捕获中断的噪声消除和边缘选择的特性. 当该位被清零时, 模拟比较器和输入捕 获功能之间没有联系.要使能比较器触发定时器/计数器 1 的输入捕获中断,定时器中断屏 蔽寄存器(TIMSK)中 的 TICIE1 位必须被设置. 位 1,0ACIS1,ACIS0:模拟比较器中断模式选择 这 2 个位决定哪种模拟比较器的输出事件可以触发模拟比较器的中断。 因本系统是用了AVR单片内部的比较器进行脉冲的计算,所以设置了AIN0和AIN1两个IO口的电压进行比较。同时用了比较中断进行处理计数脉冲信号。它们的设置如下:18void comparator_init(void) ACSR=ACSR&0xf7;/AN0和AN1进行比较 ACSR=(1ACIE);/ 比较器中断6.4 进步电机控制程序设计步进电机是一种将电脉冲转化为角位移的机电 执行元件。每外加一个控制脉冲,电机就运行一步, 故称为步进电机或脉冲马达。通俗一点讲:当步进电 机接收到一个脉冲信号,它就驱动步进电机按设定的 方向转动一个固定的角度(步进角)。可以通过控制 脉冲个数来控制角位移量,从而达到准确定位的目 的;同时可以通过控制脉冲频率来控制电机转动的速 度和加速度,从而达到调速的目的。本系统的害虫体清除任务驱动是采样了步进电机,我们采用了四相步进电机单四拍方式驱动 。程序如下:void run_motor_mod(unsigned char a) switch(a) case MOTOR_FRONT: /单四拍方式驱动 MOTOR_PORT &=0x0f; MOTOR_PORT|= 1move_count; /A、B、C、D驱动 move_count-; if(move_count=3)move_count=7; break; case MOTOR_BACK: /单四拍方式驱动 MOTOR_PORT &=0x0f; MOTOR_PORT |= 1=8)move_count=4; break; case MOTOR_STOP: MOTOR_PORT &=0x0f; default:break; 开始 电机初始化接到正转信号?电机正转电机反转是否碰击次数1000图17 电机控制程序流程图Fig.17 Motor control program flow chart7 单片机在线仿真的界面在线仿真时,可以通过JTAG把数据在仿真界面显示出来,数据包括变量的变化,寄存器值的情况。在仿真的过程中可以进行单条语句的运行。这样的在线仿真的方式大大地提高了系统开发项目的效率。图18 系统在线软件仿真效果图Fig.18 System online software simulation effect diagram总结毕业设计是毕业前的最后一个环节,是对所学基础知识和专业知识的一次综合应用。这一个过程对学生的学习能力和动手能力也是一个很好的锻炼机会。理论与实际相结合,不仅把课堂上学的有关知识与技能训练相结合,还起到引导学生了解和接触社会实际的作用。 经过一个多月的努力,本毕业设计接近尾声。通过这个毕业设计,我不仅把知识融会贯通,而且积累了许多电路设计和程序编写的经验,认识到自动化的发展方向,使自己在大学四年所学的专业知识和动手能力有了很大的提高。同时巩固在学习课本知识之外,也在学习和做事工作态度上得到了很大的改进,让我认识到无论多么艰难的任务,摆正心态我在电路设计方面的知识有很大的欠缺,所以在做毕业设计的过程中,遇到了许多的困难,但这些困难能让我更深刻地体会到,不断去学习和更新知识是很重要的。要想提升自己的能力,就必须亲自动手。只有在设计的过程中,不断地去解决所遇到的问题,不断地去积累自己的经验,才能在毕业之后更快地走上好的发展平台,为社会贡献自己的一分力量。参考文献1 光电技术M江文杰.北京:科学技术出版社,2003:20-332.2 李钟实.太阳能发电系统-设计施工与维护M,北京人民邮电出版社,2010: 12-353 秦曾煌.电工学上册M. 北京.高等教育出版社.2002:58-102.4 秦曾煌.电工学下册M. 北京.高等教育出版社.2002: 156-180.5 明日科技编著. Visual Basic开发技术大全(M.北京人民邮电出版社,2007.46 濮良贵.电子设计M.北京高等教育出版社,2003.57 李朝表.PC机及单片机数据通信M.北京:北京航空航天大学出版社,2001:129-145.8 仇玉章.微型计算机原理与接口技术M.北京:清华大学出版社,2005:80-153.9 李鸿.单片机控制基础M.长沙:湖南大学出版社,2005:135-256.10 仇玉章.32位微型计算机原理与接口技术M.北京:清华大学出版社,2000:46-88.13 康华光.电子技术基础数字部分M.高等教育出版社,2001:80-147. 14 杨文龙.单片机原理及应用M.西安电子科技大学出版社,2003:46-8915 张军 AVR单片机应用系统开发典型实例M.中国电力出版社.200516 李珩.电路设计与制版Protel DXP教程M.西安电子科技大学出版,2004:36-9717 马潮.AVR单片机嵌入式系统原理与应用实践M.北京航空航天大学出版社,200718 吴春艳;何颖;刘少学;步进电机细分驱动电路设计A,中国仪器仪表与测控技术交流大会论文集,200719 Harold J. Hovel 著 赵富鑫 李今其 译 万世永 校 太阳电池-半导体和半金属丛书第十一卷20 陈景亮 姚学玲等 脉冲电流技术M.西安:西安交通大学出版社,2008.1021 黄志玮.无线电发射与接收电路设计M.2版北京:北京航空航天大学出版社,2007.722 刘凤君 现代逆变技术及应用.电子工业大学出版社,200823 Electronic Devices and Circuit Theory Ninth Edition美.Robert高等教育出版社24 ATMEGA16 J./down/Atmel/9.html25 VTI Technologies Improved Output Filtering Technical Note 18致 谢 本论文是在康江老师的悉心指导和热情关怀下完成的。经过一个月的设计与计算,本次毕业设计基本完成了,并到达了任务书要求的效果。由于本人水平有限,在论文的感谢过程中得很多老师同学的悉心帮助。首先感谢我的指导老师康江老师,正因有他的精心指导,我的毕业设计才能顺利制作完成。康老师严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。康老师给我们提供了一个很好的锻炼的平台。在生活上老师也给与我无微不至的关怀,毕业设计的进展如何,康老师都非常关心,几乎每天都会询问进展情况。在此谨向恩师表示诚挚的敬意和由衷的感谢。再次感谢机器人小组谭勇给我的各方面帮助和李新平学长在程序上给我的指导,黄成效学长无论是电路方面还是程序方面,都给予很大的帮助和建议,让我学到了许多的知识。还要感谢机器人小组各个成员,正是由于大家的帮助和支持,我才能克服一个个的困难和疑惑,直至本此设计的顺利完成。最后还要感谢学校给予了我大力的支持,给我们提供了各种需要调试的设备。感谢各位关心我的老师,给予我帮助和建议。一次毕业论文的完成,让我重新对大学四年的知识进行了一个比较系统的学习和领悟,无论是在知识层面上和精神粮食层面上都有很大的收获,作为一个本科生的毕业设计,由于经验的不足,难免有许多考虑不周全的地方,如果没有导师的督促指导,以及一起工作的同学们的支持,想要完成这个设计制作是很难的。可敬的师长、同学、朋友,在这里请接受我诚挚的谢意!附录附录1:系统主函数程序附录2:串口接收中断程序附录3:电机驱动、LED显示、定时器2溢出中断程序附录6:单片机原理图附录7:逆变电路原理图附录8:太阳能蓄电池原理图附录1 #include main.h#define LED0 0 #define LED0_OFF() PORTB|= (1LED0) / 输出高电平,灯灭#define LED0_ON() PORTB&=(1LED0) / 输出低电平,灯亮#define MOTOR_PORT PORTD #define CLEAN_DTAT 10#define MOTOR_STEP 10#define MOTOR_FRONT 0#define MOTOR_BACK 1#define MOTOR_STOP 3unsigned long insect_count=0;/害虫计数unsigned char time=0; /串口定时发送的时间unsigned char move_count=4; /转动计数unsigned int Time=0; /转速unsigned int clean_count=0;/害虫计数到unsigned int motor_step=0;/步进电机运行走的步数unsigned char clean_bit=0;/清扫标志位void count_data(void);/*/ /*函数名字:void port_init(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:IO口的初始化 */ /*/void port_init(void) PORTA = 0x00; DDRA = 0x00; PORTB = 0X01; DDRB = 0x01; PORTC = 0x00; DDRC = 0x00; PORTD = 0x00; DDRD = 0x00;/*/ /*函数名字:void comparator_init(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:比较器的初始化 */ /*/void comparator_init(void) ACSR=ACSR&0xf7;/AN0和AN1进行比较 ACSR=(1ACIE);/ 比较器中断/*/ /*函数名字:void ana_comp_isr(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:比较器的中断 */ /*/#pragma interrupt_handler ana_comp_isr:17void ana_comp_isr(void) count_data();/计数短路次数/*/ /*函数名字:void count_data(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:计算数据 */ /*/void count_data(void) if (ACSR&(1 AIN1 PORTB |=0x01; else /AIN0CLEAN_DTAT) clean_count=0; clean_bit=1; /*/ /*函数名字:void run_motor_op(unsigned char a) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:步进电运行 */ /*/void run_motor_mod(unsigned char a) switch(a) case MOTOR_FRONT: /单四拍方式驱动 MOTOR_PORT &=0x0f; MOTOR_PORT|= 1move_count; /A、B、C、D驱动 move_count-; if(move_count=3)move_count=7; break; case MOTOR_BACK: /双四拍方式驱动 MOTOR_PORT &=0x0f; MOTOR_PORT |= 1=8)move_count=4; break; case MOTOR_STOP: MOTOR_PORT &=0x0f; default:break; /*/ /*函数名字:void timer0_init(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:定时器中断 初始化 */ /*/void timer0_init(void) TCCR0 = 0x00; /stop TCNT0 = 0xB2; /set count OCR0 = 0x4E; /set compare TCCR0 = 0x05; /start timer/*/ /*函数名字:void motor_init(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:进步电机用到的定时器初始化 */ /*/void motor_init(void) DDRD=0xf0; TCCR1B = 0x00; /stop TCNT1H = 0xFF; /setup TCNT1L = 0x83; OCR1AH = 0x00; OCR1AL = 0x7D; OCR1BH = 0x00; OCR1BL = 0x7D; ICR1H = 0x00; ICR1L = 0x7D; TCCR1A = 0x00; TCCR1B = 0x03; /start Timer TIMSK |= 0x04; /允许T1溢出中断 /*/ /*函数名字:void timer0_ovf_isr(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:定时器0中断 */ /*/#pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVFvoid timer0_ovf_isr(void) CLI(); /disable all interrupts TCNT0 = 0xb2; /reload counter value /run_motor_mod(mode); time+; if(time=100) time=0; Putstr(The insect data is :); Putchar(insect_count%1000000/100000|0x30); Putchar(insect_count%100000/10000|0x30); Putchar(insect_count%10000/1000|0x30); Putchar(insect_count%1000/100|0x30); Putchar(insect_count%100/10|0x30); Putchar(insect_count%10|0x30); Putchar(0x0a); /回车换行 Putchar(0x0d); SEI(); /re-enable interrupts/*/ /*函数名字:void timer1_ovf_isr(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:定时器1中断 */ /*/#pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVFvoid timer1_ovf_isr(void) TCNT1H = 0xFF; /setup TCNT1L = 0x83; Time+; if(Time=100)/开始清洁 Time=0; if(clean_bit=1) motor_step+;/计算步数 if(motor_step =MOTOR_STEP) & (motor_step(MOTOR_STEP*2) run_motor_mod(MOTOR_BACK);/后退 else /清洁完成 run_motor_mod(MOTOR_STOP);/后退clean_bit=0;motor_step=0; /*/ /*函数名字:void init_devices(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:设置初始化 */ /*/void init_devices(void) /stop errant interrupts until set up CLI(); /disable all interrupts timer0_init(); port_init(); Uart_Init(); comparator_init(); motor_init(); MCUCR = 0x00; GICR = 0x00; TIMSK |= 0x01; /timer interrupt sources SEI(); /re-enable interrupts /all peripherals are now initialized/*/ /*函数名字:void main(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:主函数 */ /*/void main(void) init_devices(); while(1) ; 附录2 include #include uart.h/*/ /*函数名字:void Uart_Init(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:串口初始化子程序 */ /*/void Uart_Init(void) UCSRB = 0x00; /disable while setting baud rate UCSRA = 0x00; /Bit1为1则倍速发送 UCSRC = 0x86; UBRRL = 0x33; /波特率:9600 Bps UBRRH = 0x00; /误差率:0.156% UCSRB = 0x18; /*/ /*函数名字:unsigned char Getchar(void) */ /*输入参数:无 */ /*输出参数:无 */ /*功能描述:串口接收字节子程序 */ /*/unsigned char Getchar(void) while(!(UCSRA& (1RXC); return UDR;/*/ /*函数名字:void Putchar(unsigned char data) */ /*输入参数:unsigned char data */ /*输出参数:无 */ /*功能描述:串口发送字节子程序 */ /*/void Putchar(unsigned char data) while (!(UCSRA&(1UDRE); UDR=data;/*/ /*函数名字:void Putstr(char *s) */ /*输入参数:char *s */ /*输出参数:无 */ /*功能描述:串口发送字符串子程序 */ /*/void Putstr(char *s) while (*s) Putchar(*s); s+; #ifndef_UART_H#define_UART_H/-/串口初始化子程序void Uart_Init(void);/-/串口接收字节子程序unsigned char Getchar(void);/串口发送字节子程序void Putchar(unsigned char c);/-/串口发送字符串子程序void Putstr(char *s);/-/串口发送字符串子程序void Puts(char *s);#endif附录3系统各部分测试程序及参数 _text_start:_start: 3B E5CF LDIR28,0x5F 3C E0D4 LDIR29,4 3D BFCD OUT0x3D,R28 3E BFDE OUT0x3E,R29 3F 51C0 SUBIR28,0x10 40 40D0 SBCIR29,0 41 EA0A LDIR16,0xAA 42 8308 STY,R16 43 2400 CLRR0 44 E8E2 LDIR30,0x82 45 E0F0 LDIR31,0 46 E010 LDIR17,0 47 38E2 CPIR30,0x82 48 07F1 CPCR31,R17 49 F011 BEQ0x004C 4A 9201 STZ+,R0 4B CFFB RJMP0x0047 4C 8300 STZ,R16 4D E5E4 LDIR30,0x54 4E E0F0 LDIR31,0 4F E6A0 LDIR26,0x60 50 E0B0 LDIR27,0 51 E010 LDIR17,0 52 E000 LDIR16,0 53 BF0B OUT0x3B,R16 54 37E6 CPIR30,0x76 55 07F1 CPCR31,R17 56 F021 BEQ0x005B 57 95C8 LPM 58 9631 ADIWR30,1 59 920D STX+,R0 5A CFF9 RJMP0x0054 5B 940E 02D5 CALL_main_exit: 5D CFFF RJMP_exitFILE: C:DOCUME1Administrator桌面程序与原理图AVR程序main.c(0001) #include main.h(0002) #define LED0 0 (0003) #define LED0_OFF() PORTB|= (1LED0) / 输出高电平,灯灭(0004) #define LED0_ON() PORTB&=(1LED0) / 输出低电平,灯亮(0005) #define MOTOR_PORT PORTD (0006) #define CLEAN_DTAT 10(0007) #define MOTOR_STEP 10(0008) #define MOTOR_FRONT 0(0009) #define MOTOR_BACK 1(0010) #define MOTOR_STOP 3(0011) unsigned long insect_count=0;/害虫计数(0012) unsigned char time=0; /串口定时发送的时间(0013) unsigned char move_count=4; /转动计数(0014) unsigned int Time=0; /转速(0015) unsigned int clean_count=0;/害虫计数到(0016) unsigned int motor_step=0;/步进电机运行走的步数(0017) unsigned char clean_bit=0;/清扫标志位(0018) void count_data(void);(0019) /*/ (0020) /*函数名字:void port_init(void) */ (0021) /*输入参数:无 */ (0022) /*输出参数:无 */ (0023) /*功能描述:IO口的初始化 */ (0024) /*/(0025) void port_init(void)(0026) (0027) PORTA = 0x00;_port_init: 5E 2422 CLRR2 5F BA2B OUT0x1B,R2(0028) DDRA = 0x00; 60 BA2A OUT0x1A,R2(0029) PORTB = 0X01; 61 E081 LDIR24,1 62 BB88 OUT0x18,R24(0030) DDRB = 0x01; 63 BB87 OUT0x17,R24(0031) PORTC = 0x00; 64 BA25 OUT0x15,R2(0032) DDRC = 0x00; 65 BA24 OUT0x14,R2(0033) PORTD = 0x00; 66 BA22 OUT0x12,R2(0034) DDRD = 0x00; 67 BA21 OUT0x11,R2 68 9508 RET(0035) (0036) /*/ (0037) /*函数名字:void comparator_init(void) */ (0038) /*输入参数:无 */ (0039) /*输出参数:无 */ (0040) /*功能描述:比较器的初始化 */ (0041) /*/(0042) void comparator_init(void)(0043) (0044) (0045) ACSR=ACSR&0xf7;/AN0和AN1进行比较_comparator_init: 69 B188 INR24,0x08 6A 7F87 ANDIR24,0xF7 6B B988 OUT0x08,R24(0046) ACSR=(1ACIE);/ 比较器中断 6C E088 LDIR24,0x8 6D B988 OUT0x08,R24 6E 9508 RET_ana_comp_isr: 6F 920A ST-Y,R0 70 921A ST-Y,R1 71 922A ST-Y,R2 72 923A ST-Y,R3 73 924A ST-Y,R4 74 925A ST-Y,R5 75 926A ST-Y,R6 76 927A ST-Y,R7 77 928A ST-Y,R8 78 929A ST-Y,R9 79 930A ST-Y,R16 7A 931A ST-Y,R17 7B 932A ST-Y,R18 7C 933A ST-Y,R19 7D 938A ST-Y,R24 7E 939A ST-Y,R25 7F 93AA ST-Y,R26 80 93BA ST-Y,R27 81 93EA ST-Y,R30 82 93FA ST-Y,R31 83 B60F INR0,0x3F 84 920A ST-Y,R0(0047) (0048) /*/ (0049) /*函数名字:void ana_comp_isr(void) */ (0050) /*输入参数:无 */ (0051) /*输出参数:无 */ (0052) /*功能描述:比较器的中断 */ (0053) /*/(0054) #pragma interrupt_handler ana_comp_isr:17(0055) void ana_comp_isr(void)(0056) (0057) count_data();/计数短路次数 85 D017 RCALL_count_data 86 9009 LDR0,Y+ 87 BE0F OUT0x3F,R0 88 91F9 LDR31,Y+ 89 91E9 LDR30,Y+ 8A 91B9 LDR27,Y+ 8B 91A9 LDR26,Y+ 8C 9199 LDR25,Y+ 8D 9189 LDR24,Y+ 8E 9139 LDR19,Y+ 8F 9129 LDR18,Y+ 90 9119 LDR17,Y+ 91 9109 LDR16,Y+ 92 9099 LDR9,Y+ 93 9089 LDR8,Y+ 94 9079 LDR7,Y+ 95 9069 LDR6,Y+ 96 9059 LDR5,Y+ 97 9049 LDR4,Y+ 98 9039 LDR3,Y+ 99 9029 LDR2,Y+ 9A 9019 LDR1,Y+ 9B 9009 LDR0,Y+ 9C 9518 RETI(0058) (0059) /*/ (0060) /*函数名字:void count_data(void) */ (0061) /*输入参数:无 */ (0062) /*输出参数:无 */ (0063) /*功能描述:计算数据 */ (0064) /*/(0065) void count_data(void)(0066) (0067) if (ACSR&(1 AIN1 _count_data: 9D 9945 SBIC0x08,5 9E C002 RJMP0x00A1(0068) (0069) PORTB |=0x01; 9F 9AC0 SBI0x18,0(0070) (0071) A0 C036 RJMP0x00D7(0072) else /AIN0CLEAN_DTAT) C5 E08A LDIR24,0xA C6 E090 LDIR25,0 C7 9020 0068 LDSR2,clean_count C9 9030 0069 LDSR3,clean_count+1 CB 1582 CPR24,R2 CC 0593 CPCR25,R3 CD F448 BCC0x00D7(0078) (0079) clean_count=0; CE 2422 CLRR2 CF 2433 CLRR3 D0 9230 0069 STSclean_count+1,R3 D2 9220 0068 STSclean_count,R2(0080) clean_bit=1; D4 E081 LDIR24,1 D5 9380 006C STSclean_bit,R24(0081) (0082) D7 9508 RET_run_motor_mod: a - R10 D8 940E 0365 CALLpush_xgset300C DA 2EA0 MOVR10,R16(0083) (0084) /*/ (0085) /*函数名字:void run_motor_op(unsigned char a) */ (0086) /*输入参数:无 */ (0087) /*输出参数:无 */ (0088) /*功能描述:步进电运行 */ (0089) /*/(0090) void run_motor_mod(unsigned char a)(0091) (0092) switch(a) DB 2D4A MOVR20,R10 DC 2755 CLRR21 DD 3040 CPIR20,0 DE 0745 CPCR20,R21 DF F049 BEQ0x00E9 E0 3041 CPIR20,1 E1 E0E0 LDIR30,0 E2 075E CPCR21,R30 E3 F0F1 BEQ0x0102 E4 3043 CPIR20,3 E5 E0E0 LDIR30,0 E6 075E CPCR21,R30 E7 F181 BEQ0x0118 E8 C032 RJMP0x011B(0093) (0094) case MOTOR_FRONT: /单四拍方式驱动(0095) MOTOR_PORT &=0x0f; E9 B382 INR24,0x12 EA 708F ANDIR24,0xF EB BB82 OUT0x12,R24(0096) MOTOR_PORT|= 1move_count; /A、B、C、D驱动 EC 9110 0065 LDSR17,move_count EE E001 LDIR16,1 EF 940E 0378 CALLlsl8 F1 B222 INR2,0x12 F2 2A20 ORR2,R16 F3 BA22 OUT0x12,R2(0097) move_count-; F4 9180 0065 LDSR24,move_count F6 5081 SUBIR24,1 F7 9380 0065 STSmove_count,R24(0098) if(move_count=3)move_count=7; F9 E083 LDIR24,3 FA 9020 0065 LDSR2,move_count FC 1582 CPR24,R2 FD F0E8 BCS0x011B FE E087 LDIR24,7 FF 9380 0065 STSmove_count,R24(0099) break; 101 C019 RJMP0x011B(0100) (0101) case MOTOR_BACK: /双四拍方式驱动(0102) MOTOR_PORT &=0x0f; 102 B382 INR24,0x12 103 708F ANDIR24,0xF 104 BB82 OUT0x12,R24(0103) MOTOR_PORT |= 1=8)move_count=4; 112 3088 CPIR24,0x8 113 F038 BCS0x011B 114 E084 LDIR24,4 115 9380 0065 STSmove_count,R24(0106) break; 117 C003 RJMP0x011B(0107) case MOTOR_STOP: MOTOR_PORT &=0x0f; 118 B382 INR24,0x12 119 708F ANDIR24,0xF 11A BB82 OUT0x12,R24(0108) default:break; 11B 940C 036A JMPpop_xgset300C(0109) (0110) (0111) /*/ (0112) /*函数名字:void timer0_init(void) */ (0113) /*输入参数:无 */ (0114) /*输出参数:无 */ (0115) /*功能描述:定时器中断 初始化 */ (0116) /*/(0117) void timer0_init(void)(0118) (0119) TCCR0 = 0x00; /stop_timer0_init: 11D 2422 CLRR2 11E BE23 OUT0x33,R2(0120) TCNT0 = 0xB2; /set count 11F EB82 LDIR24,0xB2 120 BF82 OUT0x32,R24(0121) OCR0 = 0x4E; /set compare 121 E48E LDIR24,0x4E 122 BF8C OUT0x3C,R24(0122) TCCR0 = 0x05; /start timer 123 E085 LDIR24,5 124 BF83 OUT0x33,R24 125 9508 RET(0123) (0124) (0125) /*/ (0126) /*函数名字:void motor_init(void) */ (0127) /*输入参数:无 */ (0128) /*输出参数:无 */ (0129) /*功能描述:进步电机用到的定时器初始化 */ (0130) /*/(0131) void motor_init(void)(0132) (0133) DDRD=0xf0;_motor_init: 126 EF80 LDIR24,0xF0 127 BB81 OUT0x11,R24(0134) TCCR1B = 0x00; /stop 128 2422 CLRR2 129 BC2E OUT0x2E,R2(0135) TCNT1H = 0xFF; /setup 12A EF8F LDIR24,0xFF 12B BD8D OUT0x2D,R24(0136) TCNT1L = 0x83; 12C E883 LDIR24,0x83 12D BD8C OUT0x2C,R24(0137) OCR1AH = 0x00; 12E BC2B OUT0x2B,R2(0138) OCR1AL = 0x7D; 12F E78D LDIR24,0x7D 130 BD8A OUT0x2A,R24(0139) OCR1BH = 0x00; 131 BC29 OUT0x29,R2(0140) OCR1BL = 0x7D; 132 BD88 OUT0x28,R24(0141) ICR1H = 0x00; 133 BC27 OUT0x27,R2(0142) ICR1L = 0x7D; 134 BD86 OUT0x26,R24(0143) TCCR1A = 0x00; 135 BC2F OUT0x2F,R2(0144) TCCR1B = 0x03; /start Timer 136 E083 LDIR24,3 137 BD8E OUT0x2E,R24(0145) TIMSK |= 0x04; /允许T1溢出中断 138 B789 INR24,0x39 139 6084 ORIR24,4 13A BF89 OUT0x39,R24 13B 9508 RET_timer0_ovf_isr: 13C 920A ST-Y,R0 13D 921A ST-Y,R1 13E 922A ST-Y,R2 13F 923A ST-Y,R3 140 924A ST-Y,R4 141 925A ST-Y,R5 142 926A ST-Y,R6 143 927A ST-Y,R7 144 928A ST-Y,R8 145 929A ST-Y,R9 146 930A ST-Y,R16 147 931A ST-Y,R17 148 932A ST-Y,R18 149 933A ST-Y,R19 14A 938A ST-Y,R24 14B 939A ST-Y,R25 14C 93AA ST-Y,R26 14D 93BA ST-Y,R27 14E 93EA ST-Y,R30 14F 93FA ST-Y,R31 150 B60F INR0,0x3F 151 920A ST-Y,R0 152 92AA ST-Y,R10 153 92BA ST-Y,R11(0146) (0147) (0148) /*/ (0149) /*函数名字:void timer0_ovf_isr(void) */ (0150) /*输入参数:无 */ (0151) /*输出参数:无 */ (0152) /*功能描述:定时器0中断 */ (0153) /*/(0154) #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF(0155) void timer0_ovf_isr(void)(0156) CLI(); /disable all interrupts 154 94F8 BCLR7(0157) TCNT0 = 0xb2; /reload counter value 155 EB82 LDIR24,0xB2 156 BF82 OUT0x32,R24(0158) /run_motor_mod(mode);(0159) time+; 157 9180 0064 LDSR24,time 159 5F8F SUBIR24,0xFF 15A 9380 0064 STStime,R24(0160) if(time=100) 15C 3684 CPIR24,0x64 15D F009 BEQ0x015F 15E C0DB RJMP0x023A(0161) time=0; 15F 2422 CLRR2 160 9220 0064 STStime,R2(0162) Putstr(The insect data is :); 162 E60D LDIR16,0x6D 163 E010 LDIR17,0 164 940E 02EB CALL_Putstr(0163) Putchar(insect_count%1000000/100000|0x30); 166 E480 LDIR24,0x40 167 E492 LDIR25,0x42 168 E0AF LDIR26,0xF 169 E0B0 LDIR27,0 16A 9120 0062 LDSR18,insect_count+2 16C 9130 0063 LDSR19,insect_count+3 16E 9100 0060 LDSR16,insect_count 170 9110 0061 LDSR17,insect_count+1 172 93BA ST-Y,R27 173 93AA ST-Y,R26 174 939A ST-Y,R25 175 938A ST-Y,R24 176 940E 02FD CALLmod32u 178 EA80 LDIR24,0xA0 179 E896 LDIR25,0x86 17A E0A1 LDIR26,1 17B E0B0 LDIR27,0 17C 93BA ST-Y,R27 17D 93AA ST-Y,R26 17E 939A ST-Y,R25 17F 938A ST-Y,R24 180 940E 02FB CALLdiv32u 182 0118 MOVWR2,R16 183 0129 MOVWR4,R18 184 2DE2 MOVR30,R2 185 63E0 ORIR30,0x30 186 2E2E MOVR2,R30 187 2D02 MOVR16,R2 188 940E 02E7 CALL_Putchar(0164) Putchar(insect_count%100000/10000|0x30); 18A EA80 LDIR24,0xA0 18B E896 LDIR25,0x86 18C E0A1 LDIR26,1 18D E0B0 LDIR27,0 18E 9120 0062 LDSR18,insect_count+2 190 9130 0063 LDSR19,insect_count+3 192 9100 0060 LDSR16,insect_count 194 9110 0061 LDSR17,insect_count+1 196 93BA ST-Y,R27 197 93AA ST-Y,R26 198 939A ST-Y,R25 199 938A ST-Y,R24 19A 940E 02FD CALLmod32u 19C E180 LDIR24,0x10 19D E297 LDIR25,0x27 19E E0A0 LDIR26,0 19F E0B0 LDIR27,0 1A0 93BA ST-Y,R27 1A1 93AA ST-Y,R26 1A2 939A ST-Y,R25 1A3 938A ST-Y,R24 1A4 940E 02FB CALLdiv32u 1A6 0118 MOVWR2,R16 1A7 0129 MOVWR4,R18 1A8 2DE2 MOVR30,R2 1A9 63E0 ORIR30,0x30 1AA 2E2E MOVR2,R30 1AB 2D02 MOVR16,R2 1AC 940E 02E7 CALL_Putchar(0165) Putchar(insect_count%10000/1000|0x30); 1AE E180 LDIR24,0x10 1AF E297 LDIR25,0x27 1B0 E0A0 LDIR26,0 1B1 E0B0 LDIR27,0 1B2 9120 0062 LDSR18,insect_count+2 1B4 9130 0063 LDSR19,insect_count+3 1B6 9100 0060 LDSR16,insect_count 1B8 9110 0061 LDSR17,insect_count+1 1BA 93BA ST-Y,R27 1BB 93AA ST-Y,R26 1BC 939A ST-Y,R25 1BD 938A ST-Y,R24 1BE 940E 02FD CALLmod32u 1C0 EE88 LDIR24,0xE8 1C1 E093 LDIR25,3 1C2 E0A0 LDIR26,0 1C3 E0B0 LDIR27,0 1C4 93BA ST-Y,R27 1C5 93AA ST-Y,R26 1C6 939A ST-Y,R25 1C7 938A ST-Y,R24 1C8 940E 02FB CALLdiv32u 1CA 0118 MOVWR2,R16 1CB 0129 MOVWR4,R18 1CC 2DE2 MOVR30,R2 1CD 63E0 ORIR30,0x30 1CE 2E2E MOVR2,R30 1CF 2D02 MOVR16,R2 1D0 940E 02E7 CALL_Putchar(0166) Putchar(insect_count%1000/100|0x30); 1D2 EE88 LDIR24,0xE8 1D3 E093 LDIR25,3 1D4 E0A0 LDIR26,0 1D5 E0B0 LDIR27,0 1D6 9120 0062 LDSR18,insect_count+2 1D8 9130 0063 LDSR19,insect_count+3 1DA 9100 0060 LDSR16,insect_count 1DC 9110 0061 LDSR17,insect_count+1 1DE 93BA ST-Y,R27 1DF 93AA ST-Y,R26 1E0 939A ST-Y,R25 1E1 938A ST-Y,R24 1E2 940E 02FD CALLmod32u 1E4 E684 LDIR24,0x64 1E5 E090 LDIR25,0 1E6 E0A0 LDIR26,0 1E7 E0B0 LDIR27,0 1E8 93BA ST-Y,R27 1E9 93AA ST-Y,R26 1EA 939A ST-Y,R25 1EB 938A ST-Y,R24 1EC 940E 02FB CALLdiv32u 1EE 0118 MOVWR2,R16 1EF 0129 MOVWR4,R18 1F0 2DE2 MOVR30,R2 1F1 63E0 ORIR30,0x30 1F2 2E2E MOVR2,R30 1F3 2D02 MOVR16,R2 1F4 940E 02E7 CALL_Putchar(0167) Putchar(insect_count%100/10|0x30); 1F6 E684 LDIR24,0x64 1F7 E090 LDIR25,0 1F8 E0A0 LDIR26,0 1F9 E0B0 LDIR27,0 1FA 9120 0062 LDSR18,insect_count+2 1FC 9130 0063 LDSR19,insect_count+3 1FE 9100 0060 LDSR16,insect_count 200 9110 0061 LDSR17,insect_count+1 202 93BA ST-Y,R27 203 93AA ST-Y,R26 204 939A ST-Y,R25 205 938A ST-Y,R24 206 940E 02FD CALLmod32u 208 E08A LDIR24,0xA 209 E090 LDIR25,0 20A E0A0 LDIR26,0 20B E0B0 LDIR27,0 20C 93BA ST-Y,R27 20D 93AA ST-Y,R26 20E 939A ST-Y,R25 20F 938A ST-Y,R24 210 940E 02FB CALLdiv32u 212 0118 MOVWR2,R16 213 0129 MOVWR4,R18 214 2DE2 MOVR30,R2 215 63E0 ORIR30,0x30 216 2E2E MOVR2,R30 217 2D02 MOVR16,R2 218 940E 02E7 CALL_Putchar(0168) Putchar(insect_count%10|0x30); 21A E08A LDIR24,0xA 21B E090 LDIR25,0 21C E0A0 LDIR26,0 21D E0B0 LDIR27,0 21E 9120 0062 LDSR18,insect_count+2 220 9130 0063 LDSR19,insect_count+3 222 9100 0060 LDSR16,insect_count 224 9110 0061 LDSR17,insect_count+1 226 93BA ST-Y,R27 227 93AA ST-Y,R26 228 939A ST-Y,R25 229 938A ST-Y,R24 22A 940E 02FD CALLmod32u 22C 0118 MOVWR2,R16 22D 0129 MOVWR4,R18 22E 2DE2 MOVR30,R2 22F 63E0 ORIR30,0x30 230 2E2E MOVR2,R30 231 2D02 MOVR16,R2 232 940E 02E7 CALL_Putchar(0169) Putchar(0x0a); /回车换行 234 E00A LDIR16,0xA 235 940E 02E7 CALL_Putchar(0170) Putchar(0x0d); 237 E00D LDIR16,0xD 238 940E 02E7 CALL_Putchar(0171) (0172) SEI(); /re-enable interrupts 23A 9478 BSET7 23B 90B9 LDR11,Y+ 23C 90A9 LDR10,Y+ 23D 9009 LDR0,Y+ 23E BE0F OUT0x3F,R0 23F 91F9 LDR31,Y+ 240 91E9 LDR30,Y+ 241 91B9 LDR27,Y+ 242 91A9 LDR26,Y+ 243 9199 LDR25,Y+ 244 9189 LDR24,Y+ 245 9139 LDR19,Y+ 246 9129 LDR18,Y+ 247 9119 LDR17,Y+ 248 9109 LDR16,Y+ 249 9099 LDR9,Y+ 24A 9089 LDR8,Y+ 24B 9079 LDR7,Y+ 24C 9069 LDR6,Y+ 24D 9059 LDR5,Y+ 24E 9049 LDR4,Y+ 24F 9039 LDR3,Y+ 250 9029 LDR2,Y+ 251 9019 LDR1,Y+ 252 9009 LDR0,Y+ 253 9518 RETI_timer1_ovf_isr: 254 920A ST-Y,R0 255 921A ST-Y,R1 256 922A ST-Y,R2 257 923A ST-Y,R3 258 924A ST-Y,R4 259 925A ST-Y,R5 25A 926A ST-Y,R6 25B 927A ST-Y,R7 25C 928A ST-Y,R8 25D 929A ST-Y,R9 25E 930A ST-Y,R16 25F 931A ST-Y,R17 260 932A ST-Y,R18 261 933A ST-Y,R19 262 938A ST-Y,R24 263 939A ST-Y,R25 264 93AA ST-Y,R26 265 93BA ST-Y,R27 266 93EA ST-Y,R30 267 93FA ST-Y,R31 268 B60F INR0,0x3F 269 920A ST-Y,R0(0173) (0174) /*/ (0175) /*函数名字:void timer1_ovf_isr(void) */ (0176) /*输入参数:无 */ (0177) /*输出参数:无 */ (0178) /*功能描述:定时器1中断 */ (0179) /*/(0180) #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF(0181) void timer1_ovf_isr(void)(0182) (0183) TCNT1H = 0xFF; /setup 26A EF8F LDIR24,0xFF 26B BD8D OUT0x2D,R24(0184) TCNT1L = 0x83; 26C E883 LDIR24,0x83 26D BD8C OUT0x2C,R24(0185) Time+; 26E 9180 0066 LDSR24,Time 270 9190 0067 LDSR25,Time+1 272 9601 ADIWR24,1 273 9390 0067 STSTime+1,R25 275 9380 0066 STSTime,R24(0186) if(Time=100)/开始清洁 277 3684 CPIR24,0x64 278 E0E0 LDIR30,0 279 079E CPCR25,R30 27A F5A1 BNE0x02AF(0187) Time=0; 27B 2422 CLRR2 27C 2433 CLRR3 27D 9230 0067 STSTime+1,R3 27F 9220 0066 STSTime,R2(0188) if(clean_bit=1) 281 9180 006C LDSR24,clean_bit 283 3081 CPIR24,1 284 F551 BNE0x02AF(0189) (0190) motor_step+;/计算步数 285 9180 006A LDSR24,motor_step 287 9190 006B LDSR25,motor_step+1 289 9601 ADIWR24,1 28A 9390 006B STSmotor_step+1,R25 28C 9380 006A STSmotor_step,R24(0191) if(motor_step =MOTOR_STEP) & (motor_step(MOTOR_STEP*2) 295 9020 006A LDSR2,motor_step 297 9030 006B LDSR3,motor_step+1 299 01C1 MOVWR24,R2 29A 308A CPIR24,0xA 29B E0E0 LDIR30,0 29C 079E CPCR25,R30 29D F038 BCS0x02A5 29E 3184 CPIR24,0x14 29F E0E0 LDIR30,0 2A0 079E CPCR25,R30 2A1 F418 BCC0x02A5(0194) run_motor_mod(MOTOR_BACK);/后退 2A2 E001 LDIR16,1 2A3 DE34 RCALL_run_motor_mod 2A4 C00A RJMP0x02AF(0195) else /清洁完成(0196) (0197) run_motor_mod(MOTOR_STOP);/后退 2A5 E003 LDIR16,3 2A6 DE31 RCALL_run_motor_mod(0198) clean_bit=0; 2A7 2422 CLRR2 2A8 9220 006C STSclean_bit,R2(0199) motor_step=0; 2AA 2433 CLRR3 2AB 9230 006B STSmotor_step+1,R3 2AD 9220 006A STSmotor_step,R2(0200) (0201) (0202) 2AF 9009 LDR0,Y+ 2B0 BE0F OUT0x3F,R0 2B1 91F9 LDR31,Y+ 2B2 91E9 LDR30,Y+ 2B3 91B9 LDR27,Y+ 2B4 91A9 LDR26,Y+ 2B5 9199 LDR25,Y+ 2B6 9189 LDR24,Y+ 2B7 9139 LDR19,Y+ 2B8 9129 LDR18,Y+ 2B9 9119 LDR17,Y+ 2BA 9109 LDR16,Y+ 2BB 9099 LDR9,Y+ 2BC 9089 LDR8,Y+ 2BD 9079 LDR7,Y+ 2BE 9069 LDR6,Y+ 2BF 9059 LDR5,Y+ 2C0 9049 LDR4,Y+ 2C1 9039 LDR3,Y+ 2C2 9029 LDR2,Y+ 2C3 9019 LDR1,Y+ 2C4 9009 LDR0,Y+ 2C5 9518 RETI(0203) (0204) (0205) /*/ (0206) /*函数名字:void init_devices(void) */ (0207) /*输入参数:无 */ (0208) /*输出参数:无 */ (0209) /*功能描述:设置初始化 */ (0210) /*/(0211) void init_devices(void)(0212) (0213) /stop errant interrupts until set up(0214) CLI(); /disable all interrupts_init_devices: 2C6 94F8 BCLR7(0215) (0216) timer0_init(); 2C7 DE55 RCALL_timer0_init(0217) port_init(); 2C8 DD95 RCALL_port_init(0218) Uart_Init(); 2C9 940E 02D8 CALL_Uart_Init(0219) comparator_init(); 2CB DD9D RCALL_comparator_init(0220)
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
提示  人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:太阳能农田虫害自动监控及诱蛾灭虫系统设计
链接地址:https://www.renrendoc.com/p-23863432.html

官方联系方式

2:不支持迅雷下载,请使用浏览器下载   
3:不支持QQ浏览器下载,请用其他浏览器   
4:下载后的文档和图纸-无水印   
5:文档经过压缩,下载后原文更清晰   
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

网站客服QQ:2881952447     

copyright@ 2020-2025  renrendoc.com 人人文库版权所有   联系电话:400-852-1180

备案号:蜀ICP备2022000484号-2       经营许可证: 川B2-20220663       公网安备川公网安备: 51019002004831号

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