周 涛
(中国船舶重工集团公司第七二三研究所,江苏 扬州 225101)
传统电源多采用硬件控制,体积庞大,计算精度低;而电子行业电路集成度越来越高,体积越来越小,体积庞大的电源即将被市场淘汰,也更加难以满足应用要求。
软件控制已成为行业主流趋势,具有可控性强、灵活性高、可移植性强等优点;同时便于参数更改。无论是研发过程中的更改调整,还是使用中与整个系统的完美契合,软件控制都更具优势。
因此,为了达到电源小体积、高控制精度的要求,采用了软件控制的方法。
本文介绍了一种基于PIC18F4580单片机电源控制系统的设计,首先提出了整个系统的设计方案;然后对硬件电路各部分进行设计,给出电路原理;接着进行软件部分设计,包括通讯部分;最终经过电源的整机调试与使用,证明了该电源控制系统的有效性和可靠性。
该控制系统用于150 V 1 kW开关电源的控制,根据电源的控制要求,完成控制系统的设计。电源基本控制要求如下:
(1) 输入电压、输入电流、输出电压、输出电流、温度采集并监测状态;
(2) 通过CAN接收上级开关机命令,及时开关机,并发送开关机状态;
(3) 根据电压值、电流值、温度值判断电源工作状态,实时监测故障状态,出现故障及时关机,上报故障状态;
(4) 实时监测旋转编码器,根据旋转情况调节电压电流基准;
(5) 数码管显示输出电压、输出电流值,指示灯指示电源工作状态。
根据控制要求,整理出需7路AD采样口、3路旋钮按键I/O口、7路电压电流基准调节引脚、2路CAN口收发接口、3路数码管显示数据传输口、2路指示灯口、1路电源开关机输出口。而PIC18F458采用精简指令集和哈佛总线结构,采用流水线取指令方式,具有实用、低功耗、高速度及抗干扰能力强等特点[1],综合考虑,选择PIC18F4580作为控制芯片。
控制系统主要包含六大部分:微控制器、CAN通讯、旋转调节、采样、显示和开关部分,系统结构框图如图1所示。
图1 系统结构框图
微控制器为系统的CPU,完成系统的整体控制。
基础外围电路、引脚分配如图2所示,20 MHz晶振、20 pF电容、20 Ω串联电阻组成震荡电路,作为外部时钟源;C26、C30作为芯片供电端滤波电容,保证芯片正常工作;XP1、R38、R39、C28组成程序烧写电路,可随时烧写程序;AN0~AN6用作7路采样电路AD输入口,RB0用作电源开关机信号输出口,RB1、RB4、RE2作为旋钮按键信号输入口,CANTX、CANRX用于CAN通讯,1脚、32脚、44脚作为显示电路控制口,36脚、37脚、42脚、43脚作为电源调节控制口,RD0、RD1作为指示灯控制口。
图2 微控制器电路图
CAN总线遥控技术为本系统的核心。不同于传统的手动式电源系统,该系统可以实现远程控制的功能。
单片机作为控制器, ISO1050作为CAN收发器。该收发器具有电镀隔离功能,其可为总线、CAN控制器提供差分发射、差分接收能力,信号传输速率高达1 Mbps。
控制器实现遥控的基本要求,收发器对接收的指令、需发送的上报数据进行收发。CAN控制器设计具体内容见软件设计部分,此处不再赘述。
此外,实际应用中,还需在CAN总线两端的CAN接头上接入120 Ω的匹配电阻,以消除阻抗不连续的反射现象[2]。CAN通讯电路图如图3所示。
图3 CAN通讯电路图
旋钮调节电路实现电源输出电压、电流的可调,为电源的附加功能,便于调试、实际使用。
该部分是简单的开环线性控制系统,其响应严格地由描述系统行为的数学模型、系统输入和初始条件所确定。系统使用人员通过旋钮开关设定目标输出值,顺时针旋转数值增加,逆时针旋转数值减小,慢速旋转细调,快速旋转粗调,显示部分会实时显示具体数值,单片机作为控制器,随时采集目标数据,对数据进行线性计算,将数据发送给数模转换芯片,经过匹配处理将控制信号接入电源完成线性控制。
其中,选用小型回转式编码器EC11作为旋钮按压开关,其中按压实现电压基准和电流基准控制的切换,旋转改变数值。旋钮按键电路如图4所示,EC11输入端1、3、4脚各接5.1 kΩ的上拉电阻,默认为高电平,同时并联一个去抖动电容,一般机械按键抖动频率为100 Hz左右,当按键闭合抖动时接触时间在毫秒级,综合考虑,选1 000 pF电容作为去抖动电容。
图4 旋钮按键电路图
数模转换器选用12位精度的数模转换器(DAC)芯片TLV5614,具体电路设计如图5所示,该芯片采用5 V电源供电,防止模拟电路和数字电路相互干扰,可以在两端串联磁珠,电路原理图未显示,实际设计中已考虑。芯片的4脚与单片机42脚相连供数据传输,芯片5脚接单片机时钟端。芯片6、7脚接入单片机,实现单片机对TLV5614芯片的控制。
图5 数模转换电路图
为隔离前后级之间影响,接一电压跟随器实现阻抗匹配,具体电路如图6所示。
图6 电压跟随电路图
因为电源本身已对采样信号进行处理,此处只进行简单的抗干扰、保护设计。采样电路如图7所示,电阻R2可防止大电流对单片机输入口造成损坏; C2、R5组成高频滤波电路,滤除输入端高频干扰信号;BAV99防止高电压和负脉冲对芯片造成损坏。
图7 采样电路图
显示部分由驱动芯片MAX7221和数码管组成,实现硬件显示功能。显示电路图如图8所示。驱动芯片1(数据信号)、12(片选信号)、13脚(时钟信号)与单片机相应引脚相连,用以实现单片机对显示的控制。
图8 显示电路图
软件设计基于集成开发环境(MAPLAB IDE),采用C语言编写,程序主要包括初始化、电源开关机、电压电流输出调节、故障保护、显示和通讯部分。程序流程图如图9所示。
图9 程序流程图
首先,单片机唤醒上电后进行系统初始化,检测通讯是否正常;同时扫描旋钮按键,读取数据并存储,数据经CPU计算后输出,用以调节电源输出。接着,实时监测遥控开关机指令,收到开机信号后,判断电源输入端是否正常,在电源输入端正常的情况下发出开机信号,此时开始计时,计时结束监测更新电源工作状态并上报数据;若收到关机指令,进行关机处理。
整个过程,随时进行故障监测,遇到故障立即进行故障处理。显示部分有2种工作状态:在设置电压基准和电流基准值时,随旋钮变化,实时显示设置值;此外,显示当前电源输出电压值和输出电流值。
3.2.1 CAN控制器功能框架
CAN控制器按功能划分为位时序逻辑、接口管理逻辑、位流处理器、接收滤波器、错误管理逻辑和信息缓冲器6个部分,用以实现CAN 2.0协议中物理层和数据链路层要求的全部功能,CAN控制器功能框架如图10所示。
图10 CAN控制器功能框架图
接口管理逻辑通过地址/数据总线、控制总线连接主控制器。发送缓冲器能够存储一个完整的报文,当主控制器发出发送命令时,接口管理逻辑会使CAN核心模块从发送缓冲器读CAN报文。当收到一个报文时,CAN核心模块将串行位流转换成用于验收滤波器的并行数据;通过这个可编程的滤波器,能确定主控制器要接收哪些报文。所有接收的报文由验收滤波器验收,并存储在接收先进先出(FIFO)。存储报文的多少由工作模式决定,因此,数据超载可能性被大大降低。
3.2.2 CAN控制器程序结构
CAN总线控制程序采用“自上而下”的设计方法,将控制器划分为寄存器、位时序逻辑和位数据流处理器三部分。寄存器介于CAN控制器和微处理器之间,是它们交换数据的接口,主要用来存储CAN控制器的中断、命令、状态等信息。位时序逻辑模块主要是实现CAN总线协议中对位同步的控制[3],负责监视串行CAN总线输入,并处理与总线有关的时序问题。位数据流处理器模块是一个控制数据流的序列发生器。
按照芯片数据手册以及系统需求,配置相关寄存器,配置收发报文对象,完成程序编写,具体程序此处不再赘述。
3.2.3 CAN总线通信波特率计算
位定时是CAN总线上一个数据位的持续时间,主要用于CAN总线上各节点的通信波特率设置。为了优化网络性能,对位定时中的采样点位置、定时参数、信号传播延迟进行设置。
标称位速率为一理想的发送器在没有重新同步的情况下每秒发送的位数量。标称位时间划分成同步段(Sync_Seg)、传播时间段(Prop_Seg)、相位缓冲段1(Phase_Seg1)、相位缓冲段2(Phase_Seg2),即:
Tbit=(TSync_Seg+TProp_Seg+TPhase_Seg1+TPhase_Seg2)×
Tq
(1)
式中:Tbit为位标称时间;Tq为时间份额。
时间份额是派生于振荡器周期的固定时间单元。
综合考虑,将同步段、传播段、相位缓冲段1、相位缓冲段2分别设置为1、1、4、4时间量程,采用10时间份额的位标称时间,即:
Tbit=(1+1+4+4)×Tq=10Tq
(2)
波特率预分频器的位时间份额Tq由波特率预分频值(BRP)决定,振荡器频率被分频的值用于产生位时间份额。位时间值是该份额的整数倍,波特率预分频的有效值为0~63,即:
Tq=2×(CBRP+1)×Tosc
(3)
式中:Tosc为控制器系统时钟;CBRP为波特率预分频值。
因为控制器时钟频率为20 MHz,所以Tosc=0.05 μs。
为了得到250 kbit/s的通信波特率,代入以上公式,可计算出CBRP=3。根据计算结果对相关寄存器进行设置,即可实现预定波特率的设置。
综合以上软硬件设计,印制了电路板。经过硬件电路的反复调试以及软件程序的反复修改,形成最终产品。整机联调、试验均满足要求。现已通过质量检验并交付使用,进而验证了该电源控制系统的有效性和可靠性。