智能车系统

时间:2022-08-16 06:23:37

智能车系统

【摘要】本文首先对智能车的硬件进行设计,达到了低重心、大前瞻、高稳定性。其次对系统的软件部分进行设计,利用阀值对赛道进行判断,从而得到智能车的偏航角。综合偏航角控制量实现舵机控制,入弯道切内道,大大提高了智能车的弯道运行速度。用光电编码盘检测智能车的运行速度,再根据赛道信息给定智能车的运行速度,运用一些算法调节驱动电机转速,实现了电机的快速响应。经过大量测试,最终确定系统结构和各项控制参数。

【关键词】单片机;舵机控制;速度控制

1.智能车机械结构设计

机械结构是控制算法和软件程序的执行机构,对机械结构性能的了解和改造有利于对控制算法和软件程序的实现。因此对车体机械结构的调整是非常必要的。

1.1车体机械参数调整

前轮参数的调整包括前轮主销后倾角,主销内倾角,前轮外倾角,前轮前束。这几个参数对车体直线行驶的平稳性和转弯的灵活性有很重要的影响。

1.2舵机的安装

舵机转向是整个控制系统中延迟较大的一个环节,在相同的舵机转向条件下,转向连杆在舵机一端的连接点离舵机轴心距离越远,转向轮转向变化越快。这样安装的优点是:改变了舵机的力臂,使转向更灵敏;舵机安装在正中央,使左右的转向基本一致;重心相对来说靠后,减轻舵机的负载。

1.3后轮距与后轮差速机构调整

后轮距的调整:赛车高速行驶时突然转弯时容易翻倒,为了增加整车的平衡能力,可将车模原配的后轮调节件把改为大轮距的调节件,使后轮距在原来基础上增加了4mm。

1.4传感器的安装

1.5车体重心调整

重心越低越好。选择摄像头时选择比较轻的,摄像头支架材料及规格也要加以考虑,电路板的摆放也尽可能低。

2.系统总体硬件电路设计

2.1系统硬件电路结构

此智能车辆定位系统用激光管和接收芯片检测车辆前方的赛道,通过MC9S12XS128采样光电三极管的模拟信号,获得赛道数据,结合一定的算法,提取赛道的黑白线对舵机和电机驱动芯片以合适的控制。

系统先对接收芯片获得的数字信号,速度传感器测得的速度值,加速度传感器检测到的坡度信息,以及拨码开关输入的脉冲值等送入单片机最小系统进行分析处理,发出命令驱动舵机,并使用全桥电机驱动芯片 MC33883驱动场效应管控制电机的正反转,输出 PWM 波形实现对于电机的控制,使用LM 2940S 等稳压芯片对各模块提供电源。

2.2传感器选择及其电路设计

激光传感器好比模型车的眼睛,是整个系统采集赛道信息的核心。前瞻距离最远能够达到1.1M。经过调整和优化,使得激光传感器性能能够完成赛道全部信息采集的任务。

2.2.1激光发射电路设计

当电路连接以后,1脚会输出一个调制频率为180KHZ,占空比大约为30%的方波,然后通过反相器HD74LS04放大驱动激光发射管。

2.2.2传感器接收电路设计

接收管通过接受高频率激光发射的信号直接输出TTL电平,将1.5K电阻直接上拉到VCC_5V。最后RECEIVE_0直接连接到单片机的I/O口。赛道中不是黑线的区域,接收管接收到返回的激光信号,此时输出为低电平;当遇到黑线,没有收到返回的激光信号,输出为高电平。只需要查询单片机的I/O口高低电平状态就可以判断出赛道信息。

2.3电机驱动模块设计

MC33883它可以驱动场效应管实现电机的正反转,场效应管用IRF3205,场效应管为N沟道,MC33883的驱动能力很强,最大电流可以达到110A。本设计采用PWM直流脉宽调速,该方法有效地避免了串电阻调速其调速范围小,平滑性低的缺点, IN_HS1、IN_HS2、IN_LS1、IN_LS2是单片机传给MC33883脉冲信号的接口。

2.4测速电路模块设计

VCC_MCU为5V电压,SIGNAL是编码器的脉冲输出端,SIGNAL和VCC_MCU之间接一个10K上拉电阻,然后将SIGNAL连接到单片机的PT7口,进行脉冲。

2.5稳压芯片选择及电源模块设计

