华国环,邱立争,潘柏旭,冯茂艳
(南京信息工程大学电子与信息工程学院,江苏南京 210044)
黏度是流体的重要物理性质之一,是关系着众多产业的一个重要标准特征[1]。测量流体的黏度和流动性在工业生产和基础科学研究中具有十分重要的意义。目前常用的测量方法主要有毛细管法、旋转法、振动法及落球法等。由于旋转法可以在不同的切变率下对同种材料进行测量,因此被广泛地应用于测量牛顿型和非牛顿型流体的黏度及流变特性中[2]。
目前的传统旋转黏度计多用游丝感应转筒探头的扭矩,并利用刻度盘读数,测量者读数不同而导致误差,同时大多以8位单片机为处理器,往往存在处理能力较低、没有片内A/D转换等缺点。近年来国内外出现了许多新型液体黏度测量方法,本文设计的新型黏度计要解决传统旋转黏度计误差大、处理能力低、处理速度慢等技术问题,因此采用内置12位A/D转换的STM32F103系列处理器,从而克服低端单片机在芯片功能上的不足[3-4]。
液体在流动时,分子间产生内摩擦,这一性质称为液体的黏性,黏性的大小表示为黏度,可以表征不同液体的性质。不同的液体通常具有不同的黏度,因此当转子以一定的速度在被测液体中旋转时,由于受到液体黏滞力的作用,会产生滞后现象,转子所连接的游丝便会在相反方向上产生一定扭转,游丝与原位置的表盘凹槽分别通过2个光电对管,计算时间差Δt可得到液体黏度η跟Δt的关系如下[5]:
η=K·Δt
(1)
式中:η为被测液体黏度,mPa·s;K为与电机转速、游丝弹性系数等参数有关的比例系数,其具体数值可以通过标准黏度的溶液来确定;Δt为时间差。
基于STM32的旋转式黏度计的硬件组成主要包括处理器模块、电源模块、测温模块、电机驱动及光电对管模块和人机交互模块5部分。整体结构框图如图1所示。
图1 整体结构框图
1.2.1 处理器模块
处理器模块主要由微处理器、存储电路、复位电路等组成。微处理器模块采用STM32F103作为主控芯片,其内核为ARM 32位的Cortex-M3,优势在于低功耗、低成本、高性能。STM32F103具有最高72 MHz的工作频率,内置高达512 K字节的闪存程序存储器和64 K字节的SRAM,载有最多11个定时器和84个中断,并配有丰富外设,具有极高的集成度[6-7]。其极低的价格和开发成本,优异的实时性能和杰出的功耗控制为STM32F103系列MCU带来了广泛的应用。
1.2.2 按键输入模块
按键输入模块采用独立微动按键,共有6个按键,包括上下左右方向键、确定键和返回键。每个按键与控制模块单片机的一个引脚相连,按键按下时,处理器产生相应中断,执行相应功能。
1.2.3 电机驱动及光电对管模块
电机驱动及光电对管模块主要由NJM3771电机控制芯片和NJU39610D2DA转换芯片及一对光电对管组成。通过处理器控制电机驱动芯片驱动转子运转,驱动电机转轴与转盘连接,转盘与游丝连接,游丝的中心轴连接一个金属杆,该金属杆以中心轴为转轴,转盘设有标记部位。电机、游丝与上下两对光电对管连接的示意图如图2所示[8]。
图2 电机、游丝与光电对管连接示意图
上方的光电对管用于测量标记部位随转盘转动引起的第一个开关信号并发送至处理器模块,下方的光电对管用于测量金属杆转动引起的第二个开关信号并发送至处理器模块[9]。2个开关信号的延时差经过算法计算就可以得到液体黏度,具有低成本,高精度的优点。
1.2.4 Pt100测温模块
测温模块采用高精度仪表放大器AD623A、0.1%精度的贴片电阻和Pt100铂电阻构成差分放大电路。测试原理图如图3所示。其中Pt100铂电阻分压得到的电压与参考电压相比较,二者的差模电压经过AD623A放大后送给MCU的A/D端口进行检测,最后通过算法反推出待测溶液的温度值。由于Pt100铂电阻具有精准的R-T关系,此模块测温误差仅小于0.5%[10]。
图3 Pt100测温原理图
由电路图分析可得
Av=1+100/Rg=11
(2)
式中Av为仪表运放AD623A的电压增益。
当铂电阻RT与电阻R3相同时,电桥平衡,差分电压为0;
当铂电阻RT与电阻R3不同时,电桥失衡,运放正负输入端产生电压差,并且经过11倍放大之后送给MCU进行A/D采样:
Va=[RT/(RT+R1)-R3/(R3+R2)]Vcc×11
(3)
式中Va为AD623A输出的模拟电压。
由MCU的采样电压Vd=Va/Vcc×4 096,得
Va=Vd/4 096×Vcc
(4)
式中Vd为AD623A采样之后的数字电压。
由式(3)、式(4)得RT的值为
RT=R1/{1/[Vd/4 096×Av+R3/(R3+R2)]-1}
(5)
再根据铂电阻的温度-电阻对应表,可计算出温度值。
1.2.5 电源模块
黏度计采用220 V转12 V电源适配器供电,通过LM2576S-5.0与AMS1117-3.3电压转换芯片,为电机控制模块、显示模块提供5 V电压,为处理器模块、测温模块和按键模块提供3.3 V电压。
1.2.6 显示模块
显示模块为分辨率为128×64的单色点阵液晶屏,显示可靠且简洁清晰,具有低功耗的特性,并能在-20~70 ℃的环境下正常使用。
1.2.7 硬件实物图
硬件实物图如图4所示。
图4 硬件实物图
软件设计考虑以MDK Keil5作为系统开发平台并选择C语言作为编程语言,程序采用模块化思想,将不同的硬件模块所对应的驱动程序放置在不同的C文件中,并构成一个完整的工程,使软件结构清晰简洁,增强了程序的可读性。程序流程图如图5所示。
图5 程序流程图
从图5可以看出,系统供电后,进入操作主界面并通过控制按键选择系统语言:中文或English,确认语言后进入由转子、转速、输出方式和时间构成的分界面,在该界面可以确认转子、转速及输出方式。若输出方式选择通讯输出,通过与上位机连接,便可以将转子、转速等信息传输;若选择打印输出,便可以连接打印机将信息打印。该界面同时支持时间修改、实时时钟及温度的显示。确认以上选择无误后,程序将开始控制电机驱动,并显示被测液体黏度。
为了验证所设计黏度计的测量精度和测试稳定性,选取了5种标准黏度值的溶液进行测量,测试结果如下。
对不同黏度值的标准溶液测量结果如表1所示。
表1 标准液测试结果
表1对于各标准溶液的测量结果显示,最大的测量误差只有0.22%,说明所设计的黏度计的测量精度很高,完全满足工业级应用[11]。
对黏度值为273 mPa·s的标准液进行多次测量,结果如表2所示。
表2 重复性测试结果 mPa·s
表2对单一标准溶液黏度测量的重复性误差只有0.138%,说明所设计的黏度计稳定性较好,可长时间进行可靠测量[12]。
上述2个表中黏度值测量结果误差只有0.2%左右,如此高的测量精度归功于MCU的12位A/D转换精度很高,同时也归功于游丝、传动轴等机械部件的加工工艺非常精准。
本文介绍了一种基于STM32的旋转黏度计。系统主要包括处理器模块、电机驱动及光电对管模块、测温模块、电源模块和人机交互模块5大模块。不同于以往旋转黏度计通过测量张丝所受黏滞力矩大小的方法,采用延时传感器和自动转速控制系统,实现精确测量液体的黏度,改善了传统旋转黏度计(如六速旋转黏度计)测量操作复杂、读数精度不高的缺陷。所设计的黏度计基于低成本、低功耗、高性能的STM32单片机,使得产品性能较高、价格低廉。同时考虑到液体黏度易受液体温度影响,黏温关系满足阿累尼乌斯方程,该黏度计可以实时显示黏度与温度对应关系曲线[13]。所设计的黏度计采用高精度的Pt100铂电阻测温,可实时显示待测溶液的温度,满足实际应用需求。测试结果表明所设计的黏度计具有很高的测量精度,误差低于0.5%,重复性误差很低,可长时间稳定工作。该黏度计可广泛应用于各种液体的黏度测量,具有良好的市场应用前景。