找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5518|回复: 0
打印 上一主题 下一主题
收起左侧

基于单片机的赛车模型的控制电路及程序设计论文

[复制链接]
跳转到指定楼层
楼主
ID:314609 发表于 2018-4-23 17:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

本科毕业设计(论文)

赛车模型的控制电路及程序设计
院 ( 系 ) 机械与动力工程学院
专业名称 测控
年级班级 11-03           
学生姓名 石*         
指导教师 王*         

摘要

本文以第四届全国大学生智能车竞赛为背景,介绍了智能赛车控制系统的软硬件结构和开发流程。该比赛采用组委会规定的标准车模,以Freescale半导体公司生产的16位单片机MC9S12DG128为核心控制器,在CodeWarrior 4.7开发环境中进行软件开发,要求赛车在未知道路上完成快速寻线。


本智能车采用双排光电传感器对赛道进行检测,工作电压能与最小系统工作电压相同,可共用一个电源模块。通过光电传感器提取获得黑线位置,用PID方式对舵机进行反馈控制。同时通过速度传感器获取当前速度,实现速度闭环控制,根据赛道类型预判信息和当前速度信息对速度进行合理控制。整个硬件系统包括车模机械结构调整、稳压电源设计、核心控制电路板设计、后轮电机驱动模块设计和上位机通信设计等等。经过查看各种相关资料,对硬件进行了大量的优化,如针对对各种稳压芯片的测试,确定最优电源电路;测试各种测速方式,最终选用光电管作为测速模块;并在智能车调试过程中不断改进机械结构,使小车运行更加稳定、迅速。软件系统包括程序初始化、数据采集和车体控制的算法。为了提高智能赛车的行驶速度和可靠性,经过多次机械结构调整及电路板设计,并经过不断试验,最终确定了现有的系统机械结构和各项控制的PID参数。




目  录

1  绪   论……………………………………………………………………………
1.1  智能车的背景及意义
1.2  智能车竞赛的研究现状
1.2.1 国外智能车竞赛现状
1.2.2 国内智能车竞赛现状
1.3  本文的概况及结构安排
2  智能车方案设计…………………………………………………………………..
2.1  智能车设计的基本要求
2.2  智能车的双排传感器循迹策略方案设计
2.2.1 双排传感器的优势
2.2.2 传感器阵列布局
2.2.3 直道识别方式控制策略
2.2.4 直线稳定控制策略
2.2.5 弯道控制策略
2.2.6 实测结果和现象分析
2.3 车模参数
3  硬件设计…………………………………………………………………………
3.1  智能车整体结构
3.2  mc9sdg128b的最小系统及接口设计
3.3 电源管理及分布
3.4 光电传感器布局
3.4.1  赛道识别传感器模块
3.4.2  测速模块
3.5  电机驱动模块
3.6 舵机驱动模块
3.7 拨码开关模块
4  机械结构调整……………………………………………………………………
4.1 一些重要参数对赛车的影响
4.2 车模底盘参数调整
4.3 重心位置对汽车性能的影响
4.4 汽车侧滑的处理
4.5 底盘离地间隙
4.6 齿轮传动间距调整
4.7 后轮差速机构调整
5  智能车软件开发环境及软件设计………………………………………………
5.1  智能车软件开发环境
5.1.1  软件调试软件Code Warrior
5.1.2  无线调试模块
5.2软件设计
5.2.1  初始化模块
5.2.2  智能车系统的控制策略的设计及实现
5.2.3  PID参数的整合
结论…………………………………………………………………………………..
致谢…………………………………………………………………………………..
参考文献……………………………………………………………………………..
附录…………………………………………………………………………………..
附录A:智能车硬件连接图
附录B:智能车最终实物图
附录C:PID  controller

1  绪   论
1.1 智能车的背景及意义

智能车系统以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感技术、电子、电气、计算机、机械、车辆运动学等多个学科;主要由路径识别、角度控制及车速控制等功能模块组成。一般而言,智能车系统要求小车在白色的场地上,通过控制小车的转向角和车速,使小车能自动地沿着一条任意给定的黑色带状引导线行驶。         

智能车辆,是一个集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,它集中地运用了计算机、现代传感、信息融合、通讯、人工智能及自动控制等技术,是典型的高新技术综合体.它具有道路障碍自动识别、自动报警、自动制动、自动保持安全距离、车速和巡航控制等功能。智能车辆致力于提高汽车的安全性、舒适性和提供优良的人车文互界面,是目前各国重点发展的智能交通系统中一个重要组成部分,也是世界车辆工程领域研究的热点和汽车工业增长的新动力。

随着科学技术的发展,特别是计算机技术、信息技术、人工智能、电子技术的突飞猛进,智能车辆技术有了实现的技术基础。目前智能车辆技术在轿车和重型汽车上主要应用于碰撞预警系统、防撞及辅助驾驶系统、智能速度适应、自动操作等,其在军事上的应用更加广泛和重要。

车辆智能化是汽车工业今后的发展趋势,也是人们对安全性要求越来越高未来汽车的发展方向。随着计算机技术和信息技术为代表的高新技术的发展,人工神经网络技术、模糊控制技术、神经模糊技术、虚拟实现等新技术的出现,智能车辆技术的研究将会有突破性的进展。智能车辆系统的实用化是是智能车辆发展的前进方向,适应性强、环境适应性好的智能车辆将是研究的重点。

对智能车系统的研究在某种程度上讲是对于智能车辆自动驾驶系统研究的缩影。目前自动驾驶技术的发展水平已经能在相对简单的路况实现全自动驾驶。例如在高速公路上,所有的车辆都向同一个方向行驶,没有行人,没有急转弯路段,车道都有明显的标记,这样就为自动驾驶提供了较好的条件。高速公路自动驾驶的一个主要技术是车道跟踪。一种车道跟踪系统由摄像机和处理器测定车道标记,传感器测定驾驶员加在方向盘上的扭矩;电子控制装置接收这些测量信息,驱动电机通过变速箱调整输送到转向机构的扭矩。

美国通用汽车公司计划在2015年前测试无人驾驶汽车技术,2018年左右将无人驾驶汽车推向市场。该公司正在联合零部件供应商、大学教授和其他汽车制造商共同研发这种无人驾驶汽车,给人们的长短途旅行带来革命性变革,大大减少交通堵塞和交通事故。为了减少交通事故,美国正在推广防止翻车的电子稳定性控制系统,要求2012年推出的新车型必须配备这种技术。接下来,美国还要实施车辆之间的通讯系统。

尽管与自然路况下的完全自动驾驶尚有一段不小的距离,人们已经研究出包含上述在内的许多自动驾驶辅助系统并成功地加以使用。随着科学技术的发展,我们相信不久的将来在市场上能够买到功能全面的自动驾驶汽车。不过,依笔者所见,汽车智能驾驶这种灵活而又复杂的操作,百分之百自动并不是最佳选择,在复杂的路段上还是宁愿相信人类自己[1,2]。

就目前情况看,智能车系统研究的重点是集中力量发展决定智能车控制成败的两大关键技术,即软硬件对于智能车稳定性和速度的提升。只有在这两大关键技术上获得突破性进展,才能实现“跟踪前沿,跨越发展”的目标。本文着重研究控制算法智能车控制系统的稳定性问题,兼顾硬件设计与机械调整,介绍一种基于HCS12单片机设计的智能车系统。硬件系统中的路径识别功能由双排红外光电传感器实现,车速控制主要由PID控制器进行调节。软件设计中实时检测路况,并定时中断采集速度反馈值。

1.2  智能车竞赛的研究现状
1.2.1 国外智能车竞赛现状

韩国大学生智能模型车竞赛是韩国汉阳大学汽车控制实验室在飞思卡尔半导体公司资助下举办的以 HCS12单片机为核心的大学生课外科技竞赛。组委会将提供一个标准的汽车模型、直流电机和可充电式电池,参赛队伍要制作一个能够 自主识别路线的智能车,在专门设计的跑道上自动识别道路行驶,谁最快跑完全程而没有冲出跑道并且技术报告评分较高,谁就是获胜者。制作智能车,需要参赛队伍学习和应用嵌入式软件开发工具软件 code warrior和在线开发手段,自行设计和制作可以自动识别路径的方案、电机的驱动电路、模型车的车速传感电路、模型车转向伺服电机的驱动以及微控制器MC68S912DP256控制软件的编程,等等。其专业知识涉及 控制、模式识别、传感技术、汽车电子、电气、计算机、机械等多个学科, 对 学生的知识融合和实践动手能力的培养,对 高等学校控制及汽车电子学科学术水平的提高,具有良好的长期的推动作用。

图1.1 韩国大学生智能模型车竞赛车模

随着赛事的逐年开展,将不仅有助于大学生自主创新能力的提高,对于高校相关学科领域学术水平的提升也有一定帮助,最终将有助于汽车企业的自主创新,得到企业的认可。这项赛事在韩国的成功可以证明这一点。2000年智能车比赛首先由韩国汉阳大学承办开展起来,每年全韩国大约有100余支大学生队伍报名并准予参赛,至今已举办5届,得到了众多高校和大学生的欢迎,也逐渐得到了企业界的极大关注。韩国现代公司自2004年开始免费捐赠了一辆轿车作为赛事的特等奖项。德国宝马公司也提供了不菲的资助,邀请3名获奖学生到德国宝马公司研究所访问,2005年SUNMOON大学的参赛者获得了这一殊荣,图1.1为他们设计的智能车模型[3]。

此外,欧美国家也在进行智能车系统的研究。

1.2.2 国内智能车竞赛现状

我国在智能车系统方面的研究主要是指从2006年起历年举办的“飞思卡尔”杯智能汽车竞赛:参赛选手须使用竞赛秘书处统一指定的竞赛车模套件,采用飞思卡尔半导体公司的8位、16位微控制器作为核心控制单元,自主构思控制方案进行系统设计,包括传感器信号采集处理、电机驱动、转向舵机控制以及控制算法软件开发等,完成智能车工程制作及调试,于指定日期与地点参加各分赛区的场地比赛,在获得决赛资格后,参加全国决赛区的场地比赛。参赛队伍的名次(成绩)由赛车现场成功完成赛道比赛时间为主,技术报告、制作工程质量评分为辅来决定。各分赛区预赛以及全国总决赛间,在实际可操作性基础上力求公正与公平参与。

“飞思卡尔”杯智能汽车竞赛是教育部为了加强大学生实践、创新能力和团队精神的培养,委托教育部高等学校自动化专业指导分委员会主办每年一度的全国大学生智能汽车竞赛。

全国大学生智能汽车竞赛与全国大学生数学建模、电子设计、机械设计、结构设计等四大竞赛一起被列为教育部主办的全国大学生五大竞赛之一。该大赛综合性很强,以迅猛发展的汽车电子为背景,涵盖了控制、模式识别、传感、电子、电器、计算机和机械等多个学科交叉的科技创意性比赛,对进一步深化高等工程教育改革据有重要意义,对学生的知识融合和动手能力的培养,对高等学校控制及汽车电子学科学术水平的提高,具有良好的推动作用。

智能汽车竞赛所使用的车模是一款带有差速器的后轮驱动模型赛车,有大赛组委会统一提供。参赛队伍通过设计基于单片机的自动控制器控制模型车在封闭的跑道上自主循线运行。在保证模型车运行稳定即不冲出跑道的前提下,跑完一圈的时间越小,成绩越好。

大赛分为光电与摄像头两个赛题组,如果车模利用道路图像信息进行路径检测方法属于摄像头赛题组,除此之外则属于光电赛题组。

图 1.2 第四届“飞思卡尔”杯智能汽车竞赛比赛赛道

1、 光电赛题组

图 1.3 光电赛题组车模

参加光电赛题组中不允许传感器获取道路图像信息进行路径检测。

“飞思卡尔”杯全国大学生智能车邀请赛的赛题是控制比赛小车,使其按要求用尽可能短的时间完成比赛赛道,比赛允许选手自行设计传感器和控制电路,并编写控制程序,禁止改动舵机和轮胎等小车结构。针对这种要求,从控制系统的观点出发,按照设计跟随系统的思路设计车模的控制策略;从几何关系上讲,为了实现车模的寻线运动,控制器应当控制前轮转向,满足在车模运动中车身相对于线的位置偏差和车身纵向相对于线的夹角为0的控制目标。根据以上思路,寻线跟随系统应当有2个输入——位置偏差和角度偏差,1个输出——舵机转角,考虑了速度的因素后,系统便成为一个3输入2输出的复杂系统。在光电赛题组的方案中,位置偏差和角度偏差由光偶传感器检测得到,舵机转角由PWM信号控制。由于通常传感器检测得到的量是离散量,动作控制也只能针对离散量进行控制,并且根据单片机的处理能力,使用数字PID作为基本的控制器,但这只适用于低速情况,高速情况下过于离散的控制将造成系统控制缓慢、滞后,阶跃变化较大,甚至无法达到控制目标。由于这种原因,将小车速度提升之后,对小车进行连续控制是十分必要的,实际结果证明,传感器检测模拟量进行连续位置和角度的PID控制可以使小车具有很好的稳定性和跟随特性。

光电赛题组一般电路设计简单、信息检测频率高,但检测范围、精度有限且能耗较大。

2、 摄像头赛题组

图1.4 摄像头赛题组车模

参加摄像头赛题组可以使用光电管作为辅助检测手段。

选择采用摄像头作为寻线传感器。一方面,摄像头所能检测的赛道信息远多于光电传感器构成阵列所能检测的信息,有利于区分各种道路类型;另一方面,摄像头检测范围调整灵活,可以提供足够远的预判距离(通常1m左右,光电赛题组前瞻通常为20~30cm)。实际上,通过“超频”和提高代码效率,并选择合适的图像处理算法,使用比赛规定的单片机完全可以对低线数黑白摄像头的视频信号进行采样和处理,有效识别出导引线的位置和相关几何信息[4,5]。

摄像头赛题组获取的赛道信息丰富,但电路设计和软件处理较复杂,且信息更新速度较慢

1.3  本文的概况及结构安排

本毕业设计共七章,以光电组智能车为实际研究对象,以随动系统为理论研究对象,以前馈控制技术、PID控制技术以及分程控制技术等作为研究工具,对智能车的控制方法进行了研究。本文的主要内容如下:

第1章阐述了本文的研究背景及研究意义,与智能车循迹控制相关的主要控制方法及所要解决的问题,给出本文的研究内容。同时介绍了智能车的国外竞赛进展,以及国内智能车竞赛的情况,指明研究环境。

第2章为智能车系统方案的设计,主要包括智能车系统模板设计的基本要求、循迹方案选择和车模参数;

第3章为为智能车的硬件系统设计,介绍了电源管理模块、传感器分布模块、转向舵机控制模块和直流电机驱动模块等;

第4章研究智能车模型的机械结构调整,并介绍了本设计中智能车模型在机械方面的改造;

第5章为智能车软件系统设计,包括小车的开发环境,软件设计的整体流程,各个模块初始化,以及控制策略的实现等;

第6章为智能车系统调试的总结,归纳出设计中发现的光电智能车自身的问题与不足,对后续的研究进行了展望。

第7章为结束语并致谢。

2  智能车方案设计2.1  智能车设计的基本要求

比赛跑道表面为白色,中心用连续黑线作为引导线,黑线宽2.5cm。比赛规则先顶了赛道的宽度和拐弯最小半径等参数,赛道具体形状在比赛当天现场公布。车模自主识别引导线并控制模型车沿着赛道运行。在保证模型车运行稳定既不冲出跑道的前提下,跑完一圈的时间越小,成绩越好。在严格遵守规则中对于电路限制条件,保证智能车可靠运行的前提下,电路设计尽量简洁紧凑,以减轻系统负载,提高智能车的灵活性,同上应坚持充分发挥创新原则,以结构简单功能完美为出发点,并以稳定性为首要前提,实现智能车快速运行。

2.2  智能车的双排传感器循迹策略方案设计

本设计以循迹策略为主要研究对象,以采用双排传感器的智能车为例,辅以做了优化的直线、大弯、S弯等不同道路情况的循迹策略。经实验证明,此策略紧密结合双排红外的特点,发挥出了双排的优势,使智能车实现了以稳定为先,并追求极限速度的要求,适应能力强,能在各种赛道上均有出色发挥。

2.2.1 双排传感器的优势

目前,大多数光电智能车采用单排传感器的道路检测方式,这种方式获得的道路信息少,对智能车的状态和道路的状况都不能很好地区别,造成控制上的麻烦。为了弥补不足,形成了大功率大前瞻的单排传感器的道路检测方式,这种方式检测的距离更远,能够更早地判断出道路的走向,在一定程度上弥补了检测精度低的缺点,但也无法有效地区分智能车状态与道路状况[6]。

比赛的车模可选用摄像头或传感器的方式进行道路信息检测,我们的车模采用的是双排红外的循迹方式,采用大前瞻双排传感器可以得到更多的赛道信息,更早地采取策略处理,形成更好的行车轨迹。是采用复杂的摄像头方案的一种替代方式。

可以在直道中实现稳定控制,加速顺畅的能力;在S弯中以小曲线的方式前进,减少行进路线和舵机调整次数。在大弯中实现提前转弯,切内弯的效果。尤其是在转弯方面,通过前后排共同对弯道的预测,达到延伸物理识别距离的能力,从而做出提前的动作,减少由于检测距离近而带来的负面影响,达到上述效果。

2.2.2 传感器阵列布局

图2.1中仅以接受管示意传感器位置。


图 2.1传感器阵列布局

布局方式说明:
  前排传感器伸出距离较远,小车中心偏离黑线后,会在前排传感器上产生较大偏移量。
  后排传感器伸出距离较近,小车中心偏离黑线后,会在后排传感器上产生较小偏移量。
  利用前后排传感器对小车偏移时不同的敏感度对小车进行控制。
  为了使前后排体现出更明确的分工和采集到更远处的信息,我们把前排传感器倾斜约50°角,使前排的前瞻距离更大(28cm),更能体现出前排的优势和特点。

2.2.3 直道识别方式控制策略

1 直道识别方式

(1)采用此种方式布局双排红外,对于直道的判别方法可有以下5种物理方式,每种方式应用的时机列在表后。

第一种直道情况(图2.2)


图2.2第一种直道情况

在左转大弯后,出弯时最可能出现的前后排传感器检测到黑线时的组合情况。适用于左转 90°弯、180°弯。提前得到出弯信息,舵机向左转动较小角度,并在此时采取加速动作,起到弥补前瞻不足的作用。此情况在赛道的s弯出现时,不满足直道的第二种识别方式,故不会加速。

第二种直道情况(图2.3)


图2.3第二种直道情况

此情况是对第一种情况的再确认,左转大弯并经过第一种情况后,再经历此种情况,可确认无误前方为直道,继续提升小车的加速能力。控制程序由弯道程序切换到直线稳定程序。

第三种直道情况 (图2.4)


图2.4第三种直道情况

此时采取直线稳定控制。由于前两种情况已经明确识别为直道,此种情况只是增加直道识别的成功率。

第四种直道情况(图2.5)

  

图2.5第四种直道情况

与第二种情况类似,对第五种情况的再确认,右转转大弯并经过第五种情况后,再经历此种情况,可确认无误前方为直道,继续提升小车的加速能力。控制程序由弯道程序切换到直线稳定程序。

第五种直道情况(图2.6)

图2.6第五种直道情况

在右转大弯后,出弯时最可能出现的前后排传感器检测到黑线时的组合情况。适用于右转转 90°弯、180°弯。提前得到出弯信息,舵机向右转动较小角度,并在此时采取加速动作,起到弥补前瞻不足的作用。在赛道的s弯出现时,不满足直道的第二种识别方式,故不会加速。
    (2)直道识别,程序辅助确认

进入弯道后,随着小车的行进,会发生振荡,致使出弯时不一定满足上述5种情况。为了提高直道的识别成功率,增加第二种直道判别方法。两者同时起作用,满足第一种后经过最多15ms确认是直道。

程序是循环执行,我们的程序执行频率是2KHz。采用定时中断(15ms)的方式,对前排中间3个传感器(编号为3、4、5)使用3个计数器分别计数,每次执行程序若是其中一个检测到黑线,相对应的计数器加1。经过计算,15ms内所能计数的最大值为31。我们设定计数的最大值,若在15ms内达到所要求的计数值,就认为是直道,切换直道程序并将计数器清零;若15ms内没有达到所要求的计数值,计数器清零,重新计数。例如小车为2m/s的速度,小车行进3cm。我们只要判断2~2.5cm内为直道即可。所以设最大计数值为20~25即认为是直道,跳出弯道程序。

当然也可以采用更严格的方法来判断,只需调整定时中断的时间和计数值即可。此条件在进入直道后总能满足,所以作为第一种直道判别方式的补充,保证直道的稳定可靠识别[7]。

2.2.4 直线稳定控制策略

小车出弯后,由于舵机的反应不灵敏,智能车会发生振荡,随后才能达到稳定,为了尽早减小振荡,采用如下方式控制小车出弯后的动作:

在弯道策略中设置标志位,进入直线程序后,识别标志位,对控制舵机转向的公式采取修正设置。公式为:q=K1q1+K2q2;其中q为最终送给舵机的控制量,q1为前排光电传感器的返回转角值,q2为后排红外返回转角值。K1、K2分别为前后排传感器的加权比例值。通常情况下K1、K2为定值1,需要时则改变赋值。

当小车从弯道进入直道并成功识别出直道后,减小K1的值,由于后排传感器距离小车的前轮(转向轮)很近,小车中心偏离黑线时,不会在后排传感器横向位置产生很大位移(相对于前排传感器),故小车在直线上舵机调整的次数就会明显减少,直线的稳定性会好。同时,根据前后排不同传感器的组合,给出不同的转角策略(在程序中以列表的方式体现),近一步提高直线的稳定控制能力。

2.2.5 弯道控制策略

PID算法在上述直道控制中效果很好,控制简单,在起跑加速时可设置前馈控制器,先全力加速到一个速度值,在加上PID调节,形成一个类似于分段的控制,即可较快地达到规定的速度。

但实验证明,双排光电控制时单纯用PID算法,智能车在大S弯上会出现抖动,降低车速,造成智能车在通过此类弯道时间的大大延长。为此,想出了5种解决方法:

(1)延长控制周期:这样,智能车舵机的反映灵敏度降低,减少了在大S弯上会出现抖动的次数,缺点是延长控制周期,造成软件对车体控制延时的加长,最明显的劣势在于长直道加速后转大弯反应不及时,冲出赛道,为了不冲出赛道,只有降低直道最大速度,间接影响了智能车的速度性。

(2)改变PID参数:改变PID参数可以减小舵机在转弯时控制的PWM信号,即让车体转向变小,缩小了在大S弯上出现抖动的幅度,缺点是改变PID参数在缩小了在大S弯上出现抖动的幅度的同时,也缩小了智能车在于长直道加速后转大弯时的转向幅度,使车体在相同速度下,不能转过以往可转过的大弯,最后导致滑出赛道或直接冲出赛道,也影响了智能车的比赛性能。

(3)做赛道标志位,对小S弯,大S弯,90°弯,180°弯,环弯进行数据采集,分类设成标志位,此后智能车运行时不断记录最近采集的5组数据,分析其符合那种弯道,进而加以控制。实验后知其缺点为标志位识别易出错误,可行性不高,这主要是因为双排光电传感器的前瞻不足(仅28cm),采集到的赛道信息也不像摄像头那样多,可以作出准确的识别。

(4)利用速度传感器返回的实际速度值,做标志位,变舵机PID参数对弯道进行分段控制:在软件中设一系列速度值,按智能车运行速度予以分段,在低速区(大S弯的情况多为低速),控制量给中等值,因车速不高,较小的控制量在控制周期相对多时可很好的调节车体,稳定过弯;在中速区(主要针对小S弯)。控制量给小,可在一定程度上实现S弯直线跑,节省时间,在大S弯之所以不这样跑,是由于双排光电的前瞻小和采集信息不足的缘故;在高速区(通常只在长直道车体加速后方速度值可达到此区域),控制量给大,防止高速时,转90°弯,180°弯不及时而冲出跑道。实验中,效果很好,但后发现当赛道结构(直道,各类弯道的不同组合)未考虑周全时,在两速度区衔接处会出现失控,例如直道直接接大S弯的赛道处,车体进入大S弯,而其速度尚未减下来,即在高速区,控制量给大,不能完成在大S弯上的正确控制,车体摆动2-3次后方可正常行进(此时是由于车速随摆动降低,符合低速区标准,控制量给的正确)。

(5)在(4)的基础上做类似(3)的标志位处理后以实验法确定给定参数值(主要是不同情况下改变舵机的控制量q大小与Kp值大小):在设计期间,曾试着在软件对速度区间做细分,由原先的低、中、高三段改进为5段、7段、9段,进行控制,根据实验结果,随着细分段数的增加,可以减少减弱区间衔接处的车体摆动,但不能完全解决问题,而且算法执行时间受到一定影响。继而做标志位,并以实验法确定给定参数值后,智能车可充分发挥其双排可识别前方赛道的优势,识别后再进行速度分段控制,使车体在弯道上的控制得到了保证,控制效果比较满意。

2.2.6 实测结果和现象分析

下图为我们使用上述算法前后小车行进的实际轨迹。

图2.7 两种算法小车行进的实际轨迹对比

图2.7 是使用实验法确定给定参数值前后小车在赛道上的实际轨迹,其中的红线是赛车行驶轨迹

注:这张图的绘制方法是这样的,先通过串口把误差值和速度通过无线串口发到上位机,然后通过在计算机上描点画出小车实际的轨迹,有偏差但是与实际情况非常近似。

可以非常明显的看到使用实验法确定给定参数值之后,小车虽然也有偏出赛道的情况存在,但是比用 Kp 参数恒定的算法情况就好多了。这主要是因为在弯道上 Kp 参数变大的缘故。Kp 变大时,一旦检测到偏差,系统就能更快的恢复到平衡位置。从表中可以看到小车偏差的方差实际减小了,因而小车走的实际距离也减小了,自然跑完赛道的时间也减小了。

2.3 车模参数

此次比赛选用的赛车车模采用1/10 的仿真车模。赛车机械结构只使用竞赛提供车模的底盘部分及转向和驱动部分。控制采用前轮转向,后轮驱动方案。具体车模数据如下:

表2.1 改造前车模基本尺寸参数 基本参数 尺寸

轴距

197mm

前轮距

124mm

后轮距

136mm

车轮直径

5mm

车长

316mm

车宽

172mm

传动比

18/76


如图2.8所示:其中虚线部分为轮胎,A点为右轮的转动轴点,同理,对

应左侧相应位置。

图2.8 模型车尺寸

改造后车模主要参数如下:

表2.2 改造后车模基本尺寸参数 基本参数 尺寸

车模长(cm)

39

车模宽(cm)

20

车模高(cm)

20

探出距离(cm)

15

传感器个数

共15个(14个用于道路信息采集,1个用于速度检测)

车模重量(kg)

1.6

增加电机个数

0

赛道检测频率(次/S)

20






表2.3 车模部件基本作用及软件端口使用

车模部件

作用

软件端口使用

驱动电机

速度控制

PWM5,6

舵机

转向控制

PWM01

红外管传感器

道路信息采集

ATD0~13

测速传感器

检测光电脉冲

PT2


3  硬件设计

硬件电路设计是自动控制系统的基础。本次毕业设计我们自行设计制作了单片机的硬件电路,同时集成了外围接口驱动电路、调试电路等,形成功能完备,体积小的控制电路。下面就硬件设计各个模块做详细介绍。

3.1 智能车整体结构

该系统采用飞思卡尔MC9S12DG128B单片机为检测和控制核心;以红外传感器为路径检测传感器,自动检测赛道上的黑线;并根据采集到的黑线信息,通过软件对小车进行转向和速度的控制,再通过速度反馈和小车的位置,实时监控调节智能车的行进状态,整体结构框图如下:

图3.1 硬件结构框图

本系统硬件结构主要由S12控制核心、电源管理模块,路径识别模块、车速检测模块、显示模块、转向舵机控制模块和直流电机驱动模块组成。

3.2 mc9sdg128b的最小系统及接口设计

单片机的最小系统及功能如下

①时钟电路给单片机提供一个外接的16MHz的石英晶振;

②串口的RS-232驱动电路可实现TTL电平RS-232电平的转换;

③BDM口让用户可以通过BDM调试工具向单片机下载和调试程序;

④供电电路主要是由单片机提供+5V电源;

⑤复位电路是通过一个复位按键给单片机一个复位信号,调试过程中非常有用;

⑥调式按键和单片机的PORTA口相连,调试小灯和PORTB口相连,供程序调试使用[8]。

图3.2 单片机接口框图

3.3 电源管理及分布

电源模块为系统其他各个模块提供所需要的电源。设计中除了需要考虑电压范围和电流容量等基本参数之外,还有在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化。

全部硬件电路的电源由7.2V 、2A/h的可充电你个蓄电池提供。由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。

5V电压。主要为单片机、红外管以及部分接口电路提供电源,电压要求稳定、噪声小,电流容量大于500mA。

6V电压。主要是为舵机提供工作电压。实际工作室,舵机所需要的工作电流一般在几十毫安左右,电压无需十分稳定。

7.2V电压。这部分直接取自电池两端电压,主要为后轮电机驱动模块提供电源。

图3.3 电源管理示意图

3.4  光电传感器布局3.4.1   赛道识别传感器模块

相对于单排的光电管,双排的可以获取道路的中心位置,同时还可以得到方向信息,本系统采用双排分布来进行道路信息采集。

红外管的供电电压为5V,由LM2940供电,供电电路如下图:

图3.4 赛道识别传感器模块供电电路

由于红外发射管是基于漫反射原理的,其发射的红外光可能影响到安装在附近的红外接收管。消除这种干扰可以采取以下几种措施:

选择发射与接收方向性好的红外传感器;

选择发射与接收一体化的红外传感器,它的外壳可以抑制相邻干扰;

在红外接收管上安装黑色套管,使其只接收前方一定角度内的红外光线,这种减小互扰动的措施效果较好。

使相邻的红外发射/接收管交替工作。这种方法不仅减小了相邻红外传感器之间的干扰,同时也降低了整体传感器的功耗。

本系统采用双排结构,上面一排采用发射与接收方向性好的红外传感器,并且在接收管安装热缩管,减小相互之间的干扰。对下面一排的红外传感器采用TCRT5000即发射与接收一体化的红外传感器。实验得到较好的效果。

3.4.2   测速模块

本智能车在调试最后阶段将光电编码盘改装至左后轮,采用大直径编码盘,目的是提高测速精度,便于对车模速度的精确控制。

小车后轮旋转带动光码盘旋转,当红外发射管发射出的红外光遇到法兰盘的齿的时候,红外光被遮挡,至红外接收管接收不到发射管发射的红外光,光电开关处于断开状态;而当红外光遇到间隙的时候,接收管便可接受到红外光线,红外光线处于导通状态。这样,红外接受管输出间隔的高低电平。将此信号再通过CD40106进行整形,送入单片机中,便可实现对车速的检测。

测速盘安装如图 3.5,选用的对射管型号是IRT8105,发射端需要串接120Ω的限流电阻,接收端需要串联10KΩ下拉电阻,在试验中有时因为转速过快出现检测不出脉冲信号的情况,通过增大发射端的限流电阻可以解决这种问题。

图 3.5 测速模块实物安装图

3.5 电机驱动模块

模型车在启动过程中往往会产生很大的冲击电流,一方面会对其他电路产生电磁干扰;另一方面由于电池内阻造成电池两端的电压下降,甚至会低于稳压电路所需要的最低电压值,产生单片机复位现象。为了客服启动冲击电流的影响可以再电源中增加电容值较大的电解电容,在启动时驱动电路输出电压有一个渐变的过程,使得电机启动速度略为降低从而减小启动冲击电流的幅度。

电机型号为RS-380,工作电压7.2V  空载电流0.5A,转速16200r/min,在工作电流为3.3A,转速为14060r/min时,工作效率最大。

图3.6 智能车电机实物图

MOSFET管的优点是开关速度快, 通路电阻低和电压门信号低, 适合于大电流和低电压运行。当加上一个足够的门信号电压时, 功率MOSFET的通路电阻小于常规二极管;而在没有门信号电压的情况下,它具有常规二极管的反向特性电阻R1~R4用于控制MOS 门的升降时间, 也有利于避免门电压的振荡, 门电压的振荡通常是与门电容处的连接线的平行电感所引起的。R27、R31、R32、R33 的值通常为10~100Ω。电容C50 用于存储能量并对通过电桥的电压进行滤波。在电压上升和下降期间, 为了保证系统的可靠性, 可在两个低端MOS 管的门极各接一个下拉电阻以确保电桥保持关断。

电机驱动模块由信号输入电路、TD340 和H桥电路组成。其中 TD340 用于构成PWM发生器, 功率放大电路是由4 个MOSFET管组成的H桥电路。

图3.7 电机驱动模块电路图

3.6 舵机驱动模块

舵机本身是一个位置随动系统,由舵盘、减速齿轮组、位置反馈电位计、直流电机和控制电路组成。通过内部的位置反馈,使它的舵盘输出转角正比于给定的控制信号,因此对于它的控制可以使用开环控制。在负载力矩小于其最大输出力矩的情况下,它的输出转角正比于给定的脉冲宽度。舵机接口一般采用三线连接方法,黑线为地线,红线为电源线,另外一根为控制信号线。控制信号是周期在20ms左右的脉冲信号,脉冲信号的宽度决定舵机输出舵盘的角度。舵机供电电压为6V,也可以由电池电压直接供电。经实验发现由电池直接供电舵机响应速度较快,本系统采用电池直接供电(7.2V-8.35V均可)。

图3.8 智能车舵机实物图

本设计所采用的舵机型号:Futaba S3010。

图3.9 舵机转角与PWM输出占空比关系图

3.7 拨码开关模块

由于比赛时不知道赛道状况,如果赛道状况过于复杂,不利于小车高速运行的话,就要适当降低小车的速度或者改变小车的一些调试参数,这个时候就需要利用拨码开关,给小车设定几个运行状态,或者开关在软件预置的一些功能,以根据实际情况让小车走出最理想的状态。

图3.10 拨码开关模块电路图

在调试过程中发现,小车不同行驶速度下,要使小车沿着既定的赛道前进,舵机的PD参数需要进行一定的调整,我们测知,随着小车速度的提高,KP值不断增大,会提高舵机的响应速度,从而让小车在最短的时间内调整车身,让小车沿着黑线行驶;同时,为了减小系统的超调量,加入KD系数,在动态响应不变的前提下,使小车尽可能的不冲出赛道。

4  机械结构调整

模型车的机械结构是整个智能车系统的基础。对模型车的机械调整完善是提高智能车速度的一个关键因素。鉴于这个原因,我们小组在车辆机械方面的改进做了很多的工作,从传感器安装布置、转向机构调节、重心位置的调整、后轮差速定位到制动机构的设计都进行了大胆的尝试和改进。这些工作大大提高了车的可靠性和适应性,为后来调试模型车打下了基础。

4.1 一些重要参数对赛车的影响

(1)路径识别传感器的固定

本设计路径识别传感器采用红外反射式传感器,双排一字型排列,前排7传感器,后排5传感器,制作好的路径识别传感器PCB板为长度为25cm的长方形板,简单轻便。在安装此PCB板时,考虑到如果此电路板安装不稳定,在模型车运行的过程中,电路板会发生上下振动,或在转弯时发生左右晃动,会大大降低路径识别的准确性。所以,我们购买到硬度较好的铝合金,采用其带有拐角的部分做支架,并经过反复试验,在使劲摇晃小车的情况下,路径识别电路板也不会发生松动及位置上的改变,防震性满足要求。

路径识别电路板安装在模型车的正前方,考虑到安装位置与方法决定检测道路范围,我们通过试验,得到红外传感器相对地面的高度为7cm、相对地面的角度大约为50°的时候,其检测前瞻距离可以满足模型车的控制要求,并且在此情况下,得到红外传感器检测到黑线与白线时的电压值区分明显,有利于小车的软件控制。同时,在满足大赛要求,并且模型车的重心前移不影响小车运行的整体效果的前提下,我们增大小车的探出距离到28cm,大大加大了检测前瞻距离。

(2)舵机力臂调整

舵机转动一定角度有时间延时,时间延时正比于旋转过的角度,反比于舵机的响应速度。通过控制策略分析可知,舵机的响应速度直接影响模型车通过转弯通道时的最高速度,提高舵机的响应速度是提高模型车平均速度的一个关键。   

提高舵机响应速度有二个方法,一是提高舵机的工作电压;二是在机械上进行调整,根据杠杆原理,我们采用立式固定,将舵机的输出动力臂适当加长,将转向传动杆连接在加长的输出盘的末端。这样就可以在舵机输出较小的转角下,取得最大的前轮转角,提高了舵机的响应速度,即加大了小车的整体速度。

(3)重心的控制

在模型车的控制方面,如果重心靠近后轴,对模型车的动力性能有益,后轮抓地力增加,增大转向灵敏度,但会减少转向;如果重心靠近前轴,则对模型车的制动性和操纵稳定性有益,会增加转向,但会降低转向灵敏度,并且降低了后轮的抓地力。考虑到模型车频繁转向,动力性能并不高,所以我们在不增加车重的前提下,通过电路板设计安装来使模型车的重心适当前移。

(4)后轮的调整

后轮是模型车的驱动轮,对车模性能起着重要作用。我们对后轮的差速及轮距进行了适当的调整。通过试验发现:差速较紧时,模型车直道不易摆动,行驶平稳,但转弯不够灵活;差速较松时,模型车转弯灵活,但直道易摆动。我们通过安装零件是后轮距比未安装时加大了4mm,采用大后轮距,减小了行驶中的侧滑。

(5)传感器间隔

各个传感器的布局间隔对智能车行车是有一定的影响的。根据比赛的赛道规则,中间黑色导引线的宽度为25mm,因此如果要求传感器问不出现同时感应现象(即每次采集只出现一 个传感器值为1),那么传感器间隔就必须大于25mm。如果将间隔设计成小于25mm,从而产生更多的情况,有利于车与赛道偏移距离的判断。此外,如果间隔过大,还会出现另一种情况,即在间隔之问出现空白。对于防飞车能力,我们可以用最大限制速度来衡量。20mm间隔的最大限制速度存3m/s,40mm间隔的最大限制速度则为3.3m/s。经过分析后,我们认为这是由T传感器间隔人造成车的横向控制范围较大(40mm的车控制在±13mm内,而20mm的则在±7mm内),因此它不易造成迷失。

4.2 车模底盘参数调整

转向轮定位参数对于汽车而言,要保持车辆直线行驶的稳定性,使之转弯自动回正、转向轻便,必须确定车轮定位参数,包括主销后倾、主销内倾、前轮外倾和前轮前束。

(1)主销后倾角

主销后倾角在车轮偏转后形成一回正力矩,阻碍车轮偏转。主销后倾角越大,车速愈高,车轮偏转后自动回正力越强,但回正力矩过大,将会引起前轮回正过猛,加速前轮摆振,并使转向沉重。通常后倾角为1°-3°

图4.1 主销后倾角示意图

(2)主销内倾角

在汽车前后方向上,主销向内倾斜一个角度,主销轴线与垂线间的夹角称为主销内倾角。当汽车转向轮在外力作用下发生偏转时,由于主销内倾, 则车轮连同整个汽车的前部将被抬起一定高度,在外力消失后,车轮就会在重力作用下力图恢复到原来的中间位置。通常主销内倾角不大于8°

图4.2 主销内倾角示意图

(3)前轮外倾角

在汽车的横向平面内,前轮中心平面向外倾斜一个角度,称为前轮外倾角。前轮外倾角一方面可以使车轮接近垂直路面滚动而滑动减小转向阻力,使汽车转向轻便;另一方面减少了轴承及其锁紧螺母的载荷,增加了使用寿命,提高了安全性。一般前轮外倾角为1°左右,但对于有高速、急转向要求的车辆,前轮外倾角可减小甚至为负值。

(4)前轮前束

俯视车轮,汽车的两个前轮的旋转平面并不完全平行,而是稍微带一些角度,这种现象称为前轮前束。车轮前束的作用是减轻或消除因前轮外倾角所造成的不良后果,二者相互协调,保证前轮在汽车行驶中滚动而无滑动。前轮前束一般为 0-12mm。而现代汽车的前轮外倾角出现减小甚至为负值的趋势,前轮前束也应相应减小甚至也为负值[9]。

图4.3 前轮外倾角及前轮前束示意图

4.3 重心位置对汽车性能的影响

汽车重心的位置通常用重心距前轴中心线的水平距离和重心距水平路面的高度来表示。可通过实验法、估算法测出重心位置。

(1)对动力性能的影响

汽车正常行驶必须满足驱动-附着条件:即汽车的驱动力必须大于等于坡度阻力、滚动阻力、空气阻力之和而等于汽车驱动轮的附着力。附着力与路面附着系数和驱动轴的轴荷有关,而驱动轴的轴荷取决于重心的水平位置,故重心位置必须保证驱动轮能够提供足够的附着力。仅从此方面考虑,重心越靠近驱动轴越好。

(2)对制动性能的影响

汽车制动性要求制动减速度大、制动距离短,有良好的制动方向稳定性,即不易发生前轮丧失转向、后轮侧滑和跑偏现象。制动方向的稳定性与前后轮的抱死次序有关,而抱死次序则与重心位置有关,若重心位置保证汽车的同步附着系数(β为前制动力占整车制动器制动力比例,b为重心到后轴水平距离)等于汽车常用路面附着系数,那制动稳定性即较好;若重心前移,b增大,易发生后轴侧滑,对高速汽车危险性大;若重心后移,b减小,前轮易丧失转向能力。

(3)对通过性的影响

汽车在较陡侧坡行驶或高速急转弯行驶时,会发生侧向倾覆,为避免这种危险,重心应在保证最小离地间隙的前提下尽量降低。

综合上面分析,在加装诸多电路板后应尽可能保证模型车的重心垂直位置尽量的低,水平位置应在车中线上靠近后轴。

4.4 汽车侧滑的处理

为保证汽车转向车轮无横向滑移的直线滚动,要求车轮外倾角和车轮前束有适当配合,当车轮前束值与车轮外倾角匹配不当时,车轮就可能在直线行驶过程中不作纯滚动,产生侧向滑移现象。这种滑移现象过于严重时,将破坏车轮的附着条件,使汽车丧失定向行驶能力。侧滑分为以下几种情况。定向侧滑,随机侧滑,转向侧滑,制动侧滑。

汽车在制动过程中若前轮先抱死拖滑,则将可能发生侧滑。可以采取一些补偿措施减小侧滑。对于定向侧滑,用前轮前束产生的Q类侧滑来补偿外倾产生的此类侧滑是基本手段。Q类侧滑的性质为:侧滑大小等于前束角大小;侧滑方向与前束角方向相反,与车辆行驶方向有关;与路面质量无关。对于随机侧滑,主要是从改变独立悬架结构入手,如本车模的双横臂式独立悬架车桥车轮的随机侧滑可用四连杆机构综合理论改变上下横臂的长度,使模型行驶过程中轮距变化不大,从而减小随机侧滑。对于转向侧滑,主要靠选择合适的主销角度,合理搭配主销内倾与后倾角,尽可能使转向内轮产生外倾或增加外倾,使转向外轮产生内倾或减小外倾[10]。

4.5 底盘离地间隙

在独立悬架下摆臂与底板之间可以通过增减垫片来调整底盘前半部分的离地间隙,垫片有1mm和2mm两种规格。一片垫片不加,车前部离地间隙为9mm,故离地间隙的调整范围为9mm-12mm。从已有的经验来看,在加装了传感器之后,此距离过小,会降低模型车爬坡时的通过度;过大,则会影响传感器的灵敏度。

4.6 齿轮传动间距调整

车模后轮采用RS-380SH-4045 电机驱动,由竞赛主办方提供。电机轴与后轮轴之间的传动比为 9:38(电机轴齿轮齿数为18,后轮轴传动轮齿数为76)齿轮传动机构对车模的驱动能力有很大的影响。齿轮传动部分安装位置的不恰当,会大大增加电机驱动后轮的负载,从而影响到最终成绩。调整的原则是:两传动齿轮轴保持平行, 齿轮间的配合间隙要合适,过松容易打坏齿轮,过紧又会增加传动阻力,白白浪费动力;传动部分要轻松、顺畅,容易转动,不能有卡住或迟滞现象.

判断齿轮传动是否调整好的一个依据是,听一下电机带动后轮空转时的声音。声音刺耳响亮,说明齿轮间的配合间隙过大,传动中有撞齿现象;声音闷而且有迟滞,则说明齿轮间的配合间隙过小,或者两齿轮轴不平行,电机负载加大。调整好的齿轮传动噪音小,并且不会有碰撞类的杂音。

4.7 后轮差速机构调整

差速机构的作用是在车模转弯的时候,降低后轮与地面之间的滑动;并且还可以保证在轮胎抱死的情况下不会损害到电机。

当车辆在正常的过弯行进中 (假设:无转向不足亦无转向过度),此时4 个轮子的转速(轮速)皆不相同,依序为:外侧前轮>外侧后轮>内侧前轮>内侧后轮。此次所使用车模配备的是后轮差速机构。差速器的特性是:阻力越大的一侧,驱动齿轮的转速越低;而阻力越小的一侧,驱动齿轮的转速越高‧以此次使用的后轮差速器为例,在过弯时,因外侧前轮轮胎所遇的阻力较小,轮速便较高;而内侧前轮轮胎所遇的阻力较大,轮速便较低。

差速器的调整中要注意滚珠轮盘间的间隙,过松过紧都会使差速器性能降低,转弯时阻力小的车轮会打滑,从而影响车模的过弯性能。好的差速机构,在电机不转的情况下,右轮向前转过的角度与左轮向后转过的角度之间误差很小,不会有迟滞或者过转动情况发生。

5  智能车软件开发环境及软件设计5.1智能车软件开发环境5.1.1  软件调试软件Code Warrior

在制作过程中,运行的编译环境为 CodeWarrior 4.7 。CodeWarrior4.7是Metrowerks公司一套比较著名的集成开发环境,具有直观,易用的优点。CodeWarrior4.7包括项目管理,代码生成,语法敏感编辑器等,具有快速下载,单步调控的特点,同时可以融合C语言和汇编语言的混合编程。CodeWarrior4.7具有在线调试,单步运行程序的功能,同时能够观察到主程序中定义的所有的变量的值。这一功能在进行程序错误检查和改正时起到了至关重要的作用。下图即为CodeWarrior4.7的编程界面:

图5.1 Code Warrior4.7编程界面

如图5.1所示,利用BDM和CodeWarrior4.7的调试界面,可以进行一系列的调试工作,如黑白线的电压值,路径采集状态,各个寄存器值,程序调试的变量值,能够很好的传感器的状态,小车舵机和电机的当前值等,给调试提供了极大的方便。

图5.2 调试界面

图5.3 调试的变量

5.1.2  无线调试模块

在系统调试初期,虽然利用CodeWarrior4.7的调试界面,可以观察小车的运行状态,但是我们发现,CodeWarrior4.7的调试环境只能观察一些当前值,不能实时的调试观察,例如小车的速度值,所以利用了串口线把小车的一些状态值发送到PC机上进行观察,但是由于串口线的距离有限,最后使用了无线串口调试,这样的话,即使在小车的行驶过程中,也可以观察小车的运行状态。

5.2软件设计

图5.4  主程序流程图

5.2.1  初始化模块

(1)  时钟初始化

单片机的晶振是16MHz,MC9S12DG128在时钟初始化后可以通过锁相环将系统时钟系统时钟提高到48MHz,这里就用到了一些寄存器中的某些位,倍频公式如下:

      

其中,OSCCLK_VALUE——系统的外部晶振;

REFDV_VALUE——系统时钟分频系数,在初始化中,它的值为3;

SYNR_VALUE——倍频系数,它的值为3。

而SYNR=SYNR_VALUE,REFDV=REFDV_VALUE,SYNR、REFDV就是寄存器中的对应位。

void CLK_init(void){                                                                      //锁相环24M

  SYNR=2;

  REFDV=1;                                                                      //PLL=2*OSC*(SYNR+1)/(REFDV+1)

  while(!(CRGFLG & 0x08)){}    //等待锁相环稳定

  CLKSEL=CLKSEL_PLLSEL_MASK;              //设置锁相环为内部时钟

}[11]

(2)  串口初始化

可以看到,不论8位、16位还是32位单片机的最小系统都是通过异步串行口与人沟通的。使用串行通信接口SCI(Serial Communication Interface)通信是计算机与人对话最传统、最基本的方法,异步通信接口也成为通用异步接受器/发送器UART(Universal Asynchronous Receiver/Tansmitter)。为了便于调试,本系统利用串口通信接口SCI实现数据的传输。串口部分程序主要是初始化各寄存器,其中包括设置波特率、数据格式、接受发送功能使能、设置接受模式等。

串口初始化函数:SCI_Init(uchar BUS_CLK,unsigned long BR),它有两个输入变量,其中BUS_CLK是系统的时钟频率,BR为波特率。通过此函数可直接设置串口的时钟频率、波特率。

(3)  AD初始化

AD的初始化主要是设置一些相关的寄存器位,以ATD0为例,相应的初始化如下。ATD0CTL2寄存器的ADPU置1,因为ADPU是AD的电源开关,置1打开电源;把AFFC置1,这样可使ADC上电,快速清零, 无等待模式, 禁止外部触发, 禁止中断;ATD0CTL3的S1C置1,表示每个序列1次转换, No FIFO, Freeze模式下继续转换;ATD0CTL4的SRES8置1,这样可实现8位精度,因为ATDClock=[BusClock*0.5]/[PRS+1],其中BusClock =24MHz,PRS=1, 所以分频系数为4,即AD时钟为6MHz;最后执行ATD0DIEN=0x00,实现禁止数字输入。

void AD_Init(void)              //AD初始化

{    ATD0CTL2  = 0xC0 ;    //控制寄存器2:上电,标志位快速清零,关中断                                                                                                                                                                             ATD0CTL3  = 0x7C;     //控制寄存器3:转换序列长度为8,FIFO模式

              ATD0CTL4  = 0x83;     //控制寄存器4:8位转换精度,8分频

              ATD0CTL5  = 0xB0;     //控制寄存器5:从0通道开始的多道连续无符号转换,转换结果右对齐方式

              ATD0DIEN=0x00;        // 禁止数字输入缓冲

     ATD1CTL2  = 0xC0 ;     //控制寄存器2:上电,标志位快速清零,关中断  ;                                                                                                                                                                                                                                        ATD1CTL3  = 0x7C;    //控制寄存器3:转换序列长度为8,FIFO模式

              ATD1CTL4  = 0x83;     //控制寄存器4:8位转换精度,8分频

              ATD1CTL5  = 0xB0;     //控制寄存器5:从0通道开始的多道连续无符号转换,转换结果右对齐方式

     ATD1DIEN=0x00;       //禁止数字输出[12]

(4)  PWM初始化

PWM(Pulse Width Modulation)即脉宽调制,脉宽调制波是一种可用程序来控制波形占空比、周期、相位的波形。它在电动机驱动、D/A变换等场合有着广泛的应用。

对于控制电机的PWM信号的频率应小于10KHZ              。

还有一个PWM信号用于驱动路径识别传感器,本系统设计了14对光电传感器用于路径识别,同时,为了提高检测前瞻距离,需要加大红外发射功率使得返回的红外线的强度提高,来抑制外界环境光线的干扰。这样,不仅使得电池电能的消耗量增加,同时也会缩短红外发射管的寿命,甚至会烧毁红外发射管。为了解决这个问题,本设计采用了脉冲发射/接收的方法。具体来说,由于红外接收管响应速度快,而道路检测周期一般为十几毫秒,相比之下,红外接收管对于道路反射光的响应时间以及单片机通过A/D端口读取该信号的十几都很短,一般在几十微妙。因此,在一个检测周期内大部分时间,红外发射管不需要工作,只要在检测瞬间发射红外线即可。用PWM信号周期信号驱动大功率MOSFET管,这样红外发射管工作在周期窄脉冲方式下,大大降低了平均工作电流,从而降低了整个发射电路的电量消耗。图5.6是PWM初始化程序流程图

图5.5  PWM初始化流程图

具体程序如下:

void pwminitial(void)  

{

PWMCTL_CON01 = 1; // PWM01 合并 16 bt

PWMPRCLK = 0x20; // A=24M/1=24M,B=24/4=6M

PWMSCLA =12; // SA=A/2/12=1M

PWMSCLB =150; // SB=B/2/150=20KHz

PWMCLK = 0x3E; // PWM0,1-SA;PWM4,5-SA,PWM2,3-SB;

PWMPOL = 0xff; // 位极性=1 Duty=High Time

PWMCAE = 0x00; // 对齐方式-左对齐

PWMPER01 = 20000;

PWMDTY01 =1430 ;

PWMPER4 = 100; //Frequency=SA/300=10KHz

PWMPER5 = 100; //Frequency=SA/300=10KHz

PWMDTY4 = 0;

PWMDTY5 = 0;

PWME = 0x32; // 舵机使能

}

5.2.2  智能车系统的控制策略的设计及实现

为保证小车一直沿着黑色引导线快速行驶,系统主要的控制对象是小车的转向和车速。即应使小车在直道上以最快的速度行驶。在进入弯道的时刻尽快减速,且角度的转向要适合弯道的曲率,确保小车平滑地转弯,并在弯道中保持恒速。从弯道进入直道时,小车的舵机要转向至中间,速度应该立即得到提升,直至以最大的速度行进。为实现上述控制思想,我们采用不同的控制方法来控制不同情况下小车的转角和速度,具体设计思路在前面已讲明。系统控制策略流程图如图5.7所示:

图5.6  系统控制策略图

(1) 道路信息采集策略

道路信息采集我们采用了实时中断采集的方式,中断时间为5ms,即5ms采集一次赛道信息。两排光电传感器的信号线为PORTP口的2、3口。图5.4为一次采集信息的流程图:

图5.7 采集程序流程图

(2) 处理当前数据

前排数据处理流程:

图5.8  前排数据处理流程图

后排数据处理同前排。

(3)  方向控制策略

根据前后两排光电传感器采集回来的道路信息,进行存储、分析和计算。前后两排分别计算此时的黑线的偏差。通过大量实验得出公式

Deviation=4*Dev[0]-Dev[1]   

(Deviation——两排总偏差   Dev[0]——前排偏差   Dev[1]——后排偏差)

通过计算从而得到车子的总偏差。当车子处于不同位置的时候Deviation不同,舵机的PWM模块就给不同的值,使舵机摆动不同的角度。因为我们采用的是双排传感器,所以可以近似计算当前赛道的斜率,使舵机的输入量与输出量保持近似线性的关系,使控制更加准确。

我们对舵机的控制采用分段比例控制。即:

if (Deviation>-100&&Deviation<100)Angled=AngleMid-3*Deviation/10;

else if(Deviation>=100&&Deviation<200)AngleTmp=AngleMid-8*Deviation/10+50;

else if(Deviation<=-100&&Deviation>-200)AngleTmp=AngleMid-8*Deviation/10-50;

else if(Deviation>=200)AngleTmp=AngleMid-10*Deviation/10+90;

else if(Deviation<=-200)AngleTmp=AngleMid-10*Deviation/10-90;                  

控制舵机的原则是:小车处于直道等小偏差赛道时,给舵机的控制量小,使在直道不抖动。小车处于弯道的曲率越大,则将舵机的转角摆的越大。除此之外,小车还会遇到黑色交叉线的特殊情况,对此,本系统将保持原有的小车方向与速度,使小车不受交叉线的干扰。如果小车转过的弯过大,则可能使前排光电管全部偏离黑色轨迹,从而没有一个光电管检测到黑线,这时本系统将会把舵机转至最大角,让小车急转驶回黑线,同时,将速度降至最低,防止小车冲出轨迹。

5.2.3   PID参数的整合

PID(Proportional Integral Differential)控制是比例、积分、微分控制的简称。在自动控制领域中,PID控制是历史最久、实用性最强的基本控制方式。

PID控制器的原理是根据系统的被调量实测值与设定值之间的偏差,利用偏差的比例、积分、微分桑环节的不同组合计算出对广义被控对象的控制量。下图是常规PID控制系统的原理框图。

图5.9 常规PID控制系统原理图

e(t) 代表理想输入与实际输出的误差,这个误差信号被送到控制器,控制器计算出误差信号的积分值和微分值,并将它们与原误差信号进行线性组合,得到输出量u(t) [13.14]。

                          式(5.1)

其中,其中分别称为比例系数、积分系数、微分系数。u 接着被送到了执行机构,这样就获得了新的输出信号Y。这个新的输出信号被再次送

到感应器以发现新的误差信号,这个过程就这样周而复始地进行。

运用PID 控制的关键是调整三个比例系数,即参数整定。PID 控制器参数整定的方法很多,概括起来有两大类:一是理论计算整定法。它主要是依据系统的数学模型,经过理论计算确定控制器参数。二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。

一般来说,增大比例系数能够减小上升时间,并减小稳态误差,但不能消除。

增大积分系数能够消除稳态误差,但会使瞬时响应变差。增大微分系数能够增

强系统的稳定特性,减小超调,并且改善瞬时响应。

以上简要介绍了PID 算法的原理和特性,实际过程中,由于传感器是按一

定间隔周期获取位置信息的,因此必须将连续PID 控制离散化,这样得到的就是数字PID 算法。

       式(5.2)

当智能车在直道行走的时候,可以给最高速度;当智能车在弯道出直道时,速度相对高速;当智能车直道入弯的时候,速度突然减下来;当智能车在弯道时,相对低速。

在计算机控制系统中,数字PID控制算法通常又分为位置式PID和增量式PID。我们采用的是位置式PID。

增量式与位置式算法是有差别的,增量式是计算机的积累功能,又硬件或者被控对象完成。而我们的小车的硬件没有这样的功能,所以我们选用位置式,而且位置式在实践中,也能很好的PID跟随性,符合小车要求的速度调节[15]。

比例系数kp的作用是对偏差作出的影响,使系统向减少偏差的方向变化。

积分系数ki的作用是消除系统静差,但ki增加太大不利于减少超调、减少震荡,使系统不稳定,系统静差的消除反而减慢。

微分系统kd的作用是加快系统的响应。

我们采用了弯道匀速跑的策略,这样可以提高过弯的速度,减少频繁的加速刹车。








结  论

本文主要介绍了基于 Freescale 单片机的智能车设计流程,以及各个主要模块的工作原理和设计思路。回顾整个设计过程,通过前期的信息搜集,到以双排红外光电传感器为赛道检测装置,基于此方案从总体上确立了硬件和软件的基本框架。接下来分别对系统的机械结构调整、硬件设计和软件设计进行了详细的介绍。

在智能车设计过程中,我主要负责机械部分的调整和控制算法的完善,经过这段时间的进一步探索,通过大量的试验作为基础,采用PID算法控制小车行驶,最终智能车运行良好,系统性能稳定。为了使性能更稳定,速度更高,尝试了许多新想法,主要体现在以下几个方面:

首先,使用双排光电传感器使智能车前瞻距离更远,从而提高了智能车直道最高速度。

其次,针对观点传感器单次采集信息少,一些较复杂的标志位很难在软件中构成,易造成识别错误,如识别倒三角(比赛中规定的窄赛道标志位)和起跑线,可能第一次识别了,下次就没识别,对控制的稳定性影响大等一些问题,我们在控制策略上不断尝试,改进,可以在软件上连续采集更多次的数据,做成类似于面阵控制的算法,这样在赛道识别上比摄像头也不逊色,可以做出比较出色的切弯,走捷径跑等复杂的行进动作控制。

再次,光电传感器会受到比赛场地光线明暗的影响,这主要体现在光电管阈值上,造成控制上的不便,我们通过硬件上的改进,如在后排传感器上方加辅助遮光板;在软件上,通过做动态阈值和采样数据归一化,使软件上的编程更简单,实用,算法不一定要很复杂,在实验中发现思路越是简单的算法控制就越直接,出错率也小,稳定。

最后,在硬件方面,电机驱动芯片没有用MC33886,而用了L298N是因为前者在车体正常行进中的发热情况太严重,L298N性能更佳。

在设计过程中,对赛车各个模块进行了测试、改进。但由于受知识水平和时间上的限制,本设计仍有一些不足之处,例如:对轮胎摩擦力的研究,对车体左右平衡性的研究等也需要下一步做更多的工作。

致  谢

在本次智能车设计的准备期间,我们遇到了许多困难。从最开始的开发软件的使用到后来的传感器调试,从电路板设计到系统搭建,一个个问题的解决见证了我们这支队伍的成长。首先要感谢机械系老师王红星的悉心指导,。老师多次询问研究进程,并为我们指点迷津,帮助我们开拓研究思路,精心点拨、热忱鼓励。其严谨的治学态度、渊博的学术知识、诲人不倦的敬业精神以及宽容的待人风范使我们获益颇多。

参考文献

[1] (法)埃里克•德里德马丁. 甩掉方向盘的汽车驾驶. 它们将改变我们的生活:21世纪发明简史.上海科学技术文献出版社. 2007:2~3,5

[2] 拉里•伯恩斯. 交通史上革命性变革!美无人驾驶汽车10年内上路. 中国日报. 2008.1.13: 2

[3] 黄开胜,金华民,蒋荻南. 韩国智能模型车技术方案分析.2006:1~2

[4] 卓晴. 学做智能车-挑战飞思卡尔杯.北京航空航天大学出版社. 2007

[5] 陈泽滨. 第四届飞思卡尔智能车比赛规则. 第四届飞思卡尔智能车比赛官方网站. 2008: 1~2

[6] 周斌,李立国,黄开胜. 智能车光电传感器布局对路径识别的影响研究.电子产品世界.2006 05S

[7]              Xiaozhou Song,Guangsheng Han,Jiji Xu. An Double Row Infrared Sensor Tactic. The World of Electronic Production Biology. 2008, 7

[8] 邵贝贝. 单片机嵌入式应用的在线开发方法. 清华大学出版社. 2006

[9] 陈宋,李立国,黄开胜. 智能模型车底盘浅析.电子产品世界。2006.6

[10] 黄开胜,陈宋. 汽车理论与智能模型车机械结构调整方法.学做智能车-挑战飞思卡尔杯.北京航空航天大学出版社. 2007

[11] 孙同景,陈贵友. Freescale 9S12 十六位单片机原理及嵌入式开发技术. 机械工业出版社. 2008

[12] 王威. HCS12微控制器原理及应用. 北京航空航天大学出版社. 2007

[13] 任彦硕. PID调节器、调节器的参数整定,自动控制系统. 机械工业出版社, 2007:201~217

[14] 任彦硕. 自动控制系统的数学模型.自动控制原理. 机械工业出版社, 2007:14~48

[15] 康世胤,李长城,莫一林,顾全全,陆耿. 基于光耦传感器的控制方法-从离散量到连续量.学做智能车.2006: 2

附录附录A:智能车硬件连接图              附录B:智能车最终实物图

附录C:PID controller

PID controller

A proportional–integral–derivative controller (PID controller) is a generic control loop feedback mechanism widely used in industrial control systems. A PID controller attempts to correct the error between a measured process variable and a desired setpoint by calculating and then outputting a corrective action that can adjust the process accordingly.

The PID controller calculation (algorithm) involves three separate parameters; the Proportional, the Integral and Derivative values. The Proportional value determines the reaction to the current error, the Integral determines the reaction based on the sum of recent errors and the Derivative determines the reaction to the rate at which the error has been changing. The weighted sum of these three actions is used to adjust the process via a control element such as the position of a control valve or the power supply of a heating element.

By "tuning" the three constants in the PID controller algorithm the PID can provide control action designed for specific process requirements. The response of the controller can be described in terms of the responsiveness of the controller to an error, the degree to which the controller overshoots the setpoint and the degree of system oscillation. Note that the use of the PID algorithm for control does not guarantee optimal control of the system or system stability.

Some applications may require using only one or two modes to provide the appropriate system control. This is achieved by setting the gain of undesired control outputs to zero. A PID controller will be called a PI, PD, P or I controller in the absence of the respective control actions. PI controllers are particularly common, since derivative action is very sensitive to measurement noise, and the absence of an integral value may prevent the system from reaching its target value due to the control action.


Control loop basics

A familiar example of a control loop is the action taken to keep one's shower water at the ideal temperature, which typically involves the mixing of two process streams, cold and hot water. The person feels the water to estimate its temperature. Based on this measurement they perform a control action: use the cold water tap to adjust the process. The person would repeat this input-output control loop, adjusting the hot water flow until the process temperature stabilized at the desired value.

Feeling the water temperature is taking a measurement of the process value or process variable (PV). The desired temperature is called the setpoint (SP). The output from the controller and input to the process (the tap position) is called the manipulated variable (MV). The difference between the measurement and the setpoint is the error (e), too hot or too cold and by how much.

In theory, a controller can be used to control any process which has a measurable output (PV), a known ideal value for that output (SP) and an input to the process (MV) that will affect the relevant PV. Controllers are used in industry to regulate temperature, pressure, flow rate, chemical composition, speed and practically every other variable for which a measurement exists. Automobile cruise control is an example of a process which utilizes automated control.

Due to their long history, simplicity, well grounded theory and simple setup and maintenance requirements, PID controllers are the controllers of choice for many of these applications.


Manual tuning

If the system must remain online, one tuning method is to first set the I and D values to zero. Increase the P until the output of the loop oscillates, then the Pshould be left set to be approximately half of that value for a "quarter amplitude decay" type response. Then increase D until any offset is correct in sufficient time for the process. However, too much D will cause instability. Finally, increase I, if required, until the loop is acceptably quick to reach its reference after a load disturbance. However, too much I will cause excessive response and overshoot. A fast PID loop tuning usually overshoots slightly to reach the setpoint more quickly; however, some systems cannot accept overshoot, in which case an "over-damped" closed-loop system is required, which will require a P setting significantly less than half that of the P setting causing oscillation.

Effects of increasing parameters

Parameter

Rise Time

Overshoot

Settling Time

S.S. Error

Kp

Decrease

Increase

Small Change

Decrease

Ki

Decrease

Increase

Increase

Eliminate

Kd

Small Decrease

Decrease

Decrease

None


Physical implementation of PID control


In the early history of automatic process control the PID controller was implemented as a mechanical device. These mechanical controllers used a lever, springand a mass and were often energized by compressed air. These pneumatic controllers were once the industry standard.

Electronic analog controllers can be made from a solid-state or tube amplifier, a capacitor and a resistance. Electronic analog PID control loops were often found within more complex electronic systems, for example, the head positioning of a disk drive, the power conditioning of a power supply, or even the movement-detection circuit of a modern seismometer. Nowadays, electronic controllers have largely been replaced by digital controllers implemented withmicrocontrollers or FPGAs.

Most modern PID controllers in industry are implemented in software in programmable logic controllers (PLCs) or as a panel-mounted digital controller. Software implementations have the advantages that they are relatively cheap and are flexible with respect to the implementation of the PID algorithm.

Pseudocode

Here is a simple software loop that implements the PID algorithm:

start:

  previous_error = error or 0 if undefined

  error = setpoint - actual_position

  P = Kp * error

  I = I + Ki * error * dt

  D = (Kd / dt) * (error - previous_error)

  output = P + I + D

  wait(dt)

  goto start

Ideal versus standard PID form

The form of the PID controller most often encountered in industry, and the one most relevant to tuning algorithms is the "standard form". In this form the Kp gain is applied to the Iout, and Dout terms, yielding:

Where

Ti is the Integral Time Td is the Derivative Time

In the ideal parallel form, shown in the Controller Theory section

the gain parameters are related to the parameters of the standard form through and Kd = KpTd. This parallel form, where the parameters are treated as simple gains, is the most general and flexible form. However, it is also the form where the parameters have the least physical interpretation and is generally reserved for theoretical treatment of the PID controller. The "standard" form, despite being slightly more complex mathematically, is more common in industry.


Laplace form of the PID controller

Sometimes it is useful to write the PID regulator in Laplace transform form:

Having the PID controller written in Laplace form and having the transfer function of the controlled system, makes it easy to determine the closed-loop transfer function of the system.

Series / interacting form

Another representation of the PID controller is the series, or "interacting" form. This form essentially consists of a PD and PI controller in series, and it made early (analog) controllers easier to build. When the controllers later became digital, many kept using the interacting form.




PID控制器

  比例-积分-微分控制器(PID控制器)是一种控制回路反馈机制,它广泛应用在工业控制系统中。PID控制器试图根据被控量的偏差大小和正负,通过一定的算法产生调节控制量的输出,实现对被控量的控制。

PID控制算法 ,涉及三个独立参数;比例值,积分值和微分值。比例值影响系统动态响应速度,积分值影响稳态误差,而微分值与偏差的变化率有关,能够预测偏差。结合这三个独立参数来调整过程中的控制元件,如控制阀或电加热元件。

PID控制算法的参数是按照控制过程的要求来整定的。描述控制器动态响应特性的变量有稳态误差,超调量,振荡时间。我们应该注意的是:使用PID控制算法并不能保证系统或系统稳定性的最优控制。

有些应用程序可能仅需要建立一个或两个数学模型来提供适当系统控制。要实现这个目标,需设定不良控制的增益输出几乎为零。PID控制器有 PI 控制器 ,PD 控制器 , P 控制器 或 I 控制器几种形式。其中 PI 控制器应用比较普遍,因为微分作用对干扰信号过于敏感,而 PI 控制是稳定性较高的无差控制,能够较好的达到控制要求。

PID控制器框图

控制回路的基础知识

控制回路的典型例子是,使淋浴水保持在理想温度,这里涉及到冷热水两个过程的混合。如果某人用体肤来感受水温,并根据估计的水温采取控制作用:调节冷水阀门开度以调整水温。该人将重复此输入输出控制回路操作,调节热水流量直至过程温度稳定在期望值。

感受水温是一个过程的测量值(PV) 。理想温度称为给定值(SP)。控制器的输出(即阀门开度)称为控制变量(MV) 。测量值与给定值之间的差值为误差。

从理论上讲,一个控制器可以控制任何过程,只要这个过程有一个可测量输出(PV),一个已知的理想值为输出(SP)和一个将影响到相关PV 的过程输入(MV)表示。控制器广泛应用于工业控制领域,以调节温度、压力、流量、成分、物性和其他变量。汽车巡航控制系统是一个采用自动化控制过程的系统。

由于其历史悠久,结构简单,以及理论深厚,操作简便,便于维护,PID控制器广泛应用在工业控制中。

经验整定法

经验整定法必须保持在线,具体步骤如下:

    (1)让调节器参数 I=0, D=0,控制系统投入闭环运行,由小到大改变比例系数 P,让扰动信号作阶跃变化,观察控制过程,直到获得满意的控制过程为止。

    (2)取比例系数 P 为当前的值乘以 0.83,由小到大增加积分系数I,同样让扰动信号作阶跃变化,直至求得满意的控制过程。

   (3)积分系数 I 保持不变,改变比例系数 P,观察控制过程有无改善,如有改善则继续调整,直到满意为止。否则,将原比例系数 P 增大一些,再调整积分系数 I,力求改善控制过程。如此反复试凑,直到找到满意的比例系数 P 和积分系数 I 为止。

(4)引入适当的实际微分参数,此时可适当增大比例系数 P 和积分系数 I 。

增大参数对系统特性的影响

参数

上升时间

超调量

稳态时间

稳态误差

Kp

减小

增大

略微变化

减小

Ki

减小

增大

增大

消除

Kd

略微减少

减小

减小

无影响

PID控制的物理实现

    在早期自动化过程控制中,PID 控制器作为一个机械装置来操作。这些机械控制器使用杠杆,弹簧和压缩空气来控制。这些气动控制器曾经是行业标准。

模拟电子控制器由固态继电器或晶体管放大器,电容和电阻组成。模拟电子 PID 控制回路常应用于更复杂的电子系统,例如,磁盘驱动器的头部定位,电源供应器的功率调节,甚至是现代地震仪的运动检测电路。现如今,电子控制器很大程度上已经被与微控制器或FPGA 相结合的数字控制器所取代。

在工业控制中最现代化的 PID 控制器应用在可编程逻辑控制器(PLC)或模块化数字控制器上。软件实现的优点是他们相对便宜,且易于 PID 控制算法的实现。


程序代码

下面是一段执行 PID 算法的简单程序:

start:

  previous_error = error or 0 if undefined

  error = setpoint - actual_position

  P = Kp * error

  I = I + Ki * error * dt

  D = (Kd / dt) * (error - previous_error)

  output = P + I + D

  wait(dt)

  goto start

标准PID形式

  在工业控制中,经常遇到 PID 控制器的各种形式,而与整定算法直接相关的是"标准形式" 。在这种形式中,Kp增益适用于计算 Iout 和Dout,公式如下:

其中

Ti 是积分时间,Td 是微分时间

在控制理论中的理想平行形式

其中积分增益 ,微分增益 Kd = KpTd。这种参数作为简单收益的平行形式,是最普遍和灵活的形式。然而,它也是有最少物理解释的参数,并通常是保留给 PID 控制器进行理论处理的形式。虽然在运算上稍微复杂,但在工业上这个“标准”形式是较常见的。

PID控制器的拉普拉斯形式

有时 PID 调节器需写成拉普拉斯变换形式:

根据 PID 控制器的拉普拉斯形式和控制系统的开环传递函数,我们就易确定该系统的闭环传递函数。



完整的Word格式文档51黑下载地址:
石磊毕业设计.doc (2.39 MB, 下载次数: 6)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表