基于STM32的智能参数测试仪的设计方案

最新更新时间:2014-03-29来源: 21IC关键字:STM32  智能参数测试仪 手机看文章 扫描二维码
随时随地手机看文章

产品检测是生产厂家和用户都关心的问题。在产品生产过程中,检测是必不可少的一部分,有的还是工艺过程的一道工序。电磁继电器是电力系统以及其他电气控制系统中常用的开关元件,它们的可靠性是电力系统和其他电气控制系统可靠运行的重要保证,因此,必须对继电器的特性参数进行准确的测试。电磁继电器的电气参数主要有线圈电阻、触点接触电阻、吸合电压、释放电压、吸合时间、释放时间等。这些参数对研究继电器可靠性、动态性能具有重要意义,是保证其质量特性的重要参数。

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 作为下位机的控制平台开发工具。

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 作为主控芯片,并结合先进的电子测量线路来对继电器的主要电气参数进行测量。实验结果表明,本系统测试结果准确性高,工作稳定,总体性能令人满意。

关键字:STM32  智能参数测试仪 编辑:探路者 引用地址:基于STM32的智能参数测试仪的设计方案

上一篇:一种简易00-99计数器的设计与仿真
下一篇:一种新型自动抄表系统数据集中器的设计

推荐阅读最新更新时间:2023-10-12 22:37

