基于Atmega128L单片机控制的声音监测与无线定位系统

发布者:rockstar7最新更新时间:2013-11-12 来源: eefocus关键字:Atmega128L  单片机控制的声音监测  无线定位系统 手机看文章 扫描二维码
随时随地手机看文章
1.声音信号产生的选择
 ATMEGA128L单片机产生频率为500Hz的方波用来作为声音信号。方波信号的产生实质上是在定时器溢出中断次数达到规定次数时,将输出I/O管脚的状态取反。该信号稳定是比较标准的频率为500Hz的方波信号,而且,产生波形比较灵活,频率可调,程序比较容易实现,最重要的是不会占用单片机太多资源。将信号经过三极管放大,此时扬声器的输出电流为40mA左右,供电电源为5V,P=U*I发声模块的功率低于200mW.如图1所示。
 图1   
2.拾音器接收放大电路
接收部分用拾音器接收声音信号,但由于拾音器接收到的信号在不经过放大时信号很小,200mv左右,不易检测,故接收到信号后利用NE5532组成的单级放大电路对信号进行放大。NE5532是高性能低噪声双运算放大器集成电路。与很多标准运放相似,但它具有更好的噪声性能,优良的输出驱动能力及相当高的小信号带宽,电源电压范围大等特点。因此很适合应用在高品质和专业音响设备、仪器、控制电路及电话通道放大器。用作音频放大时音色温柔,保真度高,阻抗匹配,适合用于声音信号放大。经过放大后信号幅值达到0.7v,接收放大电路如图2所示。
 图2  
3.滤波电路方案
通过放大后的信号由于音频信号载传输的过程中空气中会有各种噪声干扰,故需对放大后的信号进行滤波处理方案。本设计采用UAf42通用有源滤波器,可配置为低通、高通、带通滤波器。它使用了一种经典的状态可调的模拟结构,通过一个反向放大器和两个积分器。积分器包含片上1000pF±0.5%电容。这种结构解决了有源滤波器设计的一个重要的难题——获得紧密对准公差、低损耗电容。一种DOS兼容滤波器设计程式使得多款滤波器的设计变得容易。UAf42内部结构如图3所示。
 图3 
通过计算可以较方便的通过匹配电阻电容得出所需要的通频带。该滤波电路抗干扰性较强,可以准确计算带宽上下限,并且选用标准的阻容元件易得,带通滤波的中心频率为500Hz,可控制在5HZ之内,精度高。滤波电路如图4所示。[page]
 图4
4.比较电路方案
滤波后得到正弦信号,但该信号不便于用单片机进行识别,故在后级加入了一级比较电路。该部分采用高速双电压比较器LM393。 LM393是高增益,宽频带器件,其基本功能是对两个输入电压进行比较,并根据比较结果输出高电平或低电平。并由此来判断输入信号的大小和极性。从滤波器中输出的信号的幅值为1V以上,故将比较器的比较端给的比较电压设定为700mV左右,这样当输出的信号是频率为500Hz的方波,幅值为3.3V,能够用单片机进行检测,效果比较满意。比较电路如图5所示。
 图5
5.单片处理方案
声源信号经过比较器后可以被检测出来,比较器端输出3.3V的高电平,当没接收到有用信号时,比较器端输出0V低电平。再将这种信号输入到单片机中进行处理,很方便的能判断是否检测到有用声源信号。在运放的同向端经过10K滑线变阻器分压,进行阈值设定,反相端输入滤波得到标准信号,输出端则会输出3.3V或0V的方波信号,该信号中心频率为500Hz。将多路信号传送给单片机处理。结合AVR单片机的优良特性和性价比,该部分采用ATmega128单片机。它是一款高性能、低功耗的 AVR 8 位微处理器采用先进的RISC结构,32 x 8 通用工作寄存器 + 外设控制寄存器,工作于16 MHz 时性能高达16 MIPS,只需两个时钟周期的硬件乘法器,具有独立锁定位、可选择的启动代码区,多达64K 字节的优化的外部存储器空间
 可以对锁定位进行编程以实现软件加密。两个具有独立的预分频器和比较器功能的8 位定时器/ 计数器
和两个具有预分频器、比较功能和捕捉功能的16 位定时器/ 计数器,两路8 位PWM满足了本设计的算法要求。其最小系统如图6所示。
 图6
6.LED显示部分
通过单片机处理后得到较为准确的坐标值,为了方便用户使用直观的看出目标位置,需用LED显示出来。128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。如图7所示。[page]
 图7
