[分享]避障机器人红外测距模块设计与调试

合集下载

基于红外传感器的机器人避障控制的研究

基于红外传感器的机器人避障控制的研究

基于红外传感器的机器人避障控制的研究本科毕业论文(设计、创作)题目:基于红外传感器的机器人避障控制的研究学生姓名:xxx 学号:xxxxxx所在院系:信息与通信技术系专业:电气工程及其自动化入学时间:2010 年09 月导师姓名:xxx 职称/学位:xxxx/xxx导师所在单位:xxxxxxxxxxxxx完成时间:2014 年 5 月安徽三联学院教务处制基于红外传感器的机器人避障控制的研究摘要:自主避障功能是移动机器人的重要且必要的功能之一。

本文基于红外传感器研究并实现了机器人的自主避障设计。

以AT89C51单片机为控制核心,采用红外发射管发射红外光,红外接收管将接受到的障碍物信息,即反射回的红外光通过ADC0808 将其转化为数字信号送入单片机,在单片机中通过汇编程序实现对数字信号进行变换和判断——此判断结果反映了该红外传感器探测方向上的障碍物情况,单片机内置程序对各个红外传感器返回后的障碍物情况进行编码——此编码则反映了避障机器人周围环境情况,根据此编码选择合适的避障策略,然后单片机会发出PWM 波,经L298 芯片驱动左右电机的转动,从而控制机器人的行进,同时为了能够精确控制车轮的行进速度,采用光电码盘的方法测取车轮速度并返回到单片机中,由单片机中的数字PI 控制器将返回速度和给定速度相比较,输出增量值对电机速度校正,从而能很好的保持机器人速度的稳定。

本设计结构简单,较容易实现,比较成功的实现自主避障功能要求。

关键词:自主避障;单片机;红外光Based on infrared sensor robot obstacleavoidance controlAbstract: Autonomous obstacle avoidance function is one of the mobile robot important and necessary functions. This paper describes the infrared sensor -based autonomous obstacle avoidance robot design. By this method AT89C51 SCM core , the use of infrared emission tube emits infrared light , infrared receiver will receive the obstacle information , namely infrared light reflected back by ADC0808 convert it to a digital signal into the SCM , the SCM the procedure for converting the digital signal and judgment - this judgment results reflect the situation of the infrared sensor to detect obstacles in the direction of the SCM built-in program on the circumstances of each obstacle infrared sensor and returned to encode - this code reflects the avoidance impaired environmental conditions around the robot , and then select the appropriate coding based on this avoidance strategy , MCU will issue a PWM wave, turning around after L298 motor driver to control the travel of the robot , and in order to be able to precisely control the traveling speed of the wheel , using photoelectric method code disc wheel speed measurements taken and returned to the MCU , the MCU digital PI controller will return to the speed and the given speed compared to the output of the incremental value of the motor speed correction , so that it can maintain a good speed robot stable. The design of the structure is simple, relatively easy to achieve, the more successful completion of the request. Keywords: self obstacle avoidance; SCM; infrared light目录第一章前言 01.1 移动机器人的发展历程及定义 01.2 移动机器人的国内外研究现状与意义 01.3自主避障小车的主要内容 (1)第二章自主避障机器人的结构设计方案 (3)2.1 自主避障机器人的走行结构设计 (3)2.2 电机驱动单元设计 (3)2.2.1 驱动电机的选型 (3)2.2.2 电机驱动方式的选择 (3)2.2.3 光电测速方式—槽式光电开关 (4)2.3 红外传感器检测单元设计 (4)2.3.1 红外传感器 (4)2.3.2 红外测距原理 (4)2.4 软件设计部分 (4)2.5 主控单元的设计 (5)第三章自主避障机器人的硬件设计 (7)3.1 稳压电路设计 (7)3.2 自主避障机器人的单片机控制电路设计 (7)第四章自主避障机器人软件设计 (12)4.1 主程序流程 (12)4.2 检测子程序流程 (13)4.3 策略选择程序流程 (15)4.4 电机驱动程序流程 (16)4.4.1 电机驱动程序流程 (17)4.4.2 测速中断程序流程 (18)第五章总结与展望 (20)5.1 工作总结 (20)5.2 工作展望 (20)致谢 (22)参考文献 (23)第一章前言1.1 移动机器人的发展历程及定义机器人技术涉及到了了很多学科的发展成果,是现代高新技术的发展前沿,是当前科学研究讨论的热门话题。

学习移动机器人智能避障测距系统的报告

学习移动机器人智能避障测距系统的报告

学习移动机器人智能避障测距系统的报告第一篇:学习移动机器人智能避障测距系统的报告学习移动机器人智能避障测距系统的报告【摘要】本文主要是以学习移动机器人智能避障测距系统为主,阐述学习过程中的心得体会。

测距系统的应用场合非常的多,比如测距雷达、测速仪、测深仪、汽车倒车的报警装置等等。

这里就浅谈智能的测距避障系统。

【关键词】测距系统智能控制单片机1.引言智能控制(intelligent controls)是指在无人干预的情况下能自主地驱动智能机器实现控制目标的自动控制技术。

控制理论发展至今已有100多年的历史,经历了“经典控制理论”和“现代控制理论”的发展阶段,已进入“大系统理论”和“智能控制理论”阶段。

智能控制理论的研究和应用是现代控制理论在深度和广度上的拓展。

20世纪80年代以来,信息技术、计算技术的快速发展及其他相关学科的发展和相互渗透,也推动了控制科学与工程研究的不断深入,控制系统向智能控制系统的发展已成为一种趋势。

自1971年傅京孙教授提出“智能控制”概念以来,智能控制已经从二元论(人工智能和控制论)发展到四元论(人工智能、模糊集理论、学运筹和控制论),在取得丰硕研究和应用成果的/ 7 同时,智能控制理论也得到不断的发展和完善。

智能控制是多学科交叉的学科,它的发展得益于人工智能、认知科学、模糊集理论和生物控制论等许多学科的发展,同时也促进了相关学科的发展。

智能控制也是发展较快的新兴学科,尽管其理论体系还远没有经典控制理论那样成熟和完善,但智能控制理论和应用研究所取得的成果显示出其旺盛的生命力,受到相关研究和工程技术人员的关注。

随着科学技术的发展,智能控制的应用领域将不断拓展,理论和技术也必将得到不断的发展和完善。

本文就移动机器人其中一个小系统进行学习研究,体现出智能控制的特点:智能控制的核心在高层控制,即组织级;智能控制器具有非线性特性;智能控制具有变结构特点;智能控制器具有总体自寻优特性;智能控制系统应能满足多样性目标的高性能要求;智能控制是一门边缘交叉学科;智能控制是一个新兴的研究领域。

