智能小车设计方案报告.pdf

上传人:叶*** 文档编号:36138430 上传时间:2022-08-25 格式:PDF 页数:35 大小:1.03MB
返回 下载 相关 举报
智能小车设计方案报告.pdf_第1页
第1页 / 共35页
智能小车设计方案报告.pdf_第2页
第2页 / 共35页
点击查看更多>>
资源描述

《智能小车设计方案报告.pdf》由会员分享,可在线阅读,更多相关《智能小车设计方案报告.pdf(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、摘要自主反应式智能系统是一种应用广泛的控制系统。对电路的分析和验证工作依靠智能化来完成,效率高。因此它的研究与开发是一项非常有意义的工作。本小车以 MSP430 超低功耗单片机为核心,在 SHARK 二型小车的基础上研究小车避障寻迹的设计和实现方法,完成障碍检测、避障、寻迹功能。充分运用了430 单片机的功能。本论文介绍了智能小车的机械结构及相应的硬件电路和实现算法。 在机械结构上, 对普通的小车作了改进, 即用一个万用轮来代替两个前轮,使小车的转向更加灵敏。利用反射式红外传感器来寻迹、红外一体化接收头来检测障碍物的位置,通过改变单片机产生的 PWM 方波的占空比,使其能在设计范围内可实现任意

2、角度黑线和任意角度移动,还可以实现避障的功能。在算法上, 利用矢量分解法、PID 算法等对小车的运行进行控制并能有效的改善其运行轨迹。关键字:MSP430寻迹避障PWMAbstractIndependences responding type intelligence system is a kind of appliedextensive control system. Analyzing electric circuit and verifying a work depends onthe intelligence to complete, its efficiency is high.

3、So its research and development isa very meaningful works.With the core of 430microcomputer and at the foundation of SHARK, the No.3small car can complete an obstacle examination, avoiding stumbling block andlooking for vestige function, making full use of 430microcomputer. This thesisintroduced mac

4、hine structure, homologous hardware electric circuit and the calculateway of the intelligence small car .Making improvement to the common car on themachine structure, we use a perfect wheel to make the car turning more easily. Andwe use some sensors to look for vestige and avoid stumbling block. By

5、change theempty ratio of PWM, the car canarbitrarilymove with any angle of the black linewithin the scope of the design. On the calculate way, we use vector decompositionmethod、PID to control the car and improve its track.Key word: MSP430looking for vestigeavoiding stumbling blockPWMPID目录目录第一章第一章绪论绪

6、论.1第二章第二章各部件的工作原理各部件的工作原理.32.1前轮(导向轮).32.2电机.42.3反射式红外传感器. 52.4红外一体化接收头. 6第三章第三章硬件电路硬件电路. 113.1电机驱动电路.113.2反射式红外传感器电路.133.3红外一体化接收头电路.143.4 处理器电路.16第四章第四章电路原理图电路原理图.19第五章第五章控制算法控制算法. 215.1黑线位置判别.215.2巡线算法.215.3搜线算法.235.4障碍物位置判别.235.5转弯控制.255.6 迷宫探路控制. 26第六章第六章 相关软件相关软件.29第七章第七章 总结总结.357.1 本文总结.357.2

7、 进一步的工作. 35致谢致谢.37参考文献参考文献.39附录一附录一.41附录二附录二.42第一章绪论当今社会,科学技术日新月异,时代前进的步伐越迈越宽,应用自动化设备,计算机处理,现代化通讯,数字化信息,现代化显示设备等高新技术而建立的现代化智能,监控等系统已经得到充分的发展与应用,智能机器人也就应运而生。同时, 在建设以人为本的和谐社会的过程中, 智能服务机器人能够完成考古发掘,海底揭密,宇宙探索等危险作业,以保证人身安全。 国家中长期科学和技术发展规划纲要一文指出:智能服务机器人是在非结构环境下为人类提供必要服务的多种高技术集成的智能化装备。 以服务机器人和危险作业机器人应用需求为重点

8、,研究设计方法、制造工艺、智能控制和应用系统集成等共性基础技术。重点研究低成本的自组织网络,个性化的智能机器人。20062020 年,既是国家中长期技术发展计划实现阶段,也是我们最具有活力和最激情洋溢的时段。该智能小车模型是一辆由 PCB 和车体拼装的小车。所有的机械结构和零部件都安装固定在电路板上。因此完全不需要机械加工,非常适合实验阶段机器人的研制。 本文简述了智能巡线避障小车自主走迷宫的设计思路和实现过程。包括小车的机械结构、电路、软件、控制算法、调试方法等。可作为一般的设计参考。小车的左右轮分别由 2 只舵机提供动力,作为驱动轮和导向轮使。 430 单片机的 PWM 发生器产生 2 路

9、(分为两组)占空比可变的方波,经三极管进行扩流后分别驱动左右舵机。控制 2 路 PWM 的比例,不仅可以调节小车向前运动的速度, 还可通过 2 路 PWM 占空比的差异,改变小车运动方向。5 只反射式红外传感器位于小车前下方,用于查找黑线位置并且实现寻迹。小车前端还分布有 3 个红外一体化接收头,实现避障并完成走迷宫。第二章第二章各部件的工作原理各部件的工作原理2.1驱动轮(导向轮)前轮亦为驱动轮,其决定小车能否灵活拐弯的关键部分。这辆小车和汽车不同,不是靠摆舵来控制转弯,而是靠左右后轮速度差来实现转弯控制。图为小车的仰视图(未画出传感器)。小车的两前轮是靠舵机进行驱动的。通过两路 PWM 波

10、实现对其的控制。只要调整 PWM 波的占空比即可控制舵机的转速。当小车左轮的速度高于右轮时,小车右转弯;反之,当小车右轮的速度高于左轮时, 小车左转弯。小车后轮属从动轮,质地较硬,其与地面磨擦力较小,与其动力相比可以忽略不记。所以它可以自由偏移,而不影响小车的转向.2.2舵 机舵机是一种位置伺服的驱动器。它接收一定的控制信号,输出一定的角度,适用于那些需要角度不断变化并可以保持的控制系统。在微机电系统和航模中,它是一个基本的输出执行机构。准的舵机有 3 条导线,分别是:电源线、地线、控制线,如图所示。电源线和地线用于提供舵机内部的直流电机和控制线路所需的能源电压通常介于 46V, 一般取 5V

11、。 注意, 给舵机供电电源应能提供足够的功率。 控制 线的输入是一个宽度可调的周期性方波脉冲信号, 方波脉冲信号的周期为 20 ms(即频率为 50 Hz)。当方波的脉冲宽度改变时,舵机转轴的角度发生改变,角度变化与脉冲宽度的变化成正比。2.3反射式红外传感器反射式红外传感器ST188采用高发射功率红外广电二极管和高灵敏度光电晶体管组成。检测距离可调整范围为 415mm;采用非接触检测方式。可用于 IC卡电度表脉冲数据采集、集中抄表系统数据采集和传真机纸张检测等。图 2.4反射式红外传感器工作原理反射式红外传感器中包含一个发射器 LED 和一个光探测器 (光敏二极管光敏三极管) 。着两个元件被

12、封装在同一个塑料壳体中,并且排列成适合他们工作的理想位置。LED 发出的一束光被一个表面反射后又回到探测器中。图 1.4 是反射式红外传感器的工作原理图。封装在矩形壳体中的是发射器LED(由左侧的白色方块表示)和探测器装置(在右侧) 。虚线表示光线从发射器LED 中发出并反射回探测器;探测器检测到的光强大小取决于物体表面的反射率,而这一光强就是传感器的输出值。如图所示,选通信号(高电平)经过三极管扩流后送到传感器的 K 脚,如果检测到黑线,传感器 C 脚输出高电平;否则输出为低电平。图 2.5反射式红外传感器及其检测距离与转换效率的关系图反射式传感器在高度受控的理想环境下的工作性能更好,因为影

13、响它输出的外界因素有很多,如环境光的变动、传感器与被探测物体之间的距离,以及被探测物体的反射率等。为了减少环境光的干扰,首先需要调整传感器的方位使环境光不能直接射到探测器。反射式红外传感器 ST188 的最佳探测距离为 6-14mm。 所以将传感器垂直于地面并且调整传感器与地面的距离,大约在 10mm 左右。2.4红外一体化接收头电视机、唱机等家电中广泛使用红外线遥控器。红外遥控器发出 38KHz 调制的红外线,在接收端,被一体化红外接收头接收,解调出原始键码值。因为红外遥控使用广泛、成熟、大批量,所以相关红外接收、发射元件价格很低。本方案使用通用遥控器的一体化红外接收头作为检测元件。图 2.

14、7一体化红外接收头工作原理一体化接收头内部集成有带通滤波器,它只允许大约 38 kHz 的红外信号通过。 这种仅对 38KHz 敏感的特性, 有助于消除环境光对遥控器接收的影响。 如图,当红外线发射管 IR LED)发出的 38KHz 的红外线被一体化接收头接收时,接收头输出“0” 。当没有侦测到红外线,或非 38KHz 红外线(如日光灯干扰) ,输出“1” 。第三章第三章硬件电路硬件电路3.1舵机驱动电路此部分是整个小车的大脑,是整个小车运行的核心部件,起着控制小车所有运行状态的作用。通常选用单片机作为小车的核心控制单元。这里选用MSP430F425 单片机. 考虑到小车必须能够前进、倒退、