7.程序设计及其流程图
采用同平面内三点定位方法即可得到准确的定位,统一轨道平面内有A、B、C三个定位监测点,到目标声源距离分别为Da、Db 、Dc。当某一个发生物体一旦发声,声音通过介质空气传播,被监测点的三个传感器所接受。设声源分别经过时间Ta、Tb、Tc被A、B、C监测点识别到。通过ATmega128处理,可计算出两个时间差t1、t2。已知声音在某介质中传播速度为v。通过几何定律可计算出声源0的准确坐标值(x,y)。这样就能简单、准确、高效、无误的达到对声音信号监测定位的目的。如图8所示。
 图8
#include
#include
#include"define.h"
 
extern char Reverse_Display;//是否反相显示(白底黑字/黑底白字)
 
void wr_com(unsigned char value)//写指令,写指令时必须为RS=0;RW=0;
{
 E_clear;
 RS_clear;
 RW_clear;
 delay_ms(1);
 LCD_DB_PORT=value;
 E_set;
 delay_ms(2); //如果没有延时就必须要加查忙指令
 E_clear;
}
void wr_data(unsigned char sj)//写数据,写数据时必须为 RS=1;RW=0;
{
 E_clear;
 RS_set;
 RW_clear;
 delay_ms(1);
 //if(!Reverse_Display)
LCD_DB_PORT=sj;
 //else 
 //PORTA=~sj;
 E_set;
delay_ms(1);//如果没有延时就必须要加查忙指令
 E_clear;
}
 