超声波 红外避障

超声波 红外避障

移动机器人的多传感器测距系统设计一、引言在自主移动机器人的实时避障和路径规划过程中,机器人须依赖于外部环境信息的获取,感知障碍物的存在,测量障碍物的距离。

目前,机器人避障和测距传感器有红外、超声波、激光及视觉传感器。

激光传感器和视觉传感器价格贵,对控制器的要求较高,因而,在移动机器人系统中多采用红外及超声波传感器。

多数系统采用单一传感器进行信息采集,但超声波传感器因为存在测量盲区的问题,测距范围一般在30~300cm之间;而红外测距传感器的探测距离较短,一般在几十厘米之内,它可以在一定程度上弥补超声波传感器近距离无法测量的缺点。

因而,本系统采用多路红外和超声波传感器进行距离信息的测量和采集。

二、测距原理及方法(一)超声波传感器超声波是指谐振频率高于20 Hz的声波,频率越高反射能力越强。

超声波传感器价格低廉,其性能几乎不受光线、粉尘、烟雾、电磁干扰的影响,并且,金属、木材、混凝土、玻璃、橡胶和纸等可以反射近乎100%的超声波,因而,可以用来探测物体。

超声波测距的方法为回声探测法,发射换能器不断发射声脉冲,声波遇到障碍物后反射回来被接收换能器接收,根据声速及时间差计算出障碍物的距离。

距离与声速、时间的关系表示为式中:s为与障碍物间的距离,m; c为声速,m/s;t为第一个回波到达的时刻与发射脉冲时刻的时间差,s。

c与温度有关,空气中声速与温度的关系可表示为式中c为声速,m/s;θ为环境温度,℃。

(二)提高超声波测距精度的方法1.采用合适的频率和波长:使用超声波传感器测距,频率取得太低;外界杂音干扰较多;频率取得太高,在传播过程中衰减较大。

并且,超声波传感器在测量过程中容易产生盲区,接收端易接收到泄漏波。

改善这一缺点,须减少发射波串的长度,增高发射波频率。

但发射波串长度过短会使得发射换能器不能被激振或激振达不到最大值;发射波频率过高则衰减大,作用距离下降、有试验表明:使用40 kHz的超声波,发射脉冲群含有10-20个脉冲,具有较好的传播性能。

毕业设计红外线避障小车的设计

毕业设计红外线避障小车的设计

资料范本本资料为word版本,可以直接编辑和打印,感谢您的下载毕业设计红外线避障小车的设计地点:__________________时间:__________________说明:本资料适用于约定双方经过谈判,协商而共同承认,共同遵守的责任与义务,仅供参考,文档可直接下载或修改,不需要的部分可直接删除,使用时请详细阅读内容摘要随着生产自动化的发展需要,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的传感器种类也越来越多,其中红外传感器已经成为自动行走和驾驶的重要部件。

红外的典型应用领域为自主式智能导航系统,机器人要实现自动避障功能就必须要感知障碍物,感知障碍物相当给机器人一个视觉功能。

智能避障是基于红外传感系统,采用红外传感器实现前方障碍物检测,并判断障碍物远近。

由于时间和水平有限,我们暂选最基本的避障功能作为此次设计的目标。

本设计通过小车这个载体再结合由AT89S51为核心的控制板可以达到其基本功能,再辅加由漫反射式光电开关组成的避障电路、555组成的转速控制电路、电源电路、差分驱动电路就可以完善整个设计。

关键词:避障光电开关红外线漫反射差分控制Infrared obstacle avoidance carAbstractWith the development needs of the production automation, robots have been more and more widely applied to the automation of production, with the development of science and technology, the robot more and more types of sensors, including infrared sensors has become an important component of the automatic walking and driving .Infrared Typical applications for autonomous intelligent navigation systems, robotics to achieve automatic obstacle avoidance must be perceived obstacles, perceived obstacles to the robot quite a visual function. Intelligent obstacle avoidance system based on infrared sensor, infrared sensor front obstacle detection and determine the obstacle distance.Due to the limited time and the level of our most basic obstacle avoidance temporary as the design goal.Design by car carrier recombination by AT89S51 as the core of the control panel can achieve its basic functions, supplemented plus diffuse photoelectric switch obstacle avoidance circuit 555 comprising a speed control circuit, power circuit, a differential drive circuit. You can improve the entire design.Keywords: obstacle avoidance photoelectric switch infrared diffuse reflectance differential control目录TOC \o "1-2" \h \z \u HYPERLINK \l "_Toc354953359" 前言 PAGEREF _Toc354953359 \h 1HYPERLINK \l "_Toc354953360" 第1章课题研究价值 PAGEREF _Toc354953360 \h 2HYPERLINK \l "_Toc354953361" 第1.1节选题背景 PAGEREF _Toc354953361 \h 2HYPERLINK \l "_Toc354953362" 第2章课题设计 PAGEREF_Toc354953362 \h 3HYPERLINK \l "_Toc354953363" 第2.1节设计要求 PAGEREF _Toc354953363 \h 3HYPERLINK \l "_Toc354953364" 第2.2节总体设计 PAGEREF _Toc354953364 \h 3HYPERLINK \l "_Toc354953365" 第3章方案论证 PAGEREF_Toc354953365 \h 5HYPERLINK \l "_Toc354953366" 第3.1节单片机选择论证PAGEREF _Toc354953366 \h 5HYPERLINK \l "_Toc354953367" 第3.2节传感器设计方案PAGEREF _Toc354953367 \h 5HYPERLINK \l "_Toc354953368" 第3.3节控制算法设计方案PAGEREF _Toc354953368 \h 6HYPERLINK \l "_Toc354953369" 第4章智能小车硬件设计PAGEREF _Toc354953369 \h 8HYPERLINK \l "_Toc354953370" 第4.1节智能小车硬件分配PAGEREF _Toc354953370 \h 8HYPERLINK \l "_Toc354953371" 第4.2节 AT89S51单片机简介PAGEREF _Toc354953371 \h 11HYPERLINK \l "_Toc354953372" 第4.3节电路设计 PAGEREF _Toc354953372 \h 14HYPERLINK \l "_Toc354953373" 第5章智能小车软件设计PAGEREF _Toc354953373 \h 20HYPERLINK \l "_Toc354953374" 第5.1节总体流程图 PAGEREF _Toc354953374 \h 20HYPERLINK \l "_Toc354953375" 第5.2节最少拍控制算法PAGEREF _Toc354953375 \h 22HYPERLINK \l "_Toc354953376" 第6章开发流程 PAGEREF_Toc354953376 \h 25HYPERLINK \l "_Toc354953377" 第6.1节编译环境 PAGEREF _Toc354953377 \h 25HYPERLINK \l "_Toc354953378" 第6.2节下载调试 PAGEREF _Toc354953378 \h 27HYPERLINK \l "_Toc354953379" 第6.3节单片机的I/O分配PAGEREF _Toc354953379 \h 28HYPERLINK \l "_Toc354953380" 结论 PAGEREF_Toc354953380 \h 29HYPERLINK \l "_Toc354953381" 附录A PAGEREF_Toc354953381 \h 30HYPERLINK \l "_Toc354953382" 附录B PAGEREF_Toc354953382 \h 34HYPERLINK \l "_Toc354953383" 附录C PAGEREF_Toc354953383 \h 35HYPERLINK \l "_Toc354953384" 参考文献 PAGEREF_Toc354953384 \h 39HYPERLINK \l "_Toc354953385" 致谢 PAGEREF_Toc354953385 \h 40前言随着生产自动化的发展需要,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的传感器种类也越来越多,其中红外传感器已经成为自动行走和驾驶的重要部件。

