APP下载

基于RS485的实验室设备电源集控系统的设计

2018-10-11郭兴龙

机电工程技术 2018年8期
关键词:电路设计上位串口

郭兴龙

(广州市市政职业学校,广东广州 510507)

0 引言

目前,教学实验室的设备电源,由外部电箱引入实验室,经过总开关控制之后再分配至各个实验设备,由各个实验设备单独控制,因此无法集中控制。设备电源一般是AC220V或者AC380V,当学生在教学实验室上课的时候,可能无意中启动设备电源,容易造成触电事故。设备电源如果采用继电器连线到教师机,使用船型开关启停的集中控制模式,存在布线繁琐、占用空间较多以及维护不方便的问题。为解决上述问题,研究并设计了基于RS-485网络和STC8A单片机的集中控制系统。

1 系统整体设计

系统设计中,以STC8A单片机为核心控制单元,单独控制每个设备电源的启动或者关闭。控制单元通过RS-485网络,与教师机的上位机连接,进行远程通信[1]。教师机的上位机作为主站,其按照一定的通信协议,不断发送指令到各个控制单元。各个控制单元作为从站,被动地接收主站指令,并对各个指令做出相应的回复。系统的供电,主要是通过电源整流模块,直接将交流电压转换为直流,供给单片机以及各个外围元器件使用。单片机通过小型继电器驱动AC220V或者AC380V交流接触器,从而控制设备的输入电源,系统网络整体设计框图如图1所示。

图1 系统网络整体框图

单片机控制单元设计如图2所示,主要由STC8A单片机、RS485接口模块、直流电源模块、数码管显示和按键模块、拨码开关模块、负载电流检测模块和继电器控制模块等组成。STC8A单片机为核心控制器,负责系统的整体控制运行,根据指令控制继电器的通断来开启或者关闭设备输入电源。直流电源模块将AC220V直接整流滤波输出稳定的DC5V,供给各个模块使用。MAX485芯片为RS485通讯接口芯片,主要构成通讯网络。拨码开关模块,设置控制单元的地址码,该地址码作为网路通讯地址码使用。负载电流的检测,主要通过ACS712霍尔传感器芯片,单片机不断采样负载电流值,与上位机发送过来的最大负载电流值比较,超过该值,系统将负载电流切断,并报警上位机,实现负载电流实时监控功能,防止意外事故发生。数码管显示和按键模块,作为人机交互接口,实现数据的输入或者输出功能。

图2 单片机控制单元系统框图

2 单片机控制单元设计

2.1 单片机选型

根据控制单元设计要求,选用某公司生产的STC8A4K32S2A12单片机。STC8A4K32S2A12是一款基于MCS51内核的超高速单片机,采用LQFP44的封装,工作电压范围为2.0~5.5 V,Flash程序存储器为32 kB,静态SRAM为4 kB,内部集成了24 MHz高精度IRC时钟源,无需外部晶振。芯片具有内部看门狗和ISP/IAP在系统可编程/在应用可编程功能,可实现快速更新程序和便于程序设计。内部资源丰富,可以提供20个中断源,5个16位定时器,2组高速串口,4组16位PCA模块和15通道的12位ADC转换器,同时具有SPI,I2C接口设计,便于电路设计和程序开发[2]。STC8A4K32S2A12芯片电路简单,抗干扰能力强,典型应用电路[2]如图3所示。

2.2 ASC712负载电流检测电路设计

ACS712ELCTR-20A是一款低内阻、隔离电压高达2.1 kVRMS的集成霍尔效应线性电流传感器。检测直流电流时,霍尔传感器的输出是以2.5 V作为基准的直流电压信号。检测信号为交流电流时,霍尔传感器的输出是以2.5 V作为基准直流电压,叠加交流信号。该信号需要通过整流电路将交流信号转换成直流信号,提供给单片机采样。主要参数如表1所示。

主要设计电路如图4所示:ASC712芯片通过端子接入设备电源输入支路中,传感器输出电压由VIOUT管脚输出,经过电阻分压之后,经过二极管整流稳压输出之后,送到单片机ADC采样。

图3 STC8A4K系列单片机典型应用电路

表1 ACS712ELCTR-20A主要参数[3]

图4 ASC712电流检测电路

2.3 ADC采样参考电压电路设计

为了提高电流检测精度,需要提高采样参考电压的精度。该系统采用MCP1541作为单片机ADC采样的参考电压源。MCP1541输入电压为4.3~4.5 V,输出参考电压为4.096 V,精度达到±1%,采用SOT-23封装[4]。具有较低的纹波,纹波频率在0.1~10 Hz范围之内,精度达到小于或等于145uVrms,完全可以满足系统设计需要。ADC采样参考电压电路设计如图5所示,模拟地和数字地要分开。

图5 ADC采样参考电压电路

2.4 数码管电路设计

该系统中,负载电流实时值和一些参数等数据,主要通过数码管实现数据的输入、输出功能。显示采用3位一体的共阴极数码管,采用动态扫描的显示方式。动态显示方式,相比静态显示方式,可极大地节约了IO管脚,电路设计如图6所示。

图6 数码管显示电路设计

2.5 单片机控制单元串口通讯电路设计

串口通讯电路设计,采用MAX485芯片完成。MAX485是一款半双工、±20 kVESD,应用于RS485的通讯系统收发芯片。其通讯速率高达10 MB/s,总线连接个数高达256个,并且具有较宽的共模电压范围,其设计电路如图7所示,一般在传输总线的两端,并联一个120Ω的电阻,起到阻抗匹配的作用。

2.6 单片机控制单元电源电路设计

该系统的单片机控制单元电源,采用WA3-220S05A3模块产生+5 V电源。WA3-220S05A3是一款内部集成了变压、整流和稳压滤波的开关电源,具有宽电压范围输入,能够交直两用,低纹波、低温升、低功耗、高效率和高可靠性的优点,集成了过流、短路、过温保护和自恢复的功能[5]。封装上采用PCB板直接焊接的安装方式,广泛应用于工业、办公及民用等多个领域,抗干扰能力强,比较适合用于电磁兼容恶劣的环境。其电路设计如图8所示。电路中F1为保险丝,起到短路保护作用,5D-11是NTC热敏电阻,作为浪涌电流限流保护用。14D-471K为压敏电阻,作为雷击浪涌时过压保护用。

图7 串口电路设计

图8 单片机控制单元电源电路设计

图9 程序控制主流程图

2.7 单片机主模块程序设计

系统单片机程序设计包括主程序模块、数码管显示模块、按键输入检测模块、RS485串口通讯模块、负载电流ADC采样模块和继电器控制模块等部分。

2.7.1 主程序设计

主程序设计如图9所示,系统上电之后,将进行一些参数初始化,如定时器设置、串口参数设置以及ADC转换设置,之后再进入主程序循环函数。主程序循环函数不断查询按键、ADC采样更新以及上位机接收信息,查询到相关信息之后,进入相应的处理函数并更新数据。

2.7.2 串口通讯模块设计

串口通讯模块设计包括字符收发、处理部分和应答等3部分。字符收发主要在串口中断函数里处理,字符接收到完整的字符串之后,主要在主循环函数里查询处理,并将应答信息发送给上位机。单片机与上位机的通讯,采用自定义的通讯协议,上位机主动发送命令,单片机作为从机,被动接收数据和应答上位机。为提高通讯的可靠性,防止错误的报文导致意外事故发生,帧的报文中,增加校验和处理,校验和为帧报文中除校验和之外的所有字节累加,取低字节部分,溢出部分忽略不用。在帧的格式中,除起始符和结束符之外,其它字节拆分为两个ASCII字符。

(1)上位机通讯帧格式字符如表2所示。例如:上位机需要控制设备的电源关闭,指令代码是“c”(close单词首字母的ACSII码),上位机发送的帧为:

STX+地址高字节+地址低字节+63+ETX+校验和高字节+校验和低字节

表2 上位机通讯指令帧格式

(2)单片机帧应答主要有两种,一种不带参数的应答,一种是需要返回参数的应答。其应答格式如表3所示,如果接收到的指令不对或者校验和不符,控制单元应答NAK。

表3 通讯应答帧格式

(3)串口通讯接收主要是在串口中断函数里完成,数据接收采用一组缓冲寄存器,两个指针的处理方式[6],如图10所示。每接收到1个数据,RxPointer指针加1,并将数据存放入寄存器组,如果指针超过数组大小,指针归0。在通讯处理函数,先预读数组。每读取1个数组,ReadPointer指针加1。主循环程序中,不断查询是否接收到一个完整的报文,如果是完整的一个报文,才可以进入报文处理函数。再判断报文校验和是否正确,如果报文出错,整个报文做丢弃处理,数据读取处理流程如图11所示。RxPointer和ReadPointer指针地址不能够一样。在通讯应答发送过程中,待发送的第一个数据写入发送寄存器后,发送长度减1。数据发送完毕之后进入串口中断函数,通过判断发送长度字节数,继续将数据写入发送寄存器,直至待发送长度字节数为0,程序流程图如图12所示。

图10 通讯接收数据缓冲器设计

图11 数据读取处理流程图

图12 发送程序流程图

2.7.3 ADC采样

ADC采样主要采用中断的处理方式。ADC转换器启动之后,按照一定的时间间隔自动完成一次采样工作之后,程序进入中断处理函数。程序读取采样值,并累加多次采样结果,求取其平均值作为一次采样的有效值,程序处理流程如图13所示。

图13 ADC中断采样程序流程图

3 上位机软件设计

上位机软件界面主要是在教师机上运行,操作人员可以控制和查看每个实验设备的电源使用情况。软件界面采用Visual Basic 6.0编程语言编写,功能包括远程控制和实时监测。串口通讯编程主要基于MSComm控件实现数据发送和接收[7],通讯协议由用户自定义。

例如:上位机向03设备发送关闭设备电源指令,MSComm串口控件发送数据程序,如下程序所示。

MSComm1.InBufferCount=0

MSComm1.OutBufferCount=0

SendData(0)=&H02

SendData(1)=&H30

SendData(2)=&H33

SendData(3)=&H67

SendData(4)=&H03

SendData(5)=&H67

SendData(6)=&H6B

MSComm1.Output=SendData

4 总结

按以上设计方案制作的单片机控制单元样机如图14所示,经过电工电子实验室旧实验设备的改装使用测试,基本上能够实现预期要求。整个系统设计重点和难点是负载电流检测和数据通讯处理两个部分。

通过设备电源控制系统的设计与制作,可以得出以下几点结论:

(1)负载电流检测采样间隔周期,不能够过长,通过反复试验,采样频率采用36 kHz比较合适。如果频率过快,导致程序反复进入ADC中断,频繁占用CPU,处理其它事务相对迟滞了。如果采样周期过长,导致电流监测不及时。

图14 单片机控制单元样机

(2)负载电流检测与控制,只能够作为轻过载保护,不能够作为短路保护,设备电源系统还必须有相应的短路、漏电等保护措施。

(3)串口通讯程序的设计中,缓冲器数组数量的设置不能够太小。如果设置过小,容易出现如下的情况:接收数据量过大时,已接收部分没有及时读取,导致接收中断,将部分数据丢弃,从而使通讯质量下降。综合考虑单片机的RAM容量大小,接收缓冲器长度为64个。

猜你喜欢

电路设计上位串口
浅谈AB PLC串口跟RFID传感器的通讯应用
Altium Designer在电路设计中的应用
负反馈放大电路设计
特斯拉 风云之老阿姨上位
“三扶”齐上位 决战必打赢
基于ZigBee和VC上位机的教室智能监测管理系统
开漏输出比较器的峰值检测电路设计
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信