ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:660.09KB ,
资源ID:24538914      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24538914.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(全国大学生电子设计竞赛.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

全国大学生电子设计竞赛.docx

1、全国大学生电子设计竞赛2013年全国大学生电子设计竞赛 2013 National Undergraduate Electronic Design Contest 设计报告design report参赛题目: 红外光通信装置(F题) 队伍编号: 20130136 日 期:2013年9月7日红外光通信装置(F题)摘要 本装置由32位MCU为主控制器。 采集音频信号及温度信号后,利用红外发光管和红外光接收模块作为收发器件,用来定向传输。另配有一个红外光通信中继转发节点,以改变通信方向90,传输距离为2m。 接收装置在接收到信号后用耳机播放出语音,用液晶屏显示当前温度。当接收装置不能接收发射端发射的

2、信号时,用发光管指示。装置如图所示:关键词: 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 node.we

3、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 cant receive signals , the LED turned on .Keyword: MCU Infrared Communication Audio Transmission 1. 引言 我们

4、在分析题目之后认为难点是利用红外收发装置尽可能完整的传输信号而且信号中要包含音频信息和温度信息。于是我们设计了三种方案:(一)直接传输音频的模拟信号,定时发生中断,在中断中发送温度的数字信号。(二)用VS1503把采到的音频信号转化为压缩比较高的.ogg格式,再通过串口方式发送给接收端,接收端解码为音频信号播出。(三)用STM32对采集到的音频信号转化为数字信号,通过软件降噪后再转化为模拟信号传输。接收端同样将接收到的模拟信号转化为数字信号,用软件处理后转化为模拟信号播放。在硬件方面,考虑到音频信号的采集和播放,需要设计一些滤波电路和一些放大电路等。红外数字传输可以用包络检波在模拟信号中加载出

5、信号。在完成硬件平台后,我们开始从以上方案入手,开始对问题的讨论。2. 方案设计与论证方案(一) 直接传输音频的模拟信号,定时发生中断,在中断中发送温度的数字信号。流程图如下:音频信号输入 温度值9经过仔细分析,用模拟信号传输音频会造成很大的失真,在发送温度时会严重影响音频的播放。方案(二) 用VS1503把采到的音频信号转化为压缩比较高的.ogg格式,再通过串口方式发送给接收端,接收端解码为音频信号播出。此方案从理论上来说造成音频信号的失真非常小,使用串口方式通信的话波特率我们根据红外光发射接收头的波长特性,发射功率等参数计算并测试下来可达到4800bps,如要实时更新音频信号则会有较大延时

6、, 可能会超过5-10秒,如采用数字语音压缩算法,8K采样率下8位数据可压缩至 1K byte/秒, 且必须靠可靠的双向通信协议来保证, 不然信号将失真严重,故此方案被放弃。方案(三)用STM32对采集到的音频信号经过8k或16k采样周期转化为数字信号,采用软件降低噪音, 采用芯片带的 PWM 更新中断协调好8K 载波周期。 采用11位高精度 PWM脉宽调制。 接收端同样将接收到的微弱的模拟信号经过带通滤波器, 电容隔直放大信号后ADC采样转化为数字信号,温度传感器采集的数字信号通过包络载波形式加载与模拟信号之中用软件数字降噪调理处理后转化为模拟信号播放。具体流程如下:此方案的操作性比较强,从

7、理论上分许可以达到预定目标。3. 系统设计本系统分为5个模块,分别用3块STM32来控制。1)语音及温度的采集 语音信号的采集主要是实现声音信号到电信号的转换。使用的方法是用一个驻极体,接受声音信号,然后进行信号放大。一般麦克风输出电平为几十毫伏,经增益约为46 dB 的前置放大器A 1 放大至1V 左右的范围,以便推动后级电路。通过带通滤波器将频带通路设置在人耳比较容易实现的 300HZ - 20KHZ,CPU每秒钟采样8 000 点语音数据,每一点数据以一个12位分辨率采样及传输,因为音频放大芯片已经将处理为 1.65V 为中心的模拟信号,因此我们可以根据此特性进行数字滤波及降噪声处理,

8、温度采集使用DS18B20数字温度传感器。通过STM32与DS18B20连接,得到实时的温度信息。 红外发送 红外发送电路我们使用了9013三极管处于饱和状态 PWM 脉宽调试方式来驱动红外发射管, 通过 STM32 主CPU 进行和 8K 频率 进行ADC 一致的高级定时器设置, 并且进行了过采样来保证声音的银色, 用 12 位高精度 PWM 脉宽周期来调理红外发射电路,因为高载波, 因此我们无需多个发射管串联就可以将数据传输的很远。对于数字信号的包络波方式加载于模拟信号中, 不过再此次项目中我们并没有使用软件做数字 38k 载波处理, 我们选择了使用硬件电路做数字载波,通过幅度的不同来区分

9、与模拟信号。3)红外接收红外接收电路中我们使用了两套电路, 一套使用电容隔直流并放大音频信号来采集到调制过的模拟信号, 我们并没有使用传统的运放比较器去滤除加载的数字信号, 我们选择了更加灵活的 38k 一体接收芯片做为单独的通道处理数字信号, 模拟信号我们在 ADC 采集后进行数字化降噪和分离出数字信号,进实际测试, 此设计方案非常好的处理好模拟数字通道的发送和接收。对于中继我们还放大了数字信号为了更好的传输语音信号。4)后级功放电路及电源由于此次设计需要比较好的模拟量调理电路, 所以我们没有选择开关电源降低电源质量, 减少纹波。 后级功放电路我们选择了数字功放, 更将简单处理功放的设计,

10、由于高集成度, 所以更加方便的避免了万能板做电路对于电源信号的处理难问题, 特别是数字模拟功率三部分三点接地的处理上更加容易了。4. 方案测试1) 测试声音是否正常采集放大将采集到的信号经过放大电路输入到示波器上,观察得到的波形。峰值可以达到1V左右,达到预期的要求,说明音频采集放大电路没有问题。2) 测试声音信号经过传输后的还原情况 接收的声音应无明显失真。当发射端输入语音信号改为800Hz单音信号时,在8电阻负载上,接收装置的输出电压有效值为0.7V。不改变电路状态,减小发射端输入信号的幅度至0V,测量此时接收装置输出端噪声电压,读数约为80mV。3) 测试温度检测是否正常 启动系统,发送

11、端通过DS18B20采集到温度后,经系统传输后显示在超大液晶屏上。 用手轻轻捂住温度传感器,显示的温度有所增加,说明温度值在通过系统实时传输。与此同时,音频信号传输正常,播放正常。4)测试中继节点工作是否正常在系统中加入中继节点电流为峰值 5 个毫安左右,提供5V电源。系统开启后依然可以正常工作。此时通过数字毫安表测得中继节点中的电流为。我们做了低功耗待机的电流减少处理,通过模拟信号及数字信号的触发方式来唤醒 CPU 处于恢复工作状态。 5. 总结经过不断的测试,我们决定使用方案(三)。在方案实现的过程中,我们遇到了很多困难,但是我们都坚持不到最后一刻绝不放弃的原则,将问题一个一个解决。最终很

12、好的完成了基本要求,基本完成了附加要求。我们的团队意识非常好,每个人都努力把分到的工作认真对待。在队友出现小错误的时候不埋怨不气馁,而是耐心的检查并找出解决问题的方案。在作品完成之后我们都很高兴,也在此次竞赛中吸取了很多宝贵经验,收获了难得的友谊。附录:附1:元器件明细表1、 红外发射管、接收管2、 驻极体、喇叭、耳机、彩色液晶屏3、 LM567、LM358、74HC00、STM32,MCP6002等4、 三极管9012、90135、 电位器、电容、电阻、杜邦线若干。附2:仪器设备清单1、逻辑分析仪 2、数字毫安表 3、失真度测量仪4、数字示波器5、稳压电源附3:电路图图纸音频采集放大电路温度

13、采集电路38K载波发生电路红外发射电路 红外接收电路附4:部分软件程序Main.cINT8U P500usReq = 0;INT8U SendState;INT8U DestUart = 0;pwm_t Mypwm;ppm_t Myppm; void P500us(void) static INT16U AnlogTimes = 0; LedTask(); if(Uart2Rb0) DMA_Cmd(DMA1_Channel6, DISABLE); DMA1_Channel6-CNDTR = 1; DMA_Cmd(DMA1_Channel6, ENABLE); if(Uart2Rb0 % 8 =

14、 (Uart2Rb0 3) % 8) /Send_Hex(Uart2Rb0); DestUart = Uart2Rb0; Uart2Rb0 = 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, ENABL

15、E); 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

16、None */int main(void) PeriphCompent_init(); while (1) if (P500usReq) /轮询时间信号状态 P500usReq = 0; P500us(); * * file PPM.C * author Lvhaian R&D Driver Software Team * version V1.0.0 * date 07/24/2012 * brief 配置PPM *clude PPM.h#include stm32f10x_gpio.h#include stm32f10x_exti.h#include stm32f10x_tim.h#inc

17、lude define.h/* addtogroup XFlyer_Driver * */* addtogroup PPM * */ /* defgroup PPM_Private_TypesDefinitions * */* * */ /* defgroup PPM_Private_Defines * */* * */ /* defgroup PPM_Private_Macros * */* * */ /* defgroup PPM_Private_Variables * */#define MinDig 2038ppm_t *p_ppm = 0; /*CNT = 0; /* * brief

18、 NVIC初始化 * param None * retval None */void PPM_NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_InitStructure.NVIC_IRQChannel

19、Cmd = ENABLE; NVIC_Init(&NVIC_InitStructure); /* * brief PPM初始化 * param None * retval None */void ppm_init(ppm_t *ppm) p_ppm = ppm; PPM_NVIC_Configuration(); PPM_GPIO_Configuration(); ppm_timer_init(); /* * brief ppm_timer的初始化 * param None * retval None */void ppm_timer_init(void) / TIM3 输出初始化 TIM_T

20、imeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; /通道输入初始化结构 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); GPIO_PinRemapConfig(GPIO_PartialRemap2_TIM2, ENABLE); /这里做部分REMAP CH3,CH4 通道 /复位定时器 TIM_DeInit(TIM2); /开时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENAB

21、LE); /定时器 TIM_TimeBaseStructure.TIM_Period = 0xFFFF; TIM_TimeBaseStructure.TIM_Prescaler = 2-1; /APB1总线 用于解8K 16K 因此不分频了 TIM_TimeBaseStructure.TIM_ClockDivision = 0x00; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); TIM_ICInitStructure.TIM

22、_Channel = TIM_Channel_4; /选择通道1 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; /输入上升沿捕获 TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; / 通道方向选择 TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; /每次检测到捕获输入就触发一次捕获 TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TI

23、M2, &TIM_ICInitStructure); /* TIM enable counter */ TIM_Cmd(TIM2, ENABLE); /* Enable the CC1 Interrupt Request */ /* Enable the CC1 Interrupt Request */ TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);/* * brief 将PPM信号值限定在-125125之间 * param int v :信号值 * retval None */int LimitPpmValue(int v) if(vPPM_MAX) retu

24、rn PPM_MAX; if(vPPM_MIN) return PPM_MIN; return v;/* * brief GOIO设置 * param None * retval None */void PPM_GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ; GPIO_InitStructure.GPIO_Speed = G

25、PIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 ; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOB, &GPIO_InitStructure); /* * brie

26、f TIMER2 中断事件 * param None * retval None */INT16U Flag1 = 0;INT16U Flag2 = 0;void TIM2_IRQHandler(void) TIM_ICInitTypeDef TIM_ICInitStructure; /通道输入初始化结构 if ( TIM_GetITStatus(TIM2 , TIM_IT_CC4) != RESET ) if(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_11) / Rising 上升沿 TIM_ClearITPendingBit(TIM2 , TIM_IT_C

27、C4); TIM_Cmd(TIM2, DISABLE); TIM_ResetCounter(TIM2); / 复位定时器 TIM_ICInitStructure.TIM_Channel = TIM_Channel_4; /选择通道1 TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; /输入上升沿捕获 TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; / 通道方向选择 TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; /每次检测到捕获输入就触发一次捕获 TIM_ICInitStructure.TIM_ICFilter = 0x0; TIM_ICInit(TIM2, &TIM_ICInitStructure); /* TIM enable counter */ TIM_Cm

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1