红外避障功能模块设计

红外避障功能模块设计

红外避障功能模块设计应用:避障小车所用器件:脉冲型红外接收头,三极管(9013),限流电阻220o,电位器103,电容104 极性电容47uf。

此模块又分二小部分:发射电路,接收电路发射电路如下:In输入需要一38khz的方波信号,可有单片机产生,也可用外部震荡电路。

我在运用时,用单片机产生的,由于单片机的驱动能力太低,不能直接驱动红外发射管,所以增加一三极管提高驱动能力。

如图基级电阻r是限流电阻,电位器起到控制发射功率的作用。

在红外避障模块中,调节电位器可以调节避障的距离。

注意:由于脉冲性红外接收管,常态时输出为高,当接收到38k的红外光时,输出为低,当一直接收红外光一段时间后600ns~900ns左右。

继续接收到红外光,也是输出高。

由于此特性,红外发射不能一直的发,要间断性的,当发射间断性的38k红外时,可另外一较低频信号(50hz)控制上图的接地端,此时红外发射的是一个调制信号。

接收电路如下:如图,红外接收头只对38k的红外接收信号敏感。

电源的不稳定性对红外接收头的影响很大,或者说对其的灵敏度影响较大。

电源和地之间加104电容,另外再加以47uf的极性电容,可以很好的提高接收的距离。

电容尽量的靠近红外接收头。

Out输出端为了有一定的驱动能力,或更好地输出波形。

可用一上拉电阻。

整个模块工作原理:红外发射管,发射50hz调制的38k信号。

当遇到障碍物时,发生漫反射,红外接收头接收到这一信号时,输出端输出50hz的信号。

判断这一信号,即可判断,遇到了障碍物。

此功能模块扩展应用:当有多个发射源时,不同发射源的调制频率不一样,例如,50hz,60hz。

接收管接收到信号时,根据频率的不同,可以判别是哪个发射的,,。

红外避障机器人毕业设计

红外避障机器人毕业设计

摘要随着红外物理与技术的不断发展, 红外探测技术已广泛地应用于军事、煤矿的安全生产等各个领域。

把目标或目标区域的红外辐射聚焦在探测器上红外接收光学系统的基本作用, 通常情况下其结构类似于普通的接收光学系统, 但由于工作波段为红外波段, 其光学材料和镀膜必须和它的工作波长相匹配。

针对题目的要求,我们设计了一款简易的红外避障小车。

电路设计主要有以下四个模块:传感器模块(红外发射和接收器),控制模块(AT89S52),执行模块(伺服电机),电源模块。

传感器模块主要通过对左、右红外传感器的信号分别进行采集,传送给控制模块。

控制模块对采集来的信号进行处理,做出比较后把控制信号传送给执行模块。

配合正确的软件设计,小车能够在设计的赛道中准确快速地完成行走任务。

关键词:红外;避障;传感器AbstractAll bodies has its own infrared radiation characteristics. For studying the various objects of infrared radiation, people use ideal ─absolute blackbody radiation body (hereinafter referred to as in bold) the benchmark. Can absorb all the incident radiation and not the reflection of the object is called in bold. Good absorber must have also been good radiation body, so the blackbody radiation efficiency is highest, the radiation rate than a 1. Any real objects of radiation emission quantity and the same temperature blackbody emission of quantity of launch than, called the object than radiation rate, its value is always less than 1. The object than radiation rate, and the material object types, characteristics, temperature, surface other factors, such as the wavelength.According to the topic request, we design a simple infrared obstacle avoidance of the car. The circuit design basically has the following four modules: sensor module (infrared transmitter and receiver), control module (AT89S52 devices), executive module (servo motor), power supply module. Sensor module mainly through to the left and right of the infrared sensor signal,respectively the collection, transfer to the control module. Control module to the acquisition of signal processing, make more the control after signals to execute module. The software design includes basic car to walk, walk, the combination of infrared obstacle avoidance program design, such as walking strategy improvement, through to the infrared signal processing to achieve the best car walk path.Cooperate with the right software design, the car can in the design of the track accurately and rapidly finish walking task.Keywords: infrared; Obstacle avoidance; sensor目录第一章绪论 (1)1.1红外线研究背景 (1)第二章红外避障机器人的设计方案 (3)2.1主要设计任务 (3)2.2任务分析与方案设计 (3)2.2.1 任务分析 (3)2.2.2 方案设计 (3)第三章硬件电路设计 (5)3.1红外传感器电路设计 (5)3.1.1红外发射二极管的选择 (5)3.1.2红外接收器的选择 (7)3.2控制电路设计 (10)3.3人机接口单元 (11)3.3.1 LCD1602显示 (11)3.3.2串口电路设计 (12)3.4执行电路设计 (13)3.4.1 伺服电机 (13)3.4.2 伺服电机的信号控制 (14)3.5电源电路设计 (14)3.6赛道设计 (15)第四章软件设计 (16)4.1机器人基本行走命令 (16)4.1.1基本巡航动作 (16)4.1.2匀加速/减速运动 (17)4.2红外探测 (19)4.2.1测试红外发射探测器 (19)4.2.2红外发射程序 (20)4.3关于行走赛道的硬件调试与改进 (22)第五章结束语 (23)5.1结论和展望 (23)致谢 (24)第一章绪论1.1 红外线研究背景在科学探索和紧急抢险中经常会遇到对与一些危险或人类不能直接到达的地域的探测,这些就需要用机器人来完成。

红外线避障小车的舵机调试过程

红外线避障小车的舵机调试过程

