DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 974|回复: 0
打印 上一主题 下一主题

[电源] 基于PIC单片机的可编程电源的设计与应用

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-27 14:12:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                      随着各种电器和仪表设备的日渐丰富,对电源应用的灵活性提出了更高的要求。设计一款使用灵活、方便且价格相对便宜的通用电源,正越来越成为市场所需。现代单片机正朝着处理速度越来越快,外设资源越来越丰富,价格越来越便宜的方向发展,将单片机融入电源的设计中可以极大地提升电源的性能和灵活性。本文介绍了一种单片机加PWM芯片的开关电源设计方法,既可以保留PWM芯片带来的稳定工作性能,又可以利用单片机的控制能力提供各种人机交互和通信接口。笔者设计的电源作为通用电源使用,可以提供灵活可编程的电压电流输出,另外还可以设置成铅酸电池充电器的模式,具有广阔的应用前景。
  1 系统功能
  通过对电源的编程,可以方便地实现图1所示的电压输出波形。其中,V1、V2、T1、T2、dv、dt都是可以通过编程来设定的。电压值的输出范围为0~16V,最大输出电流为10 A。输出电压精度为0.1 V,电流精度为10mA。电流的设定值指的是允许输出的最大电流,也可以被编程为与输出电压一样的波形。






  图2 LBC模式
  用户可以通过3种方式对电源进行输出设定:
  ① 通过电源面板上按键编程。通过按键对输出电压、电流限流值、时间等量进行设定。
  ② 通过PC机串口编程。通过将PC机的串口RS232与电源串口相连,再运行PC机上一串口通信的软件对电源进行编程。
  ③ 电源间相互编程。通过将两台电源的串口相连,操作其中一台电源面板上的按键来对另一台进行编程。操作的一台电源叫做“主电源”,被编程的电源叫做“从电源”。在这种编程方式中,只能将从电源的参数设置为与主电源完全一致,而不能对各个参数进行单独设定。一台电源只能提供100W的功率。这种方式可以应用在需要较大功率的场合,可将两台或多台具有相同设置的电源输出并联来方便地实现功率扩展。
  2 工作原理
  用单片机来控制开关电源,总的来说可以分为两种:
  第一种是单片机通过输出PWM或DA给电源电路提供一个基准电压,单片机本身不介入电源的反馈中(本设计所采用的就是这种方式);第二种为通过单片机输出的PWM信号直接控制开关管工作,取代PWM芯片,但这种方式对单片机的要求较高,需要具有相当高的时钟频率才能满足对输出PWM频率和分辨率的要求。
  系统按模块来分可以分成两大模块:
  电源模块和单片机控制模块。电源模块是以PWM芯片为核心的AC—DC变换器,PWM芯片采用安森美半导体的电流型PWM控制器NCP1200作为控制芯片。单片机控制模块采用美国微芯公司的PIC16F874作为微控制器,主要实现电流电压信号的采样、显示、按键输入、串口通信以及为电源模块提供电压电流参考等功能。两个模块的关系可以用图3来说明。






  图4 电源模块电路结构
  图中的辅助电源提供+12 V的电压,另经三端稳压器件KA7805(图中未画出)产生+5V的电压,给比较器和单片机控制模块提供电源。
  3.2 单片机控制电路
  PIC16F874是美国微芯科技公司(Microchip Technology)的一款8位单片机,内置4K×14位的Flash、128字节的RAM和64字节的EEPROM。另外,它具有丰富的外设资源,其内置1个UART模块可供串口通信用,2个*模块可以产生2路独立、10位分辨率的PWM信号,8路10位的A/D转换通道。另外,PIC系列单片机的每个I/O能提供25mA的驱动电流,对于LED的接口电路可以省掉外加晶体管的驱动电路。
  单片机控制模块结构框图如图5所示。






  图6 按键输入和显示接口电路
  ③ A/D采样和PWM输出电路。A/D负责采样输出电压电流并送到数码管显示。当前电流电压设定值通过由单片机内部的*模块产生的两路PWM信号来给电源模块提供一个参考值。单片机内部的*模块可以设置成PWM输出模式,通过写周期寄存器和脉宽寄存器的值就可由硬件产生不同频率和占空比的PWM波形。
  ④串口通信接口电路。串口通信接口电路采用MAX232芯片作为RS232收发器。
  4 软件设计
  4.1 软件流程
  软件用C语言编写,使用HighTech公司为PIC系列单片机提供的PICC编译器。系统上电时,单片机读出非易失性存储器(EEPROM)中上次设置参数,进行电流电压输出。在软件设计中,采用多个任务的概念,可以模拟一个简单的操作系统进行任务的调度。由定时器产生一个5ms的中断,在中断程序中激活各个任务的标志。如显示任务主要负责A/D采样、数码管与LED的刷新,可每5ms执行一次。键盘处理任务负责按键的扫描、软件去抖、键盘命令的解释和扫行,可每10ms执行一次。PWM输出任务负责按照设定的值进行PWM的输出,可以每50ms执行一次。如果有PC机或其他电源通过串口编程,单片机将在UART中断中接收编程数据,接收完改写EEPROM中设置并强行复位。如果接收到通过按键的编程,则在按键处理中修改EEPROM的设置并复位。程序主流程则扫描各个任务是否到时间执行。是,则执行该任务;否则,跳过该任务。主程序流程如图7所示。






  图7 主程序流程
  4.2 串口编程软件
  在PC机上设计了软件来实现PC机与单片机的通信。通过该软件可以方便地实现对电源电流电压输出、定时等参数的设定。只要将电源上的RS232口与PC机串口相连,就可实现通信。
  利用Visual Basic中的Mscomm控件进行串口通信软件的设计(这里仅作简要的介绍)。PC端数据接收通过Oncomm事件来实现,当接收缓冲区的数据达到rthreshold属性设定值时,就会触发Oncomm事件,在中断程序中读出接收缓冲区中的数据,将收到的字符型数据转换成字符串后便送到各个文本框显示。数据发送时,首先读出文本框内字符串,再将其转换成字符型数据,最后通过单击“发送”按钮,将数据送到发送缓冲区中,从而将数据从串口发送出去。
  结语
  采用单片机控制,克服了开关电源单一输出的缺点,能够提供灵活的电压输出。通过功率联合扩展的功能,可以满足不同功率场合的要求。电源也可以被当成铅酸电池充电器来使用,能自动调整充电电流和电压,应用场合非常广泛。
            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-5 06:20 , 耗时 0.084193 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表