过去五年蓝牙的增长是有目共睹的。然而,在大多数消费者的印象中,蓝牙仍然是连接与耳机的无线通信媒介。尽管情况确实基本如此,但蓝牙正在工业数据记录等通信领域迅速获得普及。
本文将要讨论的就是这种应用,并将介绍蓝牙数据记录仪(datalogger)的详细设计。该蓝牙数据记录仪从奥地利微电子公司as153012位模数转换器(adc)获得数据,然后通过微处理器和蓝牙链路将数据传给等待收集数据并将数据存放于电子表格中的pc机。工业过程控制的发展趋势是通过将并行数据传输替换为串行“profibus”数据而减少通信线对,该设计*顺应这种趋势,并且取消了通信连线。
实现架构
数据记录仪电路内有一个连接到pic微控制器的as1530adc,利用rs232线缆连接到bluegigawt12蓝牙模块进行通信。该模块通过蓝牙链接将数据发送到第二个*相同的bluegigawt12模块,第二个wt12模块再通过rs232线缆连接到pc机。pc机上运行着用visualbasicversion6编写的一个windows程序,该程序将接收到的数据载入excel电子表格供分析和制图。
数据记录仪由5v台式电源供电。为了确保微控制器能安全工作,记录仪采用了一款功耗非常低的监视器件as1904进行电源监控,该器件消耗的电流一般为150na。数据记录仪电路消耗的电流约为16ma,bluegiga模块的平均消耗电流为44.7ma。因此,如果整个电路都用线性稳压器供电的话,150ma的低压差线性稳压器as13985就可以胜任。
模拟前端
模拟前端由12位逐次逼近寄存器(sar)adcas1230组成。如果输入信号小于adc的供电电压(本例为5v),并且具有较低的源阻抗,那么它就可以被直接送入adc的输入端。
adc的输入电路可以被建模为一个简单的rc电路,其中r代表信号的源阻抗,c代表adc的采样电容。充电中的rc电路可以用下列等式表示:
其中,vmax是充电电压、v是电容两端的电压、采样电容为18pf、采样时间t等于390ns。adc输入端必须处理的zui坏电压变化是在一个输入通道被设为0v、相邻通道被设为2.5v的时候。此时输入电容必须在390ns内充电到2.5v,并满足1/2lsb精度要求。
由于
因此
那么
据此可以推算出zui小的源阻抗r=2.4kω。这里,mux的输入阻抗是800ω,因此信号的源阻抗必须小于1.6kω。如果待数字化信号的源阻抗太高,可以用运放进行放大和/或缓冲。
pic16f627微控制器采用spi接口从as1530存取数据,spi接口由片选(csn)、串行时钟(sclk)、数据输入(din)和数据输出(dout)组成。csn线对数据进行组帧,数据在sclk线的上升沿写入as1530或读出来。数据流由8个用于选择输入通道、输入范围和电源模式的控制位和紧接其后的16位输出数据组成。一旦转换完成,adc就进入编好的电源模式(电源*关闭、省电或正常工作)。
为了获得理想的精度,必须仔细设计电路板版图,并对芯片的电源引脚和参考引脚进行去耦处理。模拟和数字电源必须分开来,尽管这两个电源都是从同一个电源产生的。可以从主电源布两根走线实现,一根宽线到模拟引脚(vdd1和vdd3),另一根线到数字电源引脚(vdd2)。数字电源消耗的电流将产生一个调制电压到数字电源线上,如果该电源同时连到芯片的模拟电源引脚,这种电压调制将破坏adc的lsb。提供独立的供电线路可以解决这个问题。
as1530的地与模拟和数字电源一样重要。从gnd引脚到主板电源地引一根宽线可以为返回电流提供良好的低阻抗路径,要想获得*性能这一措施非常重要。
去耦电容应放置在靠近芯片的模拟和数字电源引脚的位置,另一端要靠近as1530的gnd引脚。这样可以确保芯片电源引脚上呈现的交流电压保持为零。10uf的钽电容并联100nf的陶瓷电容可以zui大程度地衰减电源线上出现的任何噪声,同时为as1530产生的任何浪涌电流提供低阻抗路径。
该设计采用了as1530的内部参考电压。如果要用外部参考电压,需要在靠近ref引脚的位置放置一个4.7uf低阻抗电容进行去耦。因为它直接连到r-2r梯形网络,因此saradc参考电压引脚的输入阻抗会随数字码流而变化。
微控制器与windows程序
1.数据记录仪端
在数据记录仪侧,微控制器用的是pic16f627a,代码用c语言编写,编译器是hitechc编译器。微控制器的内部uart被设置在115.2kbps的波特率,以匹配蓝牙模块默认的波特率。数据通过工业标准(2tx/2rx)电平转换器转换后在rs232链路上传送。
2.rs232通信原理
所有到蓝牙模块的通信都在rs232接口上实现。就像生活中遇到的许多事那样,看似简单做时难,rs232也不例外。在推荐标准rs232规范制定的时候,计算机被称为终端,有时它们需要连接到像调制解调器这样的通信设备。因此共有两类设备可用rs232标准进行相互连接,它们分别是数据终端设备(dte)和数据通信设备(dce),通常计算机(或终端)被配置为dte,大多数与它们相连的设备被配置为dce(如调制解调器)。它们绝大部分用标准的9线rs232电缆连接,电缆一头的每个脚与另一头的相应脚连接,电缆内没有交叉线。
dte在引脚3上发送数据,在引脚2上接收数据。同样在另外一端,dce在引脚3上接收数据,在引脚2上发送数据。在90%的rs232应用中还会用到其它两个信号,即rts(准备好发送)和cts(清除发送)。电缆两端的设备都有rts和cts信号,一头的rts直接连到另一头的cts,反之亦然。两端的rts都是输出信号,cts都是输入信号。
在任何数据发送前,两端设备都要设置它们的rts线(因为它们都能随时发送和接收数据)。如果发送器使rts有效,接收器的cts线也随即有效,因为它们是直接相连的。当发送设备开始发送数据时,它再使rts线失效(随即接收器的cts失效)。使cts失效就告诉接收器它没有清除发送数据,这会使接收器延迟发送任何信息。如果发送器发送信息太多(和接收器过载),接收器可随时使rts线失效(同时使发送器的cts线失效),从而指示发送器停止发送数据。
蓝牙模块被配置为dce,因此在as1530端的微控制器被配置为dte,这样它就在引脚3上发送数据,在引脚2上接收数据。它还使用rts/cts握手,在9针连接器的引脚7上发送rts,在引脚8上接收cts。需要注意的是,如果微控制器准备连到pc机上的hyperterminal(用于测试),tx和rx线就需要交换,rts和cts线也要交换,相当于将微控制器从dte改为dce。
标准的rs232电平转换器用于连接微控制器和rs232数据线。应该注意的是,在发送到蓝牙模块的每个命令后面都需要跟一个回车键。在用键盘输入时这个简单的操作经常被疏忽,如果回车键不发送的话,设计师可能要花数小时的冤枉时间去分析模块为何不能正常工作。
蓝牙模块可以通过编程赋于一个“好记的”名字,从而允许其它蓝牙设备方便地通过12位16进制地址以外的符号进行识别。当数据记录仪上电时,16f627a对数据记录仪端的蓝牙模块赋于一个名字“ams_adc”。
3.pc端
windows程序采用visualbasicversion6进行编写。该程序复用了微软的超级终端(hyperterminal),可以搜索、连接和断开与数据记录仪的链接。windows屏幕如图1所示。
图1中的文本窗口显示了蓝牙模块复位后送出的消息。左边是与蓝牙模块通信所需的控制区。
图1:蓝牙数据记录仪截屏图。
在复位后,用户点击按钮就可以通知蓝牙模块发送搜寻所有本地蓝牙设备的查询命令。图2显示了处理状态。
图2:发送查找本地蓝牙设备处理过程。
点击按钮会向蓝牙模块写入文本“inquiry10name”,告诉它在定时时间结束以前等待10秒,并查询所有本地蓝牙设备的名字。
然后蓝牙模块反馈找到了多少台设备以及它们的12位16进制地址和名字。从图中可以看到设备“ams_adc”的地址是00:07:80:80:c2:11。用户可以选中这个地址然后拷贝到“address:”窗口。接着点击按钮,windows程序向这个地址发送“call”命令,如下行所示:
call00:07:80:80:c2:111rfcomm。
蓝牙设备发回一个call0语句,告诉用户call过程已经开始。一旦建立起与远端记录仪的通信,蓝牙设备会回送一条“connect”语句。一旦连接建立,随后所有的文本都由数据记录仪而非蓝牙设备产生。数据记录仪通过发送文本“loggerconnected”表明与as1530的通信已经建立。windows程序同时会打开一个名为c:ams_adc.xls的文件,并将接收到的数据存于其中。
图3:数据记录仪端的电路图。
用户再点击按钮清除屏幕,将程序从接收文本状态切换到接收数据状态。随后所有收到的数据都被保存到c:ams_adc.xls文件中。
windows程序也允许用户输入自己的文字信息来覆盖命令按钮,点击按钮将清除文字窗口。在文本窗口输入文字然后点击按钮就可以将文本窗口上的所有文字下载到蓝牙模块中。
点击按钮会发送命令“+++”给蓝牙模块,告诉它终止链接。蓝牙模块随即断开链路,返回消息告诉用户链路已经断开。图3是数据记录仪端的电路图。pc端只是一个通过rs232电缆与pc相连的bluegigawt12评估套件。
通过改写windows软件可以很容易扩展系统,使用户查询多个数据记录仪。数据记录仪中的软件经过进一步完善后也可以更好地处理来自主机的命令,从而使pc不仅能设置好记的名字,也能让用户轮询和/或复位系统。