红外线避障小车的舵机调试过程红外线避障小车的舵机调试过程引言:红外线避障小车是一种常见的智能机器人,它能够通过红外线传感器来检测周围环境,并适时调整舵机的位置,从而实现避免障碍物的功能。

在本文中,我们将探讨红外线避障小车的舵机调试过程。

我们将从简单的舵机安装开始,逐步深入探讨如何调试和优化舵机的性能,以帮助读者更好地了解和掌握这个主题。

第一部分:舵机的基础知识在进行舵机调试之前,我们首先需要了解舵机的基础知识。

舵机是一种电动执行器,主要用于控制机械装置的角度。

它由电机、减速机和位置反馈装置组成。

舵机通过接收电信号,并根据信号的脉宽来确定要转动到的角度。

在红外线避障小车中,舵机被用于调整车辆方向,使其能够避开障碍物。

第二部分:舵机的安装与接线在开始调试舵机之前,我们需要先将舵机正确地安装在红外线避障小车上,并进行相应的接线。

首先,我们需要确定舵机的安装位置,通常将舵机安装在车辆的前部,以便进行方向调整。

接下来,我们需要将舵机与主控板连接,确保接线正确、稳固,以避免出现信号传输不畅或接触不良的问题。

第三部分:舵机的调试和优化1. 初始位置设置在开始调试之前,我们需要设置舵机的初始位置。

这可以通过将舵机的控制信号设置为一个特定的脉宽值来实现。

初始位置设置的目的是让舵机处于一个中性位置,以便后续调试时能够更准确地调整舵机的角度。

2. 脉宽调节和舵机灵敏度脉宽是控制舵机角度的关键参数,其数值范围通常在500-2500微秒之间。

通过调节脉宽值,我们可以改变舵机的角度位置。

在调试过程中,我们可以逐步调整脉宽值,观察舵机的运动情况,并根据需要进行微调,以避免舵机过于敏感或不灵敏的情况。

3. 舵机的运动范围在调试舵机时,我们还需要确定舵机的运动范围,即舵机能够旋转的最大角度。

通常情况下,舵机的运动范围为0°到180°,但有些舵机也具有更大的旋转角度范围。

通过调整舵机的脉宽值,我们可以观察舵机的运动情况,并确定舵机的实际运动范围。

机器人红外避障程序的编写

机器人红外避障程序的编写

1.2.1 设备的状态轮转
用户通过Init,Pause,Start,End来变更设备的状 态。每一设备都被抽象为四种状态:
1. 2. 3. 4.
DEVICE_RAW:原始状态,参数与数据流等未初始化; DEVICE_INIT:设备已经初始化; DEVICE_PAUSE:设备暂停状态; 1.2 设备 DEVICE_RUNNING:设备运行状态。 状态的变更如下图:
1.3.3 闭环运动控制
IMotionControl接口是采用RTX实时内核完成高精度定时采 样并建立运动伺服的,默认的采样周期定为1毫秒,能较好 的完成运动控制。 注意使用闭环运动控制前首先应检查闭环是否可以工作正常 基于PID(比例-积分-微分) 比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误 差。比例+微分(PD)控制器能改善系统在调节过程中的动态 特性。
1.3.1 RTX
1.3.2 开环运动控制
IASRMotion接口用于开环运动控制,直接控制电机作业, 获取编码器采样周期内的变换数据。 函数名 功能
SetWorkPeriod SetCallback Init Start DO DI SetSpeed End 设置编码器采样周期 设置回调函数 初始化设备 启动编码器采样 设置板卡输出 获取板卡的输入 设置速度 结束设备
2 具体实现
实现一个可以自由避障的应用程序,包括如下几个功能:
1. 2. 3. 4. 5.
接受键盘输入,可通过键盘控制其前后左右运动; 使用红外传感器测距进行避障; 使用闭环控制; 无键盘输入时,可自由漫游; 采集图像;
2 准备工作
1. 2. 3.
安装AS-R开发函数库; 开发函数库; 安装 开发函数库 建立基于对话框的MFC应用程序; 应用程序; 建立基于对话框的 应用程序 配置工程属性: 配置工程属性: Tools->Options->Derectories 选项卡下选择“Include files”

轮式教育机器人红外避障电路设计方案

轮式教育机器人红外避障电路设计方案
综上所述红外导航模块就相当智能小车的两只眼睛,在它的引导下完成了智能小车的导航功能。
图1—1轮式教育机器人红外导航模块构成框图
2、硬件电路设计
根据图1-1所示的系统构成框图设计出如图1-2所示的轮式教育机器人红外导航电路。该电路采用5V供电,当电源接通后单片机的P1_0(P1_1)输出如第一章图1.5所示的伺服电机顺时针脉冲控制电机正转从而使智能小车前进,前进的同时P1_6和P1_7输出交叉的高、低电平(1和0)控制三级管9013的导通与截止。此处的9013有两个功能:一是作为开关使用控制IR LED发射红外线;另一个功能是为发射的红外线提供能量,具体过程如下:当P1_6(P1_7)置高时,9013导通,加载在IR LED上的电压约为VCC(5V),IR LED向外发射红外线;当P1_6(P1_7)置低时,9013截止,IR LED停止发射。P1_6(P1_7)反复发射持续1ms钟的38.5kHz的红外光,(1)如果红外光被小车路径上的物体反射回来,P3_2(P3_3)引脚上的电平会由高变低使单片机产生中断,(2)进入中断后单片机首先保存红外检测器检测到的状态,(3)再让P1_0(P1_1)输出与之前不同的电机控制脉冲,使电机退出前进状态进入其它状态,如:后退、左转弯、右转弯等,从而有效的完成壁障。(4)然后将单片机存储的状态跟P3_2(P3_3)引脚上的状态作比较,如果电平相同则电机维持改变后的状态;如果电平不相同则单片机中断返回恢复开始时的状态(开始时为前进状态)。恢复状态后单片机又开始从数字(1)这步循环。
12、{
13、P1_6=1;
14、delay_nus(13);
15、P1_6=0;
16、delay_nus(13);
17、}
18、irDetectLeft=P3_2state();

避障机器人设计与调试讲解

避障机器人设计与调试讲解

避障机器人设计与调试一、实训目的1 了解机器人大赛中避障的规则,进一步理解电机和红外测距传感器的原理;2 掌握避障机器人的设计方法。

二、实训设备1 硬件:HOST机一台、基于机器人项目驱动的嵌入式教学实训平台一套;2 软件:WIN2000 或xp 操作系统、Siliconlab IDE开发环境、调试器。

三、实训原理实现避障的功能从原理上是通过分析红外测距传感器的测量值判断障碍物的位置,然后驱动电机避开障碍物。

