制作简易红外通信装置通信工程课程设计报告.docx
- 文档编号:13195961
- 上传时间:2023-06-12
- 格式:DOCX
- 页数:17
- 大小:192.95KB
制作简易红外通信装置通信工程课程设计报告.docx
《制作简易红外通信装置通信工程课程设计报告.docx》由会员分享,可在线阅读,更多相关《制作简易红外通信装置通信工程课程设计报告.docx(17页珍藏版)》请在冰点文库上搜索。
制作简易红外通信装置通信工程课程设计报告
专业技能实训报告
题目制作简易红外通信装置
学院信息科学与工程学院
专业通信工程
班级
学生
学号
指导教师
二〇一四年一月六日
目录
1前言1
1.1系统设计简要说明1
2系统方案2
2.1方案比较与选择2
2.1.1语音采集模块2
2.1.2运算放大模块2
2.1.3脉宽调制模块2
2.1.4语音输出模块2
2.1.5温度传感模块3
2.2方案描述3
2.3理论分析与计算3
2.3.1通信原理分析3
2.3.2提高转发器效率方法3
3电路与程序设计4
3.1总体电路图4
3.2电路设计4
3.2.1运算放大模块4
3.2.2红外发送接收模块5
3.2.3语音输出模块5
3.3程序设计5
4测试方案与测试结果7
4.1测试方案7
4.2测试数据7
4.3测试结果记录7
5实训结语8
参考文献9
附录10
部分源代码10
1前言
1.1系统设计简要说明
随着社会的发展、科技的进步以及人们生活水平的逐步提高,各种方便于生活的遥控系统开始进入了人们的生活。
传统的遥控器采用专用的遥控编码及解码集成电路,这种方法虽然制作简单、容易,但由于功能键数及功能受到特定的限制,只实用于某一专用电器产品的应用,应用范围受到限制。
而采用单片机进行遥控系统的应用设计,具有编程灵活多样、操作码个数可随便设定等优点。
本系统设计红外光通信装置,主要由前置电路模块、脉宽调制模块、红外发送接收模块、中级转发模块和语音输出模块五部分组成。
采用STM32作为主控制器进行A/D采集,脉宽调制,并控制数据传送,LM358主要作为前置电路放大器,18B20芯片感应环境温度,LM386模块进行功率放大。
系统设计基本上实现了红外光通信,完成了语音信号传输的功能。
STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核。
按性能分成两个不同的系列:
STM32F103“增强型”系列和STM32F101“基本型”系列。
增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品;基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是16位产品用户的最佳选择。
两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。
时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,是32位市场上功耗最低的产品,相当于0.5mA/MHz。
DS18B20,常用的温度传感器,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。
2系统方案
2.1方案比较与选择
2.1.1语音采集模块
方案一:
采用驻极体麦克风,由于驻极体麦克风体积小、频率范围宽和价格优势的特点而广泛应用于各种声控电路中。
并且输入和输出阻抗很高,所以要在这种话筒外壳内设置一个场效应管作为阻抗转换器,为此驻极体电容式话筒在工作时需要直流工作电压。
方案二:
采用硅微麦克风,硅微麦克风基于CMOSMEMS技术,体积更小。
其一致性优于驻极体麦克风,所以MEMS麦克风特别适合高性价比的麦克风阵列应用。
但硅微麦克风是一个新兴的朝阳产业,尚在发展,价格比较高。
综合比较,选择方案一。
2.1.2运算放大模块
方案一:
LM358是内部有两个独立的、频率补偿的双运算放大器,能在很宽的电源电压范围内实现高增益,同时适用于单、双电源工作模式,在推荐的工作条件下,电源电流与电源电压无关。
方案二:
OP07芯片是一种双极性运算放大器,具有输入偏置电流低和开环增益高的特点,因为具有非常低的输入失调电压,不需要额外的调零措施,但OP07用单电源供电放大倍数太小,不方便使用。
综合比较,基于单电源供电和经济考虑,选择方案一。
2.1.3脉宽调制模块
方案一:
采用KA7500B芯片。
KA7500内含两个PWM控制器,其输出端可以接成共发射极和射极跟随器两种形式,可以选择双端推挽输出或者单端推挽输出,但控制复杂,存在死角问题,且价格较高。
方案二:
采用STM32来编程实现脉宽调制,利用定时器将模拟信号抽样转化成数字信号。
STM32有实时响应中断及中断优先级系统,具有低电压和低功耗两大优点,适合对红外收发的控制。
综合比较,选择方案二。
2.1.4语音输出模块
方案一:
使用LM1875进行功率放大,LM1875使用20~60V供电,驱动4欧或8欧的负载,具有低失真度和高品质性能,主要用于单声道40W高保真放大电路,内部具有欠压、过压、短路、热失控、瞬时音响峰值保护电路等诸多优点,因此在使用过程中不易损坏。
但由于供电需求太高,电路设计达不到要求,不方便使用。
方案二:
使用LM386对音频信号进行功率放大,LM386是专为低损耗电源所设计的功率放大器集成电路,其增益最高可达200,且失真低,适合应用于本音频功放模块。
综合比较,选择方案二。
2.1.5温度传感模块
方案一:
采用AD590模拟数字传感器,特别适合远程检测应用,其输出电流与绝对温度成比例,适用于150度以下温度的测量,由于模拟信号传入微处理器中还需进行模拟数字转换再处理,实现起来较为麻烦。
方案二:
采用18B20数字温度传感器来测量温度,18B20有独特的单线接口方式,与微处理器连接时仅需一条口线即可实现双向通讯,其测量范围-55℃~+125℃,符合本电路测温要求,并且单线接口方式能为微处理器节省接口。
综合比较,选择方案二。
2.2方案描述
通过驻极体麦克风将语音信号采集并转变成模拟信号输入到电路中,通过LM358运算放大器把信号放大到1~10倍之内,将信号进行偏置。
同时利用18B20测试环境温度。
利用STM32采集数据,并进行脉宽调制后通过红外发送管来传输信号,接收管收到信号后,进行放大、滤波、隔直处理,最后通过功放电路,实现语音输出。
2.3理论分析与计算
2.3.1通信原理分析
在发送电路中将语音信号通过脉宽调制模块调制成PWM波并发送,PWM波是占空比可调的脉冲波形,即将正弦波用一系列幅值相等而宽度不相等的脉冲来代替。
脉冲宽度调制内有比较器和周期锯齿波发生器,语音信号如果大于锯齿波信号,比较器输出恒定正电压值,否则输出0V。
2.3.2提高转发器效率方法
用多个二极发光管一起发送,增强了发送功率,可以利用发送功率来维持中继转发器工作,提高转发器效率。
因为话音信号大部分是小信号,将电路设计成没有话音信号时呈低电平,即消耗功率为零,也提高了转发器的效率。
3电路与程序设计
3.1总体电路图
图3.1总体电路图
3.2电路设计
3.2.1运算放大模块
拾音器将话音信号采集并输入到电路中,由于拾音器的电压信号较为微弱,需要将信号进行放大,经过LM358运算放大器的放大后,接入STM32,用一个LM358芯片作为跟随器减小后级的输出阻抗。
图3.2前置模块电路图
3.2.2红外发送接收模块
图3.3红外发送接收模块
3.2.3语音输出模块
当红外接收模块将接收到的信号进行处理后,在后级再加入一路增益为200的功率放大模块来增强语音信号,根据LM386的200增益对应的标准电路(如下图)我们最终实现了合适语音输出。
图3.4语音输出模块电路图
3.3程序设计
程序源代码见附录
图3.5程序流程图
4测试方案与测试结果
4.1测试方案
在接收装置没有静噪功能的情况下,将语音信号改为800Hz单音信号,在8Ω电阻负载上,测量接收装置的输出电压有效值;减少发射端输入信号的幅值至0V,测量此时接收装置输出端噪声电压。
4.2测试数据
在800Hz单音信号、8Ω电阻负载的条件下,测量的接收装置输出电压为0.64V。
将输入信号幅值减少至0V,测量的接收装置输出端噪声电压为0.07V。
4.3测试结果记录
在800Hz单音信号、8Ω电阻负载的条件下,测量的接收装置输出电压为0.79V,符合输出电压有效值不小于0.4V的要求;将输入信号幅值减少至0V,测量的接收装置输出端噪声电压为0.08V,符合读书不大于0.1V的要求。
因此接收的语音信号无明显失真。
5实训结语
经过这段时间不间断的努力,我终于完成了红外光通信设置的各项要求,利用红外发光管和红外光接收模式作为收发器件,进行定向的传输,接收到的声音没有明显的失真。
通过这次实训,不仅丰富了我的理论知识,而且使我的动手实践能力得到了提高,更激发了我的创新精神。
在这今后的人生道路上无疑是一笔宝贵的财富,受益匪浅。
为今后的发展打下了良好的基础。
由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。
最后感谢邦杰公司和学校老师给我锻炼的机会,这次难忘的经历必将使我受益终生。
参考文献
[1]丁元杰.单片微机原理及应用[M].北京:
机械工业出版社,2006:
15-88.
[2]蒋智勇,戴立权.单片微型计算机应用技术[M].沈阳:
辽宁科学技术出版社,1992:
36-78.
[3]张迎新等.单片微型计算机原理、应用及接口技术[M].北京:
国防工业出版社,2004:
26-86.
[4]先锋工作室.单片机程序设计实例[M].北京:
清华大学出版社,2003:
32-82.
[5]周航慈.单片机应用程序设计技术[M].北京:
北京航空航天大学出版社,1992:
45-89.
[6]陈爱文.基于89C51单片机控制的红外通信设计[J].机电工程技术,2007,36(12):
84-85.
[7]张利娜,洪显昌.红外通信的设计与实现[J].现代电子技术,2008,4(23):
87-89.
[8]王建校.51系列单片机及C51程序设计[M].北京:
科学出版社,2002:
67-83.
[9]张爱全.红外线遥控的基本原理和应用范围[M].山西电子技术.20036(12).40-41
[10]苏凯,刘国庆,陈国平.MCS-51系列单片机原理与设计[M].冶金工业出版社.2003.23~26
[11]于明鑫,冯文涛.MCS-51系列单片机存储容量扩展的软硬件设计[J].辽宁师专学报,2004.10,24:
23~35
[12]CraigTombling,MTillin.InnovationsinLCDtechnology[J].SyntheticMetals,2001,6:
209-214.
[13]Chorng-KuangWang.ADual-LoopAutomaticGainControlforInfraredCommunicationSystem[J].GraduateInstituteofElectronicsEngineering,2010,7:
126-128.
[14]NewmanWM,SbroullRF.PrinciplesofInteractiveComputerGraphics[M].NewYork:
McGrawHill,1979.10:
10-25
附录
部分源代码
Main.c
#include"stm32f10x.h"
#include"usart1.h"
#include"adc.h"
#include"Time_test.h"
u32flag;
u32f=0;
volatileu32time=0;
volatileu32time1=0;
/*ADC1转换的电压值通过MDA方式传到SRAM*/
extern__IOuint16_tADC_ConvertedValue;
/*局部变量,用于保存转换计算后的电压值*/
floatADC_ConvertedValueLocal;
/*软件延时*/
voidDelay(__IOuint32_tnCount)
{
for(;nCount!
=0;nCount--);
}
intmain(void)
{
SystemInit();
/*USART1config*/
USART1_Config();
/*enableadc1andconfigadc1todmamode*/
ADC1_Init();
/*TIM2定时配置*/
TIM2_NVIC_Configuration();
TIM2_Configuration();
TIM3_NVIC_Configuration();
/*TIM2开始计时*/
START_TIME;
STOP_TIME3;
while
(1)
{}
}
Time_test.c
#include"Time_test.h"
voidTIM2_NVIC_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=TIM2_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=4;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
voidTIM3_NVIC_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*TIM_Period--1000TIM_Prescaler--71-->中断周期为125us*/
voidTIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=125;/*自动重装载寄存器周期的值(计数值),中断间隔125us*/
/*累计TIM_Period个频率后产生一个更新或者中断*/
TIM_TimeBaseStructure.TIM_Prescaler=(56-1);/*时钟预分频数72M/72*/
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;/*采样分频*/
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;/*向上计数模式*/
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
TIM_ClearFlag(TIM2,TIM_FLAG_Update);/*清除溢出中断标志*/
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2,DISABLE);/*开启时钟*/
}
voidTIM3_Configuration(u32top)
{
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
TIM_DeInit(TIM3);
TIM_TimeBaseStructure.TIM_Period=top;/*自动重装载寄存器周期的值(计数值),中断间隔125us*/
/*累计TIM_Period个频率后产生一个更新或者中断*/
TIM_TimeBaseStructure.TIM_Prescaler=26;/*时钟预分频数56M/56*/
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;/*采样分频*/
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;/*向上计数模式*/
TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
TIM_ClearFlag(TIM3,TIM_FLAG_Update);/*清除溢出中断标志*/
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM3,DISABLE);/*开启时钟*/
}
usart1.c
#include"usart1.h"
#include"misc.h"
voidUSART1_Config(void)
{
GPIO_InitTypeDefGPIO_InitStructure;
USART_InitTypeDefUSART_InitStructure;
/*configUSART1clock*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);
/*USART1GPIOconfig*/
/*ConfigureUSART1Tx(PA.09)asalternatefunctionpush-pull*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*ConfigureUSART1Rx(PA.10)asinputfloating*/
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*USART1modeconfig*/
USART_InitStructure.USART_BaudRate=115200;
USART_InitStructure.USART_WordLength=USART_WordLength_8b;
USART_InitStructure.USART_StopBits=USART_StopBits_1;
USART_InitStructure.USART_Parity=USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
USART_Init(USART1,&USART_InitStructure);
USART_Cmd(USART1,ENABLE);
}
voidNVIC_Configuration(void)
{
NVIC_InitTypeDefNVIC_InitStructure;
/*ConfiguretheNVICPreemptionPriorityBits*/
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
/*EnabletheUSARTyInterrupt*/
NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
/*重定向c库函数printf到USART1*/
intfputc(intch,FILE*f)
{
/*将Printf内容发往串口*/
USART_SendData(USART1,(unsignedchar)ch);
while(!
(USART1->SR&USART_FLAG_TXE));
return(ch);
}
Adc.c
voidADC1_Init(void)
{
ADC1_GPIO_Config();
ADC1_Mode_Config();
}
SysTick.c
#include"SysTick.h"
static__IOu32TimingDelay;
/*启动系统滴答定时器SysTick*/
voidSysTick_Init(void)
{
/*SystemFrequency/1000=560001ms中断一次,表示5600个时钟周期中断一次,其中时钟周期为1/56000000hz
*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 制作 简易 红外 通信 装置 通信工程 课程设计 报告