基于STM32的电位测量及过电位保护装置设计

2021-12-17 09:08戚海艳
电子制作 2021年22期
关键词:电位串口继电器

戚海艳

(广东省机械技师学院,广东广州,510450)

0 引言

测量是工业生产中常见的项目,根据使用目的的不同,测量得到的数值可开环或闭环地输入给控制系统。目前,工业现场使用的测量装置的主流控制核心包括PLC、DSP、FPGA和STM32等,不同的控制器具有不同的特点和功能,可满足不同的使用需求。STM32是一种基于ARM内核的32位高性能处理器,以STM32F103ZET6为例,该处理器集成了AD转换与 PWM 输出功能,可以直接进行数据采集和PWM输出,通过功能配置实现低功耗的目的[1],使用STM32进行开发的项目也越来越多[2,3]。黄琦[4]等设计了一套基于STM32的高精度恒温控制系统,并进行了上位机和下位机的设计,实验结果表明上位机可准确反映温度的数值和变化趋势,满足了实际控温需求。李明[5]等基于UCOS操作系统和STM32F4单片机设计实现了多通道实时酒精测量与数据存储系统,通过开发板试验得到了系统运行良好稳定的酒精检测装置。柳浩[6]等提出一种主控系统和控制实施系统共同协作对发生火情的环境进行处理,采用STM32F103C8T6微处理器作为控制实施系统的控制核心,STM32F103C8T6亦属于STM32F1系列控制器中的一种,实验证明该系统可以有效监测环境数据,实现小车搜寻火源和喷水功能。

本文针对某生产设备对电位测量及电路保护的实际需求,设计研制一种基于STM32F103ZET6处理器的电位测量及保护装置,通过控制器的GPIO模拟输入功能实现电位测量的模数转换,通过继电器控制实现电路的通断。对装置进行了软件设计,将电位控制参数直接集成到软件中,对装置进行调试,得到了满足需求的产品。

1 需求分析

某生产设备的某段电路对整个电路系统的影响较大,在生产中发现设备正常工作时,该部分电路的电位总是稳定在1.15~1.35V之间,当产生异常情况时,该部分电路的电压会高于1.35V,因此急需一种可对该部分电路进行电位测量的装置,一旦测到异常电位,则立刻断开电路通电,以保护整个系统。

根据实际需求,可知需研制的装置必须具有电位测量功能,而当设备正常工作时,电位稳定在1.15~1.35V之间,正常的电位值小于3.3V,因此可采用使用标准3.3 V供电的STM32处理器,又该需求并不复杂,因此无需使用更高性能和更高处理速度的控制器,可选用STM32F103ZET6处理器,以在控制性能和经济性上取得平衡。由于在检测到电位异常时,需立刻断开电路通电,因此需对电路加装开关装置,以实现弱电控制强电的功能,可使用标准的5V直流供电的继电器,实现电位正常时保持通电状态,而电位异常时,继电器通电,装置断电。根据需求分析,可进行相关的硬件和软件设计。

2 硬件设计

■2.1 STM32F103ZET6处理器

STM32F103ZET6处理器的内核为ARMCortex-M3,该内核技术为ARM公司设计,在Cortex-M3内核上,ST公司又对其进行了总线矩阵设计,提供过总线矩阵将内核封装为三个部分:FLASH、SRAM和外部设备。其中,FLASH为内部闪存存储器,用于放置编写好的程序;内部SRAM用于存放程序的变量,堆和栈的消耗均基于内部SRAM;外部设备又包含了众多的通用输入输出口GPIO、异步串行总线USART、IIC总线、SPI总线等等,外设的寄存器通过系统总线进行访问,为用户提供了丰富的可扩展接口。

■2.2 ADC功能

STM32F103ZET6有3个ADC。ADC的精度均为12位,其中ADC1有16个外部通道,对应ADCx_IN0、ADCx_IN1...ADCx_IN5,其中PA0对应ADC1的ADC1_IN0上,因此可在程序中配置该功能,实现PA0引脚的电位采集功能,并同时配置PA1和PA2引脚作为PA0数据采集引脚的备用。具体配置方法为:

GPIO_InitTypeDef GPIO_InitStructure;

//打开 ADC IO端口时钟

ADC_GPIO_APBxClock_FUN( ADC_GPIO_CLK, ENABLE );// 配置 ADC IO 引脚模式

GPIO_InitStructure.GPIO_Pin = ADC_PIN;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN; // 必须为模拟输入