我们需要对配发的标准车模用蓄电池进行电压调节。单片机系统、激光管、接收管、车速传感器电路,LED显示电路等各个电路的工作电压不同,我们需要设计方案来使得电压满足各自的要求。

3.智能车电路板的设计

智能车的电路板设计是利用altium designer软件设计的。在布线时信号线和电源线的宽度不同,信号线的宽度为10mil,稳压后的电源线为20mil或30mil,直接经过电源的电源线为60mil。覆铜的时注意移除死铜,覆铜定义网络标号为GND。

4.系统软件设计

4.1程序开发和调试

本车在开发和调试中所使用的开发环境为Metrowerks 公司的集成开发环境 Metroworks CodeWarrior IDE4.6和与之配套使用的调试软Hiwave,调试器为清华大学工程物理系开发的BDM,辅助调试工具有电视机、刻度尺,串口调试软件等。

4.2调试器

CodeWarrior IDE中的调试器不仅可以进行在线调试,还可以进行在线的仿真。在调试器中,我们可以看到定义的全局变量的变化和各个寄存器的当前值,还可以看到单片机内存中内容等。此外,还有许多其他的实用功能,在赛车的调试过程中使用很是方便有效。

4.3系统程序流程图

如图6显示程序开始进行初始化,然后开始采集信息,在把采集到的信息进行一些数据处理(这里可以用到模糊和PID算法),之后求出速度和转向。为了形成闭环系统这里利用中断进行时时测速,保证小车速度不至于过快或过慢,形成闭环系统,使小车更快,更稳定的完成比赛。

4.4分时发射控制程序设计

由于不可能每个传感器都用不同的频率的发射管来发射来进行不同频率的调制,因此不可能利用减小自然光的方法来解决干扰,最好的方法就是使激光管轮流依次工作,每一路采完数据后开启下一路工作,当时两个传感器之间的时间不能太小也不能太大,我们采用的发射周期为3.6ms,当激光管发射周期小于3.6ms时会出现采集不完全的可能。我设计的6路激光,每一路有两个激光管一共12个,这六路分别由PA0-5控制,这12个管分组为1、7;2、8、;3、9;4、10;5、11;6、12共六组,每组激光管发射延时600us。

4.5 转向舵机的控制程序的设计

一个周期采集完毕以后,要对传感器的原始状态进行处理,我们规定当激光传感器照射到黑线记做1,白线记做0,12个传感器分别赋予对应的权值,当有2个或者1个激光传感器照射到黑线的时候,对它们的权值取平均值,最后单片机通过最终的偏移值计算出控制转向舵机和速度分配值。

number是计算一共有几个传感器在黑线上,lost_number是计算所有在黑线上传感器的偏移值,lost_location是计算激光传感器的平均偏移值。

4.6速度采集程序的设计

速度采集模块需要定时采集速度,根据相同时间内的脉冲数多少来判定速度的快慢,因而我们单独开了一个PIT中断,中断定时周期为3MS,那么每当经过3MS,就读取脉冲累加器计数器PACNT的值,然后将此值和设定速度的值进行比较,完成对速度的闭环控制。 控制函数number_count变量是反馈的速度,用来传递给PID函数;TIME_INTER是速度给定;这里要注意的就是,当进行完毕速度读取,PACNT寄存器一定要清零,防止脉冲的错乱。

5.结论

我们在车模硬件及软件上都有许多改进与创新,采用上排激光管作为循迹传感器。大大提高了前瞻距离和系统的稳定性。激光前瞻达到0.25米,大前瞻是保证高速度的前提条件。采用自己制作的单片机最小系统板。自己制作的单片机最小系统板,尺寸小,重量轻。即减轻了车模总重量,有方便了其它硬件布局。使得整个硬件系统布局更简洁,性能更稳定。 [科]

【参考文献】

[1]陈家瑞.汽车构造.机械工业出版社,2009.

[2]第四届全国大学生“飞思卡尔”智能汽车竞赛杭州电子科技大学钱江一号队技术报告,2009.

[3]第五届全国大学生“飞思卡尔”智能汽车竞赛河北理工轻工学院飞思嘉杭队技术报告,2010.

[4]Freescale 公司MC9S12XS Family Reference Manual.2009.9.

[5]Paul Horowitz.电子学.电子工业大学出版社,2009.

上一篇:某风电场1.5MW风力发电机组发电机前轴承失效分... 下一篇:做自己的商务