历史上的今天
今天是:2025年07月23日(星期三)
2020年07月23日 | 基于大功率白光LED的可见光通信
2020-07-23 来源:51hei
1 、系统方案设计思路
本文所设计的可见光通信装置以 MSP430F149 为控制核心,由发送端、接收端两部分组成。 使用 MSP430F149 产生 m 序列并完成对装置的温度检测、电压采集及信号传输记录等功能,并且实时在 12864 上显示。 发送端由主控芯片组成的最小系统、前置放大电路、音频调制电路、光调制电路、白光LED 发射灯、显示模块、24V 电源等模块组成。该部分实现了对两路语音信号和 m 序列的调制 并通过可见光发射给接收端的任务。
接收端由放大滤波电路、音频信号功率放大电路、整形电路、音频解调电路、PIIN 光电 二极管等模块组成。该部分实现了来自发送端信号的解调、放大和语音输出,以及完成来自 m 序列发生器的波形输出的任务。
总系统框图如下:

2 、方案设计与选择
2.1 CPU 的选择
方案一:采用 51 系列单片机。采用现在比较通用的 51 系列单片机作为整个系统方案的 主控 CPU。51 系列单片机应用比较广泛,各种技术都比较成熟,但此系列单片机是 8 位机, 处理速度不是很快,I/O 端口较少,资源不够充足。
方案二:采用 MSP430 系列单片机。TI 公司的 MSP430 系列单片机是一种 16 位超低功耗 的混合信号处理器,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7 种源操作数 寻址、4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以 及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度;接口 方便开发;而且 MSP430 系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便, 满足当前低碳经济的要求。
综合以上方案,我们采用 TI 公司的 MSP430 系列单片机,选择方案二。
2.2 锁相环的选择
方案一:采用 CD4046 连成语音信号的收发电路。CD4046 是通用的 CMOS 锁相环集成电路, 采用 16 脚双列直插式封装,其特点是电源电压范围宽(为 3V—18V),输入阻抗高(约为100MΩ),动态功耗小,在中心频率 f0 为 10KHz 下功耗仅为 600 μW,属微功耗器件。 方案二:采用 LM567 连成语音信号的收发电路。LM567 是一块锁相环集成电路,采用双列直插式封装。其静态电流 8mA,最高工作频率 500KHz,其中心工作频率 f0 由 5 脚和 6 脚外接定时电阻电容决定。其计算公式 f0 1 / (1.1RC ) 。另外 LM567 还具有抗光电干扰性能好, 接收角度宽、低功耗、灵敏度高的优点。
综合以上方案,我们采用 LM567,选择方案二。
2.3 光调制中放大器件的选择
方案一:采用 LM317 线性放大器件。LM317 除了有稳压功能外还有线性放大功能,它的 输出电压范围是 1.2V 至 37V,负载电流最大为 1.5A。但是 LM317 效率不高,调制频率不够高 且发热相当严重,致使放大效果及其不佳。
方案二:采用 TIP41C 器件。TIP141C 放大倍数达到 65,频率转换达到 3MHZ,不仅能使音 频信号放大还能放大功率。 与 LM317 做放大器件相比来说,性价比高。
综合以上方案,我们采用 TIP41C 器件,选择方案二。
2.4 显示模块的选择
方案一:采用 1602 液晶屏显示。液晶显示屏具有微耗低,但是 1602 没有字库只能显示 字母和数字,且屏幕过小以致于显示的内容太少,不能同步显示大容量的信息,若多次切换 显示会导致时间浪费。
方案二:采用带字库的 12864 液晶屏显示。12864 显示分辨率为 128×64,内置 8192 个 16*16
点汉字,和 128 个 16*8 点 ASCII 字符集.利用该模块灵活的接口方式和简单、方便的操作指 令,可构成全中文人机交互图形界面。不仅可以显示数字、字母和汉字还能显示图形,且低 功耗是其一大特点。
综合以上方案,我们采用 12864,选择方案二。
3、系统方案详细设计
3.1 可见光通信装置电源模块
电源电路的任务是为可见光通信装置提供电压。该模块将 220V 的市电转化为 24V 的输出 电压和 1A 的输出电流。电源电路如下:
工作原理:220V 市电经整流桥将交流电信号转化为直流电信号,经电容滤波减少信号波 动,LM317 的稳压范围是 1.25~37V,最终输出 24V 电压,电流为 1A。
3.2 可见光通信装置发送端
3.2.1 信号调制电路
信号调制电路的有两个任务,一是接收语音信号及 M 序列信号,并将其转化为电信号, 二是通过光调制电路进行信号调制,由白光 LED 发光管将信号发送给接收端的 PIN 光电二极 管。信号调制电路原理图如下:
图 3 信号调制电路
电路工作原理:A 路语音信号从 A singnal 端口,经 RP1 衰减由 Ca1 缓冲经 Qa1、Qa2 放 大后从 C 端输入与其他两路信号混合。B 路语音信号从 B singnal 端口输入,经 RP2 衰减后 由 Cb1、Qb1 缓冲放大后从 Qb1 的发射极取出后经压控振荡器,D1、D2 对信号进行限幅。然 后进入 LM567 可对 PLL 的频率进行调制,当音频信号处于上升段时,调制频率受压控振荡器(LM567 的 2 脚)控制,在压控振荡器中心工作频率的基础上增加,当音频信号处于下降段 时,调制频率受压控振荡器(LM567 的 2 脚)控制,在压控振荡器中心频率的基础上降低, 从而实现频率调制。由于采用了锁相环压控振荡器,所以电路的调制线性较好。调制后的信 号经 LM567 的 5 脚出,三路信号在 C 端混合,由光调制电路后经 Q2 放大后推动 LED 发送可见 光。m 序列信号由 MSP430F149 输入,其他部分与 B 路语音信号相同,在接收端由示波器显示 信息。
3. 3 可见光通信装置接收端
3.3.1 信号解调放大电路
信号解调电路的任务是利用 PIN 光电二极管接收来自发送端的可见光线,经音频锁相环 解调和 LM386 放大功率后语音信号由扬声器发出,m 序列信号则由示波器显示。信号解调放 大电路如下:
图4.1 B路信号和 m 序列信号接收电路
图 4.2 A路信号接收电路
电路工作原理:可见光光信号由 LED2 接收,经放大滤波电路后,A 路语音信号经单 管放大电路放大,由 LM386 进行功率放大后由扬声器发声,而 B 路语音信号和 M 序列信号则 进入 LM567 解调,信号解调后,B 路语音信号由 LM386 放大功率又扬声器发,对于 M 序列信 号则由示波器显示信号。
4、系统软件设计
TI 公司研发的 430 系列单片机功耗极低,应用 MSP430F149 可实现通信装置功能的实现。 系统软件设计的整体思路:使用 MSP430F149 在发送端产生 M 序列,通过 LM567 和光调制电路 由发光管发送,在接收端由示波器观测,同时采集发光管 LED 的温度,若当前温度过高不利 于通信则报警提示,应用芯片自带的 ADC12 采集 LED 两端的电压,通过按键可调当前时间, 并且记录发送的语音信息的时间,以上信息通过 12864 显示,另外在液晶屏上也可显示本队 详细信息。

5.2 各模块测试
5.2.1 语音传输模块测试 为了在调试电路的过程中更方便的调整电路参数,在测试语音信号之前先进行音频范围内不同频率的正弦波的测试。然后,我们分别通过 MP3、麦克向输入端输入声音信号,通过 扬声器实际观测其失真情况。
在使用正弦波测试时,首先使用函数信号发生器向发送端输入不同频率的正弦波信号,然 后用示波器检测接收端分别接收到的波形,检测输出电压的幅值,发现当发射端输入语音信 号为 300Hz、1000Hz、8000Hz 单音信号时,在 8Ω 电阻负载上,接收装置的输出电压有效值 大于 0.4V,并且在更高的频率上也能达到 0.4V。不改变电路原有状态,减小发射端输入信号 的幅度至 0V,采用低频毫伏表测量此时接收端输出端噪声电压,读数基本维持在 0V。检测结 果表明输出电压能够超过题目所要求的电压。将它与输入波形进行比对,发现波形无明显失 真。
在使用MP3、麦克向输入端输入声音信号时,通过扬声器实际体验该设备的性能指标,声 音清晰度良好,基本无失真。通过对MP3输出波形和接收端输出波形对比,也没有明显失真之 处。
5.2.2 模拟信号传输测试
在 A 路传输 2000Hz、B 路传输 8000Hz 单音信号时,在 8Ω负载上,A 路、B 路的输出电 压有效值均不小于 0.4V。A 路、B 路分别输入 1000Hz 频率以下的方波、锯齿波时,在接收装 置的 8Ω负载上,A 路、B 路的输出电压有效值均不小于 0.4V,甚至在更低频率下,也能保持 不小于 0.4V 的水平。
将 m 序列信号加于 A 路的输入端,用示波器观察发端设备的输入波形以及收端设备的输 出波形,没有出现无明显的码间串扰。
5.2.3 LED 照明模块测试
在 10W 白光 LED 只用于照明的情况下,满足 I2=1±0.01A 的前提下,由 24 V 电源的供电 电流 I1 约为 1.12A
5.2.4 电源模块测试
接通电路后,在测试点处用万用表对电源电压和电流进行测量,两者均满足题目要求, 且无明显波动,非常稳定。
6、总结
本系统设计以 TI 公司的 MSP430F149 为主控芯片,完成了基于大功率白光 LED 的可见光 通信,实现了对两路语音信号和 M 序列的无失真传输,并且应用该芯片采集 LED 发光管的温 度和其两端的电压,并且记录发送信息等。在设计中,我们既考虑了系统的功耗,又充分发 挥了系统中芯片的高性能。通过测试,系统不但完成了题目要求,而且还扩展了相应功能。 经过几天不断的改进程序和电路,一点点的攻克难关,最终很好的完成了设计,在比赛过程 中,首先要感谢指导老师对我们的帮助和指导,也要感谢我们的队员,有了他们,我们才能 更好的完成设计。对自身能力来说也是一种质的提高,也充分体现了团队合作的重要性。在 以后的学习和生活中我们还需继续努力,不断学习,不断改善自己,以创造更好的成绩。
单片机源程序如下:
#include "control.h"
#include "key.h"
#include "LCD12864.h"
#include "ADC12.h"
#include "DS18B20.h"
unsigned char mark=1;
extern unsigned char flag;
unsigned char sign=0;
void control()
{
Settime();
ADC12CTL0 |=ENC;
ADC12CTL0 |=ADC12SC;
while(1)
{
wait();
system_info1();
if(flag==0)
system_info2();
if(mark==0&&flag==0)
system_info2();
}
}
void wait()
{
while(1)
{
Key4Scan();
if(key!=0)
{
flag=0;
LCD_clear();
break;
}
}
}
void system_info1()
{
LCD_write_str(2,1,"系统信息");
LCD_write_str(0,2,"1.电压:");
LCD_write_str(0,3,"2.电流:");
LCD_write_str(0,4,"3.LED");
LCD_write_str(4,3,"1A");
LCD_write_str(3,4,"温度:");
while(1)
{
sign=1;
LCD_write_str(4,2,tempda);
LCD_show_T();
ADC12CTL0 |=ENC;
ADC12CTL0 |=ADC12SC;
Key4Scan();
if(key==3)
{ flag=0;
LCD_clear();
sign=0;
break;
}
else if(key==4)
{ sign=0;
flag=1;
break;
}
}
}
void system_info2()
{
mark=1;
LCD_clear();
LCD_write_str(2,1,"系统信息");
LCD_write_str(0,2,"1.系统时间");
LCD_write_str(0,3,"2.序列信息");
LCD_write_str(0,4,"3.音频传送记录");
while(1)
{
Key4Scan();
if(key==1)
{ mark=0;
flag=0;
LCD_clear();
timeshow();
}
else if(key==2)
{
mark=0;
flag=0;
LCD_clear();
LCD_write_str(1,1,"m");
LCD_write_str(2,1,"序列为:");
史海拾趣
|
我现在有个实验,控制信号是+/-5V的,想经过隔离输入功率放大电路,我查了一些资料,大部分是单极性的,用HCNR201做了个双极性的(datasheet上的),效果不好,请问大家有没有好的建议,谢谢… 查看全部问答> |
|
<招聘>七万美金年薪起,美国某著名通信/网络优化服务供应商招聘赴美员工 招聘职位一:NSN WCDMA Packet Switch (PS) Core Engineer 工作地点:圣马丁岛/美属维尔京群岛 工作种类:全职 签证种类:工作签证 工作待遇:$70,000/年(能力突出者可以面议) 每周工时:40小时/周 申请要求: 1. 本科以上学历; 2. 十年 ...… 查看全部问答> |
|
一直在PCB行业混,经历过了各种各样的事情,关于工作的,找工作的,什么事情都遇到过,一个一个的去讲,恐怕一下两下说不清楚,这里捡干的捞点,如下: 1,写给刚入门的工程师。进入PCB这行很容易,只要你会用相关的PCB软件就好像可以号称PCB工程 ...… 查看全部问答> |
|
请问各位大侠,MCU通过SPI发送复位命令,然后再发送读命令后,读到的数据一直是0?弄了一段时间了,可还是不行。有遇到该问题的大侠帮帮小弟?… 查看全部问答> |
|
我公司是国内一家知名民营企业,先由于发展需要,诚招愿意来东莞工作的Windows CE开发工程师,请有符合以下条件的朋友与我联系( Chenxi@bbkav.com ): (1)岗位说明 工作于公司移动产品部Windows CE软件开发组; 根据不同SOC芯片开发板级支持包 ...… 查看全部问答> |
|
公司有一块只支持WinCE4.2的板子,我想在上面做一些蓝牙的学习。 但由于不知道怎么进行命令行编译,所以每次编译都要花很多时间。 我听说可以用命令行来编译,我知道可以在build菜单下点击open release directory进入命令行, 但进去后,应该输 ...… 查看全部问答> |