// 初始化 ADC IO

GPIO_Init(ADC_PORT, &GPIO_InitStructure);

■2.3 继电器电路

继电器通常应用于开关中,是一种用较小的电流去控制较大电流的一种“自动开关”,在电路中起着安全保护、转换电路等功能。如图 1所示,采用6脚继电器实现开关控制电路,电路中电源为设备的供电电源,在默认状态下与K2是直接连接的,继电器采用5V的直流电源供电(CT2),CT1与一个三级管连接,三级管的e级与一个10kΩ电阻连接,电阻与控制器的GPIO引脚连接,以保护继电器和单片机引脚不至电流过大而烧坏。配置继电器通断控制的GPIO为PC3引脚,并配值PB3和PB5引脚作为PC3引脚的备用。

图1 继电器(Relay)开关电路

■2.4 外部FLASH存储电路

外部FLASH主要用于存储电位保护次数和过电位的具体数值,电位保护次数以累加形式进行存储,但并不擦写上一次保存数据,即若有3次产生了过电位现象,则存储器将依地址16位累进方式保存:1、2、3。并将这三次的过电位值通用以16位累进方式保存。外部FLASH电路如图 2所示,外部FLASH芯片选择为W25Q64的8MB芯片,芯片的数据输入脚连接单片机的PF9引脚,数据输出脚SO_IO1连接单片机的PF8引脚,芯片默认不进行写保护,将写保护引脚WP_IO2(低电平有效)直接接在3.3 V电源上,因此芯片在硬件电路上即实现了无写保护。

图2 外部FLASH电路

3 软件设计

■3.1 系统整体流程

根据需求分析和硬件设计,可设计装置的软件如图3所示。系统首先进入初始化程序,包括系统时钟初始化、串口初始化、ADC初始化、继电器等GPIO的初始化。

图3 装置软件整体流程

设置系统时钟为最高频率工作模式,系统的USART采用中断处理机制,设置串口中断在第4分组,中断通道为DEBUG_USART_IRQ,中断响应优先级为6,子优先级为0。串口输出口对应单片机的PA9引脚,输入口对应单片机的PA10引脚。

ADC初始化基本步骤为:

// 打开ADC时钟ADC_APBxClock_FUN

// 只使用一个ADC,属于独立模式

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; // 禁止扫描模式

ADC_InitStructure.ADC_ScanConvMode = DISABLE; // 连续转换模式

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;// 不用外部触发转换,软件开启即可

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;// 转换结果右对齐

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

初始化结束后系统进入ADC数据采集函数,该函数为while(1)循环函数,首先进行ADC数据的采集,采集函数为,并经过2万次的循环采集,得到总的电位值,总的电位值除去2万次的for循环,从而得到电位的平均值a,对平均值a进行正常点位区间判断,若为正常值,则再次进行ADC数据的采集,并向串口发送“正常”信息,包括电位的平均值;若为异常值,则立刻断开继电器,并向串口发送“故障”信息,包括电位的平均值,以提醒用户设备出现了异常。

■3.2 调试结果

图4 测量数据变化曲线

从串口中得到数据保存为文本文件,通过数据处理得到测量得到的电位变化曲线如图 3所示,可知,该部分的电位值均处于正常点位区间内,电位值每次测量的值的变化差别较大,这与测量误差和电磁干扰有关,但电位值的精确度可达0.01 V,完全可满足使用需求,通过一定的处理算法处理亦可提高测量的抗干扰能力。

4 结束语

研制了一种基于STM32F103ZET6的电位测量及过电位保护装置,对实际生产设备进行了需求分析,得出装置硬件设计和软件设计的依据。根据需求分析进行了控制器的ADC配置,以及继电器开关保护电路的设计,对装置进行了软件设计,通过调试得到了电位变化曲线,满足了实际需求。装置还可集成LCD和上位机,以满足友好的人机交互功能。

猜你喜欢
电位串口继电器
测量模拟土体zeta电位的简易流动电位装置及其使用方法*
耳蜗微音器电位临床操作要点
关于汽车继电器的解析
继电器在电气工程自动化低压电器中的应用探讨
MCS—51单片机中的多串口通讯技术的应用
继电器控制电路转换为PLC的方法
地极布设对电位降法测量接地电阻值的影响
全国计算机等级考试机房准备工作探讨
简析线性电路电位与电压的关系
微机串口的测试诊断