基于单线技术的电源检测系统
2021-03-10董鹏琳罗胤张德平
董鹏琳 罗胤 张德平
摘 要:电子设备系统时常要进行电源检测,判断电源好坏,但较大系统的电源种类较多,并且分布在各分机,距离比较远,统一引线到检测电路板需要大量的导线,增加了分机间连接的复杂度。针对存在的问题,本文提出了一种解决方法。采用单总线(One-Wire)芯片,使用单根导线连接各分机,运用NXP单片机通过这根导线把各分机的电源检测结果统一送回单片机,由单片机通过RS-232串行总线传送到主控計算机进行显示。
关键词:电源检测;单线协议;NXP单片机
中图分类号:TN86 文献标识码:A 文章编号:1003-5168(2021)19-0040-04
Abstract: Electronic equipment system often have to power detection, to determine the power is good or bad, but the larger system has kinds of power types, and distributed in the extension, the distance is far, uniform lead to the detection circuit board requires a large number of wires, increase the complexity of the connection between devices. Based on this consideration, this paper presents a solution: use the one-wire protocol chip, use a single wire to connect the devices, and the NXP microcontroller through the wire to obtain the power test results and through the RS-232 serial bus to send it to the host computer to display.
Keywords: power detection;one-wire protocol;NXP microcontroller
大型工厂或者复杂电子设备系统中电源种类较多(正电源、负电源以及电压数值多样化),并且分布在各分机。大部分分机相互之间距离又比较远[1],若一一引线到电源检测模块则需要大量导线,增加了分机间连接的复杂度。基于此,研究者提出采用单总线协议芯片,在单线接入点设计电源检测电路,使用单根导线连接各分机,运用NXP单片机通过这根导线把各分机的电源检测结果(电源正常、电压高、电压低、连接故障)通过串口转发到上位机进行实时显示。
1 总体方案设计
研究者确立了以NXP LPC922单片机芯片与美国达拉斯公司生产的DS2408开关控制芯片为核心芯片的方案,原理如图1所示。
使用LPC922单片机芯片设计单片机最小系统时,只需接好芯片的接地引脚与电源引脚。LPC922有自己的内部复位系统与晶振系统。DS2408是8通道可寻址开关,由单线协议来控制。总线上,DS2408按照单线协议进行通信,有8个PIO管脚。通过上位机向DS2408发送指令来控制其开与关,当它“开”时,就接收来自电源检测部分的电压状态信号,并将信号转换为数字式。MAX900芯片是MAXIM公司生产的高速、低功耗比较器。
2 基于单线协议的电源检测系统硬件设计
2.1 单片机最小系统部分
单片机最小系统部分电路采用LPC922芯片作为控制系统的核心,晶振电路采用LPC922芯片内部的晶振源,复位电路也采用其内部复位方式。LPC922芯片供电电压是2.4~3.6 V,可以有适当的容差。由于外部电源供电电压为5 V,因此在这部分硬件电路中使用了一个开启电压为1.8 V的LED接在5 V电压与单片机VDD管脚之间,使VDD引脚的输入电压为3.3 V。单片机与计算机的串行接口电路采用MAX232芯片进行连接。LPC922芯片的电源引脚对地加了1个100 nF的滤波电容,防止经电源线进来的高频串扰。MAX232芯片的RXD、TXD引脚各串了一个100 Ω的电阻,防止从LPC922芯片出来的电流过大损坏MAX232芯片。LPC922芯片与DS2408芯片的连接是通过单总线进行的,单总线从LPC922芯片的任何一个准双向I/O口引出都可以。本设计采用P0口(LPC922芯片的引脚20),电路如图2所示。
2.2 单线芯片及其外围电路设计
DS2408是一款8通道可编程漏极输出I/O可寻址开关。因为LPC922芯片的工作电压是3 V,若对DS2408采用寄生电源供电,则必然要在DS2408的I/O口外接一个上拉电阻(1~10 kΩ),把电压上拉到5 V,这对PIO的逻辑状态是有影响的,所以对DS2408采用外接电源供电的方式。DS2408采用的是标准通信速率,故其单线接口的上拉电阻设定为2.2 kΩ。每片DS2408都有一个单总线数据接口,单片机通过向它发送控制命令来控制其每个通道的开与关。每一片DS2408都有8个PIO管脚(P0~P7),用于接收来自MAX900的TTL电平(晶体管-晶体管逻辑电平),以便芯片对这些TTL电平进行处理。电路如图3所示。
2.3 电源检测电路设计
用00、01、10、11表示电源状态。系统外的8路电源通过与电压比较器的基准源进行比较得到高、低TTL电平。DS2408对这些TTL电平进行数字化处理,然后传送给单片机芯片,再由单片机通过串口传送到计算机上显示。当连接出现问题时,DS2408得到的TTL电平必定是低电平,也就是“00”状态,故用“11”状态表示电源的正常状态。电源检测电路的原理如图4所示,所有引入的电源电压都通过电位器来调整到合适的电压值,以便检测。在测试时可以调节电位器的阻值。
3 软件设计
软件程序主要包括单片机与PC机的串口通信程序、单总线通信程序以及上位机(PC机)可视化界面程序。本设计中,单片机控制器软件采用高效简洁的C51语言编写ISP駐留代码,编译后通过LPC922的串口将程序写入单片机芯片中。单片机与PC机的串口通信使用VB实现。MSComm控件具有丰富的与串口通信密切相关的属性,提供了对串口的各种操作。本设计中采用MSComm控件编写单片机与上位机的串口通信程序。
每片DS2408内均有唯一的64位序列号,最低的8位是产品代码,其后48位是器件的序列号,最后的8位是前56位的循环冗余校验码。只有获得这些序列号,才可能对其进行操作。
操作DS2408必须严格遵守单线协议,一般有以下4个过程[2]:①初始化信号;②传送ROM操作命令;③传送RAM操作命令;④数据交换。设计中应该保证指令的执行时间小于或者等于单总线上时序信号中的最小时间。操作过程如图5所示。
DS2408与LPC922的通信软件设计流程如图6所示。
软件框架采用主程序加中断调用方式,以提高功能模块的内聚性[3]。软件与两个中断相关:①串行通信中断,负责RS-232串口数据传输;②接收来自DS2408的数据的外部中断,处理来自单线接口数据通信的各种事件。主程序在完成全部初始化后进入死循环的状态,等待这两个中断的发生,如图7所示。
4 系统测试
上电后,用手摸一下芯片是否急剧发热,若是,则立即关掉电源,排除虚焊短路等问题后再次进行检测;测试芯片的供电电压与接地端是否都达到要求,检测所用的仪器为万用表[4-5];烧写代码,各子程序模块调试通过之后再进行系统联合调试。如图8所示的计算机界面用来显示电源故障状态数据。联调成功后,在本界面上用鼠标单击“查询”按钮,就可以实时显示每一路电源的状态,如图9所示。
5 结语
本文针对大型工厂或者复杂电子电器系统中多路电源检测存在的问题,提出了基于单线协议的电源状态检测系统软硬件设计思路与整体系统框架。在只用一根导线的情况下,实现了对8路不同种类的电源实时检测,并在计算机终端显控界面上将检测结果实时显示出来,有效解决了常规多路多种类电源检测系统到处拉线、线路混杂混乱的问题。
参考文献:
[1]董鹏琳,覃团发,潘成举.基站蓄电池监控系统设计[J].现代电子技术,2018(18):109-112.
[2]张晓宇.单总线数据传输方案研究[D].南京:南京理工大学,2013:1-70.
[3]杨一鸣,汪贵平.面向对象的无人车电源故障检测专家系统设计[J].汽车技术,2019(6):30-35.
[4]刘波文,刘向宇,黎胜容.51单片机C语言应用开发实战精讲[M].北京:北京航空航天大学出版社,2011:25.
[5]童诗白,华成英,叶朝辉.模拟电子技术基础[M].北京:高等教育出版社,2015:15.
3914500338203