毕 业 设 计(论 文)
设计(论文)题目: 基于WIFI的智能屏障小车的硬件设计与实现
学生姓名: 钱 兴 晖 指导教师: 吴刚 副教授 二级学院: 计算机工程学院 专 业: 计算机科学与技术 班 级: 12计算机科学与技术2班 学 号: 1205104045 提交日期: 2016年4月20日 答辩日期: 2016年5月8日
金陵科技学院学士学位论文 目录
目 录
摘 要 ........................................................... Ⅲ Abstract ........................................................ Ⅳ 1 绪 论 .......................................................... 1 1.1 课题背景与意义 ............................................ 1
1.1.1 课题背景 ............................................ 1 1.1.2 课题意义 ............................................ 1
1.2 研究现状 .................................................. 1 1.3 论文的主要研究内容及论文结构 .............................. 2 2 智能小车硬件系统设计 ........................................... 3 2.1 智能小车的车体结构选择 .................................... 3 2.2 智能小车控制系统方案 ...................................... 3 2.3 电源系统设计 .............................................. 4 2.4 微控制器模块 .............................................. 5
2.4.1微控制器选择 ........................................ 5 2.4.2主控制器的最小系统电路 .............................. 5 2.5 障碍物检测模块 ............................................ 7 2.5.1超声波传感器 ........................................ 7 2.5.2红外线传感器 ........................................ 9 2.6 电机驱动模块 ............................................. 10 2.6.1驱动电机的选择 ..................................... 10 2.6.2转速控制方法 ....................................... 10 2.6.3电机驱动模块设计 ................................... 11 2.7 通信拓展模块 ............................................. 13 2.7.1无线通信模块 ....................................... 13 2.8 硬件设计中注意的问题 ..................................... 15 2.9 本章总结 ................................................. 15
Ⅰ
金陵科技学院学士学位论文 目录
3 红外避障功能的软件设计 ........................................ 16
3.1 软件开发平台介绍 ......................................... 16
3.2 障碍物检测算法 ........................................... 16 3.3 自动避障算法 ............................................. 17 4 智能小车系统仿真与调试 ........................................ 19 4.1 仿真器的选择 ............................................. 19 4.2 调试过程 ................................................. 20
4.2.1 WIFI控制功能调试 .................................. 20 4.2.2 超声波屏障功能调试 ................................. 20 4.2.3 红外避障功能调试 ................................... 21
5 总结与展望 .................................................... 22 5.1 设计总结 ................................................. 22 5.2 设计展望 ................................................. 22 参考文献 ........................................................ 23 附 录 ........................................................... 25 致 谢 ........................................................... 37
Ⅱ
金陵科技学院学士学位论文 摘要
基于WIFI的智能屏障小车的硬件设计与实现
摘 要
智能机器人是一种不需要人为操控,能够自行根据系统集成的传感器反馈的信号作出自主行为判断的智能化移动平台。本次设计的智能小车就是一种基于在平坦路面上能够自动屏蔽障碍物的四轮移动机器人。本设计可以根据加载的传感器不同完成不同的功能。
本次设计的智能小车是采用了STM32嵌入式微处理器控制平台,能够通过添加WIFI模块来实现智能小车的远程控制,另外分别安装了超声波传感器和红外发射接收对管来实现智能小车的自动避障功能。在软件设计中选用了Keil MDK嵌入式集成开发环境,并对各功能进行了模块化编程。
关键词:智能小车;STM32; MDK
Ⅲ
金陵科技学院学士学位论文 abstract
Based on the WIFI hardware design and realization of the
intelligent barrier of the car
Abstract
It is an intelligent robot with no human control, able to make their own independent judgments behavior based on intelligent mobile platform system integration sensor feedback signal. The Smart car is a kind of design on a flat surface can be automatically shielded four-wheel mobile robot based on obstacle. The design can perform different functions according to different load sensor.
The Smart car design is the use of the STM32 microprocessor embedded control platform, can be achieved by adding a WIFI module Smart car remote control, in addition to the ultrasonic sensors were installed and infrared emission receiving tube to achieve smart car automatic obstacle avoidance Features. Keil MDK chosen integrated development environment for embedded software design, and all functions are modular programming.
Key words: Smart car; STM32; MDK
IV
金陵科技学院学士学位论文 第1章 绪论
1 绪 论
1.1 课题背景与意义
1.1.1 课题背景
2004年1月,美国国家航空航天局研制的“勇气号”和“机遇号”火星探测车[1]登陆火星,它们将在火星上进行探索,为科学家研究火星提供宝贵的资料,这是人类走出地球步入太空的一大进步[2]。而在更早的十九世纪中期,美国和前苏联就进行了多次对月球的探测活动,更是发射了多个月球探测车,这大大加强了人类对于月球的认识[3]。在不久的将来,智能机器人将成为人类探索宇宙奥秘的先锋,为人类了解宇宙提供宝贵的研究资料。
1.1.2 课题意义
进入了二十一世纪,各项科学技术都有了长足的发展,特别是在工业社会的需求下,智能机器人技术的发展可以用日新月异来形容。当今世界上智能机器人已经大大普及到了,例如探测危险和排除险情、军事侦察和环境探测、安全监测和受损评估等各项方面[4]。并且由于智能机器人在工业生产中不怕危险环境、比人工更不易疲劳、能够根据人类的设置做一些人类不容易做的生产任务等特性,现在很多航天、军事、核工业工厂已经开始普及智能机器人的使用了。
另外智能机器人的系统研究涉及了众多学科的知识,对智能机器人的研究也就是对科学的大力发展,例如自动控制理论、微电子技术、传感器技术等,这些技术在将来的智能化研究中占有了很高的比重。近年来各国的机器人大赛上都增设了智能小车的项目[5],并且由于智能小车的普适性,智能小车能够实现的功能也是繁多,这对技术的学习具有很大的作用。因此,不论是从学习研究还是实际应用来讲,智能小车的研究有很高的价值。
1.2 研究现状
美国得益于上世纪50年代的经济高速发展,吸引力全世界的人才到了美国本土,各种科学技术也是飞速发展,自动导航、人工智能就在那个时候开始了研究。在此基础上国外的智能机器人成果也是络绎不绝的研究出来。到了二十世纪80年代,美国国防高级研究计划局对地面无人作战平台的立项研究真正将智能机器人的概念推向了大众,自此,各国相继开展了智能机器人的研究[6]。
在国内,对智能机器人进行研究的国家科研机构和高校研究团队很多。其中,清华大学是最早开始从事智能机器人的相关研究的,经过几年的时间到了1994年,清华大学的智能移动机器人的研究就取得了重大突破,研究成果也通过了国际相关机构的鉴定。但是由于我国在这方面的研究起步还是比较晚的,所以具有突破性的研究成果就比较少了。当然,在近年来国家对科研的大力发展,我国在智能机器人的一些领域已经发展到了世界领先水平。其中我国完全自主研发的月球车“玉兔”已于2013年搭乘“嫦娥三号”卫星登
1
金陵科技学院学士学位论文 第1章 绪论
陆月球,“玉兔”月球车能够完成自主定位、导航,并且需要在月球完成探索、考察、收集和分析月球采样的任务[7]。
1.3论文的主要研究内容及论文结构
由WIFI无线遥控的智能小车设计系统采用ARM硬件平台,在ARM开发板上进行移植和相关驱动编写、调试。针对竞赛用智能小车,基于WIFI无线遥控及ARM硬件实现的主要功能:寻找适当的超声波检测传感器进行数据采集和障碍分析,结合WIFI模块实现无线通信控制,最终实现可自动避障和无线遥控的智能小车。
本课题主要使用的STM32F103芯片主要优点如下: 1. 芯片的内核结构更加先进 2. 芯片的功耗有了更佳的控制能力 3. 芯片的性能更强大 4. 芯片的集成规模更大 5. 芯片的开发更方便
本次毕业设计的主要工作内容可以简要分为以下几个模块: (1)WIFI无线通信控制
WIFI无线控制主要通过ESP8266WIFI模块来达到手机控制小车的目的。手机在路由器的WIFI环境内通过配置IP地址已经WIFI模块配置一样的IP地址来实现手机和小车的连接,进而达成通过手机APP的按钮控制小车运动的功能[8]。 (2)超声波智能屏障
超声波智能屏障功能主要通过HC-SR04超声波测距传感器来实现,在小车行驶过程中不断检测小车与障碍物的距离,然后经过控制系统的判断是否进行躲避,这样就实现了小车超声波屏障的智能化。 (3)红外智能避障
红外智能避障功能跟超声波智能屏障的功能实现方法大致相同,只不过一个是超声波测距传感器一个是红外测距传感器。
本论文的结构安排如下:
第一章主要介绍智能小车的研究背景及主要设计内容,并且介绍了主控制系统使用的芯片。
第二章主要分析了智能小车的车体结构及控制系统方案,并且阐述了智能小车系统硬件的总体设计,及各功能实现涉及到的硬件模块和设备。
第三章简要分析了红外避障系统的功能实现。
第四章主要介绍了智能小车设计过程中的系统仿真及调试。
第五章总结了本次毕业设计过程中完成的工作,并且对智能小车的后续拓展研究进行了展望。
2
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
2 智能小车硬件系统设计
2.1 智能小车的车体结构选择
智能小车的移动方式一般有轮式和履带式,腿式的更多见于智能机器人。不过一般而言,在条件较好的路面上还是轮式的和履带式的比较合适,在翻山越岭方面腿式的机器人就具有了更多的优势。在智能机器人历史发展的轨迹中,轮式机器人一直是受偏好的,这也代表了它在机械设计、制造工艺上都非常成熟,因此本设计也是采用的轮式智能小车[9]。
智能小车的底盘一般安装有三个或四个车轮,四个车轮的智能小车底盘相对来说更稳定。三轮的智能小车一般采用前面两个电机驱动轮,后面一个万向轮保持平衡的驱动方式,四轮的小车为了使设计看起来简洁,一般是给每个轮子加一个直流电机,然后通过对四个轮子进行不同的速度控制来实现转向。本设计采用的四轮驱动小车在稳定性和承载能力方面更胜一筹,但是转向精度不高。
2.2 智能小车控制系统方案
智能小车的控制系统设计是决定了小车能否快速有效的完成各项设计方案的最关键因素,本次设计需要小车完成的功能有WIFI远程控制功能,超声波智能屏障功能,红外智能避障功能,而小车控制系统的先进程度就直接决定了小车的远程控制能否实现,避障功能的实现是否足够智能化[10]。
根据本设计需要完成的功能,本次智能小车控制系统需要涵盖以下几个模块:无线控制模块、障碍物检测模块、电机驱动模块、微处理器模块、电源模块等。图2.1所示为控制系统总体框架。在具体设计过程中,设计需要完成的三个功能的软硬件都是分开实现的,这样也便于日后对相关功能的完善修改,也方便了以后添加新的功能。
电源模块 障碍物 检测模块 STM32控制器 电机驱动 模块 速度检 测模块 图2.1 控制系统框图
无线通信 模块 下面简单介绍一下控制系统中的各个模块的功能:
电源模块:主要负责提供整个小车系统的电源,包括各个模块的电源供应。 微处理器模块:微处理器主要是对小车的各个功能模块进行控制来完成系统设计的功能,并且完成对小车上传感器的信息采集处理。
3
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
障碍物检测模块:障碍物检测模块的主要工作就是在智能小车前进过程中实时检测小车跟障碍物的距离,当检测到的距离小于系统设定的安全距离时就反馈障碍物信息给主控制器。本次的设计分别选用了超声波传感器和红外发射接收对管作为障碍物检测传感器。
电机驱动模块:电机驱动模块主要就是需要主控制器对小车的四个驱动轮的驱动电机进行控制,本模块使用了两片L293D驱动控制芯片和微处理器内置的PWM脉冲单元。
无线控制模块:无线控制模块主要使用TP-LINK路由器创建一个WIFI网络,然后小车和手机分别连接上WIFI,经过对IP的设置就可以实现手机对小车的远程控制。小车连接上WIFI主要是通过ESP8266无线WIFI模块。
2.3 电源系统设计
本设计的电源系统主要是为电机驱动模块和主控制器模块提供耗能[11]。驱动电机的工作电压为+6V,L293D电机驱动芯片的工作电压是+5V,系统中主控制器工作电压为+3.3V,由于低电压可以通过电压转换芯片转换高电压获得,所以本设计的电源系统选择了+6V电压。本设计系统的驱动电机所需的+6V电压可以直接由两节18650锂电池提供,电机驱动芯片的+5V电压就需要经过L7805电压转换芯片得到。+5V的电源电路如图2.2所示。
图2.2 +5V电源电路
本设计选用的基于STM32芯片的主控制器的工作电压是在+3.3V,这个电压需要经过AMS1117电压转换芯片转换所得。由于主控制器是整个小车系统的大脑,所以一定要保证控制器的稳定性和可靠性,所以分别增加了电容在电压转换芯片的输入和输出端,减少电压波动对控制器的影响。+3.3V的电源电路如图2.3所示。
图2.3 +3.3V电源电路
4
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
2.4 微控制器模块
2.4.1微控制器选择
经过对本次设计的智能小车的各功能模块仔细研究,我选用了ST公司推出的STM32F103ZET6芯片作为主控制器的微处理器[12]。该芯片是基于RISC内核设计的高性能芯片,高达72MHz的工作频率使得其能够适应高速的数据计算。芯片在本系统中主要需要完成对驱动电机的控制,对传感器信息的收集处理,对WIFI远程控制的数据通信。STM32芯片具有高速的闪存和SRAM存储器,超过100个的外接I/O端口能够很好的连接和控制各种外设模块。
本课题选用的STM32F103ZET6芯片,其集成封装设计如下: 内置大容量可编程闪存程序存储器达到512K字节 支持19个事件请求/外部中断 112个可编程通用快速I/O口线 4个16位通用定时器 2路I2C接口 2路I2S接口 3路SPI总线接口 1个RTC(实时时钟) 1路USB通信接口 5路USART通信接口 1路SDIO总线通信接口 1路CAN总线通信接口
串行单线调试(SWD)和JTAG接口
STM32F103ZET6芯片封装类型为LQFP144,STM32F103ZET6芯片封装引脚图如附录所示。
2.4.2主控制器的最小系统电路
本设计的智能小车的控制系统是由基于STM32芯片的主控制器组成的,控制器主要负责系统各个模块的控制信号发送和处理。系统基本电路包括JTAG接口电路、外部晶振电路、系统复位电路和电源控制电路[13]。
(1)电源控制电路
电源控制电路就是为智能小车系统的主控制器模块提供电源的。为了过滤和屏蔽电路板上由于电压的改变产生的毛刺对处理器芯片的干扰,需要在主控制器的VDDA引脚单独接一个电源进行供电。主控制器的VSSA引脚是用来接地的,主要作用就是在控制器突发断电后立刻通过VBAT引脚进行复位操作,并且启动备份寄存器和实时时钟[14]。处理器电
5
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
源控制电路如图2.4所示。
(2)系统复位电路
一般需要对系统进行复位操作都是由于系统内部或外部的影响使系统出错才进行的。复位操作一般就是对内部程序进行初始化操作,然后将系统进行重启,在控制器的NS RST引脚输入高电平就能完成STM32芯片的复位操作。本设计采用的是按钮方式进行复位操作,按钮复位电路在图2.5的左半边。
(3)外部晶振电路
本设计主控制器上在STM32芯片上外接了一个8MHz的晶振和一个32KHz的晶振。在芯片进行上电复位操作后默认是使用内部晶振的,不过在外接了晶振后就自动切换到外部晶振,32KHz的外部晶振是为了给RTC(实时时钟)提供时钟信号[15]。图2.5所示的电路就是复位电路和外部晶振电路。
图2.4 电源控制电路
图2.5 复位电路和外部晶振电路
6
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
(4)JTAG接口电路
本设计主控制器的程序仿真下载使用的是20PIN-JTAG接口。JTAG调试模块提供的5个引脚的功能分别为:JTDO-JTAG测试数据输出;JTCK-JTAG测试时钟;JTMS-JTAG测试模式选择;JTDI-JTAG 测试数据输入;JTRST-JTAG测试重置。NS RST接CPU复位口
[16]
。JTAG连接电路如图2.6所示。
图2.6 JTAG接口电路
2.5 障碍物检测模块
在智能小车进行智能避障的时候必不可少的就是障碍物检测模块,只有小车探测到行进路线上的障碍物时才能根据障碍物信息进行自动避障。市面上目前可以选择作为智能小车的障碍物检测传感器的有激光测距传感器、红外测距传感器和超声波测距传感器。激光测距传感器原理简单应用方便但是价格昂贵[17]。所以本设计的障碍物检测传感器分别选用的是红外发射接收对管和超声波传感器。
2.5.1超声波传感器
超声波是一种由换能晶片产生的机械波,比20000Hz的声波频率更高,是由电压作用于换能晶片使之发生振动产生的,超声波的波长较短但是频率很高,它的指向性很好在传播过程中产生的绕射也少,基于这个特性超声波主要应用于测距、测速、清洗等方面。本设计中选用的是超声波传感器型号为HC-SR04[18]。
HC-SR04超声波传感器可以探测在2cm-400cm之间的障碍物,测量的精度可以达到毫米级,传感器采用的是非接触式测量法。
当小车上安装了超声波测距传感器后,无法对出正前方以外的方向进行探测,所以本设计在超声波传感器下加装了一个可以180度转向的舵机,这样就可以实现超声波屏障小车对前方180度的范围内的障碍物进行探测。
超声波传感器的设计主要包括了超声波发射器、超声波接收器和电压控制电路。HC-SR04超声波传感器的电气参数如表2.1所示。
7
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
表2.1 超声波传感器电气参数
HC-SR04超声波传感器模块的工作原理:传感器的TRIG控制口通过一个电阻间接连接了电源,可以提供高电平信号;当传感器工作时模块会自动发出8个40khz的高电平方波信号给超声波发射器,然后就接收器就可以检测是否有信号返回;一旦检测到信号返回,传感器的ECHO输出口就输出一个高电平,此时定时器开始计时,当输出口输出低电平时定时器就停止计时,此时定时器的值就是高电平的持续时间,也就是超声波的传播时间,根据这个时间和距离计算公式可以很容易的计算出小车到障碍物的距离。超声波工作时序原理图如图2.7所示。
图2,7超声波传感器工作时序原理图
HC-SR04超声波传感器电路接口如图2.8所示。
图2.8 HC-SR04超声波传感器接口
8
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
当小车上安装了超声波测距传感器后,无法对出正前方以外的方向进行探测,所以本设计在超声波传感器下加装了一个可以180度转向的舵机,这样就可以实现超声波屏障小车对前方180度的范围内的障碍物进行探测。
本设计选用的是Futaba S3003舵机,这种舵机是最常用的小型转向控制舵机,这种舵机体积小巧紧凑、方便安装、稳定性好、控制简单、能够很好的和控制系统连接。
舵机的工作原理:舵机一般由5个主要的部分组成,当检测到控制信号时舵机的控制电路板就会控制舵机电机的转动,电机通过一系列齿轮组的连接带动舵盘的转动。位置反馈电位计是和舵机的舵盘直接相连的,舵盘转动的同时也给位置反馈电位计反馈转动信号,最后位置反馈电位计就接收到的电压信号传送到控制电路板,这样就完成了一次舵机转动的完整历程[19]。舵机接口如图2.9所示。
图2.9舵机接口
2.5.2红外线传感器
本设计红外线传感器采用的是红外发射接收对管,由红外接收管和红外发射管组成。传感器在使用红外线对被测物体进行检测时不需要发生直接接触,因而不存在摩擦误差,红外传感器拥有响应速度快、灵敏度高、稳定性高等优点[20]。
红外传感器设计系统包括了光学系统、转换电路和红外检测元件。当主控制器电源开关启动时,红外发射管将接收电流转换为红外线信号输出,当红外信号接触到障碍物的反射面时信号发射回来,然后红外线接收管接收红外信号判断障碍物的位置。图2.10是红外线反射原理图。
图2.10红外反射原理图
9
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
红外传感器芯片的HW-RED引脚是红外接收管的信号输出口,当红外接收管没有接收到反射回来的红外线信号时该引脚为高电平,一旦接收管接收到红外信号就立刻设置端口为低电平。另外,主控制连接的HW-RED引脚是设置为下降沿出发,一旦检测到低电平就立刻触发中断,并由主控制器对障碍物信息就行判断。红外线发射接收对管连接如图2.11所示。
图2.11红外线发射接收对管接口
2.6 电机驱动模块
从上文可知本设计采用的是四个轮子分别进行独立驱动的智能小车底盘设计方案,每个轮子的转速都可以通过主控制器对直流电机的设置来控制。下面就分别从电机驱动模块的设计、电机转速的控制和驱动电机的选择三个方面详细介绍了电机驱动模块。
2.6.1驱动电机的选择
本次设计的智能小车选用的是直流减速电机来与小车车轮连接,直流减速电机不仅便宜而且相对来说具有很多优势:
1.转矩比较大,能够避免传动装置产生的负载转矩,减少摩擦转矩对电机的影响; 2.响应速度快,能够适应快速变换的控制信号,复杂的速度变化; 3.负载能力强,系统的承载能力增加,避免了负载的冲击; 4.空载力矩大,能够阻止小车由于惯性前移; 5.相对来说运动平稳,噪音也小。
本智能小车的直流减速电机内置了一个减速器,工作的额定功率是2W,额定工作电压是3V,在额定状态下每分钟电机的转速为125转。
2.6.2转速控制方法
本设计的主控制器的芯片是STM32芯片,该芯片内置有一个PWM脉冲发生器,对于使用电机带动车轮的驱动方式的智能小车来说,PWM脉宽调制信号是一种很方便也很容易进行软件设计的直流电机转速控制方法[21]。
10
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
PWM脉宽调制技术是主控制器直接发送数字形式的信号到驱动系统芯片的,没有进行过数模转换。PWM信号的产生方式有两种。第一种方式被称为脉频调制方法,这种调制脉冲的方法是保持脉冲的占空比不变,然后通过改变脉冲的频率得到频率不同的脉冲控制信号,但是这种方式产生的脉冲会导致电机发生振动,产生噪音,所以这种脉频调制的方法在智能小车的设计中不常用。另一种方式跟脉频调制法是相反的,这次是控制频率不变然后通过增加或减少脉冲信号的占空比,从而得到的PWM脉冲信号占空比不同。PWM脉冲调制发的脉冲波形如图2.12所示,脉冲信号的频率是相同的,然后加大了高电平的持续时间就代表了加大了占空比。从图中可以很清晰的看出,处于高电平的时间越长,它的面积也就越大,而这个面积所占的比例也就是通常所说的占空比。本次设计的智能小车驱动控制技术就是使用的这种PWM脉冲调制技术。
图2.12 PWM控制产生的波形
PWM脉冲调制技术的原理如图2.13所示,由图可知,图中的晶体三极管就是PWM脉冲信号的接收器,当有高电平的脉冲信号传输过来时三极管就会导通然后驱动电机旋转,如果从三极管的基极输入的是低电平脉冲信号,三极管就会断路,然后一般情况下电机将会停止转动。但是在图中增加了一个续流二极管,所以当三极管断路时它会继续驱动电机转动。
图2.13基于PWM的速度控制
2.6.3电机驱动模块设计
本次设计的智能小车是使用直流电机实现其前进后退左转右转的功能。当然主控制器的PWM脉冲调制信号无法直接传到直流电机,所以在智能小车的实际设计中需要增加专门的电机驱动控制芯片,这样也是为了使驱动电路更简洁。
11
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
本设计因为有四个电机驱动轮,所以选择了两片L293D电机专用驱动芯片[22]。L293D电机驱动芯片因为其体积小、能耗少的特点非常适合智能小车的驱动电路的设计需要。
L293D主要特性为:一个芯片可以控制两个直流电机,并且为每个驱动电机提供的脉冲电流高达1.2A;另外它给双向驱动提供的驱动电流也高达600ma;工作电压范围:4.5V-36V;内部ESD保护;热耗少;抗噪性能好。图2.14为L293D引脚排列。
图2.14 L293D引脚图
L293D驱动芯片的默认工作电压是+5V,上图中的芯片电源输入端口是接的VCC1引脚,VCC2引脚是给直流电机提供电源的输入端口,该端口的最大工作电压达到36V,本设计中输入的电压值是+6V。另外从上图可知L293D芯片是四通道的输出口,所以本设计的四个直流电机只需要两个芯片就足够了。芯片的1,2EN、1A、2A、3,4EN、3A、4A这6个端口均为电机控制信号的输入端,其中1,2EN、1A、2A端口是一个电机的控制输入端口,三个端口的值的不同就可以控制电机处于不同的工作状态,如停止、刹车、正、反转等等。同理另外三个端口的功能也是一样。在实际的驱动电路设计中,1,2EN,3,4EN端口都是与主控制器直接连接的用来接收PWM脉冲调制信号。而引脚1Y、2Y、3Y、4Y则是与两个电机连接,主要作用就是根据控制器的PWM脉冲信号经过驱动芯片调制后输出直流电机的工作状态。表2.2就是以1,2EN、1A、2A三个端口为例来说明每个端口的电平信号分别代表了直流电机的什么工作状态[23]。
表2.2 L293D工作控制端真值表
从上表可知,不管1A、2A输入端口是何种状态,只要1,2EN端口是处于低电平的状态那么直流电机就是停止状态,这是因为1,2EN端口是跟控制器直接连接的,低电平状态表示没有接收到PWM调制信号。当1,2EN端口接收到脉冲信号时是处于高电平的状态的,这个时候如果1A、2A端口的电压状态是同样的,那么直流电机的状态也是停止
12
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
的,只有在1A、2A端口输入的是相反的电平信号时电机才会转动。另外设计电路时分别在电机两端并联增加了二极管,这样相当于保证了1A、2A端口的状态是始终相反的,这样就将表2.1的状态简化为三个状态,这样的设计方便了软件的编程设计也简化了硬件电路的设计。驱动模块具体电路如图2.15所示。
图2.15 电机驱动电路
2.7 通信拓展模块
2.7.1无线通信模块
在一些复杂环境中智能小车的障碍物检测传感器会受到较大干扰,无法很好的实现智能避障的功能,这种情况下就需要能够远程控制小车了。在小车上加装了无线接收模块,操作人员可以通过连接到同一WIFI环境下的手机APP控制小车的运动。
在选择设计需要的WIFI芯片时需要考虑很多事情,合适的无线控制芯片能够使得系统功耗降低、软硬件设计更加简单、实际使用中也更加方便。芯片的选择通常可以考虑以下几个方面,如芯片进行数据传输时使用的编码方式、芯片的外围元件数量、芯片的封装和管脚数、芯片的能耗和发射功率:
13
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
1. 能耗和发射功率
当智能小车运行时主控制器和驱动电路都需要大量消耗电源,所以受限于智能小车的电源容量,选择的无线WIFI芯片的发射功率要高、发射功耗要小。
2. 封装和管脚数
实际设计制作中,更少的引脚和更小的封装都可以节约布线的时间,同时也满足智能小车控制系统的小型化需要。
3. 外围元件数量
本设计采用的是四轮驱动的硬件系统,小车上的空间有限,所以WIFI芯片的外围器件不能多。
4. 数据传输的编码方式
智能小车远程无线控制信号传输将效率放在第一位,可以直接进行串口传输,无需选用复杂的编码方式。
综合以上几条考虑,本智能小车选择了ESP8266无线收发芯片[24]。
ESP8266是一种功耗很低的无线WIFI模块,它的封装尺寸很小,外围元件数量较少。 选用ESP8266芯片主要优点:
1.工作电压为3.3V,与微处理器芯片电压一致,实际功耗也小,适用于电池供电。 2.芯片上面集成了一个微型CPU,能够作为应用处理器。
3.芯片上能够搭载简单的软件应用,拥有完整的WIFI网络解决方案。 4.支持UART/GPIO数据通信,支持TCP/IP通信协议。 ESP8266WIFI模块有8个引脚,各引脚定义为: Pin1:URXD,UART_RXD,接收;
Pin2:UTXD,UART_TXD,发送,开机时禁止下拉;
Pin3:GPIO 16,外部Reset信号,高电平工作(默认高),低电平复位; Pin4:GND,GND
Pin5:VCC,3.3V,模块供电;
Pin6:GPIO0,默认WIFI Status:信号控制WIFI工作指示灯; Pin7:CH_PD,关掉供电时为低电平,高电平工作;
Pin8:GPIO2,内部默认高电平,开机上电时必须拉高,禁止硬件下拉。
图2.16 ESP8266 WIFI模块接口
14
金陵科技学院学士学位论文 第2章 智能小车硬件系统设计
2.8 硬件设计中注意的问题
为了提高智能小车硬件控制系统的可靠性,需要对可能引发系统故障的内部外部因素进行预防控制。以下列举了一些防干扰的措施:
1.滤波
在智能小车的设计电路中,电源由于其巨大的电流电压变化不定产生的电路干扰是硬件电路最大的干扰源,所以在实际设计中分别弄一个电容并联到电路系统的每个电源输入端口,这样也大大降低了电路的噪音。
2.抑制自感电动势干扰
智能小车的驱动模块使用的是直流电机,而在直流电机里有一个电机线圈,当小车的运动状态发生变化时通过电机的电流也会变好,根据洛伦兹定理电机的线圈会产生一个反电动势,产生的磁场能够极大的影响系统的稳定性。在电机电路设计中并联二极管能够很好的减少这种干扰。
3.看门狗技术
看门狗能够有效的提高系统的可靠度。看门狗的作用原理就是当系统出错时立刻对系统进行中断复位操作,本次选用的STM32F103微处理器芯片就内置了两个看门狗。看门狗在系统设计中起到了一个内部计数器的作用,当系统运行一定时间就给系统一个中断或者复位操作[25]。
2.9 本章总结
本章主要详细的介绍了智能小车的硬件设计方案,从无线通信模块,电机驱动模块,障碍物检测模块,系统控制模块等方面入手,将整个小车的硬件模块的设计思路,设计电路图都详细的列举了出来。最后对硬件设计过程中可能碰到的问题进行了叙述并且给出了解决方案。
15
金陵科技学院学士学位论文 第3章 红外避障功能的软件设计
3 红外避障功能的软件设计
3.1 软件开发平台介绍
在智能小车的系统中软件设计的重要程度不次于硬件的设计,并且需要软件系统的合理编程才能最大程度的发挥硬件系统的功能。软件系统的优劣直接决定了智能小车系统的稳定性、可靠性和智能化。
本设计选用的微处理器是STM32F103ZET6芯片,所以选择了Keil MDK这种能够对ARM芯片进行C语言开发的开发软件作为开发环境[26]。Keil MDK的集成开发环境(μVision5)包括了库管理、宏汇编、C语言编译器以及仿真调试器等等各种强大的软件开发功能。由于它的界面跟我们平时学习时用的VC++相似,所以我们可以很容易的就上手进行软件系统的编写,并且它具有的软件仿真功能在嵌入式软件系统的编写过程中是十分重要的。
3.2 障碍物检测算法
障碍物检测算法主要是通过障碍物检测函数来接受红外传感器接受的信息来根据预先设定的算法程序来判断小车行驶过程中障碍物的位置,将障碍物的位置信息反馈给自动避障算法来实现自动避障功能。由于可能存在误报的情况,所以本算法采取了滤波的防干扰算法,主要是在10ms里连续采集到两次障碍物的信息才会判断是遭遇障碍物[27]。本算法首先给左右红外避障传感器赋值为0,然后当左传感器检测到障碍时左传感器的值变为1,当右传感器检测到障碍物时右传感器的值变为2,然后返回值的时候将两个传感器的值相加,若返回值为0则表示没有检测到障碍物,若返回值为1则表示左边有障碍物,若返回值为2则表示右边有障碍物,若为3则表示前方有障碍物。若在运行延时函数的同时检测到障碍物,就立刻停止并跳出延时。
char GetVoidStatus(void) { char left=0,right=0; char count; if(VOID_L_IO == BARRIER_Y) { count = 2; while(--count) //10ms 采集2次均要采集到前面障碍物信息,滤波 { if(VOID_L_IO == BARRIER_N) break; Delayms(1); } if(count == 0) left = 1; }
16
金陵科技学院学士学位论文 第3章 红外避障功能的软件设计
}
if(VOID_R_IO == BARRIER_Y) { count = 2; while(--count) //10ms 采集2次均要采集到前面障碍物信息,滤波 { if(VOID_R_IO == BARRIER_N) break; Delayms(1); } if(count == 0) right = 2; }
return left + right;
void DelayCheck(int ms) { while(ms--) { Delayms(1); if(VOID_NONE != GetVoidStatus()) { CarStop(); return; } } }
3.3 自动避障算法
红外避障实现算法主要是在障碍物检测算法检测到障碍物时才运行的算法,它根据预先设定的算法函数来实现智能小车自动避障的功能。当红外发射接收对管检测到左边有障碍物时,小车返回,然后进行右转,右转后再次运行障碍物检测函数,若没有障碍物了就直行,否则根据自动避障算法再次进行避障。当红外发射接收对管检测到右边有障碍物时,小车返回,然后进行左转,左转后再次运行障碍物检测函数,若没有障碍物了就直行,否则根据自动避障算法再次进行避障。当红外发射接收对管检测到正前方有障碍物时,小车返回,然后进行右转,右转后再次运行障碍物检测函数,若没有障碍物了就直行,否则根据自动避障算法再次进行避障。当红外发射接收对管没有检测到障碍物时小车正常前进。核心算法如下:
void VoidRun(void) { char status;
17
金陵科技学院学士学位论文 第3章 红外避障功能的软件设计
status = GetVoidStatus();
switch(status) { case VOID_LEFT:
ctrl_comm = COMM_RIGHT;
CarBack(); Delayms(500); CarRight(); DelayCheck(500);
break; case VOID_RIGHT:
ctrl_comm = COMM_LEFT;
CarBack(); Delayms(500); CarLeft(); DelayCheck(500);
break; case VOID_BOTH:
ctrl_comm = COMM_RIGHT;
CarBack(); Delayms(700); CarRight(); DelayCheck(500);
break; case VOID_NONE: ctrl_comm = COMM_UP;
CarGo();
break; default: break; }
}
18
金陵科技学院学士学位论文 第4章 智能小车系统仿真与调试
4 智能小车系统仿真与调试
4.1 仿真器的选择
本次智能小车的软件系统设计选用的是Keil MDK的集成开发环境(μVision5)作为软件开发的开发环境,在软件的设计过程中需要连接小车主控制器进行仿真设计,这就需要一个接口仿真器。所以我选择了一个ULINK2 USB-JTAG接口适配器来连接小车主控制器和PC机,小车上是连接的JTAG接口,PC端是使用的USB接口作为数据传输接口,由USB线提供电源[28]。它支持将程序写进Flash存储器,在目标板上实时运行程序,在程序中可插入多个断点,单步运行程序,检查内存和寄存器,下载目标程序等一系列操作。ULINK2仿真器内部结构如图4.1所示。
图4.1 ULINK2适配器内部结构
图4.2 ULINK2适配器实物连接
19
金陵科技学院学士学位论文 第4章 智能小车系统仿真与调试
4.2 调试过程
4.2.1 WIFI控制功能调试
WIFI控制功能主要的操作是通过手机APP控制智能小车的前进、后退、左转和右转,A代表前进,B代表后退,C代表左转,D代表右转。首先需要将手机APP跟智能小车的WIFI模块进行连接,先从下图的手机APP页面点击Set up进入设置,进入后会自动获取到手机的IP地址,然后设置端口,设置好之后打开系统软件程序的main.c函数修改主机IP,端口号,共同连接的WIFI名和密码,然后将系统编译下载到小车后就可以使用手机APP控制小车了[29]。实物测试如图4.3所示。
图4.3 WIFI控制实物调试
4.2.2 超声波屏障功能调试
超声波智能屏障的调试主要就是需要将编写好的系统程序下载到主控制器中,然后打开电源开关智能小车就能自动屏蔽行进路线上的障碍物了。实物测试如图4.4所示。
图4.4超声波智能屏障实物调试
20
金陵科技学院学士学位论文 第4章 智能小车系统仿真与调试
4.2.3 红外避障功能调试
红外智能避障的调试主要就是将编写好的系统程序下载到主控制器中,然后打开电源开关智能小车就能自动避开行进路线上的障碍物了。实物测试如图4.5所示。
图4.5红外智能避障实物调试
21
金陵科技学院学士学位论文 第5章 总结与展望
5 总结与展望
5.1 设计总结
在现代社会中,智能机器人的发展越来越迅速,本次设计的智能小车技术也是在未来具有广泛的应用前景,智能小车能够代替人类去一些对危险以及有害的环境中完成任务。本次设计的智能小车是一种基于STM32F103ZET6微处理器芯片的主控制器的智能避障小车,在本次论文设计中主要完成了下列工作:
1.在主控制器的选择上选用了STM32芯片的主控制器作为智能小车的运动控制硬件电路核心,选择了四轮驱动底盘作为智能小车的运动结构。选用了合适的驱动控制芯片和传感器完成小车设计的各项功能。
2.使用TP-LINK无线路由器创建一个WIFI环境,然后WIFI模块 ESP8266 通过 TCP/IP 的方式与手机连接,实现手机WIFI遥控小车;分别使用超声波测距传感器和红外发射接收对管完成小车智能避障的功能。
3.使用Keil MDK开发环境对基于ARM 7架构的STM32芯片进行了相关软件设计,同时为了能够在更好的后续维护和添加新功能,本设计选择了各功能模块化编程。
5.2 设计展望
1.由于本次设计的时间较短,所以设计的智能小车上没有加装更多的功能,在控制电路的选择上也是选择的目前很方便有效的电路,在传感器的选择上也是选择的平时能够很容易获取的传感器。如果我们深入研究的话可以在小车上加装摄像头,这样就可以通过远程WIFI控制然后将视频信号通过WIFI模块发送过来,可以实现远程视频遥控[30]。
2.实用化。在小车底座上加装一个除尘装置,这样就可以在小车的行驶过程中清扫一些小的垃圾,做成一个简易的智能扫地机器人。
3.新能源。使用新型能源装置,这样可以给小车提供更充足的能源使小车能够加装更多功能,并且赋予小车更长久的运行时间。
4.网络化。可以给小车加装GPS无线通信模块,让小车连上互联网,这样小车可以下载GPS地图然后完成对小车位置的自主定位,在将来可以使小车完成自动快递、自动送餐的任务。
22
金陵科技学院学士学位论文 参考文献
参考文献
[1] 张德宇,侯立刚,张晓勇,常龙昆. 基于MC9S12XS128单片机的多功能智能小车系统设计[J]. 电子设计工程. 2014(11)
[2] 王立人,朱彦宇,黄洁,吕颖,夏春明. 具有wifi通讯功能的智能小车控制系统研究[J]. 无线互联科技. 2014(06)
[3] 葛广军,杨帆. 基于单片机的智能小车控制系统设计[J]. 河南城建学院学报. 2011(03) [4] 李磊,曹志强,侯增广,谭民. 基于行为的轮式移动机器人导航控制[J]. 控制与决策. 2004(06)
[5] 谭立新. 基于ARM9的小型机器人制作[M]. 电子工业出版社, 2011 [6] 田泽编. 嵌入式系统开发与应用教程[M]. 北京航空航天大学出版社, 2005
[7] 郑启文. 基于无线通信网络的多智能小车协作控制系统研究[D]. 南京师范大学 2012 [8] 董刚. 智能小车运动控制系统研制[D]. 西安科技大学 2009
[9] 严贞霓. 智能小车系统体系结构及导航策略研究[D]. 西安建筑科技大学 2010 [10] 申建伟. 基于ARM的智能车控制系统研究[D]. 西安工业大学 2014 [11] 石亿. 嵌入式智能小车运动控制系统的研制[D]. 湘潭大学 2012 [12] 易礼智. 基于机器视觉的避障智能小车系统研究[D]. 中南大学 2012 [13] 王田苗. 嵌入式系统设计与实例开发[M]. 清华大学出版社, 2002
[14] 蔡自兴,贺汉根,陈虹. 未知环境中移动机器人导航控制研究的若干问题[J]. 控制与决策. 2002(04)
[15] 张伟,陈迎,韩丽娜,徐赟,曹家骏. 智能小车系统的设计[J]. 实验室研究与探索. 2011(09) [16]张欢庆,高丽,宋承祥. 基于ARM的嵌入式Linux交叉编译环境的研究与实现[J]. 计算机与数字工程. 2012(02)
[17]陈军,杨数强,王军强. 一种新型智能车电机驱动电路的设计与实现[J]. 电子质量. 2011(09)
[18]严芳,李颖冲. 基于ARM9的智能小车控制器设计[J]. 电气传动自动化. 2009(05) [19]徐国华,谭民. 移动机器人的发展现状及其趋势[J]. 机器人技术与应用. 2001(03) [20]杨弘毅. 基于ARM Linux的车载远程监控系统客户端软件的实现[J]. 黎明职业大学学报. 2012(04)
[21]韦东山编著.嵌入式Linux应用开发完全手册[M]. 人民邮电出版社, 2008
23
金陵科技学院学士学位论文 参考文献
[22]周立功等编著.ARM嵌入式系统实验教程[M]. 北京航空航天大学出版社, 2006 [23]周立功等编著.ARM微控制器基础与实战[M]. 北京航空航天大学出版社, 2003 [24]王玲,孙波. 红外光电传感器自动寻迹智能车的设计与实现[J]. 沈阳理工大学学报. 2010(02)
[25]徐国保,尹怡欣,周美娟. 智能移动机器人技术现状及展望[J]. 机器人技术与应用. 2007(02)
[26]张晓伟,刘盼盼,编著.ARM9嵌入式系统设计原理与开发实例[M]. 电子工业出版社, 2008
[27]李旭东. 基于Cortex-M3的车辆通讯监控终端的设计与实现[J]. 电子产品世界. 2014(Z1)
[28]王烁,田书林,戴志坚. 基于A3988电机驱动芯片的电机控制电路设计[J]. 国外电子测量技术. 2010(07)
[29]郭慧. EPS快速成形机步进电机驱动电路设计[J]. 机电信息. 2011(27)
[30]刘静,杨正校,沈健. 基于WIFI的安卓智能家居控制与监测系统的设计[J]. 软件. 2014(06)
24
金陵科技学院学士学位论文 附录
附 录
主控制器芯片电路图
25
金陵科技学院学士学位论文 附录
主控制器外扩接口
主控制驱动系统电路图
26
金陵科技学院学士学位论文 附录
STM32F103ZET6封装引脚图
27
金陵科技学院学士学位论文 附录
主要系统PCB图
28
金陵科技学院学士学位论文 附录
红外智能避障功能的核心代码如下: 主函数:
#include \#include \#include \#include \#include \
#include \#include \
//全局变量定义
unsigned int speed_count=0; //占空比计数器 50次一周期 char front_left_speed_duty=SPEED_DUTY; char front_right_speed_duty=SPEED_DUTY; char behind_left_speed_duty=SPEED_DUTY; char behind_right_speed_duty=SPEED_DUTY;
unsigned char tick_5ms = 0; //5ms计数器,作为主函数的基本周期 unsigned char tick_1ms = 0; //1ms计数器,作为电机的基本计数器 unsigned char tick_200ms = 0; //刷新显示
char ctrl_comm = COMM_STOP; //控制指令
char ctrl_comm_last = COMM_STOP; //上一次的指令 unsigned char continue_time=0;
int main(void) { delay_init(); GPIOCLKInit(); UserLEDInit(); TIM2_Init(); MotorInit(); RedRayInit(); ServoInit();
while(1) { if(tick_5ms >= 5) { tick_5ms = 0; tick_200ms++; if(tick_200ms >= 40) { tick_200ms = 0; LEDToggle(LED_PIN);
29
金陵科技学院学士学位论文 附录
} VoidRun(); } } }
红外智能避障模块: #include \#include \#include \
extern char ctrl_comm;
//获取红外避障模块状态 char GetVoidStatus(void) { char left=0,right=0; char count; if(VOID_L_IO == BARRIER_Y) { count = 2; while(--count) //10ms 采集2次均要采集到前面障碍物信息,滤波 { if(VOID_L_IO == BARRIER_N) break; Delayms(1); } if(count == 0) left = 1; } if(VOID_R_IO == BARRIER_Y) { count = 2; while(--count) //10ms 采集2次均要采集到前面障碍物信息,滤波 { if(VOID_R_IO == BARRIER_N) break; Delayms(1); } if(count == 0) right = 2; } return left + right; }
30
金陵科技学院学士学位论文 附录
//延时的同时检测红外,一旦发生障碍物,就停止并跳出延时 void DelayCheck(int ms) { while(ms--) { Delayms(1); if(VOID_NONE != GetVoidStatus()) { CarStop(); return; } } }
//红外避障处理
//处理方式: 左边检测到 后退500ms 右转500ms // 右边检测到 后退500ms 左转500ms // 两边检测到 后退700ms 右转500ms // 没检测到 直行 void VoidRun(void) { char status; status = GetVoidStatus(); switch(status) { case VOID_LEFT: ctrl_comm = COMM_RIGHT;CarBack(); Delayms(500); CarRight(); DelayCheck(500); break; case VOID_RIGHT: ctrl_comm = COMM_LEFT;CarBack(); Delayms(500); CarLeft(); DelayCheck(500); break; case VOID_BOTH: ctrl_comm = COMM_RIGHT;CarBack(); Delayms(700); CarRight(); DelayCheck(500); break; case VOID_NONE: ctrl_comm = COMM_UP;CarGo(); break; default: break; } }
电机驱动控制模块: #include \#include \
31
金陵科技学院学士学位论文 附录
#include \
//根据占空比驱动电机转动 void CarMove(void) {
//左前轮 if(front_left_speed_duty > 0) //向前 { if(speed_count < front_left_speed_duty) { FRONT_LEFT_GO; }else { FRONT_LEFT_STOP; } } else if(front_left_speed_duty < 0) //向后 { if(speed_count < (-1)*front_left_speed_duty) { FRONT_LEFT_BACK; }else { FRONT_LEFT_STOP; } } else //停止 { FRONT_LEFT_STOP; } //右前轮 if(front_right_speed_duty > 0) //向前 { if(speed_count < front_right_speed_duty) { FRONT_RIGHT_GO; }else //停止 { FRONT_RIGHT_STOP; } } else if(front_right_speed_duty < 0) //向后 { if(speed_count < (-1)*front_right_speed_duty)
32
金陵科技学院学士学位论文 附录
{ FRONT_RIGHT_BACK; }else //停止 { FRONT_RIGHT_STOP; } }
else //停止 { FRONT_RIGHT_STOP; }
//左后轮
if(behind_left_speed_duty > 0) //向前 { if(speed_count < behind_left_speed_duty) { BEHIND_LEFT_GO; } else //停止 { BEHIND_LEFT_STOP; } }
else if(behind_left_speed_duty < 0) //向后 { if(speed_count < (-1)*behind_left_speed_duty) { BEHIND_LEFT_BACK; } else //停止 { BEHIND_LEFT_STOP; } }
else //停止 { BEHIND_LEFT_STOP; }
//右后轮
if(behind_right_speed_duty > 0) //向前 { if(speed_count < behind_right_speed_duty) { BEHIND_RIGHT_GO; } else //停止
33
金陵科技学院学士学位论文 附录
{ BEHIND_RIGHT_STOP; } } else if(behind_right_speed_duty < 0) //向后 { if(speed_count < (-1)*behind_right_speed_duty) { BEHIND_RIGHT_BACK; } else //停止 { BEHIND_RIGHT_STOP; } } else //停止 { BEHIND_RIGHT_STOP; } }
//向前
void CarGo(void) { front_left_speed_duty=25;//SPEED_DUTY front_right_speed_duty=25; behind_left_speed_duty=25; behind_right_speed_duty=25; }
//后退
void CarBack(void) { front_left_speed_duty=-50;//SPEED_DUTY front_right_speed_duty=-50; behind_left_speed_duty=-50; behind_right_speed_duty=-50; }
//向左
void CarLeft(void) { front_left_speed_duty=-20; front_right_speed_duty=SPEED_DUTY; behind_left_speed_duty=-20; behind_right_speed_duty=SPEED_DUTY+10; //增加后轮驱动力
34
金陵科技学院学士学位论文 附录
}
//向右
void CarRight(void) { front_left_speed_duty=SPEED_DUTY; front_right_speed_duty=-20; behind_left_speed_duty=SPEED_DUTY+10; //增加后轮驱动力 behind_right_speed_duty=-20; }
//停止
void CarStop(void) { front_left_speed_duty=0; front_right_speed_duty=0; behind_left_speed_duty=0; behind_right_speed_duty=0; }
void MotorInit(void) { MotorGPIO_Configuration(); CarStop(); }
void delay_init(void) {
SysTick->CTRL&=0xfffffffb; //控制寄存器,选择外部时钟即系统时钟的八分之一(HCLK/8;72M/8=9M) }
//1us 延时函数
void Delay_us(u32 Nus) {
SysTick->LOAD=Nus*9; //时间加载 72M主频 SysTick->CTRL|=0x01; //开始倒数 while(!(SysTick->CTRL&(1<<16))); //等待时间到达 SysTick->CTRL=0X00000000; //关闭计数器
SysTick->VAL=0X00000000; //清空计数器 }
void Delayms(u32 Nms) { while(Nms--)
35
金陵科技学院学士学位论文 附录
}
{ }
Delay_us(1000);
36
金陵科技学院学士学位论文 致谢
致 谢
四年的时间眨眼而逝,刚进入学校的情景仿佛还是昨天,不过现在我也是将要踏入社会的人了。这次的毕业设计是对我这四年在金科的学习成果的一次整体考察,在这里我要感谢这四年我的每个任课老师,是他们传授了我知识让我能够顺利完成毕设项目;同时我也要感觉我的同学们,大家四年的相处很愉快,平时他们也给了我很多的帮助,我也祝福他们前程似锦。
当然,最要感谢的人是我的毕设指导老师吴刚老师,是他在百忙之中抽出时间来给我讲解课题,是他不厌其烦的帮助我解决毕设中遇到的各种问题。吴老师还给我们推荐了很多学习的网站和书籍资料,极大的培养了我的自学能力。从我选择吴老师作为我的毕设老师开始,吴老师总是对我们很负责,每次要上交的资料他总要先检查一下防止出现错漏,当他检查完了他才会让我们上传到系统。我从吴老师身上学到了对待学习一丝不苟的态度。
在做毕设的过程中我和吴老师进行了很多交流,这让我受益匪浅,在这过程中我学习了吴老师解决问题的独特方法以及思考方式的不同角度,这将是我在今后的工作生活中的宝贵财富。在这里我真诚的对吴老师说声谢谢!
在这次的毕业设计中肯定有一些不当之处,还请各位审阅老师指正,多提宝贵意见和建议,特此感谢!
37