基于STM32的智能参数测试仪的设计方案
扫描二维码
随时随地手机看文章
0 引言
产品检测是生产厂家和用户都关心的问题。在产品生产过程中,检测是必不可少的一部分,有的还是工艺过程的一道工序。电磁继电器是电力系统以及其他电气控制系统中常用的开关元件,它们的可靠性是电力系统和其他电气控制系统可靠运行的重要保证,因此,必须对继电器的特性参数进行准确的测试。电磁继电器的电气参数主要有线圈电阻、触点接触电阻、吸合电压、释放电压、吸合时间、释放时间等。这些参数对研究继电器可靠性、动态性能具有重要意义,是保证其质量特性的重要参数。
1 系统总体架构
1.1 系统硬件结构
系统硬件主要包括UART 串口通信模块、JTAG 接口模块、测试结果显示模块、检测程序存储模块FLASH、检测电路模块以及SRAM 模块。系统总体硬件结构框图如图1 所示。
1.2 系统微处理器
本系统主要由检测部分和显示控制部分组成。在本设计中,采用了高性能的ARM Cortex 芯片STM32F103ZET6.
该芯片内部采用哈佛结构,其中集成有64 KB 的RAM 和512 KB FLASH,并且具有运算速度快、体积小和低功耗的特点,完全能满足本设计的要求。Cortex-M3 是一个32 位的核,它采用的是Tail-Chaining 中断技术,最多可减少12 个时钟周期数,基于硬件进行中断处理,通常可减少70% 的中断。Cortex-M3 还采用了新型的单线调试(Single Wire) 技术,可对独立的引脚进行调试。
1.3 系统工作流程
系统上电后,首先完成对各个寄存器的初始化工作,然后等待开始检测命令;单击上位机界面上的START 命令,然后上位机给单片机发送开始检测命令;单片机接到开始命令后开始向检测电路发送检测命令,然后单片机处理检测电路发回的数据,得出继电器的各个参数,通过串口把这些参数显示在上位机的界面上。
2 系统硬件设计
2.1 驱动电压的设计
为了准确测出继电器的吸合电压,必须得到一个从0 开始按照一定量增大的电压源,每次增大的电压量越小,测试的结果越准确,但是所要求的电路也越复杂,所以我们必须根据实际的要求在这中间找到一个平衡点。图2 所示为系统驱动电压电路。
图2 中,TL431用于给TLC5615 提供2.5 V 的基准电压源,DA_DIN 是串行数据输入端,DA_CS 是低电平有效的片选信号输入端,DA_SCK 是串行时钟输入端,DOUT 是用于级联的串行数据输出端,OUT 是DAC 模拟电压输出端,输出模拟信号。由于从TLC5615 输出的模拟信号很小,不能驱动继电器,所以,本设计在后面又加上了放大电压电路和放大电流电路。
2.2 集成切换网络的设计
本系统的集成切换网络是利用继电器的开关工作原理完成的,利用单片机发出的不同指令控制继电器的闭合,从而切换到不同的测试电路模块。在测试吸合/ 释放电压时,首先ARM Cortex 发出测试参数为吸合/ 释放电压的指令。集成切换网络根据指令,切换到Prog_v 一侧,XQ1I 连接所测继电器触点一端,具体电路如图3 所示。
为了解决单片机的I/O 驱动能力不足的问题, 选用ULN2003 作为继电器的驱动芯片。ULN2003 是高压大电流达林顿晶体管阵列电路,它具有工作地电压高,工作电流大,灌电流可达500 mA,并且能够在关态时承受50 V 的电压,输出还可以在高负载电流并行运行。它采用集电极开路输出,输出电流大,故可直接驱动继电器。ULN2003 的每一对达林顿管都串联一个2.7 kΩ 的基极电阻,在5 V 的工作电压下它能与TTL 和CMOS 电路直接相连,可以直接处理原先需要标准逻辑缓冲器来处理的数据。通常单片机驱动ULN2003 时,上拉2 kΩ 的电阻,同时,COM 引脚应该悬空或接电源。
2.3 数据处理及与上位机的通信
接收到的数据通过异步串口管脚与3.3 V 转换芯片MAX232 相连,外接串口线同PC 机进行通信,接收和发送数据,STM32 作为下位机负责接收上位机的指令以及控制各部分电路并处理数据,然后向上位机发送数据,PC 机接收数据,并通过VC 编程把接收的数据通过界面显示出来。这里PC 机的VC 通过串口发送命令给STM32,主控芯片接收命令并判断有效,即可开始控制电路进行工作[6].由于篇幅所限,本文未对STM32 的最小系统硬件部分作详细说明。
3 系统软件设计
系统软件部分主要包括STM32 微处理器控制程序和上位机程序两部分。由于下位机软件使用C 语言来开发,所以选择了一款支持C语言编程的开发环境。由于使用的是J-LINK接口调试方式[7],选择用IAR SYSTEM 作为下位机的控制平台开发工具。[!--empirenews.page--]
3.1 微处理器控制程序
图4 所示是本系统的微处理器控制程序。本程序的核心部分是线圈电阻子程序、触点电阻子程序、吸合/ 释放电压子程序、吸合/ 释放时间子程序。
3.2 吸合电压算法设计
对于吸合/ 释放电压的测试,这里将对比三种测试算法:
二分算法、步进自适应中值算法和差异比较算法[8].
3.2.1 二分算法
函数f(x),对于一个实数a,当x=a 时,若f(a)=0,则把x=a 叫做函数f(x) 的零点。设f(x) 在区间(X,Y) 上连续,a、b 属于区间(x,y),且f(a),f(b) 异号,则在区间(a,b) 内一定存在至少一个零点,然后求f[(a+b)/2].假定a0,那么:
如果f[(a+b)/2]=0,则x=(a+b)/2 就是零点。
如果f[(a+b)/2]<0,说明区间((a+b)/2,b) 内有零点,再次对新区间((a+b)/2,b) 取中值代入函数,进行中点函数值判断。
如果f[(a+b)/2]>0,说明区间(a,(a+b)/2) 内有零点,再次对新区间(a,(a+b)/2) 取中值代入函数,进行中点函数值判断。
通过以上反复的区间取值,可以把f(x) 的零点所在小区间收缩一半,使区间的两个端点逐步迫近函数的零点,最终以求得零点的近似值。
这就是二分算法的基本原理。
3.2.2 步进自适应中值算法
同简单二分算法一样,确定A、B 两个电压值,其中A 无法使触点吸合,B 保证发生触点吸合。然后求得A、B 的平均值C,如果C 小于触点的阈值电压,则在B 电压量的基础上步进式地减小一定幅度的电压X,得到电压量D ;如果C 大于触点的触发电压,那么在A 电压量的基础上,步进式地增加一定幅度的电压X[9],然后重复以上步骤。如果发生某一步进增加时,触点发生吸合,则继电器的吸合电压介于触点触发的前后两个电压平均数值之间。
3.2.3 差异比较算法
差异比较算法是通过比较输入值和输出值的大小,将发生差异型变化的数值进行筛选并记录。选择这个算法主要是针对二次发生的吸合释放过程。
三种算法中,二分算法有可能让程序进入死循环,差异比较算法相对前两者速度较慢,所以本系统最终采用步进自适应中值算法。
3.3 上位机程序设计
本系统的上位机界面程序采用C++ 程序编写,它主要包括参数设置区域、参数显示区域、继电器类型选择和控制按键等几部分。参数设置区域是完成对所测继电器的相关参数上下限参数的设置,比如吸合电压上下限的设置。参数显示区域是显示所测参数大小的,这里还包括了一个参数选择复选框,如果选上则表示需要对此参数进行检测,如果不选则系统不对此部分参数进行检测。图5 所示为其上位机界面。
3.4 实验结果
在调试好的样机上分别可对吸合电压等六个参数进行测试,为了减少一次测试数据的偶然性,每个参数均测试了八组数据进行处理,实验结果如表1 所示。从表1 中的数据可以发现,其测试数据变化范围小,系统性能较稳定,总体性能能够令人满意。
4 结语
本文是结合前人的研究成果基础上而提出的一种基于STM32 的智能参数测试仪的设计方案,该方案中所设计的测试仪由STM32 作为主控芯片,并结合先进的电子测量线路来对继电器的主要电气参数进行测量。实验结果表明,本系统测试结果准确性高,工作稳定,总体性能令人满意。