杨 杰
(福建省产品质量检验研究院,福建 福州 350002)
温升试验作为电气设备的基础特性试验,电学类试验室需要对各类产品进行大量试验,工作量大,且温升试验需要历时数小时,额定电流大的样品若设计不合理,试验过程中会导致样品、外接导线、铜排等温度飙升,试验存在风险,因此需要检验员全程在现场监控。若能够加入有效的监控措施,保证试验安全的同时让检验员可以离开现场,仅需要在间隔时间内进行查看,则可以提升检验员工作效率,对检测机构带来实际利益提升。
目前检测机构常用的温升检测设备由于其点数、精度要求,同时配备显示器实现温度数值、温升曲线的实时查看,体积较大,且需要市电供电,设备本身摆放位置受限,因此为保证大型样品热电偶布置到位,热电偶需要设计三至五米,数十根热电偶交织缠绕,导致设备使用较繁琐。由于文中所设计的设备满足温度监控而非测试需求,精度无需太高,且由于可以通过手机远程查看,无需搭配显示器。因此若能够将设备体积减小,功耗降低,用移动电源驱动,在使用上则会十分方便,使其除温升试验外,同时可用于其他试验的电源端温度监控,保障各类大电流试验安全,应用场合大大增加。
MAX6675芯片专门设计用于温度测量,广泛应用于车载部件温度监控,可以将K型热电偶采集的电压差信号转化为数字信号,支持SPI协议通信,引脚图如图1所示,其中T+(3)、T-(2)引脚分别接至K型热电偶正负极,VCC(4)引脚接3.3V-5V电压信号,用于为芯片供电,GND(1)引脚接地,SCK(5)为时钟信号引脚,CS(6)为片选信号,SO(7)为芯片输出引脚,N.C(8)为空。
图1 MAX6675引脚图
图2 MAX6675时序图
图3 MAX6675芯片组件
MAX6675芯片工作的时序图如图2所示,当片选信号CS出现下降沿,即由1至0时,芯片输出16位信号D15-D0,根据芯片使用原理,其中D15为虚拟位;D14-D3为12位的温升信号;D2显示热电偶状态,若开路,则为1,正常工作时,为0;D1提供MAX6675的身份标识,为0;D0是三态输出。根据原理可知,正常工作状态下,需要读取D14-D3的二进制数值,转化为十进制后,经过公式:1023.75×采集到的十进制/4095进行计算,即可得出测量的温度值,由公式可直观地了解到,该芯片的精度为0.25℃,且读取范围为0℃~1023.75℃。[2]
树莓派Zero为本装置设计主体元件,引脚如图4所示,序号19、21、23、24、26为SPI通信引脚,其中24、26为片选信号。[1]对比图1、图4,可大致了解引脚之间的对应关系,即MAX6675的VCC、GND引脚分别接至树莓派中任意3V与GND,SCK(5)与SO(7)接至树莓派SCLK(23)与MISO(21)。
图4 树莓派引脚图
片选信号的实现则是该项目的难点,由引脚图可知,树莓派仅有两个支持SPI通信协议的片选信号,即CE0(24)、CE1(26),则仅可支持与2个MAX6675芯片进行通信,只能实现两个温升点的采集,而本项目希望设计8个,数量不够。虽然树莓派SPI片选引脚仅有两个,但GPIO引脚有29个,因此若能够通过GPIO模拟出片选信号,即可摆脱片选引脚数量限制,实现多点温升监控。分析图2中MAX6675时序图可知,CS片选信号实际是一个下降沿,因此仅需让GPIO输出由1转0,则可模拟出所需的片选信号,经实际测试,该方法可行。
本项目采用AutoDesk的EAGLE将树莓派与MAX6675组件相连接的PCB板的设计,难点在于EAGLE的库中没有树莓派Zero的模型,因此需要根据实际尺寸进行焊盘的精准排布,且充分考虑MAX6675芯片组件之间的距离,让其能够在不超过树莓派Zero尺寸的板中,实现8个组件的布置。[3]
由于EAGLE库中没有树莓派与MAX6675的模型,因此只能直接在原理图中加入足够数量的点位,通过对比实际情况进行连线,连线遵照上文的搭建原理,保证每个MAX6675芯片模组的引脚均对应相应的树莓派引脚即可,可以根据实际位置灵活选择VCC、GND以及GPIO引脚,但必须保证8块模组的时钟信号SCK、输出信号SO全部与树莓派上对应的接口相连。
将MAX6675模块配套热电偶顶端螺钉剪除,用电焊机将两根导线点焊,即可保证热电偶在任何表面均可通过502胶进行布置。
最终制作完成的PCB板,上排40个焊盘对应树莓派的40个引脚,下方8组焊盘则用于焊接MAX6675芯片组件,实际焊接后设备如图5所示,由右侧钢卷尺所示可见,该设备体积小,三维仅有65mm×30mm×50mm,在有WIFI信号的实验环境下,一块3000mAh的移动电源即可满足数十小时的温升试验监控工作,没有WIFI信号覆盖可通过内置移动电源的MIFI设备配合,供电同时提供无线信号。
图5 设备
3.1.1 程序构成分析
根据硬件部分内容介绍,可知MAX6675芯片的测温原理为在片选信号CS出现下降沿时,采集2个字节信号,也就是16位二进制信号,通过截取其中的D14-D3,并转化为十进制数,经过计算即可得出温升数值。为了摆脱树莓派SPI通信协议片选引脚数量限制,通过GPIO口模拟下降沿,从而实现多点温升数据采集的可能。
在程序初段,需要将用于模拟MAX6675片选信号的8个GPIO引脚设置为高电平,之后依次将8个GPIO引脚降为低电平,即模拟下降沿,读取2个字节数据后再恢复高电平。实际测试中,树莓派读取到的为两个字节的十进制,需要将其转化为二进制,通过公式取出其中需要的13位,再二次转化为十进制,即可完成一轮数据采集。
采集到的数据通过公式:1023.75×采集到的十进制/4095进行计算,得出温度值,通过Python库中的GET方法与服务器进行通信,将采集到的8个温度数据内容通过网址的形式传递给服务器,传递完成后,间隔10s,进行下一轮采集。
图6 程序逻辑流程图
3.1.2 程序编写
实际编写好的程序如图7所示,其中程序初始的“GPIO.setup(3,GPIO.OUT, initial =GPIO.HIGH)”为设置树莓派引脚3初始值为高电平的指令;“GPIO.output(3,GPIO.LOW)”为设置引脚3为低电平的指令,紧接着“data1=spi.readbytes(2)”用于读取两字节数据并赋值给“data1”,之后通过“GPIO.output(3,GPIO.HIGH)”
图7 树莓派内Python代码
将引脚恢复高电平。则完成了片选信号对应树莓派引脚3的MAX6675芯片所采集数据的读取。
代码中“for i in range(0,8):”循环即为将采集到的8个2字节数据进行二进制转换,截取其中的13位,再转化为十进制并进行公式计算的过程,最终输出8个温度数据并以数组形式赋值给“data”。
与服务器通信采用GET请求,代码为“url='http://www.jie731.xyz/updateTe m?a=update&b='+str(data[0])+','+……+str(data[7])”即将请求内容放在url中,通过对a与b的赋值,将“data”数组中的8个数据传递给服务器,服务器即可进行判断与存储,之后通过“res=urllib2.urlopen(req).read()”读取服务器返回数据并赋值给“res”,服务器若判断此时温度正常,返回“continue”,若判断超过预警值,返回“stop”。当判断出现“stop”指令时,若此时通过GPIO引脚外接继电器,可通过“GPIO.cleanup()”代码将所有GPIO引脚关闭,外接的继电器失去电压后则可让分励线圈电源失电,断开主开关。[1]
3.2.1 微信小程序设计
图8 免责声明
图9 操作界面
设计小程序运行逻辑如下:
(1)用户进入操作界面时,从缓存中读取手机号数据,若用户没有设置过手机号,说明为首次使用,弹窗免责声明,并配套输入框要求输入手机号,测试手机号位数准确后正式进入操作界面,并将手机号写入缓存,以便下次使用;
(2)操作界面清晰显示8个温度数据,为保证用户能够更加直观掌握现状,不同程度的温度值进行颜色区分:温度低于设定值30%为蓝色,30%-70%为橙色,超过70%为红色;
(3)更新数据的操作设计为下拉刷新,与大部分智能手机软件的操作逻辑一致,操作直观简便,刷新后的数据若出现超过70%设定值的情况,手机震动警告用户留意;
(4)点击任意温度显示值,可进行预警值设置操作;
(5)软件底部10%的界面,作简单文字说明,同时将用户设定的预警值显示与此。
确定好操作逻辑,则可进行操作界面实际设计,此处直接展示最终手机截图效果,如图8、图9。
3.2.2 微信小程序与服务器端代码编写原理
如前文所述,树莓派、微信小程序均采用GET请求的方式与服务器交换数据,即需要将数据包含在url内,树莓派代码部分有介绍,通过包含在“a”内的数据进行身份识别,此处“search”即表示此时为小程序向服务器提出查询申请,“alarm”表示小程序向服务器提出修改预警值申请。
图10 服务器NodeJS代码
服务器端也需要相应的代码进行数据交换,代码如图10所示,其中“router.get()”即表示该段代码用于处理GET请求,“req.query.a”就是前段发送的数据“a”,如上文所述,“update”表示为树莓派向服务器提交温度数据申请更新数据库内容,“search”表示微信小程序向服务器提出温度值查询要求,“alarm”表示微信小程序向服务器提出更新预警值要求。图6代码为判断“a”值为“update”时的操作,即树莓派向数据库发送温度数据,要求服务器对数据库进行更新,此时服务器需要将温度数据存进数据库,同时读取数据库中存储的温度预警值,与8个温度数值逐一比较,若发现超过预警值,执行发送短信的操作,并返回给树莓派“stop”,若一切正常,返回“continue”。[3]
该设备能够保证检验员在温升试验过程中能够随时随地通过手机刷新当前温升数据,若温升超过预设的警戒值,能够收到短信警报提醒,同时可通过外接继电器远程分断或自动分断带分励线圈的主开关,保证试验安全。
其实用意义并不仅限于温升试验,电气行业有许多大电流试验,在试验设备高负荷工作时,有效及时的温度监控必不可少,然而大部分试验设备并不具备温度的自我监控能力,因此若有类似监控设备的加入,能够清楚了解试验设备的工作状态,及时终止试验或增加试验间隔以保证设备工作温度在安全范围内,保障试验安全的同时延长设备使用寿命。