STM32串口IAP实验笔记
STM32的IAP功能确实方便,以前对此如何实现有所了解,但是一直没去测试,这两天来练了下,可谓困难重重,搞了两天问题也一一解决,下面做些简要的笔记 IAP就是在线应用编程,方便程序升级,可以不用打开产品,直接通过串口升级,那么就需要一个引导程序(大神们喜欢称bootload),一个APP程序(实际产品的工作程序) 减小测试难度,我设计了3个程序,一个bootload程序,一个LED闪烁程序,一个KEY+LED点动程序,我的目的就是用两个不一样的APP程序,互相升级,方便验证结果 我手里的开发板是STM32F103ZET,属于大容量产品,flash有512K, 我们的bootload和APP应用程序就需要在flash里面进行划分,
[单片机]
<font color='red'>STM32</font>串口IAP实验笔记
使用STM32的USB模块中后对USB缓冲区的认识
最近在使用STM32的USB模块开发个项目,还以为挺简单,结果搞了快两天才把USB的包缓冲区的访问搞定,在此做个小总结吧。 STM32的USB模块包缓冲区有512B,但是在STM32的参考手册中的存储器映像中却表明0x40006000-0x400063ff,整整多了512B,怎么会这样呢,同时在尝试着编程时也遇到了一个问题: 在usb_core.c文件的Setup0_Process(void)这个函数中,有这么一段: uint16_t offset = 1; if (pInformation- ControlState != PAUSE) { pInformation- USBbmRequestType = *pBuf.b
[单片机]
STM32独立看门狗介绍_STM32单片机独立看门狗实验
  STM32独立看门狗简介   单片机系统在外界的干扰下会出现程序跑飞的现象导致出现死循环,看门狗电路就是为了避免这种情况的发生。看门狗的作用就是在一定时间内(通过定时计数器实现)没有接收喂狗信号(表示MCU已经挂了),便实现处理器的自动复位重启(发送复位信号)。   STM32的独立看门狗由内部专门的40Khz低速时钟驱动,即使主时钟发生故障,它也仍然有效。这里需要注意独立看门狗的时钟是一个内部RC时钟,所以并不是准确的40Khz,而是在30~60Khz之间的一个可变化的时钟,只是我们在估算的时候,以40Khz的频率来计算,看门狗对时间的要求不是很精确,所以,时钟有些偏差,都是可以接受的。   涉及的寄存器有:键寄存器
[单片机]
串口通信的实验
串口操作相关库函数(省略入口参数): void USART_Init(); //串口初始化:波特率,数据字长,奇偶校验,硬件流控以及收发使能 void USART_Cmd();//使能串口 void USART_ITConfig();//使能相关中断 void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据 FlagStatus USART_GetFlagStatus();//获取状态标志位 void USART_ClearFlag();//清除状态标志位 ITStatus USART_GetITStatus();/
[单片机]
串口通信的实验
STM32直接驱动RGB接口的TFT数字彩屏
引言 随着工业技术的不断发展,人机界面的开发及应用空前火热,为了具有比较友好的人机界面,TFT数字彩屏被广泛的应用,但是TFT彩屏通常都不带有控制器,所以现在驱动彩屏的方案大致有2种: ①采用ARM9或者更高级别的平台,芯片上带有TFT控制器,可以直接挂接TFT数字屏。 ②采用低端CPU处理器平台,外加TFT控制器模块,再挂接TFT数字屏。 对于方案①来说,系统的复杂度会莫名地增加,再加上该类的平台中主MCU多为BGA封装,对于需求很多小量多样化产品的客户来说,较难以接受这样的方案;而 ②方案平白无故添加了一个LCD控制器。这两种方案无论哪一种都增加了硬件成本,本文提出了一种由STM32的FSMC总线直接挂载RGB接口屏的方案,直
[单片机]
<font color='red'>STM32</font>直接驱动RGB接口的TFT数字彩屏
stm32 时钟配置——外部时钟倍频、内部时钟倍频
stm32可选的时钟源 在STM32中,可以用内部时钟,也可以用外部时钟,在要求进度高的应用场合最好用外部晶体震荡器,内部时钟存在一定的精度误差。 准确的来说有4个时钟源可以选分别是HSI、LSI、HSE、LSE(即内部高速,内部低速,外部高速,外部低速),高速时钟主要用于系统内核和总线上的外设时钟。低速时钟主要用于独立看门狗IWDG、实时时钟RTC。 ①、HSI是高速内部时钟,RC振荡器,频率为8MHz,上电后默认的系统时时钟 SYSCLK = 8MHz,Flash编程时钟。 ①、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。 ③、LSI是低速内部时钟,RC振荡器,频率
[单片机]
<font color='red'>stm32</font> 时钟配置——外部时钟倍频、内部时钟倍频
STM32与Futaba遥控器进行S.Bus的通讯程序
Futaba(日本双叶电子工业,戏称“扶他爸”)的遥控器用航模中使用较为广泛的遥控器。S.Bus则是Futaba公司提出的舵机控制总线。本篇博文主要以T6K为对象,介绍STM32与S.Bus协议的遥控器进行通讯的实例。 图1 Futaba T6K-V2 1、硬件电路 硬件上,它基于RS232协议,但高位取反(低电平表示1;高电平表示0),即信号反相。SBUS采用负逻辑,所以无论接收还是发送都要进行硬件取反(注意,一定要硬件取反),下图是带隔离的S.Bus接收信号电路: 图 2 信号取反隔离电路 2、遥控接收机设置 Futaba T6K-V2配备的信号接收机为R3006SB。主控制器与遥控接收机的6通道进行连接,见下图,注
[单片机]
<font color='red'>STM32</font>与Futaba遥控器进行S.Bus的通讯程序
STM32 基础系列教程 10 - 单线串口(半双工)
前言 在工程应用中,很多时间为了方便走线会采用单线串口方案,本节将学习stm32 usart单线串口的使用,学会用使用单线串口收发数据。 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。 本示例所用的最小系统板原理图: 从本节开始,关于CUBEMX工具及KEIL工具的操作将不再细讲,如果还有不熟悉的可以查看之前的教程文档。下面直接介绍工程配置: 系统时钟树 USART1配置 引脚配置(保持默认即可) 引脚保持默认即可,当然实际应用中可以根据自己的需求对其
[单片机]
<font color='red'>STM32</font> 基础系列教程 10 - 单线串口(半双工)
小广播
最新电源管理文章
换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved