VERDVANA'S BLOG Verdvana

无线体域网人体中心通信设备使用说明


1 简介

        无线体域网人体中心通信设备由以下四部分组成:

  • ZigBee模块;
  • FPGA控制器;
  • 电池监测与连接底板;
  • 锂电池。

img1

        本设计通过ZigBee进行信道建模,并由MAX17263电池电量计IC获取电池性能。信道建模数据大约每秒更新20次,电池性能数据每秒更新10次(可通过FPGA代码中的INTERVAL值配置更新间隔)。PC会以设置好的时间间隔向A、B发送不同的指令(A设备为C5,B设备为3A),设备收到对应的命令后会将当前的信道建模和电池信息数据传送回PC,指令和数据均通过UART传送,波特率为115200。


2 接口说明

2.1 ZigBee模块接口说明

        ZigBee模块采用创思通信设计的基于CC2530的 ZigBee节点。串口的等通信接口全部引出。

img2

        引脚如下图:

img3

2.2 FPGA核心板接口说明

        FPGA核心板采用Intel PSG的Cyclone IV EP4CE6芯片。内置EPCS存储器用于固化配置信息,能够上电自动配置FPGA。

        Mini-USB:核心板通过Mini-USB供电,同时可以通过板载USB转UART芯片进行串口通信。

        JTAG:下载配置文件或调试需要同时连接USB和Altera JTAG调试器。

        自锁开关:自锁开关用于启动和关闭核心板电源。

img4

2.3 电池监测与连接底板接口说明

        电池监测与连接底板包含了MAX17362电池电量计IC电路以及固定其他模块的接口。三边的排针用于连接FPGA核心板。

        外置NTC电阻:内置的NTC电阻位于电池温度测量区域中心,同时有冗余的外置NTC电阻接口(2.54mm排针)。

        外接负载:本设计的负载主要是ZigBee模块,也设计了外置负载的接口,如果使用其余的锂电池供电的负载时可以接入此XH2.54接口。

        充电座:在系统连接电池的情况下为锂电池充电,能够将配套的50mA或500mA充电器接入此DC5.5/2.1接口。

        电池开关:开关拨至左侧(OFF/C)将断开电池与负载的连接,并且若接入充电器则开始充电;开关拨至右侧(ON)时电池开始为负载供电。

        锂电池接口:此XH2.54接口用于连接锂电池。

        FPGA供电开关:开关拨至左侧点断开底板(也就是锂电池)对FPGA核心板的供电,核心板只能通过其板载的Mini-USB供电;开关拨至右侧通过电池给FPGA核心板供电。

        ZigBee插座:用于连接ZigBee模块,其天线方向与丝印白色箭头方向相同。

img5

2.4 锂电池

        软包锂离子电池采用中顺芯带保护板动力聚合物锂电池,接口为XH2.54。

img6


3 模块连接与实验平台搭建

3.1 模块连接

        首先将电池开关拨至“OFF/C”,然后将电池接入锂电池接口,电池使用绑带固定在电池测温区域,如下图所示。

img7

        底板背面用于固定FPGA核心板。核心板三边的排针座与底板三边的排针对应连接。

        最后将ZigBee模块插入底板的对应接口,注意方向。

3.2 实验平台搭建

        两台设备互收发的实验平台包含以下组件:

  • 无线体域网人体重心设备×2;
  • Mini-USB线缆×2;
  • PC×1。

        首先将FPGA核心板自锁开关复位,并将FPGA供电开关拨至板内侧断开锂电池对FPGA核心板的供电。

        两台无线体域网人体中心设备平行摆放至间隔一米的平台上,各接一条Mini-USB线缆,另一端均连接至PC,如下图所示。

img8


4 实验过程

        首先将底板上的电池开关拨至ON,此时蓝色指示灯“POW”常亮,ZigBee模块开始工作,即绿色收发指示灯闪烁。

        将在PC上启动两个SSCOM串口助手,打开连接好Mini-USB线缆的两台设备中FPGA核心板上的自锁开关,在SSCOM串口助手中分别选择对应的端口号,波特率均为38400,选择“HEX显示”和“HEX发送”,选择“接受数据到文件”,选择“定时发送”并将发送间隔设置为“200ms/次”。A模块对应的发送指令为C5,B模块对应的发送指令为3A,设置好之后打开两个串口。

img9

        打开串口后,两个串口助手则会收到设备返回的信道建模和电池性能数据。根据FPGA内部电路设计,A设备收到的数据每字节高4bit都为0x5,而B设备收到的数据每字节高4bit都为0xA,如果由0x00则表明另一个设备未启动,若有其他数据则是串口传输数据出现错误,这种情况在有线串口传输中几乎不会发生,若使用无线串口透传则有一定几率出现。

img10

        收到的数据会以二进制的形式存在“*.DAT”文件中,A、B模块收到的数据分别存储,推荐使用Hex Editor Neo软件查看原始二进制数据。当电量耗尽,蓝色指示灯熄灭,先关闭串口助手,然后关闭电池开关,最后关闭FPGA核心板上的自锁开关,拔掉USB线缆。收拾东西实验结束。


5 数据处理

        由上文可知,A、B模块接收到的原始数据分别存放在两个二进制文件中。每帧数据包含29字节数据,其格式为:

字节序号 A模块 B模块
1 {设备校验位(0x5),电池剩余容量百分比15~12bit} {设备校验位(0xA),电池剩余容量百分比15~12bit}
2 {设备校验位(0x5),电池剩余容量百分比11~8bit} {设备校验位(0xA),电池剩余容量百分比11~8bit}
3 {设备校验位(0x5),电池剩余容量百分比7~4bit} {设备校验位(0xA),电池剩余容量百分比7~4bit}
4 {设备校验位(0x5),电池剩余容量百分比3~0bit} {设备校验位(0xA),电池剩余容量百分比3~0bit}
5 {设备校验位(0x5),电池健康度15~12bit} {设备校验位(0xA),电池健康度15~12bit}
6 {设备校验位(0x5),电池健康度11~8bit} {设备校验位(0xA),电池健康度11~8bit}
7 {设备校验位(0x5),电池健康度7~4bit} {设备校验位(0xA),电池健康度7~4bit}
8 {设备校验位(0x5),电池健康度3~0bit} {设备校验位(0xA),电池健康度3~0bit}
9 {设备校验位(0x5),电池温度15~12bit} {设备校验位(0xA),电池温度15~12bit}
10 {设备校验位(0x5),电池温度11~8bit} {设备校验位(0xA),电池温度11~8bit}
11 {设备校验位(0x5),电池温度7~4bit} {设备校验位(0xA),电池温度7~4bit}
12 {设备校验位(0x5),电池温度3~0bit} {设备校验位(0xA),电池温度3~0bit}
13 {设备校验位(0x5),电池内阻15~12bit} {设备校验位(0xA),电池内阻15~12bit}
14 {设备校验位(0x5),电池内阻11~8bit} {设备校验位(0xA),电池内阻11~8bit}
15 {设备校验位(0x5),电池内阻7~4bit} {设备校验位(0xA),电池内阻7~4bit}
16 {设备校验位(0x5),电池内阻3~0bit} {设备校验位(0xA),电池内阻3~0bit}
17 {设备校验位(0x5),电池电压15~12bit} {设备校验位(0xA),电池电压15~12bit}
18 {设备校验位(0x5),电池电压11~8bit} {设备校验位(0xA),电池电压11~8bit}
19 {设备校验位(0x5),电池电压7~4bit} {设备校验位(0xA),电池电压7~4bit}
20 {设备校验位(0x5),电池电压3~0bit} {设备校验位(0xA),电池电压3~0bit}
21 {设备校验位(0x5),电池电流15~12bit} {设备校验位(0xA),电池电流15~12bit}
22 {设备校验位(0x5),电池电流11~8bit} {设备校验位(0xA),电池电流11~8bit}
23 {设备校验位(0x5),电池电流7~4bit} {设备校验位(0xA),电池电流7~4bit}
24 {设备校验位(0x5),电池电流3~0bit} {设备校验位(0xA),电池电流3~0bit}
25 {设备校验位(0x5),ZigBee丢包率十位} {设备校验位(0xA),ZigBee丢包率十位}
26 {设备校验位(0x5),ZigBee丢包率个位} {设备校验位(0xA),ZigBee丢包率个位}
27 {设备校验位(0x5),ZigBee丢包率十分位} {设备校验位(0xA),ZigBee丢包率十分位}
28 {设备校验位(0x5),ZigBee RSSI十位} {设备校验位(0xA),ZigBee RSSI十位}
29 {设备校验位(0x5),ZigBee RSSI个位} {设备校验位(0xA),ZigBee RSSI个位}

        每字节的数据都有4bit是设备校验位,所以在得到以上格式的数据后,需要通过Matlab将校验位去除,并将拆分的各数据拼接起来。

        得到的原始数据需要进一步处理转换为所需的实际数据,其中:

  • fullcap:电池容量,除以2为实际值(mah);
  • repcap:电池剩余容量,除以2为实际值(mah);
  • repsoc:电池剩余容量百分比,除以256为实际百分比;
  • age:电池健康度百分比,除以256为实际百分比;
  • thrmtemp:热敏电阻温度,除以256为实际温度值;
  • rcell:电池内阻,除以4096为实际电阻值(Ω);
  • vcell:电池电压,乘以1.25除以16除以1000为实际电压值(V);
  • curr:电池电流,补码转换为源码(反码?),再乘以0.15625为实际电流值(mA)。

        有关数据处理的Matlab源代码见无线体域网人体中心通信设备数据处理源代码


6 故障说明

        电池监测与连接底板上用于电池升压芯片TPS61023DRLR会偶尔烧毁,且仅出现在设备B对应的电池监测与连接底板。起初认为是电池热插拔产生瞬间高压导致烧毁,于是在电池接口处并联TVS管限制电压为5.6V,之后烧毁次数明显改善,但还是出现过一次。

        如果读取数据有误,可能是串口助手波特率不正确,进一步检查代码种的波特率与串口助手的波特率是否一致。


        告辞。