当前位置:文档之家› 基于飞思卡尔单片机自动循迹小车控制的设计

基于飞思卡尔单片机自动循迹小车控制的设计

基于飞思卡尔单片机自动循迹小车控制的设计
基于飞思卡尔单片机自动循迹小车控制的设计

摘要

随着我国的电子科技的不断发展,我们生活中的自动化设备越来越多,也为嵌入式在智能化上的研究提供了一个广阔的平台。

本系统以MK60DN512VMD100微控制器为核心控制单元,选用OV7620 CMOS 模拟摄像头检测赛道信息,高速AD转换芯片选用TCL5510,将提取后的灰度图像进行软件二值化,进而提取赛道信息;用光电编码器实时检测小车的实时速度,采用PID控制算法调节电机的速度以及舵机转向,从而实现速度和方向的闭环控制。

关键字:MK60DN512VMD100,OV7620 CMOS,软件二值化,PID

Abstract

With the continuous development of electronic technology, more and more automation equipment into the production life of the people, the rapid development of embedded intelligent study provides a broader platform.

In this paper, the design of intelligent vehicle system MK60DN512VMD100 microcontroller as the core control unit, the selection of OV7620 CMOSanalog cameras to detect the track information, to using TCL5510 high-speed AD converter chip, software binarization image, extract the white guide line for identification of the track information; optical encoder to detect the real-time speed of the model car, using the PID control algorithm to adjust the speed of the drive motor and steering the angle of the steering gear, in order to achieve closed-loop control of velocity and direction of the model car. Keywords: MK60DN512VMD100,OV7620 CMOS,software binarization, PID

目录

摘要 .............................................................................................................................. I Abstract .................................................................................................................................. I I 1前言 (1)

1.1 设计的背景以及意义 (1)

1.2 智能小车国内外概况 (1)

1.2.1国内研究的概况 (1)

1.2.2 国外研究概况 (2)

1.3智能小车的发展前景 (2)

2 飞思卡尔单片机自动循迹小车系统设计总方案 (3)

2.1 系统硬件部分 (3)

2.2 系统软件部分 (4)

3 智能车硬件系统 (5)

3.1 单片机最小系统 (5)

3.1.1 PIT定时器模块 (6)

3.1.2 PWM 模块 (6)

3.1.3 I/O模块 (7)

3.1.4 时钟电路 (7)

3.1.5 复位电路 (7)

3.1.6 JTAG接口电路 (8)

3.2 电机驱动模块 (8)

3.3路径识别摄像头检测模块 (9)

3.3.1 摄像头的选择 (9)

3.3.2 摄像头简介 (10)

3.4 速度检测模块 (10)

3.5 舵机模块 (10)

3.6电源管理模块 (10)

3.6.1 3.3V电源 (11)

3.6.2 5V电源 (11)

4 软件系统的设计与实现 (12)

4.1赛道信息的提取 (12)

4.2 PID算法介绍 (12)

4.2.1 位置式PID (13)

4.2.2 增量式PID (14)

4.2.3 PID 参数整定 (14)

4.3转向舵机的控制方法 (15)

4.3.1 舵机的工作原理 (15)

4.3.2 舵机的PID 控制 (15)

5 开发平台介绍 (19)

5.1 IAR Embedded Workbench IDE简介 (19)

5.2 IAR Embedded Workbench的功能及特点 (19)

5.3 硬件开发平台Altium Designer (22)

6结论 (23)

参考文献 (24)

致谢 ................................................................................................. 错误!未定义书签。附录1电路原理图 . (26)

附录2 PCB图 (27)

附录3 元件清单 (28)

附录5 部分程序源代码 (29)

1前言

1.1 设计的背景以及意义

在现代社会,汽车逐渐走进每个平民的家庭生活中,汽车行业发展迅速,同时交通事故也大大增多,每一分钟都有人死于车祸。近几年智能系统的发展迅速,智能车的研究成为了当下的研究热点。智能汽车研究涉及了很多领域,最直接的表现是要实现汽车的自动驾驶。要实现自动驾驶就离不开智能化系统的设计,同时要求智能车能感知周围的环境。一旦智能车投入使用,就会降低当前社会交通事故的发生率,同时能够大大提高现有交通道路的使用效率,并且能在一定程度上缓解能源危机的到来,降低广大人民的劳动强度,给人们一个更好的未来。1.2 智能小车国内外概况

1.2.1国内研究的概况

我国在智能车的研究中投入了大量的资金和精力,为了能够培养出自己的研究骨干,在教育部的牵头下,我国组织了智能小车的高校比赛,以此来培养最基本的研究人才,这也符合我国的人才强国战略。这项比赛用的是飞思卡尔公司产的芯片,第一届比赛在清华大学举办,得到了各大高校的积极响应,取得了良好的效果。该项比赛,韩国有丰富的经验,他们已举办多届此类比赛。因为此项比赛涉及到了很多专业知识,尤其是必须要掌握自动控制、电子、计算机等多个领域的知识,所以能够提高大学生的知识水平。另外,比赛还可以提高学生的动手能力,弥补现在教育的弊端。

前两届比赛中组委会统一规定了赛车的模型,微型控制器选用当时最流行的16位微型控制器MC9S12DG128,该控制器为飞思卡尔公司生产,性能优良,功能可靠。现在比赛最常用的是32位的Kinetis系列,主要包括Kinetis E,EA,M,L 等系列、32位的MPC56xx系列、32位的Kinetis(ARM? CortexTM-M4),主要包括Kinetis W,K等系列、16位的9S12系列、32位的DSC系列、ColdFire系列和8位的单片机系列(可使用两片)。

飞思卡尔赛车比赛规定各队在符合条件规定的情况下,赛车跑完全程时间最短者获胜,我国在2007年的比赛中首次打败了韩国队,终止了其七连冠的记录。我国已经成功的举办了10次该项比赛,参加比赛的学校大概已经有300所,它们来自全国各地,分布在30个省市、自治区。飞思卡尔比赛在我国已经办了多年,参赛队伍逐年增加,技术也相当成熟,学生们发挥自己的想象力,在原有技术上进行了大胆创新,取得了不错的效果。现在一些早期的学生已经投入到实际的智能汽车的研究之中。

1.2.2 国外研究概况

在飞思卡尔半导体公司的资助下,韩国在全球第一次举办了全国性质的高校智能小车比赛,并且取得了非常好的效果。第一届比赛要求参赛队选用大赛方指定的HCS12单片机、车模以及电动机。大赛规定,跑完全程用时最短的队伍获胜。参赛队伍需要自己学习并且应用嵌入式软件开发工具Codewarrior和在线开发发技术,自主开发识别最佳的行进路线,自行设计电机的驱动电路、检测电路、舵机电路,以及相应的程序编写。此项比赛举办以来,已经得到了广大企业的认可,他们认为这项比赛提高了学生们的创新能力。这也是参赛队员在设计小车时不断积累经验,不断推陈出新,敢于创新的得结果。

韩国于2000年举办了第一届该类比赛的,由汉阳大学承办。在韩国每年的参赛队达到100多支,很多学校都会派出自己的队伍。韩国的企业也非常重视这项比赛,每年企业都会拿出非常丰厚的奖品,比如特等奖就奖给队员一辆现代汽车。甚至获奖选手可以有机会到德国宝马的总部研究学习。这些奖励不仅体现了企业对人才的重视,而且促进了学生的积极性。

如今的比赛不仅仅限于一国之内,高校的参赛队伍已经走出了国门,形成国际比赛机制。2013年举办的国际赛当中,中国队以绝对的优势击败了美国队、日本队、巴西队、印度队、中国台湾队、墨西哥队、马来西亚队以及捷克与斯洛伐克队。国际赛的举办增进了各国的技术交流,对智能车的比赛以及技术的创新起到了积极的作用。

1.3智能小车的发展前景

在智能车的研发方面,我国与欧洲、美国、日本等国家还有一些差距。智能车的开发需要很多领域的结合,如信息技术、计算机技术、电子技术等多个领域[1],在这些领域我国也有了很高的发展。面对这个集汽车制造行业、信息与通信产业和交通系统复合的全新领域,我国有能力抢占这个高新技术的制高点,在未来的国际竞争中取得有利位置。我国必须把握这次机遇,制定好相应的计划、战略方针以及落实到实处的措施,统筹管理,逐渐缩小与发达国家在智能车领域的差距并且超过他们。

2 飞思卡尔单片机自动循迹小车系统设计总方案

本设计的核心是基于K60的主控模块,车速由电机驱动模块控制、转向问题由舵机模块来控制、小车速度的检测交由测速传感器模块的检测,预判行进的路线由路径识别模块来决定。本设计实现的功能是在特定的跑道上小车自动行驶,完成在转弯处减速、在直道上加速行驶。本系统由两部分组成即硬件部分和软件部分。

2.1 系统硬件部分

本毕业设计选用飞思卡尔公司推出的32位K60微控器作为小车的核心控制单元。路径识别模块采用摄像头检测技术,将采集到的图像信息转化成电平信号送给微控单元K60。同时速度检测模块收集到的信息同样转换成电平信号送给微控单元K60。微控单元经过内部的处理,输出PWM信号,控制电机转速以及舵机转向,达到控制速度和自动行驶的目的。

要使智能小车又快又稳的行驶,不仅要控制好舵机的转向还要控制好车速。这样才能使小车在转弯的时候不会因为速度太快而偏离跑道,因此我们需要检测小车的速度,并且采取闭环的反馈机制。同时要求我们要将路径检测、车速控制以及控制转向的各个单元精密结合起来。如果传感器采集到了错误的信息,或者伺服电动机的控制出现偏差,就可能使小车出现严重的抖动,常出现的问题是小车偏离跑道;如果直流电动机的控制效果不理想,还会造成小车速度过慢等问题。本部小车的系统总体结构如图2.1所示:

图2.1系统总体结构图

由图可知,小车的系统是由以下几个模块组成的:

(1)中央处理器单元

中央处理器采用飞思卡尔MK60DN512VMD100芯片,以32位的ARM Crotex-M为内核,运算速度快,内核提供了1.25DMIPS/MHz的DSP指令。具有8位PWM输出8路和16位增强型定时器8路。CPU的主频频率为100MHz。内部Flash高至512KB,模数转换(A/D)共8路各2组,单片机功能强大,可以有效地控制小车的运行以及检测。

(2)电源管理模块

电源模块的作用是给各个模块提供稳定的电压,保证系统的正常运行,也是系统运行最基本的要成。电源模块要有稳压电路,因为各个模块所需要的电压不同,我们还需要将电源的电压转换成所各模块所需要的电压。

(3)舵机模块

对模型车上的舵机进行驱动,快速并准确控制赛车的行驶方向。

(4)电机驱动模块

电机模块的作用是控制小车的速度,它是通过控制电机的电压来达到控制车速的目的,当然也可以通过电机实行制动。

(5)速度检测模块

速度检测模块主要是用于小车速度的采集,将采集到的速度反馈给系统,系统做出反应,来调节速度,使小车以最快的平均速度平稳的跑完全程。

(6)路径识别摄像头检测模块

该模块的作用是采集图像信息,并将其转换为数字信息传送给控制器,经过处理后控制舵机对小车的行进方向进行导航,同时控制车速。

2.2 系统软件部分

软件部分由这几个部分组成:小车的主程序、寻迹程序、PWM程序、PID 控制程序等组成[2]。

采用动态阈值和边沿检测法提取黑线,保证提取黑线的稳定可靠;采用闭环PID和前瞻相结合的控制策略,并且基本上不对路型作判断,来提高赛车对赛道适应性。我们可以通过程序来处理无法检测起跑线的问题,所以不用安装红外传感器。

3 智能车硬件系统

3.1 单片机最小系统

MC9S12XS128型开发板是一个16位的微控芯片,而MK60DN512型开发板是一个32位的微控芯片,这两款芯片都是专门用于智能小车的控制,选用这两款芯片可以缩短我们的设计时间,同时在二次开发方面也有很大的空间。

MK60DN512与MC9S12XS128的比较:

用MK60DN512替代传统的MC9S12XS128,会大大提高计算性能;增加了RAM空间,适合更加复杂的算法;外部IO中断使用起来比S12更加的自由;提高了PWM和脉冲计数功能,使用上更加方便、更加好用;提供了更多的SPI(串行外设接口)、UART(通用异步收发传输器)、IIC通信接口(集成电路总线),增加了外设的挂载数量,调试更加方便;因此本设计最终选定了MK60DN512型开发板。最小系统板如图3.1所示。

单片机是整个智能车系统的核心部分。我们所采用的单片机为飞思卡尔公司的Kinetis ARM Cortex-M4 32位系列的单片机K60DN512,共计有144个引脚封装。

K60DN512芯片是Kinetis系列K60子系列的典型芯片,是Kineits系列中集成度最高的芯片。K60DN512的特性如下:

(1) ARM Cortex- M4 内核的频率为100MHz;

(2) 32路DMA,供存储器以及外设使用,CPU的利用率得到了提高;

(3) 10种低功耗模式,包括运行,等待,停止和断电;

(4) 具有512K的Flash以及128K的SRAM;

(5) 具有高度集成的硬件;

(6) 2路16位AD转换;

(7) 4路可编程定时器;

(8) SD卡主机控制器,6路SPI,IIS,UART,IIC,CAN;

(9) USB2.0接口,支持OTG;

(10) IEEE1588以太网接口,支持MII通讯;

(11) 工作电压1.71V~3.6V,工作温度- 40°~105°;

(12) GPIO引脚有100多个,引脚可兼容5V电压。

图3.1最小系统板

程序方面,主要涉及到到MK60DN512芯片中的PIT模块、PWM模块以及I/O模块等[3]。PIT模块主要负责采集定时数据和读取定时速度;PWM模块的作用是控制直流电动机的转速以及舵机的转向,光电编码器将收集到的信号转化为脉冲信号,我们通过计算脉冲信号来计算小车的瞬时速度;I/O模块的主要作用是分配指示灯。

本次设计,主控芯片中所用到的模块主要有PIT定时器模块、PWM模块、I/O模块等。

3.1.1 PIT定时器模块

PIT定时器模块本质上就是一个定时器阵列,可用于中断和触发DMA。在使用中,它的所有中断都是可进行屏蔽的,PIT定时器能够单独设置自己的超时时期。

产生中断标志位的原理:首先,定时器获取一个加载初值,这个初值一般要从PIT寄存器中获取,然后对获取的初值进行等差减数运算,当该数变为0时,定时器就会产生一个触发脉冲,该触发脉冲就会传送到中断标志位。

K60的定时器模块在以往标准定时器的基础上添加了一些新的特点,其应用范围更加广,用32位的可编程计时器作为基准计时器的核心,时钟源用预分频器来控制。3个独立的定时器模块可以使用户方便的设置优先级。

3.1.2 PWM 模块

PWM模块共有3个调制波模块,每个模块都有8个通道,每个通道都可独立输出,因为每个通道都是8位的,所以还可以将两个通道组成16位输出[4]。每个模块都可以进行计数且精度非常的高,可设置时钟周期,共有4个时钟源可供选择。时钟周期可以通过程序来设定,协议通道可设定为8字节或者16字节。PWM通道调制出的波形占空比为0~100%。通过编程可以实现居中对齐输出或者左对齐输出。

3.1.3 I/O模块

K60拥有100个I/O引脚,很多引脚具有复用功能。当引脚复位以后,它会自动配置成高阻的状态。因为它是通用的输入引脚,所以内部没有上拉电阻。为避免浮空输入脚出现漏电流,复位初始化尽量使用上拉或者下拉,另外可使不常用引脚的方向为输出,以使该引脚不再浮空。

3.1.4 时钟电路

时钟电路主要由RTC和主晶振组成,主晶振的作用是产生芯片和外设所需要的工作时钟。RTC的作用是当系统上电和关闭时对时间进行测量,另外RTC消耗的功率非常低。K60系统板上的晶振为50MHz,如图 3.2所示。

图3.2 50MHz有源晶振时钟电路

我们选用32.768KHz 的振荡器提供时钟,如下图3.3所示。实时时钟RTC有专用的电源引脚VBAT,它可以连接到具有3.3V的电池或者其它可以供给3.3V 的电源。当CPU掉电时,要用外部时钟源来上电。

图3.3 RTC时钟电路

3.1.5 复位电路

K60 的复位电路如图3.4所示,由图可知电路中的RESET连接到K60芯片上的复位引脚,复位引脚RESET连接的电阻为4.7kΩ,电阻的作用是提供3.3V 的电压。低电平时芯片复位,高电平时则不会做出反应。按下复位键S1,RESET 引脚接地,输出低电平,芯片复位。

图3.4 复位电路

3.1.6 JTAG接口电路

K60系列芯片使用的是ARM Cortex-M4内核,本内核里面有一个JTAG接口,我们可以通过这个接口来下载程序或者调试程序。JTAG的接口电路如图3.5所示。JTAG的对外引脚2接TMS,引脚4接TCK、引脚6接TDO、引脚8接TDI,这几个引脚和K60的PTA0~PTA3四个引脚相对应。

图3.5 K60的JTAG接口电路

3.2 电机驱动模块

电机驱动选用双电机驱动BTS79602S,它的优点是性能稳定、电机能够提供足够的动力。BTS79602S是一个高度集成的芯片,是半桥型的,可以通过大电流。它的内部有两个MOSFET,分别是N沟道和P沟道,N沟道的是低边的,P沟道的是高边的。其主要功能有电流诊断,逻辑电平输入以及斜率调节。另外它还具有过压保护的作用。

BTS79602S的芯片内部是一个半桥型装置。当IN=1并且INH=1时,可以使高边MOSFET导通,这个时候OUT引脚输出的是高电平;当IN=0并且INH=1时,可以使低边MOSFET导通,这个时候OUT引脚输出的是低电平。要控制MOS管的导通以及关断,我们可以通过改变连接在SR引脚的电阻来进行[5]。IS 引脚的具有检测输出电流的作用。

BTS79602S赛车运行过程中是通过PWM波来控制的。当只需要单电机运行时,控制芯片的第二个引脚输入PWM波,电机一端接地,另一端接BTS79602S 的输出引脚。如果是双电机运行时就要和另外一片BTS79602S芯片组成全桥控

制。此外为了隔离驱动芯片并且达到保护单片机的目的,我们采用了74HC245DW 芯片进行隔离保护。具体的电路如图3.6所示。

图3.6BTS7960原理图

3.3路径识别摄像头检测模块

3.3.1 摄像头的选择

用摄像头来识别小车的路径,也可以用红外传感器进行辅佐,因此我们有两种方案可供选择。

方案一:只用摄像头对路径进行检测。摄像头将采集到的画面经过处理以后交给处理器,能够提前对小车前方的赛道进行分析,从而选择最佳的路径,及时调整小车的运行状态。这种方法在小车高速转弯时的优点更加的突出,因为提前预算了行进的路线,转弯时就计算好了控制的方法,弥补了舵机滞后的弱点。但是单独采用摄像头时,采集信息的频率低,而且容易受到光线以及场地的干扰。另外无法对起始位置进行采集。

方案二:用摄像头和红外传感器相结合的方法对路径进行检测。加入红外传感器后,路径的选择受光线和场地的干扰大大降低,弥补了摄像头检测频率不足的缺点,同时红外传感器的电路设计以及软件编写都比较简单。但是红外传感器检测黑线的精度不高,而且检测的距离有限,功耗较大。加重了车身的重量,影响到了小车的启动能力和行进速度。通过理论上的分析以及现场测试,单独使用摄像头完全满足要求,没有必要非得加上红外传感器。

最终我们采用方案一。

摄像头方案的选择:

1.选用CCD 摄像头。采用CCD摄像头时,采集到的图像的质量比较高。其采集到的动态效果和CMOS摄像头采集到的动态效果相比效果也很突出。但是比较两者的功耗,CCD摄像头要高的多,电流为100mA。

2.选用CMOS数字摄像头。CMOS摄像头和CCD相比,其功耗较低,工作

电流只有10mA左右。而且CMOS摄像头采集出来的图像直接转化为数字信号,提高了单片机的处理速度。综上所述,我们决定选用CMOS数字摄像头。

3.3.2 摄像头简介

摄像头有彩色和黑白两类,我们寻找路径时,是提取的图像的灰度信息,彩色图像完全用不到,因此图片的信息输出为黑白的。我们选用的摄像头芯片为OV7620,内部有一个双通道的A/D转换器,A/D转换器是10位的,它的输出是8位的图像数据;能够自动调节白平衡,能够对饱和度、对比度、亮度以及γ校正进行调节[6],可以产生场同步信号[7]。接5V的电源,最大功耗为120mW,最小功耗为10μW。这款摄像头在电脑、手机等很多产品上都可以使用[8]。

3.4 速度检测模块

小车在运行中要保证又快又稳,这不仅要求舵机控制行进的方向,还需要将车速精确的控制在合理的范围之内,这样当小车在转弯时不至于因车速太快而冲出设定的跑道。根据所学的自动控制原理,闭环反馈系统比较稳定,将测得的车速反馈给系统,形成一个闭环系统,从而达到控制车速的目的。测量小车速度一般有以下几种方法:

方案一:霍尔传感器测速。本方法主要是通过安装的霍尔传感器接收脉冲信号来计算实时速度。具体做法是在后轮的轴上安装小型磁铁,小车行驶时,磁铁会产生脉冲。霍尔传感器安装在后轮的附近,行驶时它就会接收磁铁产生的脉冲。

方案二:投射式光电管测速。它的原理是通过采集单位时间内小车后轮上的齿槽数,来计算小车的实时速度,要用到红外光线。但是安装不方便,可靠性不高。

方案三:光电编码器测速。常用的是增量式光电编码器,将编码器的齿轮和小车后轴上的齿轮咬合在一起,小车行驶时带动编码器旋转,编码器就会产生脉冲信号,通过计算单位时间内的脉冲数计算小车行驶速度。

应用光电编码器测量速度不仅安装简单而且输出的信号波形规则,因此本设计方案采用光电编码器测速。在本系统中必须要保证编码器和后轮轴上的齿轮数成正。

3.5 舵机模块

舵机又称伺服电机。它的结构包括电位器、减数器以及电机。减数器的作用是把电机的速度减下来,同时改变电位器的位置,当电位器的电压变为零,电机停止转动,舵机转动的角度是通过电位器来改变的。舵机的信号是系统提供的PWM信号,通过改变占空比来改变舵机的转向。

3.6电源管理模块

电源模块是最基本的模块同时也是电路的最基本部分。本设计选用智能车竞

赛专用多路电源模块,该产品为单路电池输入,多路常用电压输出,可以完全满足智能车各个模块的用电需求。电源性能稳定、结构紧促、尺寸小巧,模块化的设计对于安装方面来说十分灵活。

该车的电池参数为7.2V、2000mAh,可以多次充放电,稳定性好。它的电压不能直接供给各个模块使用,要转换为各模块需要的电压。转换好的电压要进行稳压,这样才能使整个系统稳定,不会因为电压突变影响效果。

3.6.1 3.3V电源

3.3V 主要用于单片机的供电。

在实际的应用中,电机和舵机在刚开始启动或者突然停止时,有时会造成电压突变,给硬件带来损伤,也会影响小车的正常行驶。要使电源稳定,就要安装稳压装置。本设计选用线性稳压装置,因为它的电源纹较小,符合要求。具体选用AMS1117线性稳压芯片。具体电路如图3.7所示。

图3.73.3V电源

3.6.2 5V电源

本设计方案中的编码器和摄像头所需的电压相同,都为5V的电源。我们经常使用的稳压芯片有两种,分别是线性和开关稳压芯片。本设计对摄像头的电源要求比较高,输入的电源纹波必须很小才能符合条件。鉴于开关电源纹波比较大,而线性稳压电源纹波较小,故我们选择使用线性稳压芯片。实际使用中本设计选用 L M2940CT-5 线性稳压芯片。具体电路如图3.8所示。

图3.8 5V电源

4 软件系统的设计与实现

4.1赛道信息的提取

CMOS摄像头采集的赛道信息输出时是黑白图像,图像信息通过8位高速AD转换器TL5510转化为灰度图像,灰度值范围为0~255,灰度图像通过软件构建的二维数组储存起来。一般情况下赛道的颜色和赛道的背景颜色差别很明显,背景颜色一般为蓝色,经过测试,赛道的颜色为白色时其灰度值在110左右,黑色时灰度值在55左右,而蓝色的背景灰度值在75左右。因此,提取赛道左右边沿有两种比较好的方法:一种称为边沿跳变检测法,另一种称为二值化法。

(1)边沿跳变检测法的基本原理是取两个灰度值的差,然后判断差值是不是在给定的值域范围内。举例:白色赛道的灰度值减去黑线的灰度值之差为55左右(灰度值跳变较大),蓝色背景的灰度值减去黑线的灰度值之差为20左右(灰度值跳变较小),就可以把值域范围定在50~60,通过判断灰度值跳变的大小程度即可确定左右边沿的位置。

(2)二值化法

二值化法有两种,一种是固定阈值法和另一种是动态阈值法。

固定阈值法:设定固定的阈值(灰度值),当采集到的灰度信息大于阈值时设定为1,小于设定的阈值时设定为0.这样灰度图像就转化为二值化图像了。

动态阈值法:取二维数组每行的最大和最小值,计算平均值,将平均值设定为这一行的阈值。

理论上动态阈值可随光线的明暗变化自动调整阈值大小,但是在实际操作中只有在直道和弯道上的成像效果好,而在十字路口的成像效果就差强人意了。经过比较,固定阈值二值化更好,它不受赛道光线变化的影响,而且计算简单,占用单片机的资源少,所以最终选择固定阈值二值化法。

4.2 PID算法介绍

在实际的工程中,应用最为广泛的是PID 控制,也可称为PID调节。它是通过控制器进行比例、积分和微分控制。它的算法是闭环控制算法,P为比例控制算法,I为积分控制算法,D为微分控制算法,闭环控制中最基本的算法是比例控制算法,实际运用中可以根据情况分别采用PI、PD和PID算法[13]。

PID控制器发明于上世纪40年代,人们即使不知道被控对象的参数和结构也可根据经验进行调整。本设计选用PID 控制,大大节约了设计的周期,省去了很多复杂的计算,同时也使小车的结构更加的简化,提高了小车的可靠性和稳定性。原理框图如图4.1 所示。

4.1 PID 控制器原理

计算机控制系统中我们要用到数字PID 控制器,它的控制规律公式为:

)()()(k c k r k e -= (4.1)

(4.2)

式中:

k 为采样的序号;k=0,1,2…;r(k)-第k 次给定值;

c(k)-第k 次的实际输出值;u(k)-第k 次输出的控制量;

e(k)-第k 次的偏差;e(k-1)-第k-1次的偏差;

T I -积分时间常数;K P -比例系数;

T-采样周期;T D -微分时间常数。

下面我们介绍的是各个校正环节的作用:

(1) 比例环节:当系统产生偏差时,比例环节会立即做出反应,通过控制比

例加快相应速度,降低稳态误差。但是比例不能过大,因为过大时会使系统产生

振荡,影响系统的稳定性。选择恰当的比例,对PID 控制非常重要。

(2) 积分环节:要提高系统控制的精度,就要加入积分环节,积分控制能够

消除系统的偏差。积分作用强弱取决于积分常数的选定,积分常数越大,积分的

作用就越弱,积分常数越小,积分作用越强。

(3) 微分环节:它的作用是通过计算偏差信号的变化率,不使偏差信号变的

太大。在系统调节的早期加入偏差修正信号,使系统不会出现偏差信号变大的趋

势,从而加快系统的动作速度进,达到减小调节时间的目的。

数字PID 控制算法分为位置式和增量式两种。

4.2.1 位置式 PID

位置式 PID 的控制方式中,执行控制机构是由计算机输出的u(k)直接控制,

u(k)的值与执行机构的位置要相互对应,我们一般选用公式(4.2)作为位置式 PID

控制算法。

[]??????--++=∑=k j D I p k e k e T T j e T T k e K k u 0)1()()()()(

位置式 PID 控制算法是全量输出,每次计算都需要用到以前的数据,需要

对过去的e(k)进行累加,这样就加大了计算机的工作量[9]。执行机构与输出u(k)

对应,如果计算的数据出现了问题就会导致执行机构位置发生较大变化,这种问

题在实践中是不允许出现的,在一些特殊的场合,甚至会产生较为严重的事件。

为了避免出现不必要的问题,将算法改进为增量式PID 控制算法。增量式PID 控

制算法和位置式PID 控制算法的区别是它们的输出不同,增量式PID 控制算法

的输出是△u(k)。

4.2.2 增量式 PID

控制量的增量可由式(4.2)推导出来,先由式(4.2)推导出式(4.3),再用式(4.2)

减去式(4.3)便可得出式(4.4),公式如下:

(4.3) (4.4)

式中)1()()(--=?k e k e k e

增量式PID 控制算法的形式如公式(4.4),在计算机控制系统中它的采样周

期T 是恒定的,通过确定KP 、TI 、TD 和偏差(使用前后三次的测量值),

便可通过(4.4)求出控制增量。

增量式 PID 的优点:

(1)切换时的冲击力小(切换方式包括手动/自动切换),可以实现无忧扰动

切换。因为输出通道和系统的执行装置可以把信号进行锁存,所以当计算机出现

问题时,能够保持原有的值。

(2)因为计算机输出的是增量,当出现误动作时对系统的影响较小,可通过逻

辑判断法关掉。

(3)算式中的量不需要累加处理。第k 次的采样值决定控制增量△u(k)的大小,

要获得比较好的效果时,可以通过加权处理得到。

4.2.3 PID 参数整定

PID 控制的关键技术是对KP 、KI 、KD 这几个参数进行调整[10],也就是所

[]

)1()()()(-?-?++?=k e k e K k e K k e k D I P []?

?????---++-=-∑-=10)2()1()()1()1(k j D I P k e k e T T j e T T k e K k u [][]??????-+--++--=?)2()1(2)()()1()()(k e k e k e T T k e T T k e k e K k u D I P I

p I T T

K K =T T K K D p D =

谓的参数整定。PID参数整定的方法有两类。一种称为理论计算整定法,它的原理是根据给定的系统数学模型,通过理论上的计算来确定控制器的参数。另一种称为工程整定方法,它的原理比较简单,主要是根据工程的经验,在实验中操作中进行调整,此类方法简单并且易于掌握,在实际工程中被广泛应用。智能车系统不仅是机电高耦合的分布式系统,而且受赛道具体环境的影响大,在实际操作时很难建立一个高精密的数学模型,同时小车的机械结构需要不时的修正,模型的参数也需要相应的改变,理论计算整定法不切合实际,故选用工程整定法。4.3转向舵机的控制方法

4.3.1 舵机的工作原理

PWM信号通过接收通道,传入到解调电路,解调电路对其进行解调,从而获得直流偏置电压。将电位器的电压和直流偏置电压相比较,两者得出一个电压差,将这个电压差交给电机驱动集成电路,用它来控制电动机的正反转[11]。电动机的转速是一定的,电位器是靠级联减速齿轮进行调整,当电压差调整成0时,电动机便停止转动[12]。PWM信号是舵机的控制信号,舵机位置的改变是通过占空比的变化而变化。

舵机的直流电动机和控制线路由电源线和地线来提供电源。这里需要的电源是3.3V[14]。控制线的作用是提供一个方波脉冲信号,该脉冲信号的宽度可调且是周期性方波,方波信号的频率为50Hz。舵机转轴的角度随着方波脉冲宽度改变而改变,它们俩成正比例关系。

4.3.2 舵机的PID 控制

对于舵机的控制,我们采用PID闭环控制,提取图像黑线然后求得平均值,平均值和舵机PID的参考角度值形成一次线性关系[15]。当偏离中心线很小时,可以将Kp的值设置的小一些,几乎接近0,为了使赛车行驶时更加的稳定,在直道上时可以有一定的修正功能,所以没有直接设置成0。车子在直道上行驶时基本上是直线加速状态,车身左右抖动比较小。

5 开发平台介绍

5.1 IAR Embedded Workbench IDE简介

IAR Systems公司为ARM微处理器专门研发了IAR Embedded Workbench for ARM集成开发环境。和其它开发环境相比较,IAR Embedded Workbench for ARM入门更加容易、使用更加方便、代码也更加紧凑。

在嵌入式IAR Embedded Workbench IDE的框架里,它能够允许任何可用的工具完美的嵌入其中,以下为嵌入的工具:

1.A VR IAR汇编器;

2.IAR XAR库创建器和IAR XLIB Librarian;

3.高度优化的IAR A VR C/C++编译器;

4.一个工程管理器;

5.一个强大的编辑器;

6.一个具有世界先进水平的高级语言调试器;

7.高度优化的IAR A VR C/C++编译器;

8.通用IAR XLINK Linker;

5.2 IAR Embedded Workbench的功能及特点

嵌入式IAR Embedded Workbench适用的微控制器和微处理器有8位、16 位以及32 位,因此,用户即使是开发新的项目,开发环境也是以前熟悉的环境。它的开发环境用户学起来比较容易上手,具有最大量的代码继承能力,可以支持大多数甚至一些特殊的目标。嵌入式IAR Embedded Workbench不仅有效提高了用户的工作效率,而且通过使用IAR工具,大大节省了用户的工作时间。我们称这种理念为不同构架下的同一解决方案。

IAR Embedded Workbench 操作界面不仅非常简洁而且工具栏的布局也非常合理清晰,运用不同的功能也非常的方便。IAR Embedded Workbench开发环境可以很好的兼容Freescale公司生产的K60系列处理器。具体的操作界面如下图5.1 所示。

飞思卡尔单片机问题总结

飞思卡尔单片机问题总结 常见问题回答精华列表 为了方便网友查询相关问题,特将常见问题精华帖整理归类 本帖不断更新,欢迎网友们给出建议 另外,在提问时,请在标题中选用具体问题的字眼避免使用请问某某、请教、紧急求助等作为标题。对于具体器件,可以直接把器件类型写上,比如HC08QY4等;对于具体技术,比如CAN/LIN/ZigBee等也直接写明,便于版主分类回答,也便于其他网友查询。 一、flash/EEPROM的操作 Tips: a、HC08系列MCU中,很多Monitor ROM中固化了对flash操作的函数,用户只需调用即可,参考AN2874等应用笔记 b、HCS08系列和HCS12系列MCU对flash的操作十分类似,可以参考 AN2140 1、FLASH操作函数 (HCS08系列)

https://www.doczj.com/doc/8d3139167.html,/dispbbs.asp?boardID=3&RootID=111907&ID= 111907 2、如何将flash中的程序copy至ram中 https://www.doczj.com/doc/8d3139167.html,/dispbbs.asp?boardID=3&RootID=104074&ID= 104074 3、S12内部寄存器的映射 https://www.doczj.com/doc/8d3139167.html,/dispbbs.asp?boardID=3&RootID=103261&ID= 103261 4、S12EEPROM的使用、 INITRG,INITRM,INITEE寄存器的说明https://www.doczj.com/doc/8d3139167.html,/dispbbs.asp?boardID=3&RootID=102260&ID= 102260 5.INITRM寄存器的使用 https://www.doczj.com/doc/8d3139167.html,/dispbbs.asp?boardID=3&RootID=103214&ID= 103214 二、编程技巧

飞思卡尔单片机LED控制例程详解

我的第一个LED程序 准备工作: 硬件:Freescale MC9S08JM60型单片机一块; 软件:集成开发环境codewarrior IDE; 开发板上有两个LED灯,如下图所示: 实验步骤: 1.首先,确保单片机集成开发环境及USBDM驱动正确安装。其中USBDM的安装步骤如下:?假设之前安装过单片机的集成开发环境6.3版本:CW_MCU_V6_3_SE; ?运行USBDM_4_7_0i_Win,这个程序会在c盘的程序文件夹下增加一个目录C:\Program Files\pgo\USBDM 4.7.0,在这个目录下: 1〉C:\ProgramFiles\pgo\USBDM 4.7.0\FlashImages\JMxx下的文件 USBDM_JMxxCLD_V4.sx是下载器的固件文件; 2〉C:\Program Files\pgo\USBDM 4.7.0\USBDM_Drivers\Drivers下有下载器的usb 驱动 所以在插入usb下载器,电脑提示发现新的usb硬件的时候,选择手动指定驱动 安装位置到以上目录即可。 ?运行USBDM_4_7_0i_Win之后,还会在目录: C:\Program Files\Freescale\CodeWarrior for Microcontrollers V6.3\prog\gdi 下增加一些文件,从修改时间上来看,增加了6个文件,这些文件是为了在codewarrior 集成开发环境下对usb下载器的调试、下载的支持。

2.新建一个工程,工程建立过程如下: ?运行单片机集成开发环境codewarrior IDE ?出现如下界面 ●Create New Project :创建一个新项目工程 ●Load Example Project :加载一个示例工程 ●Load Previous Project :加载以前创建过的工程 ●Run Getting started Tutorial:运行CodeWarrior软件帮助文档 ●Start Using CodeWarrior:立刻使用CodeWarrior ?点击Create New project按钮,以创建一个新的工程,出现选择CPU的界面 如下,请选择HCS08/HCS08JM Family/MC9S08JM60,在右边的Connection窗口

飞思卡尔单片机编程

关于Codewarrior 中的 .prm 文件 网上广泛流传的一篇文章讲述的是8位飞思卡尔单片机的内存映射,这几天,研究了一下Codewarrior 5.0 prm文件,基于16位单片机MC9S12XS128,一点心得,和大家分享。有什么错误请指正。 正文: 关于Codewarrior 中的.prm 文件 要讨论单片机的地址映射,就必须要接触.prm文件,本篇的讨论基于Codewarrior 5.0 编译器,单片机采用MC9S12XS128。 通过项目模板建立的新项目中都有一个名字为“project.prm”的文件,位于Project Settings->Linker Files文件夹下。一个标准的基于XS128的.prm文件起始内容如下: .prm文件范例: NAMES END SEGMENTS RAM = READ_WRITE DATA_NEAR 0x2000 TO 0x3FFF;

READ_ONLY DATA_NEAR IBCC_NEAR 0x4000 TO 0x7FFF; ROM_C000 = READ_ONLY DATA_NEAR IBCC_NEAR 0xC000 TO 0xFEFF; //OSVECTORS = READ_ONLY 0xFF10 TO 0xFFFF; EEPROM_00 = READ_ONLY DATA_FAR IBCC_FAR 0x000800 TO 0x000BFF; EEPROM_01 = READ_ONLY DATA_FAR IBCC_FAR 0x010800 TO 0x010BFF; EEPROM_02 = READ_ONLY DATA_FAR IBCC_FAR 0x020800 TO 0x020BFF; EEPROM_03 = READ_ONLY DATA_FAR IBCC_FAR 0x030800 TO 0x030BFF; EEPROM_04 = READ_ONLY DATA_FAR IBCC_FAR 0x040800 TO 0x040BFF; EEPROM_05 = READ_ONLY DATA_FAR IBCC_FAR 0x050800 TO 0x050BFF; EEPROM_06 = READ_ONLY DATA_FAR IBCC_FAR 0x060800 TO 0x060BFF; EEPROM_07 = READ_ONLY DATA_FAR IBCC_FAR 0x070800 TO 0x070BFF; PAGE_F8 = READ_ONLY DATA_FAR IBCC_FAR 0xF88000 TO 0xF8BFFF;

飞思卡尔单片机寄存器及汇编指令详解

附录I:寄存器地址列表 直接页面寄存器总结

高页面寄存器总结

非易失寄存器总结 注:直接页面寄存器表地址的低字节用粗体显示,直接寻址对其访问时,仅写地址低字节即可。第2列中寄存器名用粗体显示以区别右边的位名。有0的单元格表示未用到的位总是读为0,有破折号的单元格表示未用或者保留,对其读不定。

附录II 指令接与寻址方式 HCS08指令集概括 运算符 () = 括号种表示寄存器或存储器位置的内容 ← = 用……加载(读: “得到”) & = 布尔与 | = 布尔或 ⊕= 布尔异或 ×= 乘 ÷ = 除 : = 串联 + = 加 - = 求反(二进制补码) CPU registers A =>累加器 CCR =>条件代码寄存器 H =>索引寄存器,高8位 X => 索引寄存器,低8位 PC =>程序计数器 PCH =>程序计数器,高8位 PCL =>程序计数器,低8位 SP =>堆栈指针 存储器和寻址 M =>一个存储区位置或者绝对值数据,视寻址模式而定 M:M + 0x0001 => 两个连续存储位置的16位值.高8位位于M的地址,低8位位于更高的连续地址. 条件代码寄存器(CCR)位 V => 二进制补码溢出指示,第7位 H => 半进位,第4位 I => 中断屏蔽,第 3位 N => 求反指示器, 第2位 Z => 置零指示器, 第1位 C => 进/借, 第0位 (进位第 7位 ) CCR工作性符号 – => 位不受影响 0 = > 位强制为0 1 = > 位强制为1

= >根据运算结果设置或清除位 U = > 运算后没有定义 机器编码符号 dd =>一个直接寻址0x0000–0x00FF的低8位(高字节假设为0x00) ee => 16位偏移量的高8位 ff => 16位偏移量的低8位 ii => 立即数的一个字节 jj => 16位立即数值的高位字节 kk => 16位立即数值的低位字节 hh => 16位扩展寻址的高位字节 ll => 16位扩展寻址的低位字节 rr => 相对偏移量 n —任何表达范围在0–7之间的一个有符号数的标号或表达式 opr8i —任何一个表达8位立即值的标号或表达式 opr16 —任何一个表达16位立即值的标号或表达式 opr8a —任何一个表达一个8位值的标号或表达式.指令对待这个8位值为直接页面64K 字节地址空间(0x00xx)中地址的低8位. opr16a —任何一个表达16位值的标号或表达式.指令对待这个值为直接页面64K字节地址空间. oprx8 —任何一个表达8位无符号值的标号或表达式,用于索引寻址. oprx16 —任何一个16位值的标号或表达式.因为HCS08有一个16位地址总线,这可以为一个有符号或者无符号值. rel —任何指引在当前指令目标代码最后一个字节之后–128 to +127个字节之内的标号或表达式.汇编器会计算包括当前指令目标代码在内的8位有符号偏移量. 寻址方式 隐含寻址(Inherent)如CLRA,只有操作码,无操作数,需要操作的数据一般为CPU寄存器,因此不需要再去找操作数了。(INH) 立即寻址 (Immediate)如LDA #$0A,“$”表示16进制,此时操作数位于FLASH空间,与程序一起存放。(IMM) 直接寻址 (Direct)如 LDA $88,只能访问$0000-$00FF的存储器空间,指令短速度快; (DIR) 扩展寻址 (Extended)如果操作数地址超出了$00FF,自动为扩展寻址;(EXT) 相对寻址(Relative)如BRA LOOP,指令中一般给出8位有符号数表示的偏移量。(REL) 变址寻址 (Indexed) 采用[H:X]或SP作为指针的间接寻址方式。( IX )( IX1 )( IX2 ) 变址寻址 (Indexed) 1〉无偏移量:CLR ,X 简写(IX) 2〉无偏移量,指令完成后指针加1(H:X = H:X + 0x0001) ,简写(IX+)只用于指令MOV和CBEQ指令中;

基于嵌入式STM32的飞思卡尔智能车设计



飞思卡尔智能车大赛是面向全国大学生举办的应用型比赛, 旨在培养创新精 神、协作精神,提高工程实践能力的科技活动。大赛主要是要求小车自主循迹并 在最短时间内走完整个赛道。针对小车所安装传感器的不同,大赛分为光电组、 电磁组和摄像头组。 本文介绍了本院自动化系第一届大学生智能汽车竟赛的智能车系统。 包括总 体方案设计、机械结构设计、硬件电路设计、软件设计以及系统的调试与分析。 机械结构设计部分主要介绍了对车模的改进,以及舵机随动系统的机械结构。硬 件电路设计部分主要介绍了智能车系统的硬件电路设计, 包括原理图和 PCB 设计 智能车系统的软、 硬件结构及其开发流程。该智能车车模采用学校统一提供的飞 思卡尔车模,系统以 STM32F103C8T6 作为整个系统信息处理和控制命令的核心, 使用激光传感器检测道路信息使小车实现自主循迹的功能
关键字:飞思卡尔智能车STM32F103C8T6
激光传感器
第一章 概述

1.1 专业课程设计题目
基于嵌入式 STM32 的飞思卡尔智能车设计
1.2 专业课程设计的目的与内容
1.2.1 目的 让学生运用所学的计算机、传感器、电子电路、自动控制等知识,在老师的 指导下,结合飞思卡尔智能车的设计独立地开展自动化专业的综合设计与实验, 锻炼学生对实际问题的分析和解决能力,提高工程意识,为以后的毕业设计和今 后从事相关工作打下一定的基础。 1.2.2 内容 本次智能车大赛分为光电组和创新做,我们选择光电组小车完成循迹功能。 该智能车车模采用学校统一提供的飞思卡尔车模, 系统以 STM32F103C8T6 作为整 个系统信息处理和控制命令的核心,我们对系统进行了创造性的优化: 其一, 硬件上采用激光传感器的方案, 软件上采用 keil 开发环境进行调试、 算法、弯道预判。 其二,传感器可以随动跟线,提高了检测范围。 其三,独立设计了控制电路板,充分利用 STM32 单片机现有模块进行编程, 同时拨码开关、状态指示灯等方便了算法调试。
1.3 方案的研讨与制定
1.3.1传感器选择方案 方案一:选用红外管作为赛道信息采集传感器。 由于识别赛道主要是识别黑白两种不同的颜色, 而红外对管恰好就能实现区 分黑白的功能,当红外光照在白色KT板上时,由于赛道的漫反射作用,使得一部 分红外光能反射回来, 让接收管接的输出引脚的电压发生变化,通过采集这个电 压的变化情况来区分红外光点的位置情况,以达到区分赛道与底板的作用。 红外管的优点在于价格便宜,耐用;缺点却用很多:1、红外光线在自然环 境中,无论是室内还是室外均比较常见,就使得其抗干扰能力不强,容易受环境 变化的影响。2、调试不方面,由于红外光是不可见光,调试的时候需要采用比 较麻烦的方法来判断光电的位置。3、由于红外管光线的直线性不好,就使得红 外传感器所能准确的判断的最远距离比较小,也就是通常所说的前瞻不够远。

飞思卡尔智能车摄像头组freescale程序代码

extern int left,w,top,h; extern HDC m_hdc; CBrush brush3(RGB(0,255,0)); CBrush brush4(RGB(255,0,0)); CBrush brush5(RGB(255,255,0)); #else #include #include "math.h" // #include "LQfun.h" #endif #ifdef ccd #define MAX_VIDEO_LINE 39 #define MAX_VIDEO_POINT 187 #else //#define MAX_VIDEO_LINE 26 // #define MAX_VIDEO_POINT 301 #define MAX_VIDEO_LINE 78 #define MAX_VIDEO_POINT 57 #endif extern unsigned char g_VideoImageDate[MAX_VIDEO_LINE][MAX_VIDEO_POINT]; #define INT8U unsigned char #define INT8S signed char #define INT16U unsigned int #define INT16S int #define INT32S int #define NO_DATA_180 254 //#define INT32U unsigned int unsigned char LIMIT=((MAX_VIDEO_POINT)/2); unsigned char MIDDLE[MAX_VIDEO_LINE]; #define MAX_BLACK_NUM 7 INT8S n;

基于飞思卡尔单片机的智能汽车设计毕业设计(论文)

基于飞思卡尔单片机的智能汽车设计 摘要 本智能车系统设计以 MC9S12DG128B 微控制器为核心,通过一个CMOS 摄像头检测模型车的运动位置和运动方向,使用LM1881视频分离芯片对图像进行处理,用光电传感器检测模型车的速度并使用PID 控制算法调节驱动电机的转速和舵机的方向,完成对模型车运动速度和运动方向的闭环控制。为了提高智能车的行驶速度和可靠性,采用了自制的电路板,在性能和重量上有了更大的优势,对比了各种方案的优缺点。实验结果表明,系统设计方案可行 关键词:MC9S12DG128,CMOS 摄像头,PID

The Research of Small and Medium-sized Electric Machines in Fuan City Author:Yao fang Tutor:Ma shuhua Abstract Fujian Fuan City industry of electric motor and electrical equipment is the one of the most representative phenomenon of industry cluster in Fujian Province mechanical industry. Its output value of small and medium-sized electric machines accounts for 20% of the whole province’s electrical equipment indu stry. The output amount of small and medium-sized electric machines from this region takes up 1/3 of that of the whole nation. Fuan electric motor and electrical equipment industry plays a significant role in the development of local national economy, being considered to be the main growth point of local economy and called "the Chinese electric motor and electrical equipment city ". This paper launched a research on small and medium- sized electric machines in Fuan city from two angles. The first one inferred the situation of Fuan electric machine industrial cluster as well as the analysis of the temporary existed problems, and then propose a few of suggestions on the part of local government. The second part focus on the improvement of the competitiveness of Fuan electric machine enterprises, through the application of Michael Porter's Five Forces Model into the local industry of electric machine, consequently carried out some strategies local enterprises should take. Key Words: small and medium-sized electric machines, Five Forces Model, industrial cluster

飞思卡尔单片机知识点

1、单片机组成:1> CPU 2> 存储器3>I/O ; 2、存储器包括2大类:ROM , RAM 3、标准ASCII码使用(1)个字节表示字符; 4、BCD码是用()进制表示的()的数据; 5、HCS08QG8的最小系统包括(电源电路,复位电路,下载口,(内部时钟)); 6、QG8管脚数量(16)、只能输入的是(PTA5)、只能输出的是(PTA4)、程序下载的是、接外部时钟的是; 7、QG8的管脚可以作为数字输入输出、也可以作为模拟输入,可以作为模拟输入的有(); 8、QG8管脚复用优先级最低的功能是(I/O); 9、QG8存储器配置中,不同资源的分界线……; 10、CPU寄存器有(A, HX, PC, CCR, SP); 11、可以执行位操作的地址范围(0X0000~0X005F); 12、有地址的寄存器分成了(3)块(0页,高页,非易失); 13、如何在C语言中定义常数(数据类型变量名;),如何指定变量的地址(数据类型变量名@ 地址;); 14、堆栈的管理者是寄存器(SP); 15、SP的复位缺省值是(0X00FF); 16、堆栈对数据的操作特点是(向上生长型:先压后涨、先减后弹); 17、堆栈一般在RAM的高地址区域还是低地址区域?高地址区 18、内部时钟源包括哪4大部分? 19、外部时钟分哪2大类;振荡器,整形外部时钟 20、内部时钟中FLL固定倍频(512倍频); 21、ICS的7种工作模式(FEI, FEE, FBI, FBILP, FBE, FBELP, stop); 22、ICS的内部参考时钟是可以校准、微调的,调整的寄存器名(ICSTRM);该寄存器的数值越大,输出时钟频率越(低); 23、FLASH是按页管理的,页大小(512)字节,每页分(8)行; 24、高页寄存器位于FLASH的最后一页的(第六行/0xFFB0~0xFFBF)位置; 25、FLASH的最后一页最后一行是(中断向量); 26、FLASH块保护寄存器(FPROT);块加密寄存器(FOPT);对应的非易失寄存器分别是(NVOPT, NVPROT); 27、FLASH操作的一般过程是(); 28、FLASH操作的有效命令有(空检查,字节编程,突发模式编程,页擦除,全部ROM 擦除); 29、记录程序运行状态的CPU寄存器是(CCR); 30、指令系统包括6大类指令,分别是(算术运算指令、数据传送指令、数据和位操作、逻辑运算、程序控制、堆栈处理); 31、寻址方式是指(CPU访问操作数和数据的方法); 32、寻址方式包括7大类16种,分别是: INH IMM DTR EXT IX,IX1,IX2,SP1,SP2,IX+,IX1+ REL IMD, DD,IX+D,DIX+ 33、8指令模板和6指令模板分别是(); 34、QG8是高电平复位还是低电平复位?低电平 35、QG8数据存储器RAM的大小为(512)字节; 36、上电复位期间将管脚(A4)设置为(低)电平可以进入调试模式 37、QG8的存储器结构为冯·诺伊曼还是哈佛结构?冯诺依曼

飞思卡尔 智能车舵机控制

智能车的制作中,看经验来说,舵机的控制是个关键.相比驱动电机的调速,舵机的控制对于智能车的整体速度来说要重要的多. PID算法是个经典的算法,一定要将舵机的PID调好,这样来说即使不进行驱动电机的调速(匀速),也能跑出一个很好的成绩. 机械方面: 从我们的测试上来看,舵机的力矩比较大,完全足以驱动前轮的转向.因此舵机的相应速度就成了关键.怎么增加舵机的响应速度呢?更改舵机的电路?不行,组委会不允许.一个非常有效的办法是更改舵机连接件的长度.我们来看看示意图: 从上图我们能看到,当舵机转动时,左右轮子就发生偏转.很明显,连接件长度增加,就会使舵机转动更小的转角而达到同样的效果.舵机的特点是转动一定的角度需要一定的时间.不如说(只是比喻,没有数据),舵机转动10度需要2ms,那么要使轮子转动同样的角度,增长连接件后就只需要转动5度,那么时间是1ms,就能反应更快了.据经验,这个舵机的连接件还有必要修改.大约增长0.5倍~2倍. 在今年中,有人使用了两个舵机分别控制两个轮子.想法很好.但今年不允许使用了.

接下来就是软件上面的问题了. 这里的软件问题不单单是软件上的问题,因为我们要牵涉到传感器的布局问题.其实,没有人说自己的传感器布局是最好的,但是肯定有最适合你的算法的.比如说,常规的传感器布局是如下图: 这里好像说到了传感器,我们只是略微的一提.上图只是个示意图,意思就是在中心的地方传感器比较的密集,在两边的地方传感器比较的稀疏.这样做是有好处的,大家看车辆在行驶到转弯处的情况: 相信看到这里,大家应该是一目了然了,在转弯的时候,车是偏离跑道的,所以两边比较稀疏还是比较科学的,关于这个,我们将在传感器中在仔细讨论。 在说到接下来的舵机的控制问题,方法比较的多,有人是根据传感器的状态,运用查表法差出舵机应该的转角,这个做法简单,而且具有较好的滤波"效果",能够将错误的传感器状态滤掉;还有人根据计算出来的传感器的中心点(比

飞思卡尔单片机优点

常有人问freescale的单片机有什么优点,今天转篇别人写的文章来,可以部分回答这些朋友的问题,但需要说明的是下面这篇文章主要是针对S08,S12这类单片机说的,飞思卡尔处理器远非只是单片机。飞思卡尔(freescale)半导体公司,就是原来的Motorola公司半导体产品部。于2004年从Motorola分离出来,更名为freescale!freescale系列单片机采用哈佛结构和流水线指令结构,在许多领域内都表现出低成本,高性能的的特点,它的体系结构为产品的开发节省了大量时间。此外freescale提供了多种集成模块和总线接口,可以在不同的系统中更灵活的发挥作用!所有单片机都具有的功能我就不多说了,freescale单片机的特有的特点如下: (1)全系列: 从低端到高端,从8位到32位全系列应有尽有,最近还新推出8位/32位管脚兼容的QE128,可以从8位直接移植到32位,弥补单片机业界8/32 位兼容架构中缺失的一环! (2)多种系统时钟模块:三种模块,七种工作模式 多种时钟源输入选项,不同的mcu具有不同的时钟产生机制,可以是RC振荡器,外部时钟或晶振,也可以是内部时钟,多数CPU同时具有上述三种模块!可以运行在FEI,FEE,FBI,FBILP,FBE,FBELP,STOP这七种工作模式! (3)多种通讯模块接口: 与其它系列的单片机不同,freescale单片机几乎在内部集成各种通信接口模块:包括串行通信接口模块SCI,多主I2C总线模块,串行外围接口模块SPI,MSCAN08控制器模块,通用串行总线模块(USB/PS2)! (4)具有更多的可选模块:某些MCU具有LCD驱动模块,某些MCU带有温度传感器,某些MCU具有超高频发送模块,部分MCu含有同步处理器模块,某写含有同步处理器的MCU 还具有屏幕显示模块OSD,还有少数的MCU具有响铃检测模块RING和双音多频/音调发生器DMG模块! (5)可靠性高,抗干扰性强 (6)低功耗 也许freescale系列的单片机的功耗没有msp430的低,但是他具有全静态的“等待”和“停止”两种模式,从总体上降低您的功耗!新近推出的几款超低功耗已经与msp430的不相上下! (7)多种引脚数和封装选择 可以说freescale系列单片机具有的MCU种类是最多的了,有些MCU本身就有几种不同的引脚数和封装形式,这样用户各异根据需要来选择,总有一款适合你的开发的单片机! 有关于部分人的freescale单片机模块寄存器多,配置困难不容易上手,可以说freescale单片机模块寄存器的确相对多,就拿GPIO来说就有端口数据寄存器、端口数据方向寄存器、端口内部上拉使能寄存器、端口转换率使能寄存器和端口驱动强度选择寄存器5个寄存器,它的寄存器多是为了解决客户对IO端口的高要求和高可靠性要求,如果不考虑这些,您就只需要配置端口数据寄存器、端口数据方向寄存器这两个寄存器,这就和其他的单片机如430和pic 的难易度一样了! 独有的BDM仿真开发方式和单一引脚用于模态选择和背景通信,HCS08 的开发支持系统包括了背景调试控制器(BDC)和片内调试模块(DBG),BDC提供了一个至目标MCU 的单线调试接口,也就是提供了一个便于在片内FLASH 或其它固定存储器编程的接口.

飞思卡尔智能车电机

3.1.6驱动电机介绍 驱动电机采用直流伺服电机,我们在此选用的是RS-380SH型号的伺服电机,这是因为直流伺服电机具有优良的速度控制性能,它输出较大的转矩,直接拖动负载运行,同时它又受控制信号的直接控制进行转速调节。在很多方面有优越性,具体来说,它具有以下优点: (1)具有较大的转矩,以克服传动装置的摩擦转矩和负载转矩。 (2)调速范围宽,高精度,机械特性及调节特性线性好,且运行速度平稳。 (3)具有快速响应能力,可以适应复杂的速度变化。 (4)电机的负载特性硬,有较大的过载能力,确保运行速度不受负载 冲击的影响。 (5)可以长时间地处于停转状态而不会烧毁电机,一般电机不能长时间 运行于停转状态,电机长时间停转时,稳定温升不超过允许值时输 出的最大堵转转矩称为连续堵转转矩,相应的电枢电流为连续堵转 电流。 图为该伺服电机的结构图。图是此伺服电机的性能曲线。

图伺服电机的结构图 图伺服电机的性能曲线 3.1.7 舵机介绍 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图所示。图为舵机的控制线。

图舵机控制要求 图舵机的控制线 控制线输入一个周期性的正向脉冲信号,这个周期性脉冲信号的高电平时间通常在1ms-2ms之间。而低电平时间应在5ms到20ms间,并不很严格。下表表示出一个典型的20ms周期性脉冲的正脉冲宽度与微型伺服马达的输出臂的位置的关系:

飞思卡尔智能车电机

飞思卡尔智能车电机公司内部档案编码:[OPPTR-OPPT28-OPPTL98-OPPNN08]

3.1.6驱动电机介绍 驱动电机采用直流伺服电机,我们在此选用的是RS-380SH型号的伺服电机,这是因为直流伺服电机具有优良的速度控制性能,它输出较大的转矩,直接拖动负载运行,同时它又受控制信号的直接控制进行转速调节。在很多方面有优越性,具体来说,它具有以下优点: (1)具有较大的转矩,以克服传动装置的摩擦转矩和负载转矩。 (2)调速范围宽,高精度,机械特性及调节特性线性好,且运行速度平稳。 (3)具有快速响应能力,可以适应复杂的速度变化。 (4)电机的负载特性硬,有较大的过载能力,确保运行速度不受负载 冲击的影响。 (5)可以长时间地处于停转状态而不会烧毁电机,一般电机不能长时 间运行于停转状态,电机长时间停转时,稳定温升不超过允许值 时输出的最大堵转转矩称为连续堵转转矩,相应的电枢电流为连 续堵转电流。 图为该伺服电机的结构图。图是此伺服电机的性能曲线。

图伺服电机的结构图 图伺服电机的性能曲线 3.1.7 舵机介绍 舵机是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。其工作原理是:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为 20ms,宽度为的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制信号是PWM信号,利用占空比的变化改变舵机的位置。一般舵机的控制要求如图所示。图为舵机的控制线。

基于飞思卡尔单片机自动循迹小车控制的设计

摘要 随着我国的电子科技的不断发展,我们生活中的自动化设备越来越多,也为嵌入式在智能化上的研究提供了一个广阔的平台。 本系统以MK60DN512VMD100微控制器为核心控制单元,选用OV7620 CMOS 模拟摄像头检测赛道信息,高速AD转换芯片选用TCL5510,将提取后的灰度图像进行软件二值化,进而提取赛道信息;用光电编码器实时检测小车的实时速度,采用PID控制算法调节电机的速度以及舵机转向,从而实现速度和方向的闭环控制。 关键字:MK60DN512VMD100,OV7620 CMOS,软件二值化,PID

Abstract With the continuous development of electronic technology, more and more automation equipment into the production life of the people, the rapid development of embedded intelligent study provides a broader platform. In this paper, the design of intelligent vehicle system MK60DN512VMD100 microcontroller as the core control unit, the selection of OV7620 CMOSanalog cameras to detect the track information, to using TCL5510 high-speed AD converter chip, software binarization image, extract the white guide line for identification of the track information; optical encoder to detect the real-time speed of the model car, using the PID control algorithm to adjust the speed of the drive motor and steering the angle of the steering gear, in order to achieve closed-loop control of velocity and direction of the model car. Keywords: MK60DN512VMD100,OV7620 CMOS,software binarization, PID

飞思卡尔单片机各种功能程序

流水灯四种效果: #include /* common defines and macros */ #include #include /* derivative information */ #pragma LINK_INFO DERIV ATIVE "mc9s12xdp512" #include "main_asm.h" /* interface to the assembly module */ unsigned char temp; //unsigned char pa @0x200; //unsigned char pb @0x202; unsigned char key; static void delay(void) { volatile unsigned long i; for(i=0;i<100000;i++); } static unsigned char random; static void Random(void) { random = (unsigned char)rand(); } void effect1() { unsigned char c; for(c=0;c<=6;c++) { delay(); PORTB = ~(1<=1;c--) { delay(); PORTB = ~(1<=1;c--) {

飞思卡尔智能车简介

智能车制作 F R E E S C A L E 学院:信息工程学院 班级:电气工程及其自动化132 学号:6101113078 姓名:李瑞欣 目录: 1. 整体概述 2.单片机介绍 3.C语言 4.智能车队的三个组 5.我对这门课的建议

一、整体概述 智能车的制作过程包括理论设计、实际制作、整车调试、现场比赛等环节,要求学生组成团队,协同工作。内容涵盖自动控制、模式识别、传感技术、电子、电气、计算机、机械与汽车等多学科多专业。 下面是一个智能车的模块分布: 总的来说智能车有六大模块:信号输入模块、控制输出模块、数据处理模块、信息显示模块、信息发送模块、异常处理模块。 1、信号输入模块: 智能车通过传感器获知赛道上的路况信息(直道,弯道,山坡,障碍物等),同时也通过传感器获取智能车自身的信息(车速,电磁电量等)。这些数据构成了智能车软件系统(大脑)的信息来源,软件系统依靠这些数据,改变智能车的运行状态,保证其在最短的时间内按照规定跑完整个赛道。 2、控制输出模块: 智能车在赛道上依靠转向机构(舵机)和动力机构(电机)来控制运行状态,这也是智能车最主要的模块,这个模块的好坏直接决定了你的比赛成绩。 电机和舵机都是通过PWM控制的,因此我们的软件系统需要根据已有的信息进行分析计算得到一个合适的输出数据(占空比)来控制电机和舵机。 3数据处理模块: 主要是对电感、编码器、干簧管的数据处理。信号输入模块得到的数据非常原始,有杂波。基本上是不能直接用来计算的。因此需要有信号处理模块对采集的数据进行处理,得到可用的数据。 4信息显示模块: 智能车调试过程中,用显示器来显示智能车的部分信息,判断智能车是否正常运行。正式比赛过程中可关闭。主流的显示器有:Nokia 5110 ,OLED模块等,需要进行驱动移植。

飞思卡尔--智能车传感器的排布

4.1光感器的路径精确识别技术 在智能车系统中,光电(激光)传感器就是整个系统的“眼睛”,其对于路径的识别在控制系统中尤为重要。 4.1.1 光电传感器路径识别状态分析 由于往届竞赛对光电传感器排布方式研究已经比较深入,传统的“一”字型排布方式在众多排布方式中效果显著,是最常用的一种排布方式。模型车也充分利用了往年的成熟的传感器技术,其排布方式如图5.1。 图4.1 模型车激光传感器一字排布图 对于我们模型车,传感器在赛道上可能的状态有:在普通的赛道处、在起点处、在十字交叉线处,分别如下图(并未列出所有的状态图),下面将分别进行分析。

图4.2激光传感器在普通赛道上 图4.3 激光传器在起点处 图4.4 激光传感器在十字交叉线处 为了识别赛车是处于什么样状态下,用于进行赛道记忆

和速度控制,对于我们的数字型激光传感器,每个传感器只有0与1 两种状态,我们分别把14路传感器标记为1到14号传感器,每个传感器又可以对应一个是否在黑线上的标志位,分别为Sen_Flag[0]到Sen_Flag[13],相应在黑线上为1,不在黑线上为0,从而通过对任一时刻传感器标志位的读取就可以知道此时模型车的状态。 为了精确地识别起跑线和十字交叉线,在程序设计时还定义了一个名为Sen_ChangeCount的变量,表示传感器状态变化(由1变为0和由0变为1)的次数。 从上面的传感器状态图中可以轻松看出,在普通赛道上出除了赛车移出赛道之外传感器变化次数都为2次,而在起跑线处模型车的传感器状态变化次数为4次,在十字交叉线时传感器状态变化次数为0次。 为了进一步把各种状态分开,在程序中还定义了变量Sen_FlagCount,用于统计所有传感器状态标志位之和,即在黑线上的传感器的数目。结合以上几个变量,就可以准确地分清各个传感器状态了。各个传感器状态如下表: 表4.1 传感器状态判定表 模型车状态Sen_ChangeC ount Sen_FlagCoun t 起跑线处 4 >=8且<=11 十字交叉线处0 =14

毕业论文--基于飞思卡尔单片机的智能车设计(含外文翻译)

毕业设计(论文)任务书 课题名称:基于飞思卡尔单片机的智能车设计 完成期限:2009年12月 1日至2010年 5月 10日

一、课题训练内容 通过以全国大学生“飞思卡尔”杯智能车竞赛为背景,设计一台能够自主循迹的小车。整个开发中,严格执行“飞思卡尔”杯智能车竞赛的比赛规则。 二、设计(论文)任务和要求 (1)查阅课题相关参考文献、技术资料,做好备份,以便以后查找; (2)充分分析相关素材,比较多个方案,选择一种完成设计任务; (3)分析和选取完成任务的技术途径和实施方法,第四周前上交毕业设计开题报 告一份。开题报告内容与学校模板要求一致,字数不少于2000字;经指导老师检查合格后才能进行后续工作; (4)补充必要的理论和技术知识,查找相关的元件、器件的参数资料; (5)给出详细的系统设计说明书,画出原理电路图,分析各部分电路功能及原理; (6)根据系统要求,进行硬件设计以及理论数据计算,给出相关参数; (7)根据系统要求,给出系统控制的流程图,编写详细程序; (8)根据系统要求,制作实物和安装调试; (9)撰写毕业设计论文,内容和格式按学校要求执行,(具体要求在学校教务网 的下载专区下载:设计论文规范、格式模板、任务书、开题报告、成绩记录等9个文件)。 三、毕业设计(论文)主要参数及主要参考资料 主要参数: (1)赛道为普通白色板,宽度为60cm,赛道正中间为2.5cm的黑色普通胶带, 铺设赛道地板颜色不作要求,它和赛道之间可以但不一定有颜色差别, 跑道最小曲率半径不小于 50 厘米,跑道可以交叉,交叉角为90 °, 赛道有一个长为1米的出发区,计时起始点两边分别有一个长度10厘米 黑色计时起始线,赛车前端通过起始线作为比赛计时开始或者结束时刻。 (2)须采用飞思卡尔半导体公司的 8 位、 16 位处理器 ( 单核 ) 作为唯一 的微控制器,推荐使用 9S12XS128 ,9S08AW60 微控制器; (3)比赛车模采用官方规定的本成品车模; (4)模型车的电源采用官方的7.2V/2000mA的电池,舵机采用制定的s3010;

飞思卡尔智能车比赛个人经验总结

先静下心来看几篇技术报告,可以是几个人一起看,边看边讨论,大致了解智能车制作的过程及所要完成的任务。 看完报告之后,对智能车也有了大概的了解,其实总结起来,要完成的任务也很简单,即输入模块——控制——输出。 (1)输入模块:各种传感器(光电,电磁,摄像头),原理不同,但功能都一样,都是用来采集赛道的信息。这里面就包含各种传感器的原理,选用,传感器电路的连接,还有传感器的安装、传感器的抗干扰等等需要大家去解决的问题。 (2)控制模块:传感器得到了我们想要的信息,进行相应的AD转换后,就把它输入到单片机中,单片机负责对信息的处理,如除噪,筛选合适的点等等,然后对不同的赛道信息做出相应的控制,这也是智能车制作过程中最为艰难的过程,要想出一个可行而又高效的算法,确实不是一件容易的事。这里面就涉及到单片机的知识、C语言知识和一定的控制算法,有时为了更直观地动态控制,还得加入串口发送和接收程序等等。 (3)输出模块:好的算法,只有通过实验证明才能算是真正的好算法。经过分析控制,单片机做出了相应的判断,就得把控制信号输出给电机(控制速度)和舵机(控制方向),所以就得对电机和舵机模块进行学习和掌握,还有实现精确有效地控制,又得加入闭环控制,PID算法。 明确了任务后,也有了较为清晰的控制思路,接下来就着手弄懂每一个模块。虽然看似简单,但实现起来非常得不容易,这里面要求掌握电路的知识,基本的机械硬件结构知识和单片机、编程等计算机知识。最最困难的是,在做的过程中会遇到很多想得到以及想不到的事情发生,一定得细心地发现问题,并想办法解决这些问题。 兴趣是首要的,除此之外,一定要花充足的时间和精力在上面,毕竟,有付出就会有收获,最后要明确分工和规划好进度。

相关主题
文本预览
相关文档 最新文档