基于CPLD的实时电流检测系统设计
2020-02-01陈旭
陈旭
(北京航天创智科技有限公司 北京市 100089)
随着电子技术的发展,在各种电子设备中,对功耗的要求越来越严格,已知电压和电流的话即可计算出器件功耗。本文介绍一种简便的电流检测方法,通过精密电阻将电流值转换为电压值,然后通过电流传感放大电路,将电压值放大,再将放大后的电压值通过A/D 芯片转换为数字信号,A/D 芯片数字端的接口为常用的SPI 接口,CPLD 处理器可以通过SPI 总线方便的读取出量化后的数值,进而推算出相应的电流值,然后通过串口反馈给上位机。
1 电流检测电路组成
如图1所示,电源转换芯片输出端和负载电源输入端之间串联一个10mΩ 的精密电阻,因为电流一般较小,所以经过一个信号放大芯片MAX4173,将信号放大20 倍,再经过一个运算放大器LM124J 实现隔离,最后接到ADC 芯片ADS8661 上。ADS8661 通过SPI 总线与CPLD 连接,CPLD 通过串口转USB 芯片CP2103 与主机连接,在主机上通过上位机软件方便的读取电流值。
1.1 电流传感放大电路
电流传感放大电路如图2所示,选用的芯片型号为MAX4173。MAX4173 是一种低成本、高精度的电流传感放大器,采用小型SOT23-6 封装,增益为20 倍。 MAX4173 采用+3V 至+28V 单电源供电,通常只消耗420uA 的电源电流。
1.2 隔离电路
为了实现电流传感放大电路和后级A/D 电路的隔离,中间加了运算放大器电路实现信号的隔离,运算放大器选择常用的TI 公司的LM124J,按照电压跟随器的解法进行连接。
电压跟随器的输入阻抗高,而输出阻抗低。一般来说,输入阻抗可以达到几兆欧姆,而输出阻抗低,通常只有几欧姆,甚至更低。电压隔离器输出电压近似输入电压幅度,并对前级电路呈高阻状态,对后级电路呈低阻状态,因而对前后级电路起到隔离作用。
1.3 模数转换电路
模数转换芯片选择TI 公司的ADS8661,该芯片量化位数为12bit,采样率1.25MSPS,输入幅度范围可选,器件采用5V电源供电,最大可达±12.288 V。
ADS8661 属于基于逐次逼近模数转换器转换器。具有过压保护功能,最高可耐受±20V,片内基准电压为4.096V,温度漂移极低。根据实际输入信号的大小,设置内部寄存器选择合适的输入范围。器件采用SPI(Serial Peripheral Interface)接口,只需要四根信号线与处理器相连,大大减少了信号线的数量,降低电路板布线难度。
1.4 处理器电路
图1:电流检测电路组成
图2:电流传感放大电路
处理器选用ALTERA 公司的CPLD 芯片,型号为5M570ZT 100。CPLD(Complex Programmable Logic Device)即复杂可编程逻辑器件,是从PAL 和GAL 器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,实现设计的数字系统。CPLD 比FPGA 使用起来更方便。CPLD 的编程采用E2PROM 或FASTFLASH 技术,无需外部存储器芯片,使用简单。在编程方式上,CPLD 主要是基于E2PROM 或FLASH 存储器编程,编程次数可达1 万次,优点是系统断电时编程信息也不丢失。
如图3所示,本系统中CPLD 实现与A/D 之间的SPI 通信,读取A/D 量化后的数值,并且将该数值经过计算转换为电流值后通过UART 接口发送给USB 转串口芯片,进而发送给主机。5M570ZT100 属于ALTERA 公司的MAX V 系列,具有570 个逻辑单元,最大主频152MHZ,可以满足系统的设计需求。
1.5 USB转串口电路
图3:CPLD 电路连接示意图
采用USB/RS232 桥接器件CP2103 进行设计,计算机通过USB 接口虚拟一个RS232 接口,与传统设备器件连接,设备对计算机接口的形式为USB 接口。
CP2103 是一款高度集成的USB-UART 桥接器,提供一个使用最小化元件和PCB 空间来实现RS232 转换USB 的简便解决方案。CP2103 包含了一个USB 功能控制器、USB 收发器、振荡器和带有全部调制解调器控制信号的异步串行数据总线。
2 系统软件设计
本系统中软件共包括两部分,即运行在电路板上的CPLD 软件和运行在主机上的上位机软件。
CPLD 软件包括三个模块,即SPI 通信模块、串口通信模块以及电流值计算模块。使用常用的Verlog HDL 语言进行CPLD 软件的开发,开发工具是Quartus II。SPI 通信模块和串口通信模块分别用于实现CPLD 与ADC 和主机之间的通信。电路值计算模块将计算得到的电流值通过串口通信模块发送给上位机。
本系统SPI接口设计中,CPLD为SPI主设备,A/D为SPI从设备,模式设置CPOL=0,CPHA=0。CPLD 采用轮询的方式读取A/D 量化后的数值,CPLD 内置计时器,每间隔一定的时间,CPLD 拉低A/D 的片选信号CS,然后SCLK 上升沿去读取SDO 上输出的数据,RVS 是从设备状态显示信号。
CPLD 和USB/RS232 之间采用异步串行通信,本系统中波特率设置为9600bps,每一帧包括起始位、数据位、校验位和停止位。CPLD 将计算后的电流值通过异步串行接口发送给USB/RS232 芯片。
电流值计算模块将采样后的电压值转换为电流值。假设电流值为I(单位为A),由欧姆定律可知,则电压值为10*I mV,经过放大电路后变为10*20*I 即200*I mV,ADC 的量程选择为0 到5.12V,则ADC 的分辨率为1.25mV,量化后的数字量为十进制N,则200*I=1.25*N,I 为6.25*NmA。N 的取值范围是1 到4096,则I 的相应取值范围是6.25mA-25.6A,可以满足绝大多数常用电子设备的电路检测需求。
上位机软件主要包括串口通信模块和显示界面模块,采用效率较高的C++语言进行开发,串口通信模块接收到CPLD 反馈的电流值后,显示界面模块将电流值显示在界面上,用户可以实时观测到电流值。
3 实际测试
电流检测系统设计完成后,为了验证系统的使用效果对系统进行实际测试,选取了6 种常用的电流值,实际电流测试情况如表1所示。其中相对误差=(检测电流值-实测电流值)*100%/实测电流值。
从表1 可知,在500mA 以内误差较大,500mA 以上误差较小,但基本都在1%以内,达到了精确测量电流的要求。
表1:实际测试记录表
4 小结
本文提出了一种基于CPLD 的简单的电流检测系统,输入电流经过精密电阻转换为电压值,再经过电流传感放大电路和隔离电路,输入给模数转换电路,CPLD 通过SPI 接口轮询模数转换芯片的量化值,然后经过逻辑运算计算出电流值,通过异步串行接口传输给USB/RS232 芯片,进而上传给主机并在上位机软件上实时显示。经过实际测试发现电流测试精度可达1%以内,能够满足大部分电子设备的需求,并且系统简单合理,稳定可靠,可以广泛应用在各类工业电子设备中。