声音导引系统B题.docx

上传人:b****2 文档编号:18015228 上传时间:2023-08-05 格式:DOCX 页数:62 大小:504.80KB
下载 相关 举报
声音导引系统B题.docx_第1页
第1页 / 共62页
声音导引系统B题.docx_第2页
第2页 / 共62页
声音导引系统B题.docx_第3页
第3页 / 共62页
声音导引系统B题.docx_第4页
第4页 / 共62页
声音导引系统B题.docx_第5页
第5页 / 共62页
声音导引系统B题.docx_第6页
第6页 / 共62页
声音导引系统B题.docx_第7页
第7页 / 共62页
声音导引系统B题.docx_第8页
第8页 / 共62页
声音导引系统B题.docx_第9页
第9页 / 共62页
声音导引系统B题.docx_第10页
第10页 / 共62页
声音导引系统B题.docx_第11页
第11页 / 共62页
声音导引系统B题.docx_第12页
第12页 / 共62页
声音导引系统B题.docx_第13页
第13页 / 共62页
声音导引系统B题.docx_第14页
第14页 / 共62页
声音导引系统B题.docx_第15页
第15页 / 共62页
声音导引系统B题.docx_第16页
第16页 / 共62页
声音导引系统B题.docx_第17页
第17页 / 共62页
声音导引系统B题.docx_第18页
第18页 / 共62页
声音导引系统B题.docx_第19页
第19页 / 共62页
声音导引系统B题.docx_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

声音导引系统B题.docx

《声音导引系统B题.docx》由会员分享,可在线阅读,更多相关《声音导引系统B题.docx(62页珍藏版)》请在冰点文库上搜索。

声音导引系统B题.docx

声音导引系统B题

声音导引系统(B题)

摘要:

系统采用两片STC89C52单片机分别作为主从控制器,电动小车搭载蜂鸣器构成可移动声源,声音信号被驻极体话筒感知后再加以后续放大、滤波,构成声音检测模块。

从机控制声源发声,主机接收到声音信号后经无线通信向其发出距离误差信号,从机对该信号进行处理,采用差值控制法控制电动小车运动,从而实现对声源的导引功能。

经测试,系统运行时,声源最大平均速度能达到12.8cm/s,最小定位误差小于1.0cm。

当声源以平均速度大于10cm/s速度运行时,任意时刻不会超过直线Ox左侧2cm。

此外,系统还加入了液晶显示、语音提示等人机交互界面。

关键词:

STC89C52声音检测差值控制法声音导引

目录

1.系统设计4

1.1设计任务与要求4

1.2设计分析4

1.3各模块方案论证和选择4

1.3.1运动平台的选择4

1.3.2控制器模块4

1.3.3电机驱动模块4

1.3.4发声模块4

1.3.5声音接收模块5

1.3.6无线通信模块5

1.3.7速度检测模块5

1.3.8数据显示模块5

1.3.9声光提示模块5

1.4小结5

2.系统的硬件实现6

2.1电机驱动电路6

2.2发声模块电路6

2.3声音接收电路6

2.4速度检测电路6

2.5无线通信电路7

3理论分析与计算7

3.1控制策略分析7

3.2控制理论计算7

4.系统的软件设计8

4.1主程序8

4.2距离测量子程序8

4.3无线通信子程序8

4.4电机驱动子程序8

5.系统测试8

5.1测试仪器8

5.2系统整体测试数据8

5.2.1基本部分测试8

5.2.2发挥部分测试9

5.3系统整体测试结果分析9

6结论9

参考文献:

10

附录一:

使用说明11

附录二:

元器件清单12

附录三:

电路原理图及印制版图13

附录四:

程序流程图19

附录五:

程序清单24

1.系统方案设计及论证

1.1设计任务与要求

设计要求与任务详见2009全国大学生电子设计大赛试题(B题)。

1.2设计分析

要成功实现本设计的要求,系统必具备以下功能:

声源发声、声源移动、接收声音、无线通信、速度检测、声光提示等功能。

其主要的电气系统可划分为:

电源、主控、电机驱动、发声、声音接收、无线通信和声光提示等基本模块,系统框图如图1.2.1所示。

图1.2.1系统框图

1.3各模块方案论证和选择

1.3.1运动平台的选择

运动平台需要搭载声源在指定区域内运动,最好的方案是用一辆小车来实现。

但限于条件难以在短时间内完成设计并制作一辆小车,所以系统选择一辆迷你玩具小车进行改装,由两个直流电机驱动小车运动。

1.3.2控制器模块

方案一:

采用XC9000系列的FPGA。

该种类器件具有并行处理能力,能快速的响应外部的各种数字信号,但在数字的乘除运算等数据处理方面不方便,而且芯片价格较昂贵。

方案二:

采用单片机作为控制核心,单片机数学运算功能较强。

在程序相互调用方面,处理方便灵活,适合实际应用。

且单片机技术发展较为成熟,价格便宜。

基于以上分析,系统拟采用方案二。

使用两片STC89C52单片机作为系统的控制器。

1.3.3电机驱动模块

此次竞赛,电机驱动MMC-1为官方指定使用,此模块不作论证。

1.3.4发声模块

方案一:

采用扬声器作为发声模块。

但是使用时频率要求较高,一般还需要功率放大,结构复杂,且功耗大。

方案二:

采用蜂鸣器作为发声模块。

蜂鸣器结构简单,使用简便,不需要功率放大,且使用频率要求较低,功耗很低,价格便宜。

基于以上分析,系统拟采用蜂鸣器作为发声装置。

1.3.5声音接收模块

方案一:

采用压电式声敏传感器。

压电声敏传感器是利用压电晶体的压电效应制成一种能实现声-电转换器件,结构如图1.3.1所示。

但压电声敏传感器较为少见,价格较贵。

方案二:

采用电容式驻极体话筒(俗称咪头)。

该元件能将一般的声音信号转化为电信号。

加上后续的滤波放大电路构成声音接收模块,实现简单,价格便宜。

基于以上分析,系统拟采用方案二。

1.3.6无线通信模块

方案一:

采用nRF401芯片做无线通信模块。

但是nRF401编程较为麻烦,已经逐渐在被新的芯片所取代。

图1.3.1压电式声敏传感器

方案二:

采用nRF905芯片做无线通信模块。

该芯片接收发射功能合一,收发完成中断标志。

使用简单,数据稳定;1.9-3.6V工作,低功耗,待机模式仅2.5uA;抗干扰能力强,程序编写方便。

基于以上分析,系统拟采用方案二。

1.3.7速度检测模块

方案一:

采用霍尔集成片。

但由于在车轮上安装有难度,且安装得少则测量精度不够。

方案二:

采用透射式光电传感器。

该方案能很好的实现精确的测量,而且光电传感器较为便宜。

基于以上分析,系统拟采用方案二。

采用ST155光电管作为速度检测。

1.3.8数据显示模块

方案一:

使用传统的数码管显示。

但显示的信息量较小且占用的端口资源也较多。

方案二:

使用液晶显示屏显示。

液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,画面效果好,分辨率高,抗干扰能力强等特点。

基于以上分析,系统拟用方案二,采用LCD1602作为数据显示模块。

1.3.9声光提示模块

方案一:

采用ISD4004单片语音录放电路。

但是该语音电路的音质较差,很难达到良好的人机交互效果

方案二:

采用MP3语音播放模块。

MP3模块直接支持MP3格式语音文件,文件来源广泛、音质优美、通用性好,使用方便。

基于以上分析,系统拟采用MP3语音播放模块。

1.4系统组成

经过分析和论证,系统最终方案如图1.4.1所示。

具体实现过程如下:

系统初始化,从机控制蜂鸣器打开,当主机上的声音接收模块检测到声音信号后,将误差信号通过无线模块传送到从机,从机对数据进行处理后,向MMC-1+L298组成的电机驱动模块发出相应的指令,使小车完成需要的动作。

为了精确控制,在小车运行过程中,通过发声模块和声音接收模块实时的检测小车位置,并且通过速度检测模块实时监测小车的速度和已行驶的距离,通过PID调节,使声源迅速而准确的到达指定位置。

图1.4.1系统原理框图

2.系统的硬件实现

2.1电机驱动电路

此次设计中,官方提供电机驱动芯片MMC-1,其具体硬件电路和与L298硬件接口电路参见附录3.1,不再赘述。

2.2发声模块电路

单片机控制蜂鸣器发声的原理如图2.2.1所示。

当单片机通过I/O口给出一个低电平控制信号后,三极管导通接通蜂鸣器,发出声音。

图2.2.1发声电路

2.3声音接收电路

声音接收采用电容式驻极体话筒构成的声音检测电路。

如图2.3.1所示,声音信号通过驻极体话筒转化为电压信号,经过滤波、放大、整形后输出,当有声音信号时,输出为高电平。

电路中的电位器PR可以调节模块电路对不同频率声音的敏感程度。

图2.3.1声音接收电路

2.4速度检测电路

速度检测电路如附录图3.2所示该电路为了避免比较器出现的尖刺杂波对单片机的干扰,后面加了积分电路和比较电路做迟滞环节,能有效的去除干扰,使得单片机计数后利用软件算法得出的速度和距离更加精确。

2.5无线通信电路

无线通信电路在系统中实现主机与从机的通信,主机将测量的误差信号传输到从机,从而控制从机的动作。

由于此次使用的无线模块系购买,具体电路不作详述。

3理论分析与计算

3.1控制策略分析

系统示意图如图3.1.1所示。

为了能使小车快速而准确定位,需要在控制策略上进行一定的分析。

由于声波在空气中的传输速度很快(约340m/s),而且容易受到环境和电路噪声的干扰。

如果硬件上的滤波不是很平滑,在这么近距离的测量过程中难免有较大的误差,导致精确测距很难实现。

而且本题目坐标定位数学模型计算复杂,数学上提供的理论工具最小二乘法或伪逆法也只能近似求解。

为了能精确定位,系统采用差值控制法。

具体算法如下:

对Ox直线,可利用声音到达时间差转换成SA与SB的距离差来控制小车运动。

由于Ox是AB中垂线,显然随着

的减小,就越靠近Ox。

=0时,就到达Ox。

由此来控制小车运行,而不用具体测出距离,显然,这样更具抗干扰性,稳态误差和超调量将更小。

同理,到达O’y也可利用A、C两点采取同样的方法进行控制。

3.2控制理论计算

声音导引车体系统模型近似成二阶系统,其闭环传递函数为:

从连续时间系统控制的角度,对二阶系统的时域分析,可以有效得到该系统的动态、静态性能参数。

为了提高系统的稳定性,改善小车的定位精度,在控制系统中进行比例-积分(PI)校正,依据原始系统模拟仿真的开环频率特性,在闭环负反馈控制系统中加入PI校正网络

4.系统的软件设计

系统软件程序是在WINDOWSXP环境下采用KEILUvision2软件开发平台上使用C语言编写的,以下是对主程序和主要子程序的说明。

4.1主程序

主程序是系统程序的枢纽,其主要功能是协调系统各模块工作,从机主程序负责通过对测回的数据进行计算,控制电机运转,定位结束后将要显示的信息发送给主机。

主机主程序负责不断地检测声音信号,给从机发送误差信号。

当定位结束后接受从机发来的数据显示并发出声光提示。

程序流程图如附录图4.1所示

4.2距离测量子程序

距离测量程序由主从机协调完成。

从机程序开始,发出声音打开定时器,然后等待主机返回的误差信号,检测到误差信号时关闭定时器,通过时间差测出距离。

主机程序开始,直接判断是否接受到声音信号,接受到声音信号后发出误差信号给从机。

程序流程如附录图4.2所示。

4.3无线通信子程序

无线通信程序是主从机数据交换的桥梁,主机将误差信号通过无线传给从机,从机将行驶状态等参数传给主机进行显示,语音播报等操作。

程序流程如附录图4.3和附录图4.4所示。

4.4电机驱动子程序

电机驱动程序是声源完成导引动作的直接关联部分,从机实时的将主机传来的误差信号通过处理,作出相应的动作指令。

程序流程如附录图4.5所示。

5.系统测试

5.1测试仪器

测试所使用的仪器如表5.1所示

表5.1测试仪器

名称、型号

规格、量程

数量

备注

YB4365双踪示波器

40MHz

1

江苏扬中电子仪器厂

UNI-T数字万用表

3位半

1

胜利公司

秒表

精度0.01s

1

深圳天福电子有限公司

卷尺

3m

1

——

5.2系统整体测试数据

5.2.1基本部分测试

在场地上Ox线左侧5cm处画一条与Ox平行的直线,将小车沿与Ox垂直方向放置,用卷尺测量并记录小车初始位置到Ox线的垂直距离。

系统启动,同时按下秒表计时,观察小车运行过程中是否超过OX线左侧5cm处,当小车运行到Ox线并停止时停止计时,记录时间,同时测量并记录小车与Ox间的定位误差。

测试结果如表5.2.1所示。

表5.2.1基本部分测试结果

测试次数

初始距离

是否过线

响应时间

定位误差

1

50cm

3.91s

1.5cm

2

40cm

3.12s

1.4cm

3

60cm

4.70s

1.6cm

5.2.2发挥部分测试

(1)声源反向测试

将声源旋转180°,重复基本部分测试过程,记录结果。

测试数据如表5.2.2所示。

表5.2.2声源旋转180°测试结果

测试次数

初始距离

是否过线

响应时间

定位误差

1

50cm

3.93s

1.3cm

2

60cm

4.69s

1.6cm

3

70cm

5.48s

1.4cm

(2)到达W点测试

在场地上OX线的左侧2cm处画一条与OX平行的直线,小车沿与OX垂直方向放置,用卷尺测量小车初始位置到OX线的垂直距离。

系统上电按下启动开关,同时按下秒表计时,观察小车运行过程中是否超过OX线的左侧2cm,小车运行到OX线并停止时停止计时,记录时间T1,同时测量并记录小车与OX线间的定位误差。

小车停止10s再次运行时按下秒表计时,小车再次停下发出声光提示时停止计时,记录时间T2,测量并记录小车在OX线上再次启动点与停止点之间的距离。

测试结果如表5.2.3所示。

表5.2.3发挥部分测试结果

测试

次数

初始

距离

是否过线

响应

时间

定位

误差

再次运

行时间

再次运

行距离

W点定位误差

1

50cm

4.53s

0.8cm

3.78s

40.5cm

0,7cm

2

60cm

5.74s

0.5cm

2.35s

25.4cm

0.9cm

3

70cm

6.45s

0.7cm

1.44s

15.3cm

0.7cm

5.3系统整体测试结果分析

通过测试,系统在基本部分的平均速度能达到12.8cm/s,定位误差均小于2cm,行驶过程中任意时刻不会超过OX左侧5cm。

在发挥部分的平均速度达到10.63cm/s,定位误差小于1cm,行驶过程任意时刻不会超过OX左侧2cm,能够达到全部的基本要求和几乎所有发挥部分的要求。

但是由于对小车运动姿态控制不够,导致在实现W点定位过程中,小车走偏,定位误差较大(在1cm附近小幅度晃动)。

6结论

通过几天的日夜奋战,终于做成了一个可以根据声音信号自动定位的声音导引系统,系统工作稳定,能够基本实现题目所有的要求,而且还增加了语音播报等人机交互功能。

系统制作的每一个细节,我们都通过了充分的讨论和计算,其中有几个部分地方具有突出的特色。

如:

采用实时速度和位置检测,实现闭环控制;采用语音播报,实现人机交互等等。

尽管在制作中精益求精,但小车仍存在许多值得改善的地方。

如声音接收电路滤波不够干净,造成系统误差;软件设计不够完善,算法欠佳,精度不够等。

回顾我们在这次设计中经历的一切,即体验了成功的喜悦,也品尝了许多失败的滋味,体会最深的是团队精神和理论指导实践的重要性。

参考文献:

[1]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(1994~1999)[M].北京:

北京理工大学出版社,1997.

[2]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(2001)[M].北京:

北京理工大学出版社,2003.

[3]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(2003)[M].北京:

北京理工大学出版社,2005.

[4]全国大学生电子设计竞赛组委会.全国大学生电子设计竞赛获奖作品选编(2005)[M].北京:

北京理工大学出版社,2007.

[5]黄智伟.全国大学生设计竞赛培训教程[M].北京:

电子工业出版社.2003.

[6]黄智伟.基于multisim2001的电子电路计算机仿真设计[M].北京:

电子工业出版社,2004.

[7]黄智伟.无线发射与接收电路设计[M].北京:

北京航空航天大学出版社,2004.

[8]黄智伟.全国大学生电子设计竞赛系统设计[M].北京航空航天大学出版社,2006.

[9]黄智伟.全国大学生电子设计竞赛制作实训[M].北京航空航天大学出版社,2007.

[10]黄智伟.全国大学生电子设计竞赛电路设计[M].北京航空航天大学出版社,2006.

 

附录

附录一:

使用说明

打开系统电源开关后,按下启动按键S1,听到语音提示后,按照语音提示操作。

当按下S2时,进入基本部分演示;按下S3时进入发挥部分演示;当按下S4时,退出系统,停止运行。

附录二:

元器件清单

名称

封装

数量

STC89C52

DIP40

2

LM358

DIP8

3

ST155

2

LM319

DIP14

2

L298

Multiwatt15

1

TLP521-4光耦

DIP16

1

蜂鸣器SFM-27

1

驻极体话筒

3

LM7805集成三端稳压

TO-220H

1

φ3mmLED

TO-96

13

10k排阻

SIP9

2

IN4007

DIODE0.4

2

电池组9V5V

各一组

轻触开关

13

直流蜂鸣器

5V

1

迷你小车

16cm×27cm

1

LCD1602

1

电阻

若干

电容

若干

MP3播放模块

1

无线通信模块

1对

附录三:

电路原理图及印制版图

附录3.1电机驱动电路

附录3.2速度检测电路

附录3.3声音检测电路

附录3.4控制电路

附录图3.5速度检测模块顶层PCB图

附录图3.6速度检测模块底层丝印图

附录图3.7声音检测模块顶层PCB图

附录图3.8声音检测模块顶层丝印图

附录图3.9声音检测模块底层丝印图

附录图3.10控制电路顶层PCB图

附录图3.11控制电路底层丝印图

附录图3.12控制电路顶层丝印图

附录四:

程序流程图

附录图4.1主程序

附录图4.2距离测量程序

附录图4.3无线数据发送程序

附录图4.4无线数据接收程序

附录图4.5电机驱动程序

附录五:

程序清单

/*串口初始化*/

/*说明:

串口的工作方式为工作方式1,波特率设为9600bit/s,单片机晶振为11.0592MHZ*/

voidInit_Serial()

{

TMOD|=0X20;//T1使用工作方式2

TH1=0xfd;

TL1=0xfd;

TR1=1;//设置波特率

PCON=0X00;//SMOD=1;波特率倍增

SCON=0Xd0;//工作方式三,允许接收

ES=0;//关串口中断,查询方式

}

//函数功能:

以查询方式发送一个字节数据

//形式参数:

dat:

要发送的数据

//返回值:

//说明:

发送查询方式

voidTxByte_serial(uchardat)

{

EA=0;//这里只关串口中断ES=0会有问题。

从机接收完数据会发送数据给主机就有问题了

//所以要留意

//TB8=1;//可能要设置

SBUF=dat;

while(!

TI);

TI=0;

EA=1;

}

//函数功能:

以查询方式接收一个字节数据

//形式参数:

//返回值:

dat:

要发送的数据

//说明:

发送查询方式

ucharRxByte_serial()

{

uchardat;

//RI=0;

while(!

RI);//等待接收从机应答信号

dat=SBUF;

RI=0;

returndat;

}

/*

voidser()interrupt4//接收中断方式

{

RI=0;

a=SBUF;//读取数据

flag=1;//置标志位

}

*/

#include"seri.h"

//NEC直流电机驱动函数

//IO

//寄存器地址

#defineCH1MODE0x00

#defineCH1DUTY0x03

#defineCH2MODE0x04

#defineCH2DUTY0x07

#defineCH3MODE0x08

#defineCH3DUTY0x0b

#defineSYNMODE0x0C//同步模式寄存器

//要作模式寄存器配置字

#defineFD_RUN0xC0//正向运行

#defineFD_STOP0x40//正向停止

#defineRE_RUN0xE0//正向运行

#defineRE_STOP0x60//反向停止

//功能:

写NEC寄存器

voidConfigReg_NEC(ucharcom,uchardat,bitecc1,bitecc2)

{

com|=0x50;

TB8=ecc1;

TxByte_serial(com);

delayms(5);//等待NEC完成

TB8=ecc2;

TxByte_serial(dat);

delayms(5);//等待NEC完成

delayms(5);//等待NEC完成

}

//功能:

写NEC寄存器

ucharReadReg_NEC(ucharaddr,bitecc)

{

uchartmp_NEC;

addr|=0xa0;

TB8=ecc;

TxByte_serial(addr);

tmp_NEC=RxByte_serial();

delayms(5);//等待NEC完成

returntmp_NEC;

}

//初始化NEC

voidInit_NEC()

{

delayms(10);//等待NEC完成

Init_Serial();//初始化串口

delayms(250);//等待NEC初始化完成

/*寄存器设置*/

//同步寄存器

ConfigReg_NEC(SYNMODE,0x00,1,1);//1,2通道不同步

//delayms(10);//等待NEC完成

//通道1

ConfigReg_NEC(CH1DUTY,0x81,1,1);//128档

//ConfigReg_NEC(CH1MODE,FD_RUN,1,1);//正向,运行

//通道2

ConfigReg_NEC(CH2DUTY,0x80,0,0);//100档

//ConfigReg_NEC(CH2MODE,FD_RUN,0,1);//正向,运行

//通道3

ConfigReg_NEC(CH3DUTY,0x90,0,1);//100档

//ConfigReg_NEC(CH3MODE,FD_RUN,0,1);//正向,运行

}

//电机正向运行

//sudu:

占空比。

n:

前进步数

voidMotorRunFO(uintn)

{

//ConfigReg_NEC(CH1DUTY,sudu);//档

//while(n--)

//{

ConfigReg_NEC(CH3MODE,FD_RUN,0,1);//正向,运行

ConfigReg_NEC(CH1MODE,0xc0,1,1);//正向,运行

N_nop(n);//运行一段时间

ConfigReg_NEC(CH3MODE,0x40,0,0);//正向,停止

ConfigReg_NEC(CH1MODE,0x40,1,0);//正向,停止

//N_nop(n);//运行一段时间

//}

}

//电机左转运行

//sudu:

占空比。

n:

前进步数

voidMotorRunLeft(ucharn,uintsudu)

{

//ConfigReg_NEC(CH1DUTY,sudu);//档

while(n-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2