智能小车软件设计部分

智能小车软件设计部分
智能小车软件设计部分

摘要:智能小车是各类电子竞赛的经典题目。本项目在现有的玩具小车的基础上加装各类传感器及微处理器,实现对路况的识别及小车的控制,并最终实现智能小车电路板的开发设计,完成一套完整的自设计智能小车体系。本论文主要叙述1.)智能玩具小车控制板的电机驱动模块的原理图设计及调试。电机驱动控制模块是整个控制板的核心内容,主要涉及到电机方向控制单元和速度控制单元两大部分。方向控制单元负责小车电机的正转、反转和停止三态控制,速度控制单元是扩展单元,是为了适应不同的场合需求而设置的。2.)着重讨论智能小车辅助设备的原理与运用,包括摄像头设备(ET21X111),霍尔传感器(A3144),光电对管(TCRT5000),LCD 液晶屏幕(RT1602C)等。3.)本文主要论述智能玩具小车控制板的无线通信模块的原理图设计及调试。无线通信模块是智能玩具小车得以实现智能化的重要因素,电脑通过架设在场地上的摄像头,处理得到的数据,同时把控制小车的指令通过无线通信模块传送给小车,达到控制小车的目的。4.)智能玩具小车控制的总后台,即电脑的图象处理程序。图象处理是整个控制的核心内容,主要涉及到小车方向控制和速度控制两大部,它首先判断小车和目标的相对位置,然后通过无限芯片发送不同的指令来控制小车的行动路线。

关键词:智能玩具小车,电机驱动模块,方向控制,速度控制,摄像头,霍尔传感器,光电对管,LCD 液晶屏幕,无线通信,图象处理

1. 系统总述

1.1 系统组成

图1.1.1 智能玩具小车系统组成示意图

单片机

路线/转速检测

电动机驱动

路况检测

无线传输

LCD 显示

电脑处理

5

2. 系统的主要功能

2.1 单片机子系统

通过无线传输设备接收电脑输出的命令并执行;连接电动机进行简单转速控制运算;进行小范围内路线自动控制;输出当前状态至LCD 显示。本系统采用ATS9852 芯片。

2.2 电动机驱动子系统

采用两步进电机,接收来自单片机信号,通过电机前后转动组合实现小车前向、后向以及左右运动。

2.3 路线/转速检测子系统

利用光电对管对小车进行自动路线纠正;利用霍尔传感器进行小车速度检测并反馈到单片机内进行小范围内速度调控。

2.4 LCD 显示子系统

从单片机获取当前小车动态数据以数字形式在LCD 屏幕显示,方便实时监控小车状态并检测调试。本系统采用RC1602C LCD 屏幕显示。

2.5 无线传输子系统

接收来自电脑处理所得的命令并发送到单片机。本系统采用ET13X330/ET3X340 无限发送接收模块。

2.6 电脑处理子系统

接收摄像头路况图像并进行处理,将处理后命令通过无线模块发送至单片机执行。

2.7 路况检测子系统

利用连接到电脑上的摄像头进行路况摄像,所得图像经电脑处理成为小车控制命令。本系统采用ET21X111 摄像头。

6

3. 主系统的硬件设计

3.1 主要功能及设计目标

将电动机驱动电路以及单片7 机控制电路整合在同一电路中,实现单片机对小车的基本操作,包括前后运动以及左右转向。

3.2 电路设计方案

图3.2.1 电路设计方案图

7

4. 电动机驱动电路的设计

4.1 H 桥电路简介

下面详细地介绍一下H 桥的工作原理:众所周知H 桥有四个臂分别为B1、B2、B3、B4,分别对应图4.1.1 中的Q2、Q3、Q7、Q8。四个臂分为两组Q2、Q3 和Q7、Q8,每一组的两个臂都是同时导通,同时关断的。如果让Q2、Q3 导通Q7、Q8 关断,电流会流经Q3、负载、Q2 组成的回路,加在负载Load 两端的电压左正右负,如图 4.1.2 所示,此时电机正转;如果让Q7、Q8 导通Q2、Q3 关断,电流会流经Q8、负载、Q7 组成的回路,加在负载Load 两端的电压为左负右正,此时电机反转,对应图4.1.3 所示。另外如果让Q2、Q3 关断Q7、Q8 也关断,负载Load 两端悬空,此时电机停转。这样就实现了电机的正转、反转、停止三态控制。

图4.1.1 图4.1.2 由于Q2、Q3,Q7、Q8 的导通和关断是通过Q1、Q6 控制,而Q1、Q6 的导通和关断又是通过MOT1(IOB10)、MOT2(IOB11)控制的,所以电机的状态还是通过I/O 端口来控制的。表2.1 描述了IOB10 和IOB11 所控制电机运行状态与端口数据的对应关系

注意:由H 桥的工作原理可知,H 桥的四个臂不能同时导通,一旦四个臂同时导通会出现类似短路的现象,在H 桥的每一个臂上都会有很大的电流流过。如图 4.1.3,Q2、Q3、Q7、Q8 同时导通时,就会形成Q3、Q7 回路和Q2、Q8 回路,就会有很大的电流经过这4 个三极管,严重时会烧毁三极管甚至引起电源爆

8

图4.1.3

以上分析的是两个H 桥电路的其中之一,另外一个H 桥的电路结构和工作原理是完全一样,在这里就不再赘述。小车的运动是靠轮子带动的,而轮子的转动是靠电机带动的,所以在确定了电机的运行状态之后就能够推断出小车的运行状态。下面是小车运行状态与61 板端口数值对照表(表2.2):

4.2 H 桥电路的保护电路设计

为了避免出现上述情况,我们设计了以下逻辑电路(图4.1.4),从而避免了出现四个臂同时导通的情况。

图8.2.2 RT1602C 数据传输时序图

8.3 RT1602C 基本操作程序

//LCD 初始化程序void LCD_INIT (void) { OUTI (0X38); //设接口数据位数(DL),显示行数(L),及字型(F) delay (60); OUTI (0X38); //设接口数据位数(DL),显示行数(L),及字型(F) delay (50); OUTI (0X38); //设接口数据位数(DL),显示行数(L),及字型(F) delay (50); OUTI (0X38); //设接口数据位数(DL),显示行数(L),及字型(F) delay (50); OUTI (0X0F); //设整体显示开关(D),光标开关(C),及光标位的字符闪耀(B) delay (50); OUTI (0X01); //清屏指令delay (50); OUTI (0X06); //设光标移动方向并指定整体显示是否移动delay (50); OUTI (0X80); //设DDRAM地址,设置后DDRAM数据被发送和接收delay (50); }

//重定义std 库内putchar,以printf 调用char putchar (char c) { static unsigned char flag = 0; if (!flag || c == 255) { OUTI (0x80); flag = 0;

21

if (c == 255) { return c; } } if (flag == 16) { OUTI (0x80 + 0x40); } OUTD (c); // 送一个字符显示_nop_ (); flag++; // increment the line flag if (flag >= 32) { flag = 0; } // 显示完之后清除return(c); }

//时延函数void delay (unsigned char time) { unsigned char i; for (; time > 0; time--) { for (i = 0; i<=100;i++) _nop_ (); } }

//命令执行命令void BWriteCommand () { pc8255 = 0x00;//写命令pc8255 = 0x04;//读忙,E 为1 _nop_ (); pc8255 = 0x00;//读入数据,执行命令}

//数据写入命令void BWriteData () { pc8255 = 0x01;//写数据pc8255 = 0x05;//读入数据,执行命令_nop_ (); pc8255 = 0x01;//读忙,E 为1 }

//命令行输出void OUTI (unsigned char oi) { pb8255 = oi; BWriteCommand (); _nop_ (); _nop_ (); pc8255 = 0x02;//读忙}

22

//数据行输出void OUTD (unsigned char od) { pb8255 = od; BWriteData (); _nop_ (); _nop_ (); pc8255 = 0x02;//读忙}

23

9. ET13X330 无线通信芯片的原理与使用

2.1.1 功能描述

The ET13X330 is a CMOS integrated circuit intend for use as a low-cost AM/ASK receiver. The device is provided in 24-pin SSOP package and is designed to provide a phased locked frequency source for use in local oscillator or transmitter applications. The chip integrated VCO, phase detector, percale, LNA,MIXER,IF amplifier, peak detector data decision and reference oscillator require only the addition of an external crystal to provide a complete phase-locked loop. The ET13X330 is a of low-power RF receiver IC’s that was developed for wireless data communication devices operating in the European 433MHZ ISM bands or U.S.315MHZ ISM band. The ET13X330 realize a highly integrated, single-conversion ASK/OOK receiver with the addition of a reference crystal, and a few passive components. The LNA input of the chip is easily matched to a front-end filter or antenna by means of a DC blocking capacitor and reactive

components . The local oscillator generated by an internal VCO.PLL and phase detector, loop filter and VCO resonator components and external reference crystal. The receiver IF section is optimized with external 10.7MHZ ceramic 10.7MHZ,where , after external band-pass filtering, most of the amplification is done, The IF outputs is driven by a source-follower, based to create a driving impedance of 3300 to interface with an off-chip 3300 10.7MHZ ceramic IF filter.

2.1.2 芯片框图

24

2.2无线通信模块部分调试程序源代码

#include

sbit m1=P1^0; sbit m2=P1^1; sbit m3=P1^2; sbit m4=P1^3;

unsigned char recv = 'c';

unsigned int buf1; unsigned int buf2;

void play() { m1 = 1; m2 = 1; for( buf1 = 0;buf1 < 255;buf1 ++ ) { for( buf2 = 0;buf2 < 255;buf2 ++ ) { } } m1 = 0; m2 = 0; for( buf1 = 0;buf1 < 255;buf1 ++ ) { for( buf2 = 0;buf2 < 255;buf2 ++ ) { } } }

void main() { SM0 = 0; SM1 = 1; REN = 1;

25

PCON=PCON&0x7f;

TMOD = 0x20; TH1 = 0xA0; TL1 = 0xA0; TR1 = 1;

m1 = 0; m2 = 0; m3 = 0; m4 = 0;

play(); play(); play();

while(1) { SBUF = 'K'; RI = 0; while( RI == 0 ); recv = SBUF; if( recv == 'a' ) { m1 = 0; m2 = 0; m3 = 0; m4 = 0; } if( recv == 'b' ) { m1 = 1; m2 = 1; m3 = 1; m4 = 1; }

if( recv == 'c' ) { m1 = 0; m2 = 1; m3 = 0;

26

m4 = 1; }

if( recv == 'd' ) { m1 = 1; m2 = 0; m3 = 1; m4 = 0; } /* TI = 0; SBUF = recv; while( TI == 0 ); */ } }

27

10. 图像处理技术的原理和应用

10.1 图象处理简介

下面详细地介绍一下图象处理程序的设计原理:首先,我们要通过摄像头获取图象,然后才能处理图象,Matlab 中能够非常容易的实现图象的获取:vidobj = videoinput('winvideo', 1, 'RGB24_320X240'); preview(vidobj); pause(1);% make the image more clear background=getsnapshot(vidobj); 建立一个视频流对象后vidobj,应用getsnapshot()函数就能获取当前视频的画面,并以图象的形式存储到了background 中,以便对图象进行处理。

其次,我们要识别小车,就要检测其边缘并提取轮廓,因此下面用一些例子简要分析一下图象的边缘检测与轮廓提取原理以及方法。1.边沿检测:这种程序就是一种边沿检测器,它

在数学上的涵义是一种基于梯度的滤波器,又称边沿算子,你没有必要知道梯度的确切涵义,只要有这个概念就可以了。梯度是有方向的,和边沿的方向总是正交(垂直)的,例如,对于图象,边是水平方向的,我们

可以用梯度是垂直方向的模板检测它的边沿,这里矩阵作为模板其实是实现了一个离散函数的梯度计算,在Matlab 中可以方便的实现矩阵的运算,这也是我们选择matlab 作为开发软件的原因之一。

Sobel 算子在边沿检测中,常用的一种模板是sobel 算子。有两个,一个是检测水平边沿的.一个是检测竖直平边沿的。与和相比,sobel 算子对于像素的位置的影响做了加权,因此效果更好。Sobel 算子另一种形式是Isotropic Sobel 算子,也有两个,一个是检测水平边沿的,一个是检测竖直平边沿的。Isotropic Sobel 算子又称各向同性的Sobel 算子。和普通Sobel 算子相比,它的位置加权系数更为准确,在检测不同方向的边沿时梯度的幅度一致。

28

图10.1. 原图

图10.2 普通Sobel 算子处理后的结果图

图10.3 各向同性Sobel 算子处理后的结果图

上面的几幅图中,图1 为原图,图2 为普通Sobel 算子处理后的结果图,图3 为各向同性Sobel 算子处理后的结果图,可以看出Sobel 算子确实把图象中的边沿提取了出来。

高斯拉普拉斯算子由于噪声点(灰度与周围点相差很大的点)对边沿检测有一定的影响,所以效果更好的边沿检测器是高斯拉普拉斯(LOG)算子。先平滑掉噪声,再进行边沿检测,所以效果会更好。

29

常用的LOG 算子是5*5 的模板,如下所示。到中心点的距离与位置加权系数的关系用曲线表示为:

图10.4 LOG 到中心点的距离与位置加权系数的关系曲线是不是很象一顶墨西哥草帽?所以,LOG 又叫墨西哥草帽滤波器。下图为图5 用LOG 滤波器处理后的结果。

图10.5 用LOG 滤波器处理后的结果图

2. 轮廓提取轮廓提取如下图所示:

30

图10.6 原图

图10.7 轮廓提取

轮廓提取的算法非常简单,就是掏空内部点:如果原图中有一点为黑,且它的8 个相邻点都是黑色时(此时该点是内部点),则将该点删除。要注意的是,我们处理的虽然是二值图,但实际上是256 级灰度图,不过只用到了0 和255 两种颜色。

3. 轮廓跟踪轮廓跟踪,顾名思义就是通过顺序找出边缘点来跟踪出边界。图10.6 经轮廓跟踪后得到的结果如图10.8 所示

图10.8 轮廓跟踪后的结果一个简单二值图象闭合边界的轮廓跟踪算法很简单:首先按从上到下,从左到右的顺序搜索,找到的第一个黑点一定是最左上方的边界点,记为A。它的右,右下,下,左下四个邻点中至少

31

有一个是边界点,记为B。从开始B 找起,按右,右上,上,左上,左,左下,下,右下的顺序找相邻点中的边界点C。如果 C 就是A 点,则表明已经转了一圈,程序结束。否则从C 点继续找,直到找到 A 为止。判断是不是边界点很容易:如果它的上下左右四个邻居都是黑点则不是边界点,否则是边界点。

上述三个图象处理步骤描述了图象处理的基本过程,我们在调试中用的是小车撞击乒乓÷球,因此我们只需要识别小车与乒乓球,同时为了简化程序,我们还在小车上装设了标志,用来识别小车。并且在图象处理程序中我们首先进行了滤波,消除干扰因素,然后正确判断小车与乒乓球的相对位置。我们一共用到如下的几个函数:FindLastRed:用来找到小车上的标记的坐标的函数Isroundred:用来进一步确认真正的标记的函数(考虑到干扰因素)FindLastYellow:用来找到乒乓球的坐标的函数Isround:用来进一步确认真正的乒乓球坐标的函数(考虑到干扰因素)Position:用来根据小车标记和乒乓球的坐标给出相应的位置信息的函数。Travel:相当于主函数,用来实时的从视频流获取图象并调用子函数处理图象,返回控制信息的函数。

10.2 图像处理算法软件实现

最终程序如下:function [ox,oy,r] =FindFirstRed(x,x1,x2,y1,y2) ax1=0; ax2=0; ay=0; for i=x1:x2; for j=y1:y2; a=x(i,j,1); b=x(i,j,2); c=x(i,j,3); if(a>150&&b<150&&c<90); ax1=i; ay=j; ax2=FindLastRed(x,ax1+1,x2,ay); ax=(ax1+ax2)/2; oy=ay; ox=round(ax); r=round(abs(ax2-ax1)/2); if(Isroundred(x,ox,oy,r)==1); return; end; end; end;

32

end;

ox=0; oy=0; r=0;

function ox=FindLastRed(x,x1,x2,y)

for i=x1:x2; a=x(i,y,1); b=x(i,y,2); c=x(i,y,3); if(a<=150||b>=150||c>=90); ox=i; return; end; end; ox=0;

function [ox,oy,r] =FindFirstYellow(x,x1,x2,y1,y2) ax1=0; ax2=0; ay=0; for i=x1:x2; for j=y1:y2; a=x(i,j,1); b=x(i,j,2); c=x(i,j,3); if(a>150&&b>100&&c<90); ax1=i; ay=j; ax2=FindLastYellow(x,ax1+1,x2,ay); ax=(ax1+ax2)/2; oy=ay; ox=round(ax); r=round(abs(ax2-ax1)/2); if(Isround(x,ox,oy,r)==1); return; end; end; end; end;

33

ox=0; oy=0; r=0;

function ox=FindLastYellow(x,x1,x2,y)

for i=x1:x2; a=x(i,y,1); b=x(i,y,2); c=x(i,y,3); if(a<=150||b<=100||c>=90); ox=i; return; end; end; ox=0;

function y=Isroundred(x1,ox,oy,r) y=0; a=round(r/2); if(ox+a>240||oy+a>320||ox-a<1||oy-a<1); return; end; if(x1(ox,oy+a,1)>150&&x1(ox,oy+a,2)<150&&x1(ox,oy+a,3)<90); if(x1(ox,oy-a,1)>150&&x1(ox,oy-a,2)<150&&x1(ox,oy-a,3)<90);

if(x1(ox+a,oy+a,1)>150&&x1(ox+a,oy+a,2)<150&&x1(ox+a,oy+a,3)<90);

if(x1(ox-a,oy+a,1)>150&&x1(ox-a,oy+a,2)<150&&x1(ox-a,oy+a,3)<90);

if(x1(ox-a,oy-a,1)>150&&x1(ox-a,oy-a,2)<150&&x1(ox-a,oy-a,3)<90);

if(x1(ox+a,oy-a,1)>150&&x1(ox+a,oy-a,2)<150&&x1(ox+a,oy-a,3)<90);

y=1; end; end; end; end; end; end;

function y=Isround(x1,ox,oy,r) y=0;

34

a=round(r/2); if(x1(ox,oy+r-5,1)>150&&x1(ox,oy+r-5,2)>100&&x1(ox,oy+r-5,3)<90); if(x1(ox,oy-r+5,1)>150&&x1(ox,oy-r+5,2)>100&&x1(ox,oy-r+5,3)<90); y=1; end; end;

function [s,r] =Position(dx,dy) s=0; r=(dx^2+dy^2)^0.5; if(dx==0&&dy==0); return; end;

if(dy==0&&dx>0); s=0; return; end;

if(dy==0&&dx<0); s=180; return; end;

if(dx==0&&dy>0); s=90; return; end;

if(dx==0&&dy<0); s=270; return; end;

q=dx/dy; temp=acot(q)*180/pi;

if(dx<0&&dy<0); s=temp+180; return; end;

if(dx>0&&dy>0);

35

s=temp; return; end;

if(dx<0&&dy>0); s=temp+180; return; end;

if(dx>0&&dy<0); s=temp+360; return; end;

%disp(mq); %a=3; %b=4; %c=(a^2+b^2)^0.5

function travel(action)

%TRA VEL Traveling salesman problem demonstration. % This demo animates the solution of the % so-called "Traveling Salesman" problem. % The problem is to form a closed circuit of a % number of cities while traveling the shortest % total distance along the way. % % The algorithm this demo uses is very simple, % and so the emphasis here is more on the % animation than on rapid, efficient solution. % % Use the "Cities" popup menu to determine the % number of cities to be visited. The "Start" % and "Stop" buttons control the animation. Cities % are chosen completely at random.

% Ned Gulley, 6-21-93 % Copyright 1984-2003 The MathWorks, Inc. % $Revision: 5.21.4.2 $ $Date: 2004/04/10 23:25:50 $

36

% Information regarding the play status will be held in % the axis user data according to the following table: play= 1; stop=-1;

if nargin<1, action='initialize'; end;

switch action case 'initialize', oldFigNumber=watchon; figNumber=figure( ...

'Name','Travel: The Traveling Salesman Problem', ... 'NumberTitle','off', ... 'Visible','off', ... 'DoubleBuffer','on', ... 'Color', [0.9 0.9 0.9], ... 'BackingStore','off'); axes( ... 'Units','normalized', ... 'Position',[0.05 0.05 0.75 0.90], ... 'Visible','off', ... 'NextPlot','add'); text(0,0,'Press the "Start" button to see the edge detection and begin image processing', ... 'HorizontalAlignment','center'); axis([-1 1 -1 1]); %=================================== % Information for all buttons labelColor=[0.8 0.8 0.8]; yInitPos=0.90; xPos=0.85; btnWid=0.10; btnHt=0.10; % Spacing between the button and the next command's label spacing=0.05; %====================================

37

% The CONSOLE frame frmBorder=0.02; yPos=0.05-frmBorder; frmPos=[xPos-frmBorder yPos btnWid+2*frmBorder 0.9+2*frmBorder]; h=uicontrol( ... 'Style','frame', ... 'Units','normalized', ... 'Position',frmPos, ... 'BackgroundColor',[0.50 0.50 0.50]); %==================================== % The START button btnNumber=1; yPos=0.90-(btnNumber-1)*(btnHt+spacing); labelStr='Start'; cmdStr='start'; callbackStr='travel(''start'');'; % Generic button information btnPos=[xPos yPos-spacing btnWid btnHt]; startHndl=uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'String',labelStr, ... 'Interruptible','on', ... 'Callback',callbackStr); %==================================== % The CITIES popup button btnNumber=2; yPos=0.90-(btnNumber-1)*(btnHt+spacing); textStr='Points'; popupStr=reshape(' 15 20 25 30 35 40 45 50 ',4,8)'; % Generic button information btnPos1=[xPos yPos-spacing+btnHt/2 btnWid btnHt/2]; btnPos2=[xPos yPos-spacing btnWid btnHt/2]; popupHndl=uicontrol( ... 'Style','text', ... 'Units','normalized', ... 'Position',btnPos1, ... 'String',textStr);

38

btnPos=[xPos yPos-spacing btnWid btnHt/2]; popupHndl=uicontrol( ... 'Style','popup', ... 'Value',4, ...t 'Units','normalized', ... 'Position',btnPos2, ... 'String',popupStr); %==================================== % The STOP button btnNumber=3; yPos=0.90-(btnNumber-1)*(btnHt+spacing); labelStr='Stop'; % Setting userdata to -1 (=stop) will stop the demo. callbackStr='set(gca,''Userdata'',-1)'; % Generic button information btnPos=[xPos yPos-spacing btnWid btnHt]; stopHndl=uicontrol( ... 'Style','pushbutton', ... 'Units','normalized', ... 'Position',btnPos, ... 'Enable','off', ... 'String',labelStr, ... 'Callback',callbackStr); %==================================== % The INFO button labelStr='Detection'; callbackStr='travel(''info'')'; infoHndl=uicontrol( ... 'Style','push', ... 'Units','normalized', ... 'Position',[xPos 0.20 btnWid 0.10], ... 'String',labelStr, ...

'Callback',callbackStr); %==================================== % The CLOSE button labelStr='Close'; callbackStr='close(gcf)'; closeHndl=uicontrol( ... 'Style','push', ...

39

'Units','normalized', ... 'Position',[xPos 0.05 btnWid 0.10], ... 'String',labelStr, ... 'Callback',callbackStr); % Uncover the figure hndlList=[startHndl popupHndl stopHndl infoHndl closeHndl]; set(figNumber, ... 'Visible','on', ... 'UserData',hndlList); watchoff(oldFigNumber); figure(figNumber);

case 'start', %//////////////////////////////////////////////////////////// vidobj = videoinput('winvideo', 1, 'RGB24_320X240'); preview(vidobj);

%//////////////////////////////////////////////////////////// WNumber=watchon; axHndl=gca; figNumber=gcf; hndlList=get(figNumber,'Userdata'); startHndl=hndlList(1); popupHndl=hndlList(2); stopHndl=hndlList(3); infoHndl=hndlList(4); closeHndl=hndlList(5); set([startHndl closeHndl infoHndl],'Enable','off'); set(stopHndl,'Enable','on'); set(axHndl,'Userdata',play); set(popupHndl, 'Enable', 'off'); % ====== Start of Demo % Travel problem % This is the main program for the Traveling Salesman Problem. % This function makes use of the following other functions: % inside

40

% Lay down a picture of the United States for graphic appeal. load('usborder.mat','x','y','xx','yy'); % The file usborder.mat contains a map of the US in the variables % x and y, and a geometrically simplified version of the same map % in the variables xx and yy. cla; plot(x,y,'Color','blue'); axis off; axis([-0.1 1.5 -0.2 1.2]); set(axHndl,'Drawmode','Fast'); hold on; drawnow; nptsStr=get(popupHndl,'String'); nptsVal=get(popupHndl,'Value'); npts=str2double(nptsStr(nptsVal,:)); set(popupHndl, 'Enable', 'off'); % ...else generate the random cities to visit X=[]; Y=[]; % Form the US border in imaginary coords for the INSIDE routine w=xx+i*yy; n=0; while n

41

distmatrix(count1,count2)=sqrt((x1-x2)^2+(y1-y2)^2);

distmatrix(count2,count1)=distmatrix(count1,count2); end; end; % Generate an initial random path between those cities p=randperm(npts); newxy=xy(p,:); newxy=[newxy; newxy(1,:)]; xdata=newxy(:,1); ydata=newxy(:,2); watchoff(WNumber); plot(xdata,ydata,'r.','Markersize',24);

plothandle=plot(xdata,ydata,'yellow','LineWidth',2); axis off; drawnow; len=LocalPathLength(p,distmatrix); lenhist=len; while get(axHndl,'Userdata')==play, drawnow; drawFlag=0; pause(1);% make the image more clear background=getsnapshot(vidobj); [ox,oy,r]=FindFirstYellow(background,1,240,1,320); disp(ox); disp(oy); disp(r); %background=double(background)/255; %figure(3); % image(background); %disp(background(1,1,3)); % Try a point for point swap % ======================== swpt1=floor(npts*rand)+1; swpt2=floor(npts*rand)+1; swptlo=min(swpt1,swpt2); swpthi=max(swpt1,swpt2);

42

order=1:npts; order(swptlo:swpthi)=order(swpthi:-1:swptlo); pnew = p(order); lennew=LocalPathLength(pnew,distmatrix); if lennew

43

set(stopHndl,'Enable','off'); set(popupHndl, 'Enable', 'on'); delete(vidobj); clear vidobj; case 'info', %helpwin(mfilename) vidobj = videoinput('winvideo', 1, 'RGB24_320X240'); preview(vidobj); pause(1);% make the image more clear background=getsnapshot(vidobj);

delete(vidobj); clear vidobj;

x1=background; figure(2); image(x1); [ox,oy,r]=FindFirstYellow(x1,1,240,1,320);

disp(ox); disp(oy); disp(r);

end; % if strcmp(action, ...

function total=LocalPathLength(p,distmatrix) % Calculate current path length for traveling salesman problem. % This function calculates the total length of the current path % p in the traveling salesman problem.

npts = size(p,2); % This is a vectorized distance calculation % % We're creating two vectors: p and p([end 1:(end-1)] % The first is the list of first cities in any leg, and the second % is the list of destination cities for that same leg.

44

% (the second vector is an element-shift-right version of the first) % % We then use column

indexing into distmatrix to create a vector of % lengths of each leg which can then be summed. total=sum(distmatrix((p-1)*npts + p([end 1:(end-1)])));

45

11. 关于智能玩具小车设计过程中出现的一些问题的反思

2.1 关于单片机的稳定性的困惑

在实际的测试中,我们发现一个很奇怪的现象,即当给单片机烧录进程序后,发现大概五分钟后单片机会自动重启. 在网上查阅了大量的电子资料后,我们得到了如下结论:单片机工作不稳定,抗干扰能力差,一般不是单片机的问题。可能的原因有:1、电路板设计不合理,元件位置安排不当,走线不合理。2、电源电路设计问题,供电电压中含有尖峰干扰。3、机械结构不合理,对干扰敏感的电路靠近干扰源。为此,可以提出以下的解决方案:在印刷电路板的设计中,要注意电路板的布线及工艺要求,元器件要合理分区,即合理分配单片机系统的模拟区(怕干扰)、数字区(既怕干扰又产生干扰)、功能区(干扰源)。在元器件布局上,噪声元件与非噪声元件要尽量远离。印刷电路板应遵循单点接地,单点接电源的供电原则。( 3 个区域的电源、地线应分别引出。在达到系统要求的前提下,尽可能用低频晶振。使用电源监控及看门狗电路,可大幅度提高系统的抗干扰能力。在软件上,若失控的程序进入死循环,此时,通常采用“看门狗”技术使程序脱离死循环。通过不断检测程序循环运行时间,若发现程序循环运行时间超过了预先设定的最大值,就认为程序陷入了死循环,按启动出错处理。“看门狗”技术既可由硬件实现,也可由软件实现。在工程实践中发现,严重的干扰能引起中断方式控制字的改变而关闭中断允许,使系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗电路能排除这种干扰。我们知道,51 系列单片机有两个定时器,我们可以用它们来组成一个环形监视系统。即用定时器T0 监视定时器T1,用T1 监视主程序,用主程序监视T0。这种环形监视的过程是这样的:在主程序、T0 中断服务程序、T1 中断服务程序中各设一运行观察变量,如MainW,T0W,T1W,主程序每循环一次,MainW 加1,同样T0、T1 中断服务程序每执行一T0W、T1W 也加1。在T0 中断服务程序中通过检测T1W 的变化来判断T1 运行是否正常,在T1 中断服务程序中通过检测MainW 的变化来判定主程序是否运行正常,而在主程序中则根据T0W 的变化情况来判断。若检测到某变量不正常,则转至相应的出错处理程序。值得注意的是,对主程序的最大循环周期、T0 和T1 的定时周期应合理设置。

2.1 经验主义往往会让人误入歧途

以往在科技创新以及各种各样的试验中,经验告诉我们三级管平着放,左到右的顺序是e, b, c

但事实上不是如此,直接导致在设计印刷电路板时没有详细查看所用三级管的datasheet。而实际我们所用的5610 和5609 的三级管, 平着放,从左到右的顺序却是e, c, b.

2.3 整个团队的效率较低

我认为这是我们日后应该重点注意的一个问题,在刚开始做这个PRP 项目的时候,5 个人对于电路设计的知识都是一片空白,于是虽然我们做到了每周都有一整个周六泡在试验室,但实际上是五个人在串行的工作,五个人对于同一个问题各抒己见,于是导致了每周六只能解决一个很

46

小的问题。效率非常之低下。不过这样,也带来了一个好处,就是 5 人都从对电路设计一窍不通到有一点感情,再到科技创新的游刃有余。如果下次还有机会 5 人合作,我觉得在决定做项目之前,分好明确的分工,做好详细的进度表将会是一个首要解决的任务。

参考文献[1] 马忠梅等,单片机的C 语言应用程序设计,北京航空航天大学出版社,1998 [2] 陈章龙等,嵌入式技术与系统——Inter XScale 结构与开发,北京航空航天大学出版社,2004 [3] ATMEL,8 BIT MICROCONTROLLER WITH 8K BYTES IN-SYSTEM PROGRAMMABLE FLASH AT89S52,2001

致谢首先,要向给我们给予理论指导与操作帮助的张士文老师表示衷心地感谢。正是在他开导式的启发下让我们战胜一个个困难,不断坚持努力、不断进步。同样的,没有周围同学的支持与帮助我们也不可能取得今天的结果。对于那些在整个实验期间对我们给予关心、鼓励、帮助的同学表示感谢。王凌云同学总是积极地探讨实验中的问题与收获,极大的开阔了我们的思路,让我们在彼此勉励中坚持下来。最后,再次向关心过我们、支持我们的老师和同学表示衷心的感谢。

飞思卡尔智能车竞赛新手入门建议

每年都会有很多新人怀着满腔热情来做智能车,但其中的很多人很快就被耗光了热情和耐心而放弃。很多新人都不知道如何入手,总有些有劲无处使的感觉,觉得自己什么都不会,却又不知道该干什么。新人中存在的主要问题我总结了以下几点: l缺乏自信,有畏难情绪 作为新人,一切都是新的。没有设计过电路,没有接触过单片机,几乎什么都不会。有些新人听了两次课,看了两篇技术报告,就发现无数不懂不会的东西,于是热情在消退,信心在减弱。这些都是放弃的前兆。殊不知,高手都是从新人过来的,没有谁天生什么都会做。一件事件,如果还没开始做,就自己否定自己,认为自己做不到,那么肯定是做不到的。 l习惯了被动接收知识,丧失了主动学习的能力。 现在的学生大多从小习惯了被灌输知识,只学老师教的,只学老师考的。殊不知一旦走向社会,将不再有老师来教,不再有应付不完的考试。做智能车和传统的教学不同,学生将从被动学习的地位转变为主动学习。就算有指导老师,有指导的学长,但也都处于被动地位,往往都不会主动来教。有的学生一开始就没有转变思想,还希望就像实验课一样,老师安排好步骤1,2,3……,然后自己按照老师安排好的步骤按部就班的完成。这样的学生,往往都丧失了提出问题和分析问题的能力,只是一个应付考试的机器。要知道,解决问题的第一步是提出问题,如果总等着别人来教,那么问题永远会挡在你面前。 l缺乏团队精神和合作意识 智能车比赛是以团队的形式参赛,只依靠个人能力单兵作战就能取得好成绩的是很少很少的。当今社会,任何人的成功都离不开身后的团队的支撑。智能车是一个很复杂的系统,电路、机械、传感器、单片机、底层驱动、控制算法……。如果所有的任务都是一个人去完成,固然锻炼了自己,但想做的很好却很不现实。很多新人,来到实验室,来到一个陌生的环境和团队,连向学长请教,和同学交流的勇气都没有,又如何融入团队呢。除了要主动融入团队,还要培养自己的团队意识。团队精神往往表现为一种责任感,如果团队遇到问题,每个人都只顾自己,出了错误,不想着解决问题,而是互相推诿埋怨。这样的团队,肯定是无法取得好成绩的。 l缺乏耐心和细心的精神 其实把一件事做好很简单,细心加上耐心。不细心就想不到,没有耐心,即使想到了也做不到。做事怕麻烦,将就,说白了就是惰性在作祟。明明可以把支架做的更轻更漂亮,明明可以把程序写的更简洁,明明可以把电路设计得更完善……。其实,每个人都有很大潜力,如果不逼自己一次,你永远不知道自己的潜力有多

基于stm32的智能小车设计毕业设计

海南大学 毕业论文(设计) 题目:基于stm32的智能小车设计学号:20112834320005 姓名:陈亚文 年级:2011级 学院:应用科技学院(儋州校区) 学部:工学部 专业:电子科学与技术 指导教师:张健 完成日期:2014 年12 月 1 日

摘要 本次试验主要分析了基于STM32F103微处理器的智能小车控制系统的系统设计过程。此智能系统的组成主要包括STM32F103控制器、电机驱动电路、红外探测电路、超声波避障电路。本次试验采用STM32F103微处理器为核心芯片,利用PWM技术对速度以及舵机转向进行控制,循迹模块进行黑白检测,避障模块进行障碍物检测并避障功能,其他外围扩展电路实现系统整体功能。小车在运动时,避障程序优先于循迹程序,用超声波避障电路进行测距并避障,在超声波模块下我们使用舵机来控制超声波的发射方向,用红外探测电路实现小车循迹功能。在硬件设计的基础上提出了实现电机控制功能、智能小车简单循迹和避障功能的软件设计方案,并在STM32集成开发环境Keil下编写了相应的控制程序,并使用mcuisp软件进行程序下载。 关键词:stm32;红外探测;超声波避障;PWM;电机控制

Abstract This experiment mainly analyzes the control system of smart car based on microprocessor STM32F103 system design process. The composition of the intelligent system mainly including STM32F103 controller, motor drive circuit, infrared detection circuit, circuit of ultrasonic obstacle avoidance. This experiment adopts STM32F103 microprocessor as the core chip, using PWM technique to control speed and steering gear steering, tracking module is used to detect the black and white, obstacle avoidance module for obstacle detection and obstacle avoidance function, other peripheral extended circuit to realize the whole system function. When the car is moving, obstacle avoidance program prior to tracking, using ultrasonic ranging and obstacle avoidance obstacle avoidance circuit, we use steering gear under ultrasonic module to control the emission direction of ultrasonic, infrared detection circuit is used to implement the car tracking function. On the basis of the hardware design is proposed for motor control function, simple intelligent car tracking and obstacle avoidance function of software design, and in the STM32 integrated development environment under the Keil. Write the corresponding control program, and use McUisp program download software. Keywords:STM32;Infrared detection;Ultrasonic obstacle avoidance;PWM;Motor control

智能循迹小车___设计报告

智能循迹小车___设计报告

智能循迹小车设计 专业:自动化 班级:自动化132 姓名:罗植升莫柏源梁 桂宾 指导老师: 2014年4月——2010年6月

本课题是基于STC89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 STC89C52单片机为系统控制处理 器; 采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。 作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。 无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。 此项设计是在以杨老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

智能小车单片机课程设计报告

题目: 智能小车设计 打开命令行终端的快捷方式: ctr+al+t:默认的路径在家目录 ctr+shift+n:默认的路径为上一次终端所处在的路径. linux@ubuntu:~$ linux:当前登录用户名. ubuntu:主机名 :和$之间:当前用户所处在的工作路径. windows下的工作路径如C:\Intel\Logs linux下的工作路径是:/.../..../ ~:代表的是/home/linux这个路径.(家目录). ls(list):列出当前路径下的文件名和目录名. ls -a(all):列出当前路径下的所有文件和目录名,包括了隐藏文件. .:当前路径 ..:上一级路径 ls -l:以横排的方式列出文件的详细信息 total 269464(当前这个路径总计所占空间的大小,单位是K) drwxr-xr-x 3 linux linux 4096 Dec 4 19:16 Desktop 第一个位置:代表的是文件的类型. linux系统下的文件类型有以下几种. b:块设备文件 c:字符设备文件 d:directory,目录 -:普通文件. l:连接文件. s:套接字文件. p:管道文件. rwxr-xr-x:权限 r:读权限-:没有相对应的权限 w:写权限

x:可执行权限 修改权限: chmod u-或者+r/w/x 文件名 chmod g-或者+r/w/x 文件名 chmod o-或者+r/w/x 文件名 第一组:用户权限 第二组:用户组的权限 第三组:其他用户的权限. chmod 三个数(权限) 文件名 首先根据你想要的权限生成二进制数,再根据二进制数转换成十进制的三位数 rwxr-x-wx 111101011 7 5 3 chmod 753 文件名 rwx--xr-x 第二个位置上的数字:对应目录下的子文件个数,如果是非目录,则数字是1 第三个位置:用户名(文件创造者). 第四个位置:用户组的名字(前边的用户所处在的用户组的名字). 第五个位置:对应文件所占的空间大小(单位为b) 第六~八个位置:Dec 4 19:16时间戳(最后一次修改文件的时间) 最后一个位置:文件名 操作文件: 1.创建一个普通文件:touch 文件名 2.删除一个文件:rm(remove) 文件名 3.新建一个目录:mkdir(make directory) 目录名 递归创建目录:mkdir -p 目录1/目录2/目录3 4.删除一个目录:rmdir 目录名.//仅删除一个空目录 rm -rf 目录名//删除一个非空目录 5.切换目录(change directory):cd 路径 linux下的路径分两种 相对路径:以.(当前路径)为起点. 绝对路径:以/(根目录)为起点, 用相对路径的方式进入Music:cd ./Music 用绝对路径的方式进入Desktop:cd /home/linux/Desktop 返回上一级:cd ..

智能小车课程设计

智能循迹小车 【摘要】 本课题是基于低功耗单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以单片机为系统控制处器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 一、实验目的 这次设计智能小车的目的是为了掌握电路设计的方法和技巧。如何将学习到的理论知识运用到实际当中去,怎样能够活学活用,深入的了解电子元器件的使用方法,了解各种元器件的基本用途和方法,能够灵活敏捷的判断电路中出现的故障,学会独立设计电路,积累更多的设计经验,加强焊接能力和技巧,完成基本的要求。并能完美的完成这次实训。 根据老师给的控制要求,和自己的发挥扩充能力,独立的,大胆的去实践,开拓创新,能够将自己的想法体现到实际电路当中去。 二、设计方案 该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片发出控制命令,控制电机的工作状态以实现对小车姿态的控制。 三、各芯片说明 W981216BH-6 一种髙速度同步动态随机存取存储器(SDRAM),具有1M 字(words) *4 层(banks)*16 位(bits)的存储结构组织.传输数据带宽最高达166M 字/秒(-6)。

对SDRAM是否访问是突发导向。在一个页面连续的内存位置可在一个1, 2, 4, 8或整页突发访问时长和行选择组由活动命令。列地址自动生成的SDRAM 的内部计数器在突发运作。随机栏也可以通过阅读在每个时钟周期提供其地址。该多组特性使交织在内部银行隐藏预充电时间。通过让一个可编程的模式寄存器,该系统可以改变突发长度,延时周期,交错或连续突发最大限度地发挥其性能。 W981216BH是在理想的主内存高性能应用。 特征: 1、.3V±0.3V电源 2、截至143 MHz时钟频率 3、2,097,152字×4层×16 位组织 4、自动刷新和自刷新 5、CAS 延时:2和3 6、突发长度:1, 2, 4, 8,和整页 7、突发读,写单人模式 8、自动预充电和预充电控制 9、4K刷新周期/ 64 ms TE28F160C3BD70(快闪记忆体)

智能循迹小车设计报告

电子作品设计报告 项目名称:智能小车 学院:机电工程学院 专业:应用电子技术 班级:09应电(1)班 组别:第三组 姓名:杨磊赖焕宁梁广生 指导老师:杨青勇玉宁

目录 摘要: (3) 关键词: (3) 引言: (3) 一、系统设计 (3) 1.1设计要求 (4) 1.2车体方案认证与选择 (4) 二、硬件设计及说明 (5) 2.1原理图设计 (5) 2.1.1稳压电源 (5) 2.1.2基本系统 (5) 2.1.3电机驱动 (5) 2.1.4液晶显示部分 (6) 2.1.5RS485数据总线 (6) 2.1.6循迹部分 (7) 2.2PCB设计 (7) 2.2.1主板PCB (7) 2.2.2循迹板PCB (8) 三、软件设计及说明 (8) 四、系统测试过程 (10)

五、总结 (11) 六、附录 (11) 附录一:系统元器件清单 (11) 附件二:系统测试源程序 (12) 摘要:本组的智能小车是采用凌阳的车架,是以两个电机来驱动小车,主板部 分自行设计。通过接收器MAX1483来采集信息,传送进主控芯片PIC16F886单片机,进行数据处理后,送进驱动芯片L293D以完成相应的操作。采用反射式红外光电传感器ST178来实现小车自动循迹功能,并且整个过程采用液晶显示屏RT1602来显示相应的数据。 关键词:PIC16F886 L293D 反射式红外光电传感器ST178 自动循迹引言: 近现代,随着电子科技的迅猛发展,人们对技术也提出了更高的要求。汽车的智能化在提高汽车的行驶安全性,操作性等方面都有巨大的优势,在一些特殊的场合下也能满足一些特殊的需要。智能小车系统涉及到自动控制,车辆工程,计算机等多个领域,是未来汽车智能化是一个不可避免的大趋势。本文设计的小车以PIC16f886 为控制核心,用反射式红外光电传感器作为检测元件实现小车的自动循迹前行,并显示等功能。 一、系统设计 本组智能小车的硬件主要有以PIC16f886 作为核心的主控器部分、自动循迹部分、显示部分、电机驱动部分。其中电机驱动部分和其他部分分别由两个不同的电源分开供电。 小车硬件系统结构示意图如下:

智能小车课程设计报告书

※※※※※※※※※ 级学生※※2015※※课程设计材料※※※※※※※※※※※ 课程设计报告书 课题名称智能小车蓝牙操控和循迹的实现 名姓 学号 院学 专业 指导教师 2019年2月15日 设计目的1 通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。 2功能要求

智能小车作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环境里自动运作,不需要人为的管理,可应用于科学勘探等等用途;并且能实现显示时间、速度、里程,具有自动寻迹、寻光、避障等功能,可程控行驶速度、准确定位停车,远程传输图像、按键控制加速,减速,刹停,左转和右转、实时显示运行状态等功能。 3 总体设计方案 在现有玩具电动车的基础上,加了四个按键,实现对电动车的运行轨迹的启动,并将按键的状态传送至单片机进行处理,然后由单片机根据所检测的各种按键状态实现对电动车的智能控制。这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。本设计采用AT89C51单 片机。以AT89C51为控制核心,利用按键的动作,控制电动小汽车的状态。加 装光电、红外线、超声波传感器,实现对电动车的速度、位置、运行状况的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动小车的智能控制,如图1所示。简易智能电动车采用AT89C51单 片机进行智能控制。开始由手动启动小车,并复位初始化,当到达规定的起始黑线,由小车底部的红外光电传感器检测到第一条黑线后,通过单片机控制小车[2]。在白纸所做轨迹道路中,小车通过超声波传感器正前开始记数、显示、调速方检测和光电传感器左右侧检测,由单片机控制实现系统的自动避障功能。在电动车进驶过程中,采用双极式H型PWM脉宽调制技术,以控制小车调速;并采用 动态共阴显示行驶时间和里程。小车通过光电传感装置实现驶向光源并通过循迹保持小车在白纸范围内行驶。当小车到达终点第二次检测到黑线时,单片机控制小车停车。 总体设计框架图图1 4 硬件电路选取与设计

【知识学习】智能汽车竞赛活动总结

智能汽车竞赛活动总结 7月24日,第七届“飞思卡尔”杯全国大学生智能汽车竞赛在兰州交通大学完美谢幕,经过半年多的努力与学习,我校工业中心(3)队在这次竞赛中获得西部赛区光电组三等奖,虽然成绩不是很理想,但是从学习的角度上看,学生确实学到了不少新知识、也逐渐成长起来。 “飞思卡尔”杯是由教育部高等自动化专业教学指导分委员会主办的全国大学生智能汽车竞赛,该竞赛以智能汽车为研究对象的创意性科技,是面向全国大学生的一种具有探索性工程实践活动,是教育部倡导的大学生科技竞赛之一。以“立足培养,重在参与,鼓励探索,追求卓越”为指导思想,旨在促进高等学校素质教育,培养大学生的综合知识运用能力、基本工程实践能力和创新意识,激发大学生从事科学研究与探索的兴趣和潜能,倡导理论联系实际、求真务实的学风和团队协作的人文精神。 “飞思卡尔”杯智能汽车竞赛是涵盖自动控制、模式识别、传感技术、电子电气、计算机、机械与汽车等多学科专业知识的创意性比赛,融合科学性、趣味性和观赏性为一体。至今我部已参赛两届,在全校形成了具有一定规模影响力,该竞赛给学生提供了广阔的学习空间,丰富了课外兴趣学识,增强了学生的动手能力,深受学生的喜爱。参赛的是工业中心(3)队的光电组,在指导老师的带领下,队员间团

结协作,紧密配合,包括前期准备、宣传,比赛以及赛后相关事宜都有条不紊地完成,同时十分感谢校领导及中心领导在此次赛事中的大力支持和帮助。 对于智能车的控制系统,采用Freescale16位单片机mc9S12SX128为核心控制器,利用16个红外光电传感器构成的光电传感器阵列采集路面信息,单片机获得传感器采集的路面信息和车速信息,经过分析后控制智能车的舵机转向,同时对直流电机进行调速,从而实现智能车沿给定的黑线快速平稳地行驶。看似简单的控制思路制作实属不易,除了兴趣之外,学生必须花费大量的时间和精力攻克各自负责的模块。 在制作过程中主要做了三个方面的努力: .单片机初始化模块,包括I/o模块、Pwm模块、AD模块、计时器模块、定时中断模块初始化; 2.实时路径检测模块,光电传感器检测黑线,将返回信号输入单片机的输入端口,经单片机内部AD转换,进行分析,得出合适的Pwm信号控制舵机转向; 3.舵机控制模块、驱动电机控制模块,通过直接输出Pwm 信号控制舵机和电机; 5月初,完成了智能车的最初组装以及调试,小车在赛道上能缓慢行走,接下来对各个有效参数进行修改、调试,终于小车的速度和稳定性也有了明显的提升,最后在程序中

基于语音识别的智能小车设计-毕设论文

基于语音识别的智能小车 摘要 随着计算机技术、模式识别和信号处理技术及声学技术等的发展,使得能满足各种需要的语音识别系统的实现成为可能。近二三十年来,语音识别在计算机、信息处理、通信与电子系统、自动控制等领域中有着越来越广泛的应用。本设计是语音识别在控制领域的一个很好实现,它将原本需要手工操作的工作用语音来方便地完成。 语音识别按说话人的讲话方式可分为孤立词(Isolated Word)识别、连接词(Connected Word)识别和连续语音(Continuous Speech)识别。从识别对象的类型来看,语音识别可以分为特定人(Speaker Dependent)语音识别和非特定人(Speaker Independent)语音识别。本设计采用的识别类型是特定人孤立词语音识别。 本系统分上位机和下位机两大方面。上位机利用PC上MATLAB强大的数学计算能力,进行语音输入、端点监测、特征参数提取、匹配、串口控制等工作,根据识别到的不同语音通过PC串口向下位机发送不同的指令。下位机是单片机控制的一个小车,单片机收到上位机传来的指令后,根据不同的指令控制小车完成不同的动作。 该设计对语音识别的现有算法进行了验证和实现,并对端点检测和匹配算法进行了些许改进。本设计达到了预期目标,实现了所期望的功能效果。 关键词:MATLAB,语音识别,端点检测,LPC,单片机,电机控制

SMART CAR GASED SPEECH RECOGNITION ABSTRACT With the development of computer technology,pattern recognition,signal processing technology and acoustic technology etc, the speech recognition system that can meet the various needs of people is more possible to achieve.The past three decades, the voice recognition in the field of computer, information processing, communications and electronic systems, automatic control has increasingly wide range of applications. Speech recognition by the speaker's speech can be divided into isolated word (Isolated Word) identification, conjunctions (Connected Word) and continuous speech recognition (Continuous Speech) identification. Identifying the type of object from the point of view, the voice recognition can be divided into a specific person (Speaker Dependent) speech recognition and non-specific (Speaker Independent) speech recognition. This design uses the identification type is a specific person isolated word speech recognition. This design is of a good implementation of speech recognition in the control field, it does the work that would otherwise require manual operation by the voice of people easily.This system includes two major aspects:the host system and the slave system. The host system use the MATLAB on the computer which has powerful mathematical computing ability to do the work of voice input, endpoint monitoring, feature extraction, matching, identification and serial control,then it send different commands through the PC serial port to slave system according different recognised voice. The slave system is a car controlled by a single-chip micro-controller.It controls the car do different actions according different instructions received.

智能寻迹小车设计报告

~ 目录 1.项目设计目的 (1) 2.项目设计正文 (3) .项目分析及方案制定 (3) .设计步骤及流程图 (4) 寻迹设计步骤 (4) 流程图 (4) ( .主要模块介绍 (4) LM393的主要特点 (4) LM393引脚图及内部框图 (5) LM393 功能简介 (5) 89C2051 (5) 89C2051简介 (5) 89C2051 主要性能参数 (5) 89C2051 功能特性概述 (6) 。 .电路设计及PCB绘制 (6) 电源电路 (6) 红外收发电路 (6) 电机驱动电路 (7) 单片机最小系统 (7) 整体电路 (8)

PCB板的绘制 (8) . 成品展示 (9) \ 3.项目设计总结 (9) 4.参考文献 (10) 智能寻迹小车 ——CDIO三级项目 王君杰 (电子信息工程 1501 6) 一、项目设计目的 在科技飞速发展的今天,智能化的概念已经渗入到各行各业,自动控制系统也出现在生活的方方面面,早到工厂的机械化生产,近到目前的自动驾驶。越来越多的领域涉及到电控制技术。特别是使用单片机一类的MCU的控制,在生活中越来越常见。因此,基于单片机控制的电路的学习和时间对于我们来说就显得尤为重要。同时,对于单片机作为软件主控单元,结合模电数电的硬件电路支持的综合项目开发,也是作为大学生需要了解并且熟练运用的基础。掌握了这些知识,对于我们以后的职业发展也有着莫大的帮助。 二、? 三、项目设计正文 、项目分析及方案制定 首先对于“智能寻迹小车”这个标题而言,我们可以分为两个部分:小车和智能寻迹。“小车”决定了硬件电路的大致构成:电源、电容、电阻、开关、电机、LED。而“智能”则决定了一些高级电路的选用:MCU、传感器、电机驱动、电位器及一些IC。 其次,假如去掉“智能”两字,仅关注如何做成一个能够行驶的小车,那么电路的搭建将会变得尤为简单。假如做一个“上电即跑”的小车,那么连开关都不需要,仅需要电源(干电池即可),两个电机 (3V/100mA)和两个限流电阻按图一方式连接即可。当然,这样的 小车只能实现向一个方向前进,无法实现跑道的自动识别和转向。 不过,这个电路也是所有行驶工具的基础,所有的行驶工具,都是 在这个电路的基础上按照想要实现的功能进行拓展开发。 接着让我们来到“智能”的环节。所谓智能,也就是需要小车 有人的思想,正如同课题所述——寻迹。智能的小车需要具备自动识别跑道的能力。同时,在采集到跑道信息后要做出相应的处理。在我们这个课题中,也就是需要及时并

智能车竞赛相关资料

第七届全国大学生“飞思卡尔”杯智能汽车竞赛 竞赛比赛事宜说明 本文将只对于光电组、电磁组和摄像头组的竞速比赛进行说明。有关创意竞赛的说明请参见《第七届全国大学生智能汽车创意竞赛说明》 一、比赛平台与比赛内容 1.竞赛采用秘书处统一指定的车模套件,车模控制电路须采用飞思卡尔半导 体公司的8位、16位、32位MCU作为唯一的微控制器。同一学校的同一组别中不同队伍之间需要采用飞思卡尔不同系列的微控制器。飞思卡尔不同系列的微控制器包括,32位Kinetis系列;32位ColdFire系列;32位MPC56xx 系列;8位微控制器系列(可使用2片);16位DSC系列;16位微控制器9S12XS 系列;16位微控制器9S12G系列。秘书处可以提供K10、9S12XS128、MPC5604B 开发板、在线调试工具和培训教材,免费发放Code Warrior开发软件。2.参赛队伍在车模平台基础上,制作一个能够自主识别路线的智能车,在专 门设计的跑道上自动识别道路行驶。 3.按照车模识别路线方案比赛分成电磁组、光电组和摄像头组。通过感应由 道路中心电线产生的交变磁场进行路径检测的车模属于电磁组;通过采集道路图像(一维、二维)或者连续扫描赛道反射点的方式进行路径检测的车模属于摄像头组;通过采集道路少数离散点反射亮度进行路径检测的车模属于光电组。每一参赛队只能参加一个组别比赛。 4.竞赛根据赛车在赛道上运行单圈最短时间进行评奖。 5.比赛将首先按照地域划分为五个分赛区和三个省赛区。参加分赛区的学 校,不允许跨赛区报名。每个学校最多可以报六支队伍参加分赛区比赛,报名三支(含)以上队伍的学校必须包含有电磁、光电和摄像头三个组别的参赛队伍,如果只报名两支队伍,则他们必须分属于不同的赛题组。三个省赛区分别是安徽省赛区、山东省赛区和浙江省赛区。省赛区组委会可以根据本省参赛学校情况,制定相应的报名规则。从省赛区选拔参加全国总决赛队伍的规则必须和五个分赛区的报名规则保持一致。 6.分赛区和省赛区遴选出总数相同的参赛队伍分别参加电磁组、光电组与摄

智能小车毕业论文完整版

智能小车毕业论文完整 版 Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】

学士学位论文 系别:计算机科学与技术 学科专业:计算机科学与技术 姓名: @@@@ @@@ 2011年 06月

智能小车引导控制系统 的设计与实现 系别:计算机科学与技术 学科专业:计算机科学与技术 指导老师: @@@ 姓名: @@@ @@@ 2011年 06月

智能小车引导控制系统的设计与实现 摘要:面对诸多恶劣的工作环境(如灭火、救援等),为了有效的避免人员伤亡,就需要采用智能小车去现场来完成相应的任务。因此研究和开发智能小车引导控制系统具有十分重要的意义。本系统采用STC89C51单片机作为核心控制芯片,设计制作了一款通过红外光电传感器检测路径信息、红外火焰传感器检测火源的智能寻迹灭火小车。本系统由单片机控制模块、寻迹传感器模块、驱动电机模块、火源传感器模块、风扇模块、电源模块等组成。实际应用表明,该小车可以在专门设计的场地上实现自主发现火源,自主识别路线,自主行进接近火源并灭火,最终完成灭火的任务。 关键词:单片机小车引导控制传感器

Smart cars guide control system design and implementation Abstract: Confronted with so many bad working environment (such as fire fighting, rescue etc), in order to effectively avoid casualties, need to use intelligent go by car scene to complete relevant tasks. Therefore, the research and development of intelligent car guide control system has the extremely vital significance. This system uses STC89C51 as the core control chip, design and make a new electric sensor detection by infrared sensor information, infrared flame path of intelligent tracing test fire extinguishing car. The system is composed of single-chip microcomputer control module, tracing sensor module, drive motor module, ignition sensor module, fan module, power supply module. The practical application indicates that the car can be in a specially designed field on fire, to realize the independent found autonomous recognition route, independent sources and marching close to the fire extinguishing, finally complete task. Keywords: Microcontroller Car Control system Sensors

智能循迹小车实验报告

简单电子系统设计报告 ---------智能循迹小车 学号201009130102 年级10 学院理学院 专业电子信息科学与技术 姓名马洪岳 指导教师刘怀强

摘要 本实验完成采用红外反射式传感器的自寻迹小车的设计与实现。采用与白色地面色差很大的黑色路线引导小车按照既定路线前进,在意外偏离引导线的情况下自动回位。 本设计采用单片机STC89C51作为小车检测、控制、时间显示核心,以实验室给定的车架为车体,两直流机为主驱动,附加相应的电源电路下载电路,显示电路构成整体电路。自动寻迹的功能采用红外传感器,通过检测高低电平将信号送给单片机,由单片机通过控制驱动芯片L298N驱动电动小车的电机,实现小车的动作。 关键词:STC89C51单片机;L298N;红外传感器;寻迹 一、设计目的 通过设计进一步掌握51单片机的应用,特别是在控制系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。 二、设计要求 该智能车采用红外传感器对赛道进行道路检测,单片机根据采集到的信号的不同状态判断小车当前状态,通过电机驱动芯片L298N发出控制命令,控制电机的工作状态以实现对小车姿态的控制,绕跑到行驶一周。 三、软硬件设计 硬件电路的设计 1、最小系统:

小车采用atmel公司的AT89C52单片机作为控制芯片,图1是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下: (1)、电源电路:给单片机提供5V电源。 (2)、复位电路:在电压达到正常值时给单片机一个复位信号。 图1 单片机最小系统原理图 2、电源电路设计: 模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计中,51单片机使用5V电源,电机及舵机使用5V电源。考虑到电源为电池组,额定电压为4.5V,实际充满电后电压则为4-4.5V,所以单片机及传感器模块采用最小系统模块稳压后的5V电源供电,舵机及电机直接由电池供电。 3、传感器电路:

智能小车本科毕业论文

毕业论文声明 本人郑重声明: 1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。本人完全意识到本声明的法律结果由本人承担。 2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。 3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。 4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。

学位论文作者(签名): 年月

关于毕业论文使用授权的声明 本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。本人完全了解大学有关保存,使用毕业论文的规定。同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入学校有关数据库和收录到《中国学位论文全文数据库》进行信息服务。在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 论文作者签名:日期: 指导教师签名:日期: 摘要 随着社会各行各业的迅速发展,根据人类的需求出现了各种各样的智能机器人、智能车。智能小车又称为移动式机器人,是一个多种高新技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,伴着我国科学技术的进步,智能化和自动化技术越来

智能循迹小车 设计报告

智能循迹小车设计 专业:自动化 班级: 0804班 姓名: 指导老师: 2010年8月——2010年10月 摘要:

本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器;采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。 引言

当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。 作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。 无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。 为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能循迹小车”一题作为尝试。 此项设计是在以杨老师提供的小车为基础上,采用AT89C52单片机作为控制核心,实现能够自主识别黑色引导线并根据黑线走向实现快速稳定的寻线行驶。

相关文档
最新文档