基于手机蓝牙通信的虚拟示波器设计

上传人:ji****72 文档编号:25583645 上传时间:2017-12-15 格式:DOC 页数:6 大小:362.50KB
返回 下载 相关 举报
基于手机蓝牙通信的虚拟示波器设计_第1页
第1页 / 共6页
基于手机蓝牙通信的虚拟示波器设计_第2页
第2页 / 共6页
基于手机蓝牙通信的虚拟示波器设计_第3页
第3页 / 共6页
基于手机蓝牙通信的虚拟示波器设计_第4页
第4页 / 共6页
基于手机蓝牙通信的虚拟示波器设计_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《基于手机蓝牙通信的虚拟示波器设计》由会员分享,可在线阅读,更多相关《基于手机蓝牙通信的虚拟示波器设计(6页珍藏版)》请在金锄头文库上搜索。

1、基于手机蓝牙通信的虚拟示波器设计周长锁,侯善 刚, 张 强(中国石油大庆炼化公司,黑龙江大庆 163813) 摘要:用单片机 P89LPC938 的 AD 转换功能采集电压波形数据,通过串口蓝牙模块传给智能手机,在手机上显示电压波形。可 应用于电气 测量回路、可控硅整流等 电力电子 设备的检修维护工作。关键词:单片机;蓝牙;示波器The Dedign of Virtual Oscilloscope Base on Bluetooth MobileZHOU Chang-suo,HOU Shan-gang,ZHANG Qiang(Petroleum China Daqing Refining&Ch

2、emical Company,Heilongjiang daqing 163813 ) Abstract: Collect voltage waveform data through single-chip(P89LPC938) AD converter, Transmit to mobile through the serial port Bluetooth module, the mobile shows the voltage waveform. Can be applied to the electrical measuring circuit, thyristor and other

3、 power electronic equipment repair and maintenance work.Keywords: Microcontroller;Bluetooth;Oscilloscope0 引言在电气检修工作中,有时要用到示波器查看各种电压波形,普通的示波器体积大、笨重,最重要的是没有电气隔离,操作时要注意不能触电。随着单片机等电子技术的发展,以及智能手机的普及,设计一个能和手机配套使用的虚拟示波器,成本低,携带使用都方便。1 硬件设计电路包括信号预处理、单片机、蓝牙串口模块和电源 4 部分,电路原理图见图 1。图 1:蓝牙虚拟示波器电路原理图1.1 信号预处理单片机 A

4、D 转换电压范围是 03.3V,为了能测量交流信号,把输入信号地端接 RP3 调节出的 1.65V,这样就能测到-1.65+1.65V 的电压。实际工作中电工测量电压范围从几伏到几百伏,为此加入了电阻降压网络 R1、R2、R4、R5、RP1 和 RP2,这样就能测到 60V 的电压,再加上个有 x10 挡(放大 10 倍)的示波器探头,最大可测到 600V 电压。LM358 是双运放,接成电压跟随器方式,主要作用是提高输入阻抗,使示波器标入阻抗是 1M,否则示波器探头放到 x10 挡时,测量数值会有偏差。运放还能起到当输入信号过大时,限制输入到单片机的信号幅度,保护单片机的作用。共有 2 个信

5、号输入端,组成双踪示波器,可以比较 2 路信号的相位关系。1.2 单片机选用了飞利浦的单片机 P89LPC938,是基于 80C51 内核的低功耗 FLASH 单片机,其内部有 7.373MHz振荡器、复位电路、8 通道 10 位 AD 转换器,8K 字节 Flash 程序存储器、768 字节 RAM 数据存储器,这使得外围电路很简洁。为了提高 AD 转换速度和提高通信波特率的准确程度,使用了外部 12MHz 晶振。单片机的 P2.0(AD07)、P2.1(AD06)接双运放 LM358 的电压输出,单片机的 P1.0(TXD)、P1.1(RXD)接蓝牙模块的串口。1.3 蓝牙串口模块蓝牙串口

6、模块主要参数:兼容蓝牙 V2.0 规范、CLASS 2 标准,传输距离最大 10M,支持 SPP 服务(串口) 。功能多的蓝牙模块可更改主从设置,默认为从设备,可以和电脑或手机蓝牙连接,还可以更改通信波特率,默认是 9600bps,可更改为较大的波特率,如 115200bps,加快通信速度。默认配对密码是1234,每次搜索蓝牙模块前先给蓝牙模块上电再搜索,再次搜索时要先把蓝牙模块重新上电,否则可能搜索不到。1.4 电源电源选用电池,携带方便,避免外接电源对测量数据的干扰。经三端稳压变为 3.3V 给单片机和蓝牙模块供电。2 单片机软件编程2.1 程序流程单片机软件用 Keil C51 编写,主

7、要流程是等待手机发来测试命令,收到命令后根据命令采集数据并存储到内部 RAM,采集完一组数据后一起发送给手机,这样一个测试周期完成,等待下一个测试命令,流程图见图 2。手机发出测试命令是 4 个字节,首字节是头标志“0xDB”,第 2 个字节代表量程选择,如果量程命令是非零字节,表示量程为 15V,如果量程命令是零,表示量程为 60V。第 3、4 字节是采样周期数据,控制采样频率,采样周期范围为 50us10ms,最高采样频率 20kHz。每通道 240 个数据,共采集 480个数据。2.2 数字变量程单片机 P89LPC938 模数转换精度是 10 位,手机显示用 8 位就可以了,利用 2

8、位的差别可以实现 4 倍的数字变量程功能。硬件量程为60V,对应转换后的数字是 01023,除以 4 后的范围是 0255,输入信号在15V 范围内时,转换后的数字是 384639,减去 384 后的范围还是 0255。这样就实现了数字变量程的功能。有了 2 种量程选择,再配合示波器表笔上带的硬件变量程,使用的时候有 4 种量程选择15V、60V、150V 和600V,能够满足常用的电气设备测量需要。开始初始化端口、定时器初始化 AD 转换、串口是否有串口数据?继续接收余下 3个数据YN0.2s 内收到 3 个数据发送采集到得 480 字节电压波形数据处理通信数据按量程和周期要求开始采集数据Y

9、N图 2:单片机程序流程图3 手机软件编程3.1 开发环境配置首先安装 J2SE 即 JDK(jdk-6u22-windows-i586-p.exe) ,安装完成后,在“我的电脑属性高级”中,配置 java 环境变量,设置 3 项属性,JAVA_HOME,PATH,CLASSPATH,若已存在则点击“编辑” ,不存在则点击“新建” , JAVA_HOME 指明 JDK 安装路径,PATH 使得系统可以在任何路径下识别 java 命令,设为%JAVA_HOME%bin;%JAVA_HOME%jrebin,CLASSPATH 为 java 加载类(class or lib)路径,只有类在class

10、path 中,java 命令才能识别,设为.;%JAVA_HOME%lib;%JAVA_HOME%libtools.jar。接着安装 WTK(sun_java_wireless_toolkit-2_5_2-ml-windows) ,默认路径是 C:WTK25。WTK 的全称是 Sun J2ME Wireless Toolkit ,是 Sun 的无线开发工具包。以上软件均可以在 sun 的官方网站免费下载。最后安装 Eclipse 作为开发环境,J2ME 开发包工具可以被绑定在这些集成开发环境中,进一步提高开发效率。本设计用的是 Eclipse3.6.2 和 EclipseMe1.7.9 版本的

11、软件。3.2 蓝牙连接手机蓝牙和蓝牙串口模块之间的连接,是程序设计的重点,也是难点。这个连接过程就是创建一个蓝牙客户端,分查找设备、查找服务、获得连接 URL 和建立连接 4 个主要步骤。具体代码如下:/查找蓝牙设备public void MyInquiry() try /获得本地设备LocalDevice localDevice = LocalDevice.getLocalDevice();/获得发现代理discoveryAgent = localDevice.getDiscoveryAgent();/开始查找设备discoveryAgent.startInquiry(DiscoveryAg

12、ent.GIAC, this); catch(Exception e) e.printStackTrace();/ DiscoveryListener接口,记录已找到蓝牙设备并显示public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass cod) trysel.append(remoteDevice.getFriendlyName(true),null); catch(Exception e)sel.append(remoteDevice.getBluetoothAddress(),null); finallyrem

13、oteDevices.addElement(remoteDevice); / DiscoveryListener接口,查找设备完成public void inquiryCompleted(int discType) if (remoteDevices.size() 0) /加入其它代码,如查找服务 else /查找服务public void MyServices()try RemoteDevice remoteDevice = (RemoteDevice)remoteDevices.elementAt(sel.getSelectedIndex();discoveryAgent.searchSe

14、rvices(attrSet, uuidSet, remoteDevice , this); catch(Exception e) e.printStackTrace();/ DiscoveryListener接口,服务查找成功,得到连接ULRpublic void servicesDiscovered(int transID, ServiceRecord servRecord)DataElement serviceNameElement = servRecordsel.getSelectedIndex().getAttributeValue(0x0100);String _serviceNa

15、me = (String)serviceNameElement.getValue();String serviceName = _serviceName.trim();btConnectionURL = servRecordsel.getSelectedIndex().getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);/DiscoveryListener接口,查找服务完成public void serviceSearchCompleted(int transID, int respCode) if (respCode

16、 = DiscoveryListener.SERVICE_SEARCH_COMPLETED) else /打开连接,建立输入、输出通道StreamConnection connection = (StreamConnection)Connector.open(btConnectionURL);经过以上步骤,手机和蓝牙串口模块建立起了连接,用 read、write 方法可以互相通信,传输数据了。 3.3 波形显示测试程序用的是三星 S3370 手机,屏幕分辨率为 320x240,屏幕上、下侧用于显示手机状态和按键信息,实际可编程使用的分辨率为 200x240,上部 170x240 部分显示波形,下部 30x240 显示量程、周期选择菜单。按示波器的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号