void LCD12864_Initialization (void)
{
 
 LCD_DB_PORT=0x00;
 LCD_DB_DDR=0xff;
 COM_PORT=0x00;
 COM_DDR=0xff;    
 
 wr_com(0x01);  //清屏
 wr_com(0x08);  //关显示
 wr_com(0x03);  //归位
 wr_com(0x30);  //功能设置
 //wr_com(0x0D);  //开显示  有光标
 wr_com(0x0C);//开显示 无光标
 wr_com(0x01);  //清屏
}
//****************
//outChinese 为函数名
//place 为显示地址的首地址
//unit  字符长度
//charcode[]  要显示数据的内容
void outChinese(unsigned char place,unsigned char unit,unsigned char *point)
{
 unsigned char i,progdata;
 wr_com(place);
 for(i=0;i
 {
  progdata=*(point+i);
 
  wr_data(progdata);
  }
}
void outchar(unsigned char place,unsigned char unit,unsigned char *point)
{
 unsigned char i,progdata;
 wr_com(place);
 for(i=0;i
 {
  progdata=*(point+i);
  wr_data(progdata);
  }
}
#include
#include
#include"define.h"
#pragma interrupt_handler INT_0:2
 
const uchar Place_show[]="声源坐标为:";
const uchar Digits[]="0123456789";
uchar soures[7]={0,};
 
void main()
{
init();
//outChinese(0x80,1,Place_show+0*2);
EICRA=0X03;//上升沿触发0-2中断
EIMSK=0X01;//使能0-2中断
while(1)
{
display();
delay_ms(1000);
EIMSK=0X01;//使能0-2中断
SEI();
}
 
}
 
void init()
{
LCD12864_Initialization ();
 
}
 
void INT_0()
{
soures[0]=soures[0]+1;
if(soures[0]==50) soures[0]=0;
EIMSK=0X00;//使能0-2中断
CLI();
 
}
 
 void delay_us(uint us) //在8M时钟情况下的US延时  
{
   uint i;
   us = us*5/4;   //5/4是在8MHz晶振下,通过软件仿真反复实验得到的数值
   for(i=0; i
}
 
void delay_ms(uint ms)
{
  uint i,j;
  for(i=0;i
  { 
   for(j=0;j<1141;j++);
  }
}[page]
 
void display()
{
      outChinese(0x80,1,Place_show+0*2);
      outChinese(0x81,1,Place_show+1*2);
      outChinese(0x82,1,Place_show+2*2);
      outChinese(0x83,1,Place_show+3*2);
 outChinese(0x84,1,Place_show+4*2);
 outChinese(0x85,1,Place_show+5*2);
 
 outchar(0x90,1,Digits+soures[0]/10);
 outchar(0x91,1,Digits+soures[0]%10);
 
  outchar(0x92,1,Digits+soures[1]/10);
 outchar(0x93,1,Digits+soures[1]%10);
 
  outchar(0x94,1,Digits+soures[2]/10);
 outchar(0x95,1,Digits+soures[2]%10);
 
  outchar(0x96,1,Digits+soures[3]/10);
 outchar(0x97,1,Digits+soures[3]%10);
 
  outchar(0x88,1,Digits+soures[4]/10);
 outchar(0x89,1,Digits+soures[4]%10);
 
  outchar(0x8A,1,Digits+soures[5]/10);
 outchar(0x8B,1,Digits+soures[5]%10);
 
  outchar(0x8C,1,Digits+soures[6]/10);
 outchar(0x8D,1,Digits+soures[6]%10);
 
  outchar(0x8E,1,Digits+soures[7]/10);
 outchar(0x8F,1,Digits+soures[7]%10);
 
}       
8.定位算法                                          
 采用三点定位的方法,只需测出两个时间差即可。通过时间差及相应的几何公式可以轻易的推导出X、Y坐标。  设变量: OA=a1;OB=b1;OC=c1;    
        可得等式:        
         X^2+Y^2=b1^2;                   (1)
 
        (600-X)^2+Y^2=c1^2;         (2)
 
        (300-Y)^2+X^2=a1^2;         (3)  
 
通过解方程,算出X、Y坐标值:
 
      X=(b1^2-a1^2+4500)/80
 
      Y=(b1^2-c1^2+3000)/120
为了使定位结果更加精确,可在软件编写过程中让单片机测量多次。然后取其平均值,作为最后结果输出。这样可以不仅提高测试结果的精确度同时也避免了结果的偶然误差。程序主流程图如图9所示。
图9
9.测试方案与结果分析
测试方法与仪器
声源定位测试方法:将声源放在坐标纸上的任意坐标,不让声源发声,记下坐标值(x0,y0)。然后启动声源,让声源发出1s左右的声音信号,同时单片机接收信号后开始进行计算,计算出的坐标值(x1,y1)通过LCD显示频显示出来。
测试数据完整性
声音定位数据
数组       声源坐标(x,y)               测量坐标(x,y)                    误差
 1            50,50                             49,48                                     3%
 2           120,120                     118,118                                1.6%
 3           200,250                     217,252                                1.1%
 4           250,300                     253,302                                 0.9%
 5           300,350                     297,353                                 0.9%
       从上述试验数据可以看出当声源距离越远时实验误差越小,声音在传播的过程中受介质温度、压强等影响会带来一定的误差,远距离传输时这种非人为因数误差可以忽略不计。
关键字:Atmega128L  单片机控制的声音监测  无线定位系统 引用地址:基于Atmega128L单片机控制的声音监测与无线定位系统

上一篇:基于ATmega128的智能安全帽特性检测仪设计
下一篇:AVR单片机的天然气发动机系统设计

推荐阅读最新更新时间:2024-03-16 13:30

以DSP为核心无线定位系统方案设计
引言 无线定位技术是利用无线信号来判定某一半径范围内无线信号发射终端物理位置的一种方法。移动通信网络中移动终端的定位方法可分为两大类:一类是基于手机的定位方法,通过在每个移动终端(如手机)内部安装微型GPS接收器进行定位。另一类是基于网络的定位方法。这种方法与基于移动终端的定位方法正相反,该方法根据移动终端发出的信号到达基站的参数,如到达时间(TOA)参数、到达角度(DOA)参数等进行定位。基于网络定位的方法需要用到阵列天线,阵列天线传感器接收到的无线信号经过前端预处理进行放大、取噪,然后进行模数转换,最后DSP对接收数据进行处理得到方向估计。 因为TMS320VC5402(以下简称C5402)内部没有集成A/D,因此在数据
[应用]
香港科大首创无线射频识别(RFID)室内定位系统
  RFID由标签和感应器组成,感应器能接收周遭环境数据,以作分析用途。图为倪明选手执感应器。        ──可应用防盗装置医学环保 获国家高校科学一等奖      在荷里活电影中,博物馆和情报机构等均会采用红外线装置防盗,匪徒要盗取资料,往往要大耍“缩骨功”才能避过红外线。香港科技大学计算机科学及工程学系讲座教授倪明选、副教授刘云浩及博士生李默,研发出全球首个无线射频识别(RFID)的室内定位系统,其准确性极高,用于防盗系统上,即使匪徒身手如何了得,亦会干扰到遍及室内的无线电波而无所遁形。系统甚至能建立“智能都市”,应用于医学、城市规划和环保等其他层面,有关研究更获国家教育部2010年度高校科学研究优秀成果奖(科学
[网络通信]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved