计算机控制原理报告.doc_第1页
计算机控制原理报告.doc_第2页
计算机控制原理报告.doc_第3页
计算机控制原理报告.doc_第4页
计算机控制原理报告.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于K60的智能车控制系统 学 院:班 级姓 名:学 号: 项目背景 智能运输系统作为未来交通发展趋势之一,为解决城市交通拥挤和堵塞问题提供了有效途径。从八十年代以来,美国、日本、欧洲等发达国家和地区竞相投入巨额资金和大量人力,开始大规模的进行交通运输智能化的研究,取得了许多重要成果。而作为智能车路系统(Intelligent VehicleHighway Systems,简称 IVHS)的重要一部份,智能车在世界各国的研究也随着计算机技术、网络技术、通讯技术的飞速发展而不断深入。 随着科学技术的不断发展进步,智能控制的应用越来越广泛,几乎渗透到所有领域。智能车技术依托于智能控制,前景广阔且发展迅速。目前,掌握着汽车工业关键技术的发达国家已经开发了许多智能车的实验平台和商品化的车辆辅助驾驶系统。 有研究认为智能汽车作为一种全新的汽车概念和汽车产品,在不久的将来会成为汽车生产和汽车市场的主流产品。 - 0 -目录- 2 - 第一章 方案设计本章内容简要地介绍智能车系统总体设计思路,以及一些设计方案的分析,系统分为机械结构、控制模块、控制算法等三部分对智能车控制系统进行深入的介绍分析。1.1系统总体方案的设计主控制器采用以飞思卡尔半导体公司生产的32位微控制器K60作为核心控制器,在IAR开发环境中进行软件设计。赛车在赛道上的位置信号由车体前方的电磁传感器采集,经运算放大器放大后送如单片机内部AD进行模数转换后,进行算法处理得到相关的参数,将所得到的参数用于赛车的运动控制。通过编码器测速模块来检测车速,并采用K60 的输入捕捉功能进行脉冲计数计算速度和路程;电机转速控制采用 PID 控制,通过 PWM 控制驱动电路调整电机的转速,完成智能车速度的闭环控制。此外,增加了按键作为输入输出设备,增加OLED作为显示器辅助调试。1.2系统总体方案设计图K60控制器电磁传感器运放模块舵机转向电机驱动编码器直流电机OLED显示键盘 拨码开关图1.2系统总体方框图根据以上系统方案设计,赛车共包括七大模块:K60主控模块、传感器模块、电源模块、电机驱动模块、速度检测模块辅助调试模块。各模块的作用如下:K60主控模块,作为整个智能车的“大脑”,将采集电感传感器、编码器等传感器的信号,根据控制算法做出控制决策,驱动直流电机和伺服电机完成对智能车的控制。传感器模块,是智能车的“眼睛”,可以通过一定的前瞻性,提前感知前方的赛道信息,为智能车的“大脑”做出决策提供必要的依据和充足的反应时间。电源模块,为整个系统提供合适而又稳定的电源。电机驱动模块,驱动直流电机和伺服电机完成智能车的加减速控制和转向控制。速度检测模块,检测反馈智能车后轮的转速,用于速度的闭环控制。辅助调试模块主要用于智能车系统的功能调试、赛车状态监控等方面。 第二章 电路设计说明2.1 电源管理模块电源模块为系统其他各个模块提供所需要的电源。设计中,除了需要考虑电压范围和电流容量等基本参数之外,还要在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化。可靠的电源方案是整个硬件电路稳定可靠运行的基础。全部硬件电路的电源由配发的标准车模用 7.2V 2000mAh Ni-cd 镍镉充电提供。由于电路中的不同电路模块所需要的工作电压和电流容量各不相同,因此电源模块应该包含多个稳压电路,将充电电池电压转换成各个模块所需要的电压。为满足需要,本车模上存在4种供电电压:1)智能车使用镍镉充电电池,充满时电压在7.88.2V。可直接用于电机和舵机供电。2)一些数字器件使用直流5V,5V电源选用开关型稳压芯片LM1117以及线性稳压芯片LM2941。为了隔离电机的干扰,单片机主控板的电源输入端加入磁珠和0欧电阻做为隔离。3)使用5V为单片机供电,采用线性稳压芯片LM2940。输入端4) 电机驱动电路的电源可以直接使用蓄电池两端电压。模型车在启动过程中往往会产生很大的冲击电流,一方面会对其他电路造成电磁干扰;另一方面由于电池内阻造成电池两端的电压下降,甚至会低于稳压电路所需要的最低电压值,产生单片机复位现像。为了克服启动冲击电流的影响,可以在电源中增加容值较大的电解电容,也可以采用缓启动的方式控制电机。在启动时,驱动电路输出电压有一个渐变过程,使得电机启动速度略为降低从而减小启动冲击电流的幅度5) 加若干LED显示各类电源工作状况,该部分电路如图3.1所示。 图2.1.1 舵机供电电路图2.1.2 单片机供电电路 图2.1.3 其他模块供电电路2.2 传感器模块2.2.1电感传感器的原理根据电磁学,我们知道在导线中通入变化的电流(如按正弦规律变化的电流),则导线周围会产生变化的磁场,且磁场与电流的变化规律具有一致性。如果在此磁场中置一由线圈组成的电感,则该电感上会产生感应电动势,且该感应电动势的大小和通过线圈回路的磁通量的变化率成正比。由于在导线周围不同位置,磁感应强度的大小和方向不同,所以不同位置上的电感产生的感应电动势也应该是不同。据此,则可以确定电感的大致位置。2.2.2磁传感器信号处理电路确定使用电感作为检测导线的传感器,但是其感应信号较微弱,且混有杂波,所以要进行信号处理。要进行以下三个步骤才能得到较为理想的信号:信号的滤波,信号的放大,信号的检波 信号的滤波比赛选择20kHz的交变磁场作为路径导航信号,在频谱上可以有效地避开周围其它磁场的干扰,因此信号放大需要进行选频放大,使得20kHz 的信号能够有效的放大,并且去除其它干扰信号的影响。使用 LC并联谐振电路来实现选频电路(带通电路),如图2.2.2.1所示。- 10 -图2.2.2.1 信号滤波电路其中,E是感应线圈中的感应电动势,L是感应线圈的电感值,R0是电感的内阻,C 是并联谐振电容。电路谐振频率为: 已知感应电动势的频率=20kHz,感应线圈电感为L=10mH,可以计算出谐振电容的容量为C=6.3310-9 F 。通常在市场上可以购买到的标称电容与上述容值最为接近的电容为 6.8nF,在实际电路中我们选用两片3.3 nF 0805封装的电容并联作为谐振电容。 信号的放大检波由第一步处理后的电压波形已经是较为规整的20kHz正弦波,但是幅值较小,随着距离衰减很快,不利于电压采样,所以要进行放大,我们采用集成运放进行信号的放大处理,集成运放较三极管优势是准确受温度影响很小,可靠性高。集成运放放大电路有同相比例运算电路和反相比例运算电路,我们在实际中使用反相比例运算电路。测量放大后的感应电动势的幅值E可以有多种方法。 最简单的方法就是使用二极管检波电路将交变的电压信号检波形成直流信号,然后再通过单片机的AD采集获得正比于感应电压幅值的数值。为了能够获得更大的动态范围, 倍压检波电路中的二极管推荐使用肖特基二极管或者锗二极管。由于这类二极管的开启电压一般在0.10.3V左右,小于普通的硅二极管(0.7V),可以增加输出信号的动态范围和增加整体电路的灵敏度。这里选用常见的的二极管SS34。 图2.2.2.3信号放大检波电路2.3 电机驱动模块电机驱动电路为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由两只支 N 沟道功率 MOSFET 管和两只P沟道功率MOSFET管组成,额定工作电流可以轻易达到 100A 以上,大大提高了电动机的工作转矩和转速。电路如图图2.3.1电机驱动模块原理图图2.3.2电机驱动模块原理图2.4单片机电路及接口部分设计采用K60作为核心控制单元,该型单片机拥有主频128MHz主频,FlashRom512KB,具备SPI,SSI,IIC等多种实用接口,根据需要留出IO管脚。2.5 系统主板设计电路的各个模块设计完成后,各个部分需要连接到系统主板形成完整的系统才能保证电路工作,主板电路上包含有控制器核心板插槽、传感器接入端口、2.4G无线模块接口、PWM输出接口、OLED显示接口、起跑线检测接口、串口接口、CCD接口、超市波接口、舵机接口、编码器接口电路原理图如图3.5.1所示,PCB图如图3.5.2所示。图2.5.1主板原理图图 2.5.2 主板PCB图第三章 智能车控制软件设计说明3.1 软件设计总体框架程序使用了K60芯片中的TIM模块、PIT模块、AD模块、I/O模块、PWM模块。其中舵机和电机通过PWM模块来控制,舵机频率50Hz,电机频率1000Hz。AD模块用来读取电磁传感器采样回来的电压信息,以及角速度传感器读回来的信息,用来判断车体相对赛道位置和赛道地形,I/O模块主要用来作为人机交互模块使用。PIT模块作为定时器产生1ms的定时中断,其中转向控制服务程序,速度控制服务程序均在PIT中断当中完成。AD采样服务程序在AD中断中完成。程序大概流程如下:(1)进行各个模块的初始化。(2)在按下启动键之后程序进入大循环,扫描是否有暂停键按下。(3)AD中断服务程序进行AD采样,PIT中断服务程序,进行电磁传感器数据分析,陀螺仪数据的分析。(4)转向控制,速度控制,输出相应的PWM波值控制电机和舵机,使智能小车在赛道上平稳运行。为了方便控制,主函数里面除了初始化和起跑线检测的程序,其他所有的核心操作放在定时中断中处理。画出流程图后,从宏 观上来看是两条线同时执行。如下图所示:初始化参数设置传感器电压值处理舵机控制速度控制起跑线检测检测到起跑线?停车YN图3.1.1程序整体流程图3.2 采集传感器信息及处理通过电磁传感器,将导线周围的磁场通过LC谐振电路及后面的放大滤波电路转换为电压值,电压大小即代表了磁场大小,通过AD采样4个电压值得到原始数据,随后在软件中进行数据处理。单片机通过AD口对传感器数据进行采集,由于电感本身得到的是交变的信号,故需要硬件电路将其转化成直流信号。若单片机执行一个周期只采集一个值,这个值可能会由于电路本身的原因或电感的抖动导致不精确,所以需要进行多次采集和滤波处理。我们的处理方法是采用加权递推平均滤波的方法,此方法可以通过改变权系数来改变灵敏度和信号平滑度,若新采样的权系数越大,则灵敏度越高,信号平滑度越差,新采样的权系数越小,则灵敏度越低,信号平滑度越好,具体流程如下:3.3 赛道信息计算赛道位置的计算是整个智能车运行的基础,精确的计算,可以获得准确的导线和智能车的相对位置信息,从而应用转向控制策略和速度控制策略,使智能车平稳快速运行,根据电感线圈在磁场中感应电动势的计算公式:E=Ah/(h*h+x*x),其中E为谐振电压,A为常数,h为电感距离赛道高度,x为水平方向电感离导线距离。可以知道,在传感器越靠近电磁线的地方,传感器获得的电压信号越大,反之越小。3.4 舵机控制算法舵机的控制是根据传感器检测到的电磁信号来实现的,关于电感的个数和排布,不同的控制方法有不同的选择,电感个数减少会带来处理上的方便,但也会使采集到的信息不够丰富,电感个数增加会使得信息处理稍显复杂,但是得到的赛道信息较丰富。我们权衡后选择一排4个电感来进行处理。舵机的控制基本分为方向判断和打角控制。 (1)舵机转向判断:我们利用中间两个电感的差值和外面两个电感的差值可以较方便的进行转向判断,值得一提的是为了防止误判,可先判断出小弧度的转向,大弧度的转向继续保持标志位即可。 (2)舵机控制我们是根据对电感的差值和差值变化量进行模糊,得出模糊量后,对模糊量进行PD控制,通过修改模糊规则查询表和PD项的参数能够使得小车在赛道上实现较好的打角范围。3.5 速度控制算法3.5.1 增量式PID控制原理比例-积分-微分(Proportion-Integral-Differential,简称PID)控制器是一个三项控制器,在自动控制领域拥有悠久历史。具有原理简单,结构灵活,适应性强等特点,能够提供一系列令人满意的过程,实际上它在工业中已成为标准控制器。当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时, 控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID 控制技术最为方便。即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID 控制技术。PID 解决了自动控制理论所要解决的最基本问题,既系统的稳定性、快速性和准确性。 PID 控制器是一种线性控制器,它根据给定值与实际输出值构成控制偏差。将偏差的比例(P)、积分(I)和微分(D)通过线性组合构成控制量,对被控对象进行控制,故称PID 控制器,原理框图如图引言图3.4.1 感应电动势曲线在计算机控制系统中采用数字式PID 控制器。数字PID 控制算法通常分为位置式PID 控制算法和增量式PID 控制算法。 位置式 PID 公式为:由公式4.4.1 可得出增量式PID 公式为:增量式PID 具有以下优点: (1)由于计算机输出增量,所以误动作时影响小,必要时可用逻辑判断的方法关掉。 (2)手动/自动切换时冲击小,便于实现无扰动切换。此外,当计算机发生故障时,由于输出通道或执行装置具有信号的锁存作用,故能保持原值。 (3)算式中不需要累加。控制增量u(k)的确定仅与最近k 次的采样值有关, 所以较容易通过加权处理而获得比较好的控制效果。 但增量式PID 也有其不足之处:积分截断效应大,有静态误差;溢出的影响大。使用时,常选择带死区、积分分离等改进PID 控制算法。 PID计算函数 * motor_pid0 = int_motor_pid0*10+int_motor_pid1; motor_pid1 = int_motor_pid2*10+int_motor_pid3; motor_pid2 = int_motor_pid4*10+int_motor_pid5; motor_pid3 = int_motor_pid6*10+int_motor_pid7; motor_pid4 = int_motor_pid8*10+int_motor_pid9; motor_pid5 = int_motor_pid10*10+int_motor_pid11; */ int LastSpeedCut0_l,LastSpeedCut1_l ,SpeedLastPWMK_l ;int SpeedPWMKP_l ,SpeedPWMKI_l ,SpeedPWMKD_l,SpeedPWMK_l ,SpeedPWMKI_l,SpeedPWMKD_l,SpeedPWMKP_l;int SpeedPWMOUT_l ,SpeedKD_l = 0,SpeedKI_l = 0,SpeedKP_l=0; int SpeedDifference0_l=0;int speedDEARE1_l,speedDEARE1SUM_l,DSpeed_l ; int SpeedPID_l(uint16_t speedCount_l,uint16_t AmSpeed_l) / SpeedKP_l = motor_pid0 ;/ SpeedKD_l = motor_pid2 ; LastSpeedCut0_l = (int16_t) speedCount_l ; DSpeed_l = (int16_t) AmSpeed_l ; SpeedDifference0_l = DSpeed_l - LastSpeedCut0_l; if(SpeedDifference0_l=-10) speedDEARE1SUM_l = speedDEARE1SUM_l+SpeedDifference0_l; SpeedKI_l =motor_pid1 ; else SpeedKI_l = 0; / / else speedDEARE1SUM_l = 0; / speedDEARE1SUM_l = speedDEARE1SUM_l+SpeedDifference0_l; speedDEARE1_l = LastSpeedCut0_l - LastSpeedCut1_l; LastSpeedCut1_l = LastSpeedCut0_l; SpeedPWMKP_l = SpeedKP_l * SpeedDifference0_l*5; SpeedPWMKI_l = SpeedKI_l * speedDEARE1SUM_l; SpeedPWMKD_l = SpeedKD_l * speedDEARE1_l; SpeedPWMOUT_l = SpeedPWMKD_l + SpeedPWMKI_l + SpeedPWMKP_l; if(SpeedPWMOUT_l 7000) SpeedPWMOUT_l = 7000; SpeedLastPWMK_l = SpeedPWMOUT_l ; return SpeedPWMOUT_l ; int LastSpeedCut0_r,LastSpeedCut1_r,SpeedLastPWMK_r ;int SpeedPWMKP_r ,SpeedPWMKI_r ,SpeedPWMKD_r,SpeedPWMK_r ,SpeedPWMKI_r,SpeedPWMKD_r,SpeedPWMKP_r;int SpeedPWMOUT_r,SpeedKD_r = 0,SpeedKI_r = 0,SpeedKP_r = 0; int SpeedDifference0_r = 0;int speedDEARE1_r,speedDEARE1SUM_r,DSpeed_r ;int SpeedPID_r(uint16_t speedCount_r,uint16_t AmSpeed_r) / SpeedKP_r = motor_pid3 ; SpeedKD_r = motor_pid5 ; LastSpeedCut0_r = (int16_t) speedCount_r ; DSpeed_r = (int16_t) AmSpeed_r ; SpeedDifference0_r = DSpeed_r - LastSpeedCut0_r;/当前 if(SpeedDifference0_r=-10) speedDEARE1SUM_r = speedDEARE1SUM_r+SpeedDifference0_r; SpeedKI_r = mo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论