电子设计大赛++声音识别由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“电子设计大赛获奖作品”。
声音引导系统
摘要:本设计采用两块单片机(AT89C51)作为引导系统的定位和控制核心,实现声源的定位、选择行进的路线、停止在指定位置、发出指示信号等功能。采用麦克风声源定位技术,通过检测不同麦克风所接收到的信号能量比来确定声源位置。通过红外将声源位置无线传输给小汽车上的接收装置,对小车(声源)的运动进行控制。采用NEC公司电机控制ASSP 芯片MMC-1,对电机方向、速度等进行控制。
关键词:声音定位,无线传输,单片机,步进电机,MMC-1
1.系统方案选择和论证
1.1系统基本方案
根据题目要求,系统可划分为声源定位和控制两部分。其中声源定位部分包括:声音信号的接收,模拟信号的转换,数字信号的处理。声源控制(小车)部分包括:声源的产生,电机驱动模块,信号的接收,停车信号标示模块。模块框图如图1。
图1 1.1.1各模块方案选择和论证
(1)声音信号的采集和声源的定位
根据题目要求,分别从题目所标示的三个点A、B和C对声源发出的声信号进行采集。由三个点的声音传感器所采集的信号的不同来确定声源的位置。对信号的比较有以下几种方案。
方案一:基于时差的定位。由于声源距三个点的距离各不相同,所以声音从S点传到接受点所用的时间不同。根据声音从S点到各接收点的时间差,确定声源S的位置。当Ta>Tb时,声源在OX的左边,小车应向右移动;当Ta=Tb时,声源在OX上,小车停下来。同理;当Ta>Tc时,小车应向下移动;Ta
方案二:基于波达方向定位。它是以多个声音传感器阵列所采集的信号来实现声源的定位和跟踪,通过求解传感器阵列接收到的信号之间的相关矩阵来确定声源位置。由于题中所限制的条件,声音传感器的数目太少,无法实现波达方向定位。
方案三:基于接收到的信号能量定位。声音在空中传播的过程中能量会损失,声源S距接收点距离的不同,在传播中损失的能量也不同,在接收点所接收到的声音的能量也不同。通过AD转换器,将所接收到的模拟信号分时量化成数字信号。比较各接收点的数字信号便可确定生源的位置。
(2)控制信号的传输、接收模块
声源通过接收到的控制信号控制小汽车的运动,从而满足题目的要求。由于信号源与外围电路不能有线连接,所以必须使用无线传输,将控制信号传输给信号源。无线传输有以下几种方案:
方案一:红外传输。红外线通讯是一种廉价、近距离、无线、低功耗、保密性强的通讯方案。利用红外线通讯无需连线,只需将两设备的红外线装置对正即可传输数据。红外线通讯方向性很强,适用于近距离的无线传输。对于本设计,只需在相应时间段后,发射端发送一标志信号,接收端扫描该信号来进行控制,不需要其它的通信协议相对较简单。
方案二:无线电波。无线电波是指在自由空间传播的射频频段的电磁波。现在无线电有着多种应用形式,包括无线数据网,各种移动通信以及无线电广播等。无线电技术的原理在于,导体中电流强弱的改变会产生无线电波。当电波通过空间传播到达收信端,电波引起的电磁场变化又会在导体中产生电流。通过解调将信息从电流变化中提取出来,就达到了信息传递的目的。
(3)声源的产生
声源产生的音频信号向四周传播。接收器通过对接收到的信号确定声源的位置。由于在现实环境中存在各种各样的噪音,会对接收器产生影响或误导,所以应当采用适当方式避免这些问题。在本设计中采用单片机控制蜂鸣器,发出频率约为2KHZ的信号,与周围人所发出的噪音(约70HZ——1000HZ)相差较大,从而减少外部环境的影响。同时,外部的接收器也对所接受的信号的范围进行选择,以保证所接受信息的正确性。
(4)停车信号标示
在音源S到达题目要求的位置后,外部定位系统将给小车发出指示停止信号。音源S上的控制芯片将发送停止信号给电机控制芯片,使小车停止。然后,控制芯片控制发光二级管闪两次,蜂鸣器响两声标示到达指定位置后停止。
(5)电机驱动模块
电机的驱动模块主要用于电机的控制和电机的驱动。根据题目要求,电机控制ASSP芯片(型号MMC-1)实现可移动声源的运动。MMC-1 为多通道两相四线式步进电机/直流电机控制芯片,基于NEC 电子16 位通用MCU(PD78F1203)固化专用程序实现。通过UART 或SPI 串行接口,为主控MCU 扩展专用电机控制功能,可同时控制三路步进电机或直流电机。本芯片能方便的实现电机的控制。
2.系统的硬件设计与实现
2.1系统硬件的基本组成部分
本题是一个声音、机电一体的综合设计,在设计中运用了检测技术,声音定位技术,自动控制技术,电子技术。系统可分为声音采集处理部分和智能控制部分。
声音采集处理部分:系统利用多个声音传感器,检测到外部特定声音信息,转化为控制器件能辨认的点信号,在进行处理分析,来进行定位。
智能控制部分:系统通过中控制器件使声源发出特定频率的声音,控制电机使声源安要求的速度行驶,时刻监测声音采集部分的定位信号,控制使声源停在特定的位置。以及控制小车的LED发光二级管,蜂鸣器,完成明显的光和声的提示。
2.2主要单元电路的设计
2.2.1声音采集处理部分
(1)声电转换及AD 前级匹配电路的设计与实现
移动声源产生的信号为周期性音频脉冲信号,但是由于普通的环境有各种各样的声音,必然会导致声音的检测出现差错。从而导致声源的定位出现严重的误差。为了解决这一问题,我们使声源发出频率很高的音频脉冲,在声音采集的时,加入一个滤波电路,从而采集到声源的音频脉冲。我选用的麦克风的特性是,它的电阻值随外界声音震动而改变。因此只要加一个直流偏置可以取得电压随声音变化的波形。用大电容割直后,用运放进行放大并调整到单片机A/D所能接受的范围(0-3.3V)。考虑到整个系统的供电,采用单电源高速运放LM358。为了能够撑满A/D 的量程。AD转换并处理电路设计:详见附录1
(2)AD转换并处理电路如图:详见附录1 ADC0809的时钟信号CLK由单片机的地址锁存允许信号ALE提供。当P2.7和WR同时有效时,以线选方式启动A/D转换,同时使ADC0809的ALE有效,P0口输出的地址A2,A1和A0经锁存器74LS373的Q2,Q1,Q0输出到ADC0809的ADDc,ADDb,ADDa,以选定转换通道,IN0~IN7地址为7FF8H~QFFFH.当P2.7和RD信号同时有效时,OE有效,输出缓冲器打开,单片机接收转换数据。
(3)红外发射电路设计
红外发射器电路主要由单片机,驱动管Q1和Q2、红外发射管D1等组成,电路图详见附录1
红外发射器工作原理为:单片机通过I/O端口控制整个发射过程。其中,红外载波信号采用频率为38KHz的方波,由PIC18F248的CCP模块的PWM功能实现,并由CCP1端口传输到三极管T2的基极。待发送到数据由单片机的TX端口以串行方式送出并驱动三极管Q1,当TX为“0”时使Q1管导通,通过Q2管采用脉宽调制(PWM)方式调制成38KHz的载波信号,并由红外发射管D1以光脉冲的形式向外发送。当TX为“1”时使Q1管截止,Q2管也截止,连接Q1和Q2的两个上拉电阻R1和R3把三极管的基极拉成高电平,分别保证两个三极管可靠截止,红外发射管D1不发射红外光。因此通过待发送数据的“0”或“1”就可控制调制后两个脉冲串之间的时间间隔,即调制PWM的占空比。比如若传送数据的波特率为1200bps,则每个数位“0”就对应32个载波脉冲调制信号。红外发射管D1采用TSAL6200红外发射二极管,其实现将电信号转变成一定频率的红外光信号,它发射一种时断时续的高频红外脉冲信号,由于脉冲串时间长度是恒定的,根据脉冲串之间的间隔大小就可以确定传输的数据是“0”还是“1”。2.2.2智能控制部分
(1)红外接收电路设计
红外接收电路主要采用Vishay公司的专用红外接收模块HS0038B。接收电路如图附录1。
接收电路工作原理为:当接收到载波频率为38KHz的脉冲调制信号时,首先,HS0038B内的红外敏感元件将脉冲调制红外光信号转换成电信号,再由前置放大器和自动增益控制电路进行放大处理,然后通过带通滤波器进行滤波,滤波后的信号由解调电路进行解调,最后由输出电路进行反向放大并输出低电平;未接收到载波信号时,电路则输出高电平。这样就可以将断断续续的红外光信号解调成一定周期的连续方波信号,并通过单片机的串口输入单片机,由单片机处理后便可以恢复出原始数据信号。
(2)电机的驱动控制设计
本模块的电机控制通过电机控制ASSP芯片(型号MMC-1)实现可移动声源的运动。主要功能特点如下:
三通道步进电机或直流电机控制,电机类型可以自由配置主控MCU 通过UART 或者SPI 串型接口控制步进电机可以通过速度或步进增量给定模式运行步进电机的正反转功能到位中断信号输出(步进增量给定模式)步进电机1/2,1/4,1/8 细分功能直流电机的正反转控制直流电机的速度控制256 档过电流检测功能两通道、三通道同步功能睡眠模式
只需用串口对该芯片的控制寄存器写控制字,能方便的实现直流电机的控制。每一路直流电机需要CHnDCPWM和CHnDCDIR 两个引脚(n=1~3),CHnDCPWM 用于PWM 输出,CHnDCDIR 用于指定电机转向,外接一个全桥驱动芯片就可以控制直流电机工作。输出频率固定16KHz,通过调节占空比控制电机转速。实现开始/停止运行正向/反向运行。但是,由于该芯片没有驱动能力,不能直接驱动电机,所以必须加个驱动电路,我们这里用了一片L298来实现电机的驱动。
但是我们仍然需要在晶体管两端接二极管,因为马达线圈在电路开闭瞬间产生的反向电动势通过会高过电源,这样对晶体管和电路会有很大的影响甚至烧毁零件。所以我们在这用了半导体H桥接技术,来避免马达的反电动势的危害。
3.软件设计
软件设计的关键是对AT89C51采集到的信号进行处理分析,以怎样的算法来确定声源位置的问题。以及信号采集处理芯片与声源的数据传输。软件实现的功能是:
(1)音频的采集A/D的转化
(2)转化后数据的算法分析,确定声源的位置,(3)位置定位后,传输信号给声源(4)电机的控制(5)到OX光和声的现实
3.1声音采集分析,信号发送部分的程序设计
应用C51编程具有以下优点:
C51管理内部寄存器和存储器的分配,编程时,无需考虑不同寄存器的寻址和数据类型等细节问题。
程序由若干函数组成,具有良好的模块化结构。
有丰富的子程序库可直接饮用,从而大大减少用户编程的工作量。程序代码用C51编写 3.1.1声音的采集A/D的转换
程序详见附录2。
3.2信号接收,控制小车程序设计
通过对I/O口的信号扫描,判断小车是否前进,如果没有收到信号,则小车停止。此程序只设计是否前进,完成初步要求。因为时间与能力关系,在这四天三夜的时间里没能完成所有的要求。程序详见附录。
4.总结
声音引导控制技术课题是一个复杂和具有相当难度的研究方向,通过对声音定位算法的研究,以及无线数据传输以及智能控制实现声源的定位以及引导。实际应用方向广泛,有很大的开发潜力和应用空间。在本次设计开发过程中,遇到很多问题,通过不断的努力,反复的研究,问题一步步攻克。对“团队合作”,有了进一步的认识。为以后的单片机的开发与间就奠定了基础。
附录1 AD转换并处理电路:
AD转换并处理电路如图:
红外发射电路:
红外接收电路设计
附录2(程序设计)
声音的采集A/D的转换程序设计:
#include #include #define uchar unsigned char sbit P21=P2^1;
//是否发送,为1时发送 sbit P27=P2^7;
//A15 sbit P32=P3^2;
//INT0 sbit P36=P3^6;//WR sbit P37=P3^7;//RD
unsigned char t[3];
uchar i;int0()interrupt 0
//int0中断函数
{ i++;P27=0;P37=0;
if(i
t[i]=P0;
else
{i=0;t[i]=P0;} } void delay1(uchar t)//t=1时0.5ms {uchar a;while(--t!=0)for(a=248;a!=0;a--);} void main(){ EA=1;EX0=1;IT0=1;
P27=0;P36=0;
delay1(1);
if(t[0]>t[1])P21=1;
while(1);}
信号接收,控制小车程序设计 #include #define uchar unsigned char sbit key=P3^0;//定义各相端
sbit P01=P0^1;//行驶中声音响,低电平有效 sbit P00=P0^0;//终点灯1亮,声响,低电平有效 sbit P03=P0^3;sbit P04=P0^4;void delay(uchar x){ uchar a,b,c;
for(c==x;c!=0;c--)
for(a=20;a!=0;a--)
for(b=248;b!=0;b--);} void delay1(uchar t)//t=1时0.5ms控制声音频率1KHZ.{uchar a;while(--t!=0)for(a=248;a!=0;a--);} void init(){TMOD=0x20;
//T1工作于定时,自启动,方式2.TH1=0xfd;
TL1=0xfd;
PCON=0x00;
SCON=0xd8;
//方式3,接收允许,欲发第9位
//x=1时10ms 为1.TR1=1;} void write(uchar dat)
//写操作
{TB8=1;
//欲发第9位为1.SBUF=dat;
while(TI==0);
//是否发生中断,否-->循环.TI=0;
//发送中断位软件清零.} void forward()
{
delay1(1);
P01=0;P00=1;
delay1(1);
delay1(1);
write(0x5c);
delay1(4);
//寄存器0x0CH,同步模式寄存器,//小车运动程序段P01控制声音
//前进,声音响
//延时0.5ms
//延时2ms
//三通道不同步,实际只用到通道1.//延时5ms
//通道1占空比寄存器
write(0x00);
delay1(10);
write(0x53);
delay1(4);
write(0x60);
delay1(10);
write(0x50);
delay1(4);
write(0xc0);
delay1(10);
//占空比96/255
//通道1工作模式
//运行,直流电机,正向,自由跑,全步,保留位0
} void stop()
//停止,声音响,灯亮 {
P01=1;P00=0;
write(0x50);
delay1(4);
//延时2ms //停止运动
//声音
write(0x50);
P01=1;
P00=0;
//车停灯亮,声音响
delay1(10);
} void main(){ init();
delay(1);
forward();
delay(200);
while(1){ P03=1;P04=0;
delay(1);
if(key!=1)
{delay1(1);
if(key!=1)
stop();
}
else
forward();
} }
//5ms
//延时2s
//延时500us
//延时500us
附录3(核心芯片)
1.简介
MMC-1 为多通道两相四线式步进电机/直流电机控制芯片,基于NEC 电子16 位通用
MCU(PD78F1203)固化专用程序实现。通过UART 或SPI 串行接口,为主控MCU 扩
展专用电机控制功能,可同时控制三路步进电机或直流电机。主要功能特点如下: 三通道步进电机或直流电机控制,电机类型可以自由配置 主控MCU 通过UART 或者SPI 串型接口控制 步进电机可以通过速度或步进增量给定模式运行步进电机的正反转功能
到位中断信号输出(步进增量给定模式)步进电机1/2,1/4,1/8 细分功能 直流电机的正反转控制 直流电机的速度控制256 档 过电流检测功能 两通道、三通道同步功能 睡眠模式
供电电压:Vdd=2.7V~5.5V 封装形式:SSOP30 15