通过连接三个红外测距传感器,机器人可以探测到120 度的视角范围的障碍物。

四、实训步骤1、正确连接PC 机、调试器和基于机器人项目驱动的嵌入式教学实训平台;2、打开电源, 打开Siliconlab IDE;3、打开避障的例程,正确调试并运行该程序。

4、烧录完成后断电拔掉调试器,把组装好的机器人放入模拟的参赛场地,再次打开电源,观察机器人避障的情况。

void main(){unsigned int ad_test;unsigned int i = 0;SystemInit();while(1){DodgeObstruction();}}void DodgeObstruction(){unsigned char ad_distance_left = 0;unsigned char ad_distance_midl = 0;unsigned char ad_distance_rigt = 0;while(1){ad_distance_left = GetIR_Distance(2);ad_distance_midl = GetIR_Distance(3);ad_distance_rigt = GetIR_Distance(4);if(ad_distance_left>40 && ad_distance_midl>40 && ad_distance_rigt>40){DC_Motor(1,0,60);DC_Motor(3,0,60);DC_Motor(2,0,60);DC_Motor(4,0,60);}if(ad_distance_rigt<40){DC_Motor(1,0,60);DC_Motor(3,0,60);DC_Motor(2,2,10);DC_Motor(4,2,10);}if(ad_distance_midl<40){DC_Motor(1,2,70);DC_Motor(3,2,70);DC_Motor(2,2,70);DC_Motor(4,2,70);}if(ad_distance_left<40){DC_Motor(1,2,10);DC_Motor(3,2,10);DC_Motor(2,0,60);DC_Motor(4,0,60);}}}voidDC_Motor(unsigned char motor_num,unsigned char direction, unsigned char motor_speed) {unsigned char SFRPAGE_save = SFRPAGE;SFRPAGE = CONFIG_PAGE;if(!motor_speed){switch(motor_num){case 1:PCA0CPH0 = 255;break;case 2:PCA0CPH1 = 255;break;case 3:PCA0CPH2 = 255;break;case 4:PCA0CPH3 = 255;break;case 5:PCA0CPH4 = 255;break;case 6:PCA0CPH5 = 255;break;default: break;}}elseswitch(motor_num){case 1:PCA0CPH0 = 255 - (motor_speed+116);break;case 2:PCA0CPH1 = 255 - (motor_speed+116);break;case 3:PCA0CPH2 = 255 - (motor_speed+116);break;case 4:PCA0CPH3 = 255 - (motor_speed+116);Break;case 5:PCA0CPH4 = 255 - (motor_speed+116);break;case 6:PCA0CPH5 = 255 - (motor_speed+116);break;default: break;}switch(direction){case 0:if(motor_num==1) P3 &= ~0x20; //P1.3 = 0,即DIR0置0if(motor_num==2) P1 &= ~0x10; //P1.4 = 0,即DIR1置0if(motor_num==3) P1 &= ~0x20; //P1.5 = 0,即DIR2置0if(motor_num==4) P1 &= ~0x40; //P1.6 = 0,即DIR3置0if(motor_num==5) P3 &= ~0x40; //P3.6 = 0,即DIR4置0break;case 1:if(motor_num==1) PCA0CPH0 = 255;if(motor_num==2) PCA0CPH1 = 255;if(motor_num==3) PCA0CPH2 = 255;if(motor_num==4) PCA0CPH3 = 255;if(motor_num==5) PCA0CPH4 = 255;if(motor_num==6) PCA0CPH5 = 255;break;case 2:if(motor_num==1) P3 |= 0x20; //P3.5 = 1,即DIR0置1;if(motor_num==2) P1 |= 0x10; //P1.4 = 1,即DIR1置1;if(motor_num==3) P1 |= 0x20; //P1.5 = 1,即DIR2置1;if(motor_num==4) P1 |= 0x40; //P1.6 = 1,即DIR3置1;if(motor_num==5) P3 |= 0x40; //P3.6 = 1,即DIR4置1;break;default: break;}SFRPAGE = SFRPAGE_save;}。

红外线避障小车的舵机调试过程

红外线避障小车的舵机调试过程

红外线避障小车的舵机调试过程红外线避障小车的舵机调试过程一、简介红外线避障小车是一种智能机器人,可以通过红外线传感器检测前方障碍物,并通过舵机控制转向,实现避障功能。

本文将详细介绍红外线避障小车的舵机调试过程。

二、准备工作1. 硬件准备:购买一台红外线避障小车套件,包括小车底盘、电池、电机、舵机和红外线传感器等。

2. 软件准备:下载并安装Arduino IDE(集成开发环境),用于编写和上传程序到小车控制板。

三、连接电路1. 将电池连接到小车底盘上的电源接口,确保电池正负极正确连接。

2. 将电机分别连接到小车底盘上的左右轮接口,并固定好。

3. 将舵机连接到小车底盘上的转向接口,并固定好。

4. 将红外线传感器连接到小车底盘上的传感器接口,并固定好。

四、编写程序1. 打开Arduino IDE软件,创建一个新的空白项目。

2. 导入相关库文件:在代码中添加#include <Servo.h>语句,引入舵机控制库。

3. 定义舵机对象:使用Servo servo;语句定义一个舵机对象。

4. 设置舵机引脚:使用servo.attach(舵机引脚号);语句将舵机连接到指定的引脚上。

5. 设置红外线传感器引脚:使用pinMode(传感器引脚号, INPUT);语句将红外线传感器设置为输入模式。

6. 编写主循环程序:在loop()函数中编写主要的避障逻辑。

首先使用digitalRead(传感器引脚号)读取红外线传感器的数值,判断是否检测到障碍物。

如果检测到障碍物,则使用servo.write(转向角度)调整舵机的转向角度,使小车避开障碍物。

如果没有检测到障碍物,则保持直行。

7. 上传程序:将编写好的程序通过USB数据线上传到小车控制板上。

五、调试过程1. 连接电源:将电池连接到小车底盘上,并打开电源开关,确保小车正常供电。

2. 启动程序:在Arduino IDE软件中点击“上传”按钮,将程序上传到小车控制板上。

教育机器人红外测距模块的设计

教育机器人红外测距模块的设计

教育机器人红外测距模块的设计乔元营;赵玉良【摘要】Education robot have the advantages of agility and precision, meanwhile, it′s convenient to use and learn and has strong expansibility,so it has a wide market and good perspective in society. The modules of infrared-distance and liquid crystal display in this paper are like eyes of the robot to cause robot to keep away from the obstruct , and we could know the precious distance between robot and obstruct according to liquid crystal display to control the robot more flexibly.%教育机器人有其灵活性和精确的优点,并且易用、易学和扩展性强,因而在社会有其广大的市场和发展前途。

介绍了红外测距模块犹如机器人的眼睛,实现机器人的避障功能,并且通过液晶显示使人们知道机器人离障碍物的精确距离,从而更加灵活控制机器人。

【期刊名称】《微型机与应用》【年(卷),期】2015(000)016【总页数】3页(P27-29)【关键词】教育机器人;凌阳单片机;红外测距;液晶显示;A/D 转换【作者】乔元营;赵玉良【作者单位】济宁市泗水县圣水峪中心学校,山东济宁 273202;山东鲁能智能技术有限公司,山东济南 250002【正文语种】中文【中图分类】TP3针对目前市场上教育机器人存在的不足,研究更加灵活、易用、易学和扩展性强的教学机器人,服务于小学的机器人技术教育、信息技术教育、电子技术教育、小学生创新设计。

红外壁障模块避障小车避障传感器黑白线识别 距离可调

红外壁障模块避障小车避障传感器黑白线识别 距离可调

模块描述该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围 2~30cm,工作电压为3.3V-5V。

该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

模块参数说明1 当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮电平,同时OUT端口持续输出低电平信号,该模块检测距离2~30cm,检测角度35°,检测距离可以通过电位器进行调节,顺时针调电位器,检测距离增加;逆时针调电位器,检测距离减少。

2、传感器主动红外线反射探测,因此目标的反射率和形状是探测距离的关键。

其中黑色探测距离最小,白色最大;小面积物体距离小,大面积距离大。

3、传感器模块输出端口OUT可直接与单片机IO口连接即可,也可以直接驱动一个5V继电器;连接方式:VCC-VCC;GND-GND;OUT-IO4、比较器采用LM393,工作稳定;5、可采用3-5V直流电源对模块进行供电。

当电源接通时,红色电源指示灯点亮;6、具有3mm的螺丝孔,便于固定、安装;7、电路板尺寸:3.2CM*1.4CM8、每个模块在发货已经将阈值比较电压通过电位器调节好,非特殊情况,请勿随意调节电位器。

模块接口说明1 VCC 外接3.3V-5V电压(可以直接与5v单片机和3.3v单片机相连)2 GND 外接GND3 OUT 小板数字量输出接口(0和1)发货清单1 如图所示壁障传感器模块一块。

(新)红外避障小车课程设计报告

(新)红外避障小车课程设计报告

前言---------------------------------------------------随着生产自动化的发展需要,机器人已经越来越广泛地应用到生产自动化上,随着科学技术的发展,机器人的传感器种类也越来越多,其中红外传感器已经成为自动行走和驾驶的重要部件。

红外的典型应用领域为自主式智能导航系统,机器人要实现自动避障功能就必须要感知障碍物,感知障碍物相当给机器人一个视觉功能。

智能避障是基于红外传感系统,采用红外传感器实现前方障碍物检测,并判断障碍物远近。

由于时间和水平有限,我们暂选最基本的避障功能作为此次设计的目标。

本设计通过小车这个载体再结合由AT89S51为核心的控制板可以达到其基本功能,再辅加由漫反射式光电开关组成的避障电路、555组成的转速控制电路、电源电路、差分驱动电路就可以完善整个设计。

目录前言------------------------------------------------------------------------------1目录------------------------------------------------------------------------------2摘要------------------------------------------------------------------------------3功能概述------------------------------------------------------------------------3硬件设计------------------------------------------------------------------------3 避障电路------------------------------------------------------------------------4单片机电路---------------------------------------------------------------------7电机转速控制电路------------------------------------------------------------7电源电路------------------------------------------------------------------------8电机驱动电路---------------------------------------------------------------9主程序设计--------------------------------------------------------------------12小结-----------------------------------------------------------------------------23参考文献-----------------------------------------------------------------------231.【摘要】:本文提出一种智能避障小车的设计方法,利用红外技术检测障碍物信息,采用AT89S51单片机进行实时控制,实现智能避障,智能小车采用后轮驱动,两轮各用一个直流电机控制,避障用的传感器采用红外漫反射式传感器。

采用红外测距绕行障碍物算法的机器人设计

采用红外测距绕行障碍物算法的机器人设计

中图分类号: D esign of Robots ObstacleW alking U sing Infrared D istance M easurem ent
FU X in x in, GONG Chun hua, L IU M eng jun, W U H ai yan, W ANG Yong
目前, 智能化技术被越来越广泛地应用于机 器智能化领域: 如无线电、红外通讯、传感器、语音 识别技术等, 而嵌入了这些新技术的机器人更具 生命力. 智能型电子宠物的主要研究方向在于通 过软件算法的研究, 配合硬件平台的支持, 达到人 机沟通的目的, 使机器产生 情感 , 可对外界的 条件作出基本的反应.
收稿日期: 2010- 01- 26 通讯作者简介: 富鑫鑫 ( 1987- ) , 男, 在读本科生, 浙江丽水人. 计算机科学与技术 (电力 企业信息 化 )专业 . E m a i:l
shx_m an@ hotm ai.l com. 基金项目: 上海市大学生 科技创新基金 ( A 84121).
( 3) P ID 算法控制存在不确定性, 由于其数据 具有特定性, 加上不同的机械特性, 使得设定的 P ID参数与实际实验情况发生偏差, 需要进行大 量的调试才能达到最佳效果.
参考文献:
[ 1] 上海广茂达伙伴机器人有 限公司. 能力 风暴个人 机器人大 学版 ( A S U ) [ J] . 机器人技术与应用, 2001, ( 6 ): 44 46.
图 5 轮子控制曲线
由图 5可知, 在考虑编码盘和实验误差的情 况下, 输出对输入响应很快, 反应滞后时间几乎忽 略不计, 并且输出基本在某个定值附近脉动. 因 此, 我们要控制的不是对象的反应速度, 而是其脉 动和偏差, 并且这个值应尽量趋向于设定值. 另 外, 由于右轮的特性与左轮不同, P ID 调节法对任 何对象都有较大的调节作用, 因此可以对左右轮 进行分开控制, 并采用 P ID 调节法对对象特性进 行调节.

红外避障机器人毕业设计

红外避障机器人毕业设计

红外避障机器人毕业设计As a person, we must have independent thoughts and personality.摘要随着红外物理与技术的不断发展, 红外探测技术已广泛地应用于军事、煤矿的安全生产等各个领域。

把目标或目标区域的红外辐射聚焦在探测器上红外接收光学系统的基本作用, 通常情况下其结构类似于普通的接收光学系统, 但由于工作波段为红外波段, 其光学材料和镀膜必须和它的工作波长相匹配。

针对题目的要求,我们设计了一款简易的红外避障小车。

电路设计主要有以下四个模块:传感器模块(红外发射和接收器),控制模块(AT89S52),执行模块(伺服电机),电源模块。

传感器模块主要通过对左、右红外传感器的信号分别进行采集,传送给控制模块。

控制模块对采集来的信号进行处理,做出比较后把控制信号传送给执行模块。

配合正确的软件设计,小车能够在设计的赛道中准确快速地完成行走任务。

关键词:红外;避障;传感器AbstractAll bodies has its own infrared radiation characteristics. For studying the various objects of infrared radiation, people useideal─absolute blackbody radiation body (hereinafter referred to as in bold) the benchmark. Can absorb all the incident radiation and not the reflection of the object is called in bold. Good absorber must have also been good radiation body, so the blackbody radiation efficiency is highest, the radiation rate than a 1. Any real objects of radiation emission quantity and the same temperature blackbody emission of quantity of launch than, called the object than radiation rate, its value is always less than 1. The object than radiation rate, and the material object types, characteristics, temperature, surface other factors, such as the wavelength.According to the topic request, we design a simple infrared obstacle avoidance of the car. The circuit design basically has the following four modules: sensor module (infrared transmitter and receiver), control module (AT89S52 devices), executive module (servo motor), power supply module. Sensor module mainly through tothe left and right of the infrared sensor signal, respectively the collection, transfer to the control module. Control module to the acquisition of signal processing, make more the control after signals to execute module. The software design includes basic car to walk, walk, the combination of infrared obstacle avoidance program design, such as walking strategy improvement, through to the infrared signal processing to achieve the best car walk path.Cooperate with the right software design, the car can in the design of the track accurately and rapidly finish walking task.Keywords: infrared; Obstacle avoidance; sensor目录第一章绪论.................................. 错误!未定义书签。

项目七机器人红外避障控制

项目七机器人红外避障控制

红外发射管
知识储备三、红外接收管
红外接收电路通常被厂家集成在一 个元件中,成为一体化红外接收头。 内 部电路包括红外监测二极管,放大器, 限幅器,带通滤波器,积分电路,比较 器、峰值检波器、整前电路和输出放大 电路,灵敏度很高。
红外传感器
红外接收头内部电路
知识储备四、红外发射接收和主板连接
主板上的红外传感器接口


1、要求机器人能在距障碍物5~20cm时 发现障碍物,并能够躲避,或作出要求的 动作。 2、用流程图或C代码编写程序。
四、实训步骤:



1、分组进行讨论,分析任务目标要求。 2、讨论设计方案。 3、编写流程图或C代码,烧写软件文 件到机器人中。 4、上电执行,观察现象。并进行调试 改进。
知识储备五、如何避免误检测

有时从红外管侧面和后面漏出的红外光也会 被接受模块探测到,在能力风暴智能机器人 上,两个红外发射管和一个红外接收器都是 先装在套管里再固定在外壳上的,有效的避 免了这种情况的发生。红外传感器是靠发射 并接收由障碍物反射回来的红外光来判断是 否有障碍。
知识储备六、编程方法
知识储备七、编程实验





实验 用一张白纸分别挡在能力风暴智能机器人的前方、左方和右方,编程 进行测试; 程序代码: void main() {int ir;//定义整型变量 while(1) //一直循环检测 {ir=ir_detector();//红外传感器检测 if(ir==1) printf(“left\n”);//左侧有障碍,显示 else if(ir==0) printf(“none\n”); //没有障碍 else if(ir==2) printf(“right\n”); //障碍物在右侧 else if(ir==4) printf(“front\n”);//障碍物在左侧 wait(0.5); } }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

[分享]避障机器人红外测距模块设计与调试避障机器人红外测距模块设计与调试一、实训目的1、了解模数转换器的基本功能;2、了解红外测距模块的基本功能及技术规格;3、掌握红外传感器工作原理。

二、实训设备1 硬件:HOST机一台、基于机器人项目驱动的嵌入式教学实训平台一套;2 软件:Siliconlab IDE开发环境、调试器。

三、实训原理红外距离感应模块是专为机器人设计的测障传感器,如图所示。

它通过发射红外线并测量红外线被反射的强度来输出反映和物体距离的电压信号,有效距离10,80厘米。

红外测距传感器红外测距功能编号名称/功能1 VCC 电源线2 GND 地线3 Vo 输出信号线4 发射管5 接收管红外传感器基于三角测量原理。

红外发射器按照一定的角度发射红外光束,当遇到物体以后,光束会反射回来,如图所示。

反射回来的红外光线被CCD检测器检测到以后,会获得一个偏移值L,利用三角关系,在知道了发射角度a,偏移距L,中心矩X,以及滤镜的焦距f以后,传感器到物体的距离D就可以通过几何关系计算出来了。

四、实训步骤1、正确连接PC 机、调试器和嵌入式教学实训平台,连接红外测距模块;2、打开嵌入式教学实训平台电源;3、打开工程,编译、链接、进入调试、运行程序,观察lcd屏上显示的测量值,移动机器人,观察lcd屏上测量值的变化(思考测量值的变化的原理)4、测量传感器的输出特性曲线。

在实验中需要中的函数及功能说明函数名:unsigned char GetIR_Distance(unsigned char channle) 函数说明:获取红外传感器感测距离函数名:void ADC_PortInit()函数说明:ADC引脚初始化函数名:void ADC_Init()函数说明:ADC初始化函数名:unsigned char ADC_DistanceGet(unsigned char AD_port) 函数说明:获取AD_port端口红外传感器的值函数名:void ADC_ConvertStart() 函数说明:AD转换启动函数名:void AD_PortSelection(AD_port)函数说明:AD转换端口配置函数名:unsigned int ADC_AvrDataGet(unsigned int *AD_data) 函数说明:获取平均值函数名:double SensorDistanceProcess(double x ) 函数说明:ADC值距离转换#include "Sensor_AD.h" #define AD_NUM 10/************************************************************* //! 函数名:unsigned char GetIR_Distance(unsigned char channle) //! 函数说明:获取红外传感器感测距离*************************************************************/ unsigned char GetIR_Distance(unsigned char channle) { xdata unsigned int ucIRDisValue = 0; if(channle<0 || channle>10) { return 0; } ucIRDisValue = ADC_DistanceGet(channle); ucIRDisValue =((int)SensorDistanceProcess(ucIRDisValue)); if(ucIRDisValue>255){ ucIRDisValue = 255; } return (char)ucIRDisValue; } unsigned int GetIRDistance(unsigned char channle) { xdata unsigned int ucIRDisValue = 0; if(channle<0 || channle>10) { return 0; } ucIRDisValue =ADC_DistanceGet(channle); return ucIRDisValue; }/************************************************************* //! 函数名:unsigned char GetIRCol(unsigned char AD_Point) //! 函数说明:获取灰度传感器感测灰度值*************************************************************/ unsigned int GetIRCol(unsigned char ad_channle) { xdata unsigned int ucGreyValue; if(ad_channle<0 || ad_channle>9) { return 0; } ucGreyValue =ADC_DistanceGet(ad_channle); return (ucGreyValue); }/************************************************************ //! 函数名:void ADC_PortInit() //! 函数说明:ADC引脚初始化 //!---------------------------------------------------------- //! 引脚图: //!---------------------------------------------------------- //! 引脚端口 AMX0P //! //! AD0--------------P1.7--------------0x07 //! AD1--------------P2.0--------------0x08 //! AD2--------------P2.1--------------0x09 //! AD3--------------P2.2--------------0x0A //! AD4--------------P2.3--------------0x0B //! AD5--------------P2.4--------------0x0C //! AD6--------------P2.5--------------0x0D //! AD7--------------P2.6--------------0x0E //! AD8--------------P2.7--------------0x0F //! AD9--------------P3.0--------------0x10 *************************************************************/ void ADC_PortInit() { unsigned char SFRPAGE_save = SFRPAGE; SFRPAGE = CONFIG_PAGE; //当有语音的时候,P1口不能AD初始化P1MDIN &= ~0x80; //P1.7模拟输入 P1SKIP |= 0x80; //交叉开关跳过模拟引脚 P2MDIN = 0x00; //P2模拟输入 P2SKIP = 0xFF; //交叉开关跳过模拟引脚//P3MDIN &= ~0x01; //P3.0模拟输入 //P3SKIP |= 0x01; //交叉开关跳过模拟引脚 XBR1 = 0x40; //交叉开关使能 SFRPAGE = SFRPAGE_save; }/************************************************************* //! 函数名:void ADC_Init() //! 函数说明:ADC初始化*************************************************************/ voidADC_Init() { unsigned char SFRPAGE_save = SFRPAGE; ADC_PortInit(); SFRPAGE = CONFIG_PAGE; ADC0CN = 0xC0; //跟踪模式,开启转换 ADC0CF = (SYSCLOCK/3000000 - 1) << 3; ADC0CF &= ~0x04; //右端对齐 EIE1 &= ~0x08; //禁止ADC中断 //AD0EN = 1; REF0CN = 0x08; SFRPAGE = SFRPAGE_save; }/************************************************************* //! 函数名:unsigned char ADC_DistanceGet(unsigned char AD_port) //! 函数说明:获取AD_port端口红外传感器的值*************************************************************/ unsigned int ADC_DistanceGet(unsigned char AD_port) { xdata unsigned charAD_counter=0; xdata unsigned char i = 0; xdata unsigned charadc0_h,adc0_l; xdata unsigned int ad_test; xdata unsigned intADC_DataStore[10] = {0,0,0,0,0,0,0,0,0,0}; if(AD_port>0x0A) { return0xFF; } AD_PortSelection(AD_port); ADC_ConvertStart();for(AD_counter=0;AD_counter<10;AD_counter++) { while(!AD0INT); adc0_h = ADC0H; adc0_h &= 0x03; adc0_l = ADC0L; ADC_DataStore[AD_counter] = ((unsigned int)(adc0_h)<<8) + (unsigned int)adc0_l;//ADC_DataStore[AD_counter] = (unsigned int)(adc0_l); AD0INT = 0; ADC_ConvertStart(); i++; } //ADC_FlagClear(); //ADC_DataStore[0] =ADC_AvrDataGet(ADC_DataStore); //return SensorData[AD_port][0]; ad_test = ADC_AvrDataGet(ADC_DataStore); //ad_test++; //return(ADC_AvrDataGet(ADC_DataStore)); return(ad_test); }/************************************************************* //! 函数名:void ADC_ConvertStart() //! 函数说明:AD转换启动*************************************************************/ void ADC_ConvertStart() { unsigned char SFRPAGE_save = SFRPAGE; SFRPAGE = CONFIG_PAGE; AD0EN = 1; //EA = 0; AD0INT = 0; AD0BUSY = 1; SFRPAGE = SFRPAGE_save; }/************************************************************* //! 函数名:void AD_PortSelection(AD_port) //! 函数说明:AD转换端口配置*************************************************************/ voidAD_PortSelection(unsigned char port_unm) { unsigned char SFRPAGE_save = SFRPAGE; SFRPAGE = CONFIG_PAGE; switch(port_unm) { case 0x01: AMX0P =0x07; break; case 0x02: AMX0P = 0x08; break; case 0x03: AMX0P = 0x09; break; case 0x04: AMX0P = 0x0A; break; case 0x05: AMX0P = 0x0B; break;case 0x06: AMX0P = 0x0C; break; case 0x07: AMX0P = 0x0D; break; case0x08: AMX0P = 0x0E; break; case 0x09: AMX0P = 0x0F; break; case 0x0A: AMX0P = 0x10; break; default: break; } AMX0N = 0x1F; //负输入端选择VDD SFRPAGE = SFRPAGE_save;} /************************************************************* //! 函数名:unsigned int ADC_AvrDataGet(unsigned int *AD_data) //! 函数说明:获取平均值*************************************************************/ unsigned int ADC_AvrDataGet(unsigned int *AD_data) { xdata unsigned intucAD_avragy,k; xdata unsigned int *uiAD_data = AD_data; xdata unsigned char i,j; xdata unsigned int AD_Array[10]; for(i=0;i<10;i++){ AD_Array[i] = AD_data[i]; } for(i=0;i<10;i++) for(j=0;j<10-i;j++) { if(AD_Array[j]>AD_Array[j+1]) { k = AD_Array[j]; AD_Array[j] =AD_Array[j+1]; AD_Array[j+1] = k; } } ucAD_avragy = AD_Array[3] +AD_Array[4] + AD_Array[5]; returnucAD_avragy/3; }/******************************************************* ****** //! 函数名:void ADC0_ISR (void) interrupt 10 //! 函数说明:ADC中断函数 *************************************************************/ /*void ADC0_ISR (void) interrupt 10 { }*//************************************************************* //! 函数名:double SensorDistanceProcess(double x ) //! 函数说明:ADC值距离转换*************************************************************/ double SensorDistanceProcess(double x ) { xdata double result; static double final_result; result = pow(x, -1.320888871); final_result = result *59599.430602019; return final_result; }/************************************************************* //! 文件结束。

相关文档
最新文档