-
2013
年全国大学生电子设计竞赛
2013 National Undergraduate
Electronic Design Contest
设计报告
design report
参赛题目:
红外光通信装置(
F
题)
日
期:
2013
年
9
月
7
日
队伍编号:
20130136
红外光通信装置(
F
题)
摘要
本装置由
32
位
MC U
为主控制器
。
采集音频信号 及温度信号后,
利用红外发光
管和红外光接收模块作为收发器件
,用来定向传输。另配有一个红外光通信中继转
发节点,以改变通信方向
90
°,传输距离为
2m
。
播放出语音,用液晶屏显示当前温度。
当接收装置不能接收发射端发射的信号时,
用发光管指示。装置如图所示:<
/p>
关键词:
MCU
;
红外通信
;语音信号
;定向传输
Abstract:
:
This communication device is based on a 32-bit MCU controller . First , the
system
Acquisition audio signal and temperature . Then ,
we use infrared receiver and
infrared
transmitter to transport audio signal . Beside ,
there is a relay can use
relay node to
change transmission direction
90
°
, and relay distance no less than 2
meters . Last , the system
play audio by earphone and show the temperature by
LCD .
If infrared receiver
can
’
t receive signals , the LED turned on .
Keyword:
MCU
Infrared
Communication
Audio
Transmission
1.
引言
我们在分析题目之后认为难点是利用红外收 发装置尽可能完整的传输信号
而且信号中要包含音频信息和温度信息。于是我们设计了三
种方案:
(一)直接
传输音频的模拟信号,定时发生中断,在中断中发送
温度的数字信号。
(二)用
VS1503
把采到的音频信 号转化为压缩比较高的
.ogg
格式,
再通过串口方式发送给 p>
接收端,接收端解码为音频信号播出。
(三)用
STM32< /p>
对采集到的音频信号转化
为数字信号,
通过软件降噪后再转 化为模拟信号传输。
接收端同样将接收到的模
拟信号转化为数字信号,用
软件处理后转化为模拟信号播放。
在硬件方面,考虑到音频信号的采集
和播放,需要设计一些滤波电路和一些
放大电路等。
红外数字传输可以用 包络检波在模拟信号中加载出信号。
在完成硬
件平台后,我们开始从以上
方案入手,开始对问题的讨论。
2.
方案设计与论证
方案(一)
直接
传输音频的模拟信号,定时发生中断,在中断中发送温度的数字信号。
流程图如下:
p>
音频信号输入
信号预处理
红外发射端
温度值
9
显示
发送温度值
红外接收端
发送音频
是
有
温
度 p>
值
输
入?
否
经过仔细分析,用模拟信号传输音频会造成
很大的失真,在发送温度时会严
重影响音频的播放。
方案(二)
用<
/p>
VS1503
把采到的音频信号转化为压缩比较高的
.ogg
格式,
再通过串口方式
发送给接收端,
接收端解 码为音频信号播出。
此方案从理论上来说造成音频信号
的失真非常小,<
/p>
使用串口方式通信的话波特率我们根据红外光发射接收头的波长
特性,发射
功率等参数计算并测试下来可达到
4800bps
,如要实时更新音频信号
则会有较大延时,
可能会超过
5-10
秒,
如采用数字语音压缩算法,
8K
采样率下
< p>8
位数据可压缩至
1K byte/
秒,
且必须靠可靠的双向通信协议来保证,
不然信号
将失真严重,故此方案被放弃。
方案(三)
用
STM32
对采集到的音频信号经过
8k
或< /p>
16k
采样周期转化为数字信号,
采
用软件
降低噪音,
采用芯片带的
PWM
更新中断协调好
8K
载波周期。
采用
11
位高精度
PWM
脉宽调制。
接收端同样将接收到的微弱的模拟信号经过带通
滤波器,
电容隔直放大信号后
ADC
采样转化为数字信号,温度传感器采集 的
数字信号通过包络载波形式加载与模拟信号之中用软件数字降噪调理处理后转
化为模拟信号播放。具体流程如下:
此方案的操作性比较强,从理论上分许可以达到预定目标。
3.
系统设计
本系统分为
5
个模块,分别用
3
块
STM32
来控制。
1
)语音及温度的采集
语音信号的采集主要是实现声音信号到电信号的转换。使用的 方法是用一个
驻极体,接受声音信号,然后进行信号放大。一般麦克风输出电平为几十毫
伏
,
经增益约为
46 dB
的前置放大器
A 1
放大至
1V
左右的范围
,
以便推动后级电路。
通过带通滤波器将频带通路设置在人耳比较容易实现的
300HZ
-
20KHZ
,
CPU
每秒钟采样
8 000
点语音数据
,
每一点数据 以一个
12
位分辨率采样及传输,因为
音频放大芯片已经
将处理为
1.65V
为中心的模拟信号,因此我们可以根据此特
性进行数字滤波及降噪声处理,
温度采集
使用
DS18B20
数字温度传感器。通过
STM32
< p>与DS18B20
连接,得到
实时的温度信息。
p>
红外发送
红外发送电路我们使用了
9013
三极管处于饱 和状态
PWM
脉宽调试方
式来驱动红外发射管,
通过
STM32
主
CPU
进行和
8K
频率
进行
ADC
一致
的高级定时器设置,
并且进行了过采样来保证声音的银色,
用
12
位高精度
PWM
脉宽周期来调理红外发射电路,
因为高载波,
因此我们无需多个发射管
串联就可以将数据传输的很远。对于数字信号的
包络波方式加载于模拟信号中,
不过再此次项目中我们并没有使用软件做数字
38k
载波处理,
我们选择了使用
硬件电路做
数字载波,通过幅度的不同来区分与模拟信号。
3
)红外接收
红外接收电路中我们使用了两套电路,
一套使用电容隔 直流并放大音频信
号来采集到调制过的模拟信号,
我们 并没有使用传统的运放比较器去滤除加载
的数字信号,
我们选择了更加灵活的
38k
一体接收芯片做为单独的通道处理数
字信号,
模拟信号我们在
ADC
采集后进行数字化降噪和分离出数字信号,进
实际测试,
此设计方案非常好的处理好模拟数字通道的发送和接收。对于中继
我们还
放大了数字信号为了更好的传输语音信号。
4
)后级功放电路及电源
由于此次设计需要比较好的模拟量调理电路,
所以我们没有选择开关电源
降低电源质量,
减少纹波。
后级功放电路我们选择了数字功放,
更将简单处
理功放的设计,
由于高集成度,
所以更加方便的避免了万能板做电路对于电源< /p>
信号的处理难问题,
特别是数字模拟功率三部分三点接地的处理上更加容易了。
4.
方案测试
1)
测试声音是否正常采集放大
p>
将采集到的信号经过放大电路输入到示波器上,观察得到的波形。峰值可以
< br>达到
1V
左右,达到预期的要求,说明音频采集放大电路没有问题。
2)
测试声音信号经过传输后的还原情况
接收的声音应无明显失真。
当发射端输入语音信号改为
800Hz p>
单音信号时,
在
8
Ω
电阻负载
上,接收装置的输出电压有效值为
0.7V
。不改变电路状态,减小发射端输 p>
入信号的幅度至
0V
,测量此时接收装置输出端噪声电压,读 数约为
80m
V
。
3)
测试温度检测是否正常
启动系统,发送端通过
DS18B20
采集到温度后,经系统传输后显示在超大液
晶屏上。
用手轻轻捂住温度传感器,显示的温度有所增加,说明温度值在通过
系统
实时传输。与此同时,音频信号传输正常,播放正常。
4
)测试中继节点工作是否正常
在系统中加入中继节点电流为峰值
5
个毫安左右,提 供
5V
电源。系统开启后依
然可以正常工作。
我们做了低功
耗待机
的电流减少处理,通过模拟信号及数字信号的触发方式来唤醒
CPU
处于
恢复工作状态。
5.
总结
经过不断的测试,我们决定使用方案(三)
。 在方案实现的过程中,我们遇
到了很多困难,
但是我们都坚持不到最后一 刻绝不放弃的原则,
将问题一个一个
解决。
最终很好的完 成了基本要求,
基本完成了附加要求。
我们的团队意识非常
好,
每个人都努力把分到的工作认真对待。
在队友出现小错误的时候不埋怨不气
馁,
而是耐心的检查并找出解决问题的方案。
在作品完成 之后我们都很高兴,
也
在此次竞赛中吸取了很多宝贵经验,收获了难得的
友谊。
附录:
附
1
:元器件明细表
1
、
2
、
3
、
4
、
5
、
红外发射管、接收管
驻极体、喇叭、耳机、彩色液晶屏
LM567
、
LM358
、
74HC00
、< /p>
STM32
,
MCP6002
等
三极管
9012
、
9013
电位器、电容、电阻、杜邦线若干。
附
2
:仪器设备清单
1
、逻辑分析仪
2
、数字毫安表
3
、失真度测量仪
4
、数字示波器
5
、稳压电源
附
3
:电路图图纸
音频采集放大电路
温度采集电路
38K
载波发生电路
红外发射电路
红外接收电路
附
4
:部分软件程序
Main.c
INT8U
P500usReq = 0;
INT8U SendState;
INT8U DestUart = 0;
pwm_t
Mypwm;
ppm_t Myppm;
void
P500us(void)
{
static INT16U AnlogTimes = 0;
LedTask();
if(Uart2Rb[0])
{
DMA_Cmd(DMA1_Channel6, DISABLE);
DMA1_Channel6->CNDTR = 1;
DMA_Cmd(DMA1_Channel6, ENABLE);
if(Uart2Rb[0] % 8 == ((Uart2Rb[0] >> 3) % 8))
{
//Send_Hex(Uart2Rb[0]);
DestUart = Uart2Rb[0];
}
Uart2Rb[0] = 0;
}
switch(SendState)
{
case Anlog:
if(AnlogTimes++ >= 31995)
{
AnlogTimes = 0;
SendState = Digtal;
}
DacValueSet(1,ADC_CH1_ConvertedValue);
break;
case Digtal:
if(DestUart)
{
TIM_Cmd(TIM1, DISABLE);
Send_Hex(DestUart);
TIM_Cmd(TIM1, ENABLE);
DestUart = 0;
}
SendState = Anlog;
break;
case Idle:
break;
}
}
void PeriphCompent_init(void)
{
SystemInit();
SysTick_Config(720000/320); //
初始化滴答定时器
InitUartMonitor();
//
初始化串口
1,2
pwm_init(&Mypwm);
ppm_init(&Myppm);
ADC1_Init();
DAC_Configuration();
LedInit();
}
INT8U Temp =7;
/**
* @brief
* @param
None
* @retval None
*/
int main(void)
{
PeriphCompent_init();
while (1)
{
if (P500usReq) //
轮询时间信号状态
{
P500usReq = 0;
P500us();
}
}
}
< p>
******************************************** **********************************
* @file
PPM.C
* @author
Lvhaian R&D Driver Software Team
* @version V1.0.0
* @date
07/24/2012
* @brief
配置
PPM
*************************************************
*****************************
clude
#include
#include
#include
#include
/** @addtogroup
XFlyer_Driver
* @{
*/
/** @addtogroup PPM
* @{
*/
/** @defgroup
PPM_Private_TypesDefinitions
* @{
*/
/**
* @}
*/
/** @defgroup
PPM_Private_Defines
* @{
*/
/**
* @}
*/
/** @defgroup PPM_Private_Macros
* @{
*/
/**
* @}
*/
/** @defgroup PPM_Private_Variables
* @{
*/
#define
MinDig 2038
ppm_t *p_ppm =
0;
/**< pointer to PPM area */
/**
* @}
*/
/** @defgroup
PPM_Private_FunctionPrototypes
* @{
*/
-
-
-
-
-
-
-
-
-
上一篇:linux期末考试题_西南大学
下一篇:全国大学英语六级考试语法知识点重点讲解精编