15、停止,并能灵活专性,在左右两轮各装一个舵机分别进行驱动。 当左轮电机转速高于右轮电机转速时小车向右转,反之则向左转。为了能控制车轮的转速,左右两轮的转速,可以采取PWM 调速法,即由单片机的 TA1 和 TA2 输出一系列频率固定的方波,再通过功率放大来驱动舵机,在单片机中编程改变输出方波的占空比,从而可以改变电机的转速。 左右两轮两个电机转速的配合就可以实现小车的前进、 倒退、 转弯等功能。驱动电路如图:需要注意的是:被二极管分流到电源两端的电力将造成主板电压的瞬变或噪声。更严重的是当采用 PWM 信号控制电机时,每次关断都会产生这种影响。如果导通三极管又重新开启,同时反向电动势电流仍然存在

16、,结果三极管将直接导通电源正极和地。这一现象时间的长短取决于续流二极管的关断时间。这一电流称作过冲电流,它同样会产生噪声。因此需在离接口慢近的地方加一旁路电容来消噪。旁路电容的作用是平滑电流脉动和电源电压的瞬变。当电压出现尖峰时, 电容将迅速地吸收这一能量,从而使电压保持恒定。当电压降低时,电容将向电路中回馈能量,从而使电压有所回升。经试验验证,从单片机出来的 PWM 电压大约在 3.5V 左右,加到舵机两边最多只有 3V,这远远低于其耐压,因此转速也很慢,稍有摩擦就转不动了。因此需要再增加两个三极管来进行扩流,还可以起保护单片机的作用。3.2反射式红外传感器电路这里的寻迹是指小车在白色地板上

17、寻黑线行走, 通常采用的方法是红外探测法。 即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被安装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不倒红外光。 单片机就是否反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测的距离有限,一般最大不应超过 15cm。这里用反射式红外传感器 ST188。当小车在白色地面行驶时,装在车下的红外发射管发射红外线信号,经白色反射后,被接收管接收,一旦接收管接收到信号,输出端将输出低电平;当小车行驶到黑线时,红外线信号被黑色吸

18、收后, 将输出高电平,从而实现了通过红线检测信号的功能。将检测到的信号送到单片机的 I/O 口, 当 I/O 口检测到的信号为高电平时, 表明红外光被地上的黑线吸收了,表明小车处在黑色的引线上;同理,当 I/O 口检测到的信号为低电平时,表明小车行驶在白色地面上。传感器采取脉冲扫描式读。例如某时刻 P_SEN1 高电平,其余 P_SEN2 至 5 低, 这样 1、4 号传感器的红外发射管亮,其余传感器不发射红外线。等待数据稳定后,读取 1、4 号传感器的数据。然后关闭 1、4 号传感器,打开 2、5 号传感器电源,依次类推,读取 5 个传感器的数据。这样可以保证任何时刻都不会有临近的传感器同时

19、工作。从而保证了相邻传感器之间不会互相干扰。同时,红外发射管是除了电机之外耗电最大的器件,脉冲工作方式可以大大减少耗电量。3.3红外一体化接收头电路传感器排布采用如下结构:每个传感器组由一只红外发射管、 一只一体化红外接收头, 和一只电容构成。可以测量该方向是否存在障碍物和判断障碍物的距离。电容用来稳定电路,防止电源和地发生短路。硬件原理: 采用一片 MSP430F245 作为控制器。 利用 BasicTimer 的定时中断,产生 38KHz 附近的若干频率,从 P1.1 输出方波。该方波经过三极管扩流来增加驱动能力,给 3 个红外 LED 供电。为防止互相干扰,3 只 LED 轮流点亮,每次

20、只亮一只 LED,由 IRE 选择哪支红外 LED 被点亮。如果接收到反射回来的红外线,接收端将输出 TTL 电平,被单片机接收,然后执行相应的避障措施。如果未接收到任何信号,将一直输出高电平。因为一体化接收头只对 38kHz 的方波敏感,而且它内部带有带通滤波器,所以需要在发送 38kHz 的时候发送一段时间关闭一段时间, 否则传感器会认为它是外界光而将返回的信号当作干扰信号而忽略掉。为了避免各个传感器之间的相互干扰,需要轮流打开接收器。另外,因为发光管发出的光是沿四面八方发送的,而且只要打开电源发射管就会工作,所以也为了避免因别的发光管带来的干扰,需要将发光管包的严严实实的这三个传感器所起

21、的作用是不同的。这三个传感器用来检测前方、左边还有右边是否有障碍物。通过对三方向的障碍物完成走迷宫的路线寻找。3.4 处理器电路小车采用一片 MSP430F245 作为控制器。MSP430F425 的特点是:有五种节电模式;2 个 8 位,1 个 6 位并行端口,全部端口均具有中断能力;保密熔丝的程序代码保护; 具有 1 个捕获比较寄存器的 16 位定时器 TIMER_A; 多达 16KB FLASHROM 和 512RAM 等等。系统采用 32.768KHz 晶振作为定时采样用。 另外留有 JTAG 口可以现场编程。并且还有液晶引脚未用到,将来还可以扩展其功能。在做 PCB 板时已将这些引脚

22、引出,可以直接使用。TIMERA 共有 4 种计数模式:停止模式、增计数模式、连续计数模式和增减计数模式。我们用 TIMERA 的增计数模式来产生 38KHZ 的方波。具体原理为:捕获比较寄存器 TACCR0 用作 TIMERA 增计数模式的周期寄存器,因为 TACCR0 为16 位寄存器,所以该模式适用于定时周期小于 65536 的连续计数情况。计数器TAR 可以增加计数到 TACCR0 的值,当计数值与 TACCR0 的值相等(或定时器值大于 TACCR0 的值)时,定时器复位并从 0 开始重新计数。图 2.8 说明了增计数模式的计数过程。当定时器的值等于 TACCR0 的值时,设置标志位

23、 CCIFG0(捕获比较中断标志)为 1,而当定时器从 TACCR0 计数到 0 时,设置标志位 TAIFG(定时器溢出标志)为 1。计数过程中还可以通过改变 TACCR0 的值来重置技术周期。当新周期大于旧周期时, 定时器会直接增计数到新周期; 当新周期小于旧周期时, 改变 TATACCR0时的定值器时钟相位会影响定时器响应新周期的情况。时钟为高时改变 TACCR0的值, 则定值器会在下一个时钟上升沿返回到 0,如果时钟为低时改变 TACCR0的值,则定时器接受新周期并在返回到 0 之前,继续增加一个时钟周期。可以随时间变化任意改变 PWM 信号的占空比,具体的做法是:保持 TACCR0 的

24、值不变(周期不变)改变 TACCRx 值(改变占空比)增计数模式时的输出实例TIMERA 的输出模式由模式控制位 OUTMODEx 决定,共有 8 种输出模式。除模式 0 外,其他的输出都在定时器时钟上升沿时发生变化。这里我们将输出模式选为输出模式 7。用该方式产生占空比为 50的 38KHZ 的方波;也可以通过改变TACCRx 的值来改变电机的转速,使其实现转弯、后退等动作。第五章控制算法5.1黑线位置判别地面的黑线是导引线,位置读取和计算的准确度、稳定性将直接影响小车的控制和运行。下图是实际运行中出现的情况,黑块表示感应到黑线的传感器。 传感器的排列比较密,可能 12 个传感器都能踩到黑线

25、;转弯处车身倾斜甚至 23 个传感器都能踩到黑线。应该求黑线的中心位置作为结果。图 5.1反射式红外传感器的运算图计算的方法是从左数,找到第一个黑色传感器编 i,再从右数,找到第一个黑色传感器编 j。(i+j)*10/2-20 就是黑线中心位置。这样算出来的结果中有小数部分,用起来不太方便,因此我们将结果放大 10倍,再减去之间位置时算出来的值。5.2巡线算法小车是一个非常典型的惯性系统。对于这一类被控对象,PID 算法能简单有效的进行控制。对 PID 算法做个简单的说明:假设小车中心线在黑线中心线上,偏差为 0,小车正常行驶。如果某时刻检测到黑线偏左,就要向左转弯;如果检测到黑线偏右,就要向

26、右转。偏得越多,就要向黑线方向打越大的舵角。这就是比例控制(P)遗憾的是,这种方法并不能将小车稳定在线上,因为小车有惯性。假设黑线偏左,说明小车偏右了,需要左传舵,等到小车回到中心的时候,停止转舵, 可是小车的惯性会使车身继续左转,直到冲过黑线,黑线又偏右。然后控制过程反Position=0Position= -15Position=0.5Posit= (i+j)*10/2-20复,车身是在左右摇摆中向前行走的。这种摇摆叫做“超调” ,超调越大,控制越不稳定,容易出轨。为了克服惯性,最简单的办法是任何控制动作都提前一点。适当调整提前量可以抵消惯性;另外,即使偏移量相同的情况下,在不同半径的弯道

27、,也需要不同的舵角。这些都是比例控制不能实现的。我们除了位置信息之外,还需要知道轨迹的变化趋势。为了实现提前控制,在时间上,除非延长传感器,否则没有办法提前获知转弯。那么我们只能在控制量上想办法。一个函数的导数,反映了该函数的变化趋势。 同样我们可以用黑线位置的微分值来提前得到变化趋势。用本次位置减去前次位置求出差值,就大致知道偏移量的变化趋势。将该差值和比例相加后一起作为控制量,即可实现提前控制。这就叫做比例微分控制(PD 控制)下图是小车的控制系统框图:图 5.2PID 控制算法传感器位置求出后,减去中心值,得到和中心的偏差量。该偏差量乘以比例系数得到比例控制量。并且计算相邻若干次偏差量之

28、间的差值,乘以微分系数,得到微分控制量。将比例控制量和微分控制量相加,作为最终的舵角控制量。积分控制在此系统中没有使用,原因是舵角到位置之间本身就是积分关系的,另外积分控制有相当大的滞后,对控制稳定性不利。一般在调节 P 和 D 时需要先调节 P 的值,因为比例系数较微分系数对小车的影响更大。 在调节 P 的值时可以先将 D 的值置为 0。 当发现小车在偏离黑线却可以很快的转回来时,P 就调的差不多了;D 的调节相对简单。5.6 迷宫探路控制对于迷宫寻路程序,如果迷宫不太复杂, 且主要为纵横方向的直线, 我们采用让小车在路口始终左转或者始终右转的方法走迷宫, 也就是让小车沿迷宫的边沿走。利用小

29、车前面三个传感器来检测障碍,设置向前,向左,向右三个转向优先级的高低,来进行自主搜索。左转优先级最高,其次是向前,最后是右转。通过延时使得小车每隔一段时间寻找左边界。在找到左边界的地方直行。倘若未找到边界,则再向左偏移一定的角度,继续寻找,直至找到为止。对于不太复杂的迷宫,使用该方法,一直沿着左边就可以走出迷宫了。第六章第六章 相关软件相关软件软件部分我分为两步来单独实现寻迹和避障功能。寻迹部分使用了前面的五个反射式红外传感器,对于单独进行寻迹功能来说这已经足够了。红外一体化接收头用到前面的三个,用来执行走简单迷宫的功能。关于硬件的调试:一)用万用表进行一些简单的测试,可以检测出是否有短路,断

30、路,以及一些元器件的好坏。二)用示波器检测传感器的好坏,以及能否正常工作,对于传感器的正常工作与否,还要通过软件的调试与检测,以便知道CPU 能控制传感器的工作和接受传感器的信号,对整个系统进行控制关于软件的调试:一)对电机的控制运行调试;二)对寻迹传感器的检测;附:#define P_SEN14_HP1OUT |=(BIT5)/P1.5#define P_SEN14_LP1OUT &= (BIT5)/开启或关闭 1,4 号传感器#define P_SEN25_HP1OUT |=(BIT6)/P1.6#define P_SEN25_LP1OUT &= (BIT6)/开启或关闭 2,5 号传感器

31、#define P_SEN3_HP1OUT |=(BIT7)/P1.7#define P_SEN3_LP1OUT &= (BIT7)/开启,关闭三号传感器#define SEN1_IN(P2IN & BIT1) /P2.1#define SEN2_IN(P2IN & BIT2) /P2.2#define SEN3_IN(P2IN & BIT3) /P2.3#define SEN4_IN(P2IN & BIT4) /P2.4#define SEN5_IN(P2IN & BIT5) /P2.51 至 5 号传感器的输入的值#define P_coefficient 100#define I_coe

32、fficient 0#define D_coefficient 25signedcharLast_Position5=0,0,0,0,0;/声明数组,用于依次存放前 5 次的黑线位置。/* 名称:Sensor_Init()* 功能:对反射式红外传感器进行初始化设置* 入口参数:无* 出口参数:无*/void Sensor_Init()P1DIR |= (BIT5+BIT6+BIT7);P1OUT &= (BIT5+BIT6+BIT7);_DINT();/将 IO 设为输出,其它默认为输入/* 名称:DELAY()* 功能:程序延时* 入口参数:无* 出口参数:无*/void Delay(uns

33、igned int j)for(unsigned int k=0;kj;k+);/*名称:Caculate_Position()*功能:计算黑线位置*入口参数:SensData,5 个传感器的返回值*出口参数:SensorPosition*说明: 通过计算黑线与中心位置的偏差来控制小车*/signed char Caculate_Position(unsigned char *SensData)signed char i,j,SensorPosition;/存储 5 个的传感器的值for(i=0;i=0;j-)/从右往左数,找第一个读到黑线的传感器编号 jif(SensDataj!=0) br

34、eak;if(i=5)return(0 x80);SensorPosition=(i+j)*10/2-20; /黑线中心位置就是(i+j)/2/定点数表示不了 0.5,所以除之前先乘 10,这样 0.5 就对应 5/黑线位置值域就是 040。为便于表示偏差,零值应该在中间/所以再减 20,变成-200+20 表示黑线最左中间最右/如果全白(找不到黑线),就返回-128,作为出错标志。return(SensorPosition);/将计算结果返回/*名称:ReadSensor()*功能:读取黑线位置*入口参数:无*出口参数:Position,小车偏移量*/signed char ReadSens

35、or()/从传感器读取小车当前位置signedchar position;unsigned char i;unsigned char SensorData5;P_SEN14_H ;/打开 1、6 号传感器电源Delay(400);/略延迟,等待数据稳定SensorData0=SEN1_IN;/读 1 号传感器SensorData3=SEN4_IN;/读 6 号传感器(注意数组下标从 0 开始,编号少 1)P_SEN14_L;/关闭 1、6 号传感器电源P_SEN25_H ;/打开 2、7 号传感器电源Delay(400);/略延迟,等待数据稳定SensorData1=SEN2_IN;/读 2

36、号传感器SensorData4=SEN5_IN;/读 7 号传感器P_SEN25_L ;/关闭 2、7 号传感器电源P_SEN3_H ;Delay(100);SensorData2=0;P_SEN3_H ;/读取的 5 个传感器的状态,存入了 SensorData5里面for(i=0;i0)/Rotation 大于 0 是右转/1 是左轮,2 是右轮if(Rotation 5)Rotation = 5;TACCR1=601;/左轮全速前进TACCR2=611-Rotation;/右轮减速else/Rotation 小于 0 是左转if(Rotation 4000) Temp_PID = 400

37、0;if(Temp_PID-4000) Temp_PID = -4000;Temp_PID=Temp_PID/500;/-44SetRotation(Temp_PID);void PWM_Init(void)P1SEL |= BIT2;/占空比为 7.5%即 1.5ms 时,舵机停转P2SEL |= BIT0;P1DIR |= BIT2;P2DIR |= BIT0;TACTL |= TASSEL_1 + TACLR;/TIMER_A 时钟源设为 ACLK,并清 TARTACCTL1 =OUTMOD_7;TACCTL2 =OUTMOD_7;TACCR0 = 655;/TACCR0 中断周期约为

38、20msTACCR1=601;TACCR2=611;TACTL |= MC_1;/TIMER_A 工作于增计数方式/75 时占空比是 7.5%void Start_Wait() /加电源后延迟几秒unsigned int i;for(i=0;i32000;i+);void main()WDTCTL = WDTPW + WDTHOLD;/系统初始化FLL_CTL0 |= XCAP18PF;Start_Wait();Sensor_Init();PWM_Init();signed char Position;while(1)Position=ReadSensor();PID_Control(Posi

39、tion);Delay(1000);三)对于避障传感器的检测。附:#include msp430 x42x.h#define IRE1 (P1OUT&= BIT5)/打开红外发射#define IRE2 (P1OUT&= BIT6)#define IRE3 (P1OUT&= BIT7)#define IREG1 (P1OUT |= BIT5)/关红外发射#define IREG2 (P1OUT|= BIT6)#define IREG3 (P1OUT|= BIT7)#define IRD1 (P2IN & BIT1)/红外接收#define IRD2 (P2IN & BIT2)#define I

40、RD3 (P2IN & BIT3)unsigned char data3;unsigned char n,Flag=0;void Delay1(unsigned int j)for(unsigned int i=0;ij;i+);void PWM_Init(void)P1SEL |= BIT2;/占空比为 7.5%即 1.5ms 时,舵机停转P2SEL |= BIT0;P1DIR |= BIT2;P2DIR |= BIT0;TACTL |= TASSEL_1 + TACLR;/TIMER_B 时钟源设为 ACLK,并清 TARTACCTL1 =OUTMOD_7;TACCTL2 =OUTMOD_

41、7;TACCR0 = 655;/TACCR0 中断周期约为 20msTACCR1=604;/小于 606 正转TACCR2=608;/大于 606 正转TACTL |= MC_1;/TIMER_B 工作于增计数方式void Start_Wait() /加电源后延迟几秒unsigned int i;for(i=0;i25)Backward();Delay1(8000);T45L();Forward();n=0;break;#pragma vector = BASICTIMER_VECTOR_interrupt void BT_ISR(void)BTCTL = BTHOLD;BTCNT2= 243

42、;P1OUT= BIT1;BTCTL &= BTHOLD;第七章第七章 总结总结现在小车已经能够独立的完成寻迹和避障功能了。 虽然有时候它不能很完整的走完所规定的路线,但从它转弯、直走的轨迹上来说,已经基本上是按轨迹很完美的前行,左右摆动的幅度也不是很大,所以还是给人一种比较完美的感觉。另外,可能在安装上有点纰漏,使小车的运行轨迹总是很不稳定,前一秒钟是一种状态,后一秒有可能就是另外一种状态,所以需要不停的对小车进行修改。通过现在对小车的研究,它不仅能单独的实现寻迹和避障功能,而且可将两者有效的结合起来,不过还需要对它的机械结构做一定的修改,使其运行起来更加稳定,转弯也更灵活.电路的成熟化需要

43、我们在实验中进一步加以改进,在小车的制作上,在传感器的安装上,如果能有更好的改进的话,可以让小车走的更加平稳。但是硬件已基本成型,更够有更大发挥空间的地方还是软件,更优的算法将会让小车从任意迷宫中走出去。在今后的试验课程中,能做出更好的驱动电路,以便在走迷宫的过程中让小车更稳健。另外避障用的红外一体化接收头,要对每一个红外发射管加驱动,否则探测距离会大大受影响。传感器在使用过程中容易受损,应该多加注意。参考文献参考文献【1】沈建华 杨艳琴 翟骁曙MSP430 系列 16 位超低功耗单片机原理与应用2004 年 11 月第一版清华大学出版社2004 年 11 月出版【2】胡大可MSP430 系列

44、单片机 C 语言程序设计与开发2003 年 1 月第一版北京航空航天大学出版社2003 年 1 月出版【3】谭浩强C 语言程序设计(第二版) 1999 年 12 月第二版 清华大学出版社2005 年 1 月第 58 次印刷【4】胡烨姚鹏翼陈明Protel 99 SE 原理图与 PCB 设计教程 2006 年 2 月第一版【5】王丽娟 徐军 戴宝华 荣政C 程序设计2003 年 6 月第五版西安电子科技大学出版社2000 年 8 月出版【6】宗光华机器人的创意设计与实践2004 年 2 月第一版北京航空航天大学出版社2004 年出版附录一附录一序号类型大小封装个数1430 单片机430QFP6412电阻1K1026213电阻24K120684电阻510120685电阻4.7K120616电源6VBATPAK117开关KEY38三极管(NPN)9013SOT-23109三极管(PNP)9012SOT-23410发光管LEDLED311LM1117-33SOT-223112反射式红外传感器ST188SIP4513电容106C1206214电容1041206915晶振32KXTAL2116JTAGJTAG117单排插针64附录二附录二

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 公文通知

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com