2018-10-18 23:31:02 weixin_42625444 阅读数 40
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

本文介绍了一种基于单片机控制的数控开关电源,以89C51单片机作为控制核心,对开关变换电路进行脉宽调制,构成一个智能闭环控制系统。单片机控制的开关电源具备更加完善的功能,更人性化、智能化,便于实时监控。其功能主要包括对开关电源输出电压进行检测,并显示实时电压值;通过按键进行编程预置期望输出的电压;通过A/D转换器采样输出电压,根据PID算法计算控制量修改占空比,以得到期望的输出电压,并通过PID算法控制输出电压稳定在设定的电压值上;拥有可靠的过流保护功能以及辅助电源可同时作为电源输入和给单片机提供工作电压,并可以通过键盘不断改变PID参数,可以进行实时调整。

假设基准电压为5v,由于电网波动导致输入电压减小,那么输出电压也将会减少,此时,所采样的电压将减小,假设为4.9v,误差为0.1v,经过比较放大后,脉冲调制电路根据这个误差,提高占空比使输出电压增大,同理,当由于电网波动导致输出电压增大时,脉冲调制电路降低占空比使输出电压减小,以此来控制输出电压的稳定。

市电经过整流滤波后,一路电压经过7805稳压得到一个+5v电压,该电压作为单片机的工作电源,另外一路电压直接作为开关变换电路的输入电压。单片机根据键盘输入值和取样值之间的差值,修改脉冲占空比,并输出控制功率开关管,以便得到期望的输出电压值,并根据模/数转换器所采样的电压和键盘输入比较,根据差值调用PID算法再次修改脉宽使输出电压稳定。

开关变换器采用磁铁心电感作为储能元件,在功率开关管导通时,电感储能,在开关管截止时,电感释放能量给负载。单片机定时采样输出端的电压,通过ADC0832送进单片机进行处理,单片机根据处理结果输出更新的控制信号,经过光电耦合器滤除干扰后输出控制信号控制功率开关管工作状态。

在本系统中,用户可以根据需要从键盘输入期望的电压,单片机会根据键盘输入与采样电压的差值,更新脉宽,使电源输出相应电压,更新脉宽后,单片机会马上调用PID控制算法,对输出电压进行稳定控制。

闭环时,电源自动进行脉宽调制,当系统读取到键盘预置的电压变化时,先将键盘输入值和从输出端的取样值相比较,假设当前键盘输入为10v,从输出端取样的值为6v,差值为4v,则系统会根据这个差值,更新脉宽使得输出端电压上升为10v;同样,当键盘输入为6v,输出端取样值为10v,差值为-4v,系统会根据算法,将占空比减小以使输出电压变小,这就是系统脉宽调制过程。

同时,电源可以自动稳压,假定在某一正常状态下,输出为V0,反馈电压问Vf(Vf=V0),用户设定电压为Vs,当V0=Vs时,偏差为0,单片机不进行脉宽更新,当电网波动导致输出增加时,即V0>Vs时,单片机采样的电压也增加,单片机根据偏差修改占空比使导通时间变小,从而使电压下降,同样当电网波动使输出电压下降时,即V0<Vs时,单片机修改脉宽使导通时间变长,从而使输出电压上升,如此循环来进行稳压。

1.整流滤波电路

市电经过变压器降压后,变为12v,对该电压整流后一部分电压直接作为开关变换电路的输入电压,另外将其通过7805得到5v的电压,给开关电源控制电路部分的单片机提供工作电源。

电路中采用发光二极管作为电源指示灯,交流220v降压后经过整流桥整流输出直流电压作为开关变换电路的输入电压,7805稳压输出5v给单片机提供电源。

 

2.开关变换电路

功率开关管采用达林顿管,由于它采用两个三极管进行级联,其放大倍数是两个管子放大倍数的乘积,因而具有很高的放大倍数,通过级联,可获取大的电流输出,对于提高电源的输出功率,有一定的作用。该开关管选择为PNP型,当控制脉冲的低电平时,开关导通,电感存储能量,开关把电路的输入电压变成高频脉冲,当控制脉冲为高电平时,开关截止,电感把所存储的能量释放给负载。为了确保电感电流能在开关转换过程中保持连续,选用肖特基二极管作为续流二极管选用,这种二极管具有较快的导通截止恢复时间,在开关导通变为截止时,能够很快的由截止转换到导通,所以能够确保电感电流连续。

3.保护电路

在电源输出端,设置负载电流检测电阻R0,通过R0将负载电流Io变成过流检测电压,三极管作为过流控制管,当开关电源负载电流时,过流控制三极管导通,电源输出电压由过流控制管集电极输出,触发晶闸管导通,将开关电源负载短路,实现保护。该电路有自锁功能,一旦负载电流增大的持续时间超过C1的充电时间,电路触发后,即使负载电流恢复正常,也不能解除保护状态,必须关断电源,排除过流因素,晶闸管才能复位。电路中Ro阻值的选择根据负载电流保护阈值而定,一般Ro取电阻值极小,在开关电源正常负载电流时其压降不足0.3v。R1和C1构成保护启动延时电路,以免开机瞬间负载电流冲击造成误动作。下图中,电感和输出端电容之间的部分是保护电路。

4. 软件设计思想

系统扫描键盘输入,当键盘有输入,系统立即会做出响应,根据采样电压与键盘输入之间的差值,更新脉宽,输出用户期望的电压,随后系统仍扫描键盘,当没有再次输入时,系统调用PID控制算法,控制输出电压稳定。电源额定电压为12v,初始化把设定值设为12.00v,系统扫描键盘时,若与该电压相等,系统调用PID算法,在系统每次调用PID控制算法前,若有键盘输入,系统优先响应键盘输入,更新脉宽。

软件子程序包括:(1)键盘和数码管扫描子程序,(2)ADC0832转换子程序,(3)定时器0中断产生方波子程序,(4)PID控制子程序,(5)定时器1中断修改占空比、进行PID控制、数码显示子程序。


【篇幅较大,获取原文及代码首页发送开关电源


电子开发圈

  FPGA | 单片机 | 嵌入式 | PCB

  入门教程 | 开发经验 | 科技资讯

  长按二维码,开启技术之旅吧!

获取海量学习资料阅读原文

2019-08-21 22:27:35 qq_42449351 阅读数 219
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

一、项目要求

设计一款声控LED智能灯,该灯含有8个灯珠,采用一个按键统一控制灯的开与关,也可以通过声音控制开灯,开灯后根据环境光亮度,点亮多个灯珠(最暗时点亮8个灯珠,最亮时点亮1个灯珠)。

二、使用的硬件

       1. 51单片机实验板,以及电源线、下载线、杜邦线

       2. 声音传感器、PCF8591数模转换模块、光敏电阻、独立按键、LED灯

三、设计方案

通过外部中断的开关和声音传感器统一控制灯的开与关,然后用PCF8591数模转换上的光敏电阻把当前环境光的亮度传给单片机,单片机通过光照强度来控制亮几个灯

系统连接图:

四、源代码

1、PCF8591数模转换函数

#include <pcf8591.h>
sbit scl=P2^0;       //I2C  时钟 
sbit sda=P2^1;       //I2C  数据 
bit ack;             //应答标志位
/******************************************************************* 
功能:     启动I2C总线,即发送I2C起始条件.  
********************************************************************/
void Start_I2c()
{
  sda=1;         /*发送起始条件的数据信号*/
  _nop_();
  scl=1;
  _nop_();        /*起始条件建立时间大于4.7us,延时*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();    
  sda=0;         /*发送起始信号*/
  _nop_();        /* 起始条件锁定时间大于4μs*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();       
  scl=0;       /*钳住I2C总线,准备发送或接收数据 */
  _nop_();
  _nop_();
}

/******************************************************************* 
功能:     结束I2C总线,即发送I2C结束条件.  
********************************************************************/
void Stop_I2c()
{
  sda=0;      /*发送结束条件的数据信号*/
  _nop_();       /*发送结束条件的时钟信号*/
  scl=1;      /*结束条件建立时间大于4μs*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  _nop_();
  sda=1;      /*发送I2C总线结束信号*/
  _nop_();
  _nop_();
  _nop_();
  _nop_();
}

/*******************************************************************
功能:     将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
          此状态位进行操作.(不应答或非应答都使ack=0)     
           发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
********************************************************************/
void  I2C_SendByte(u8  c)
{
 u8  i;
 
 for(i=0;i<8;i++)  /*要传送的数据长度为8位*/
    {
     if((c<<i)&0x80)sda=1;   /*判断发送位*/
       else  sda=0;                
     _nop_();
     scl=1;               /*置时钟线为高,通知被控器开始接收数据位*/
      _nop_(); 
      _nop_();             /*保证时钟高电平周期大于4μs*/
      _nop_();
      _nop_();
      _nop_();         
     scl=0; 
    }
    
    _nop_();
    _nop_();
    sda=1;                /*8位发送完后释放数据线,准备接收应答位*/
    _nop_();
    _nop_();   
    scl=1;
    _nop_();
    _nop_();
    _nop_();
    if(sda==1)ack=0;     
       else ack=1;        /*判断是否接收到应答信号*/
    scl=0;
    _nop_();
    _nop_();
}

/*******************************************************************
功能:        用来接收从器件传来的数据,并判断总线错误(不发应答信号),
          发完后请用应答函数应答从机。  
********************************************************************/    
u8   I2C_RcvByte()
{
  u8  retc=0,i; 
  sda=1;                     /*置数据线为输入方式*/
  for(i=0;i<8;i++)
      {
        _nop_();           
        scl=0;                  /*置时钟线为低,准备接收数据位*/
        _nop_();
        _nop_();                 /*时钟低电平周期大于4.7μs*/
        _nop_();
        _nop_();
        _nop_();
        scl=1;                  /*置时钟线为高使数据线上数据有效*/
        _nop_();
        _nop_();
        retc=retc<<1;
        if(sda==1)retc=retc+1;  /*读数据位,接收的数据位放入retc中 */
        _nop_();
        _nop_(); 
      }
  scl=0;    
  _nop_();
  _nop_();
  return(retc);
}
/********************************************************************
功能:      主控器进行应答信号(可以是应答或非应答信号,由位参数a决定)
********************************************************************/
void Ack_I2c(bit a)
{  
  if(a==0)sda=0;              /*在此发出应答或非应答信号 */
  else sda=1;				  /*0为发出应答,1为非应答信号 */
  _nop_();
  _nop_();
  _nop_();      
  scl=1;
  _nop_();
  _nop_();                    /*时钟低电平周期大于4μs*/
  _nop_();
  _nop_();
  _nop_();  
  scl=0;                     /*清时钟线,住I2C总线以便继续接收*/
  _nop_();
  _nop_();    
}
/************************************************************
* 函数功能      : PCF8591的输出端输出模拟量
******************* *****************************************/
bit Pcf8591_DaConversion(u8 addr,u8 channel,u8 Val)
{
   Start_I2c();              //启动总线
   I2C_SendByte(addr);            //发送器件地址
   if(ack==0)return(0);
   I2C_SendByte(0x40|channel);              //发送控制字节
   if(ack==0)return(0);
   I2C_SendByte(Val);            //发送DAC的数值  
   if(ack==0)return(0);
   Stop_I2c();               //结束总线
   return(1);
}
/************************************************************
* 函数功能		: 写入一个控制命令
************************************************************/
bit PCF8591_SendByte(u8 addr,u8 channel)
{
   Start_I2c();              //启动总线
   I2C_SendByte(addr);            //发送器件地址
   if(ack==0)return(0);
   I2C_SendByte(0x40|channel);              //发送控制字节
   if(ack==0)return(0);
   Stop_I2c();               //结束总线
   return(1);
}
/************************************************************
* 函数功能   	: 读取一个转换值*/

u8 PCF8591_RcvByte(u8 addr)
{  
   u8 dat;

   Start_I2c();          //启动总线
   I2C_SendByte(addr+1);      //发送器件地址
   if(ack==0)return(0);
   dat=I2C_RcvByte();          //读取数据0

   Ack_I2c(1);           //发送非应答信号
   Stop_I2c();           //结束总线
   return(dat);
}

2、Main函数

#include<config.h>
#include<uart.h>
#include <pcf8591.h>
sbit RL=P2^2;	//声控
sbit gnd=P3^4;
//sbit Switch=P3^2;
sbit beep=P2^3;	//蜂鸣器引脚
int flag=1,flag1=1;
u8 print[20];
void delay_ms(u16 x)//毫秒延时函数
{u16 i;
 u8 j;
 for(i=0;i<x;i++)
    for(j=0;j<115;j++);
}

void delay_us(u8 t) //10倍微秒延时函数,延时10*t微秒
{u8 i;
 for(i=0;i<=t;i++);
}

void Alarm(u8 t) //蜂鸣器报警,持续t秒
{
 u8 i,j,k; 	
 for(j=0;j<t;j++)
 { for(i=0;i<200;i++)
      {beep=0;delay_us(50);beep=1;delay_us(50);}
   for(k=0;k<100;k++)
      {beep=0;delay_us(110);beep=1;delay_us(110);}
 }
}
void main()
{
	u8 light;
	P1=0xff;
	EA=1;
	IT0=1;
	EX0=1;
	gnd=0;
    Init_COM();   //初始化
	flag=1;
   while(1)
    {
		PCF8591_SendByte(AddWr,1);//启动AIN0通道模数转换,光敏
        light=PCF8591_RcvByte(AddWr);//读出转换数字值
		light=255-light;
		delay_ms(200);
	 
	    sprintf(print,"L:%3bu",light);
	    Print_str_COM(print);	  //将采集的值送串口
	 	if(RL==1){flag=!flag;delay_ms(150);}		
		if(flag==0)
		{
				//if(light=0){	P1=0XFF;}
				if(light>0&&light<30){P1=0X00;}
				if(light>=30&&light<60){P1=0X01;}
				if(light>=60&&light<90){P1=0X03;}
				if(light>=90&&light<120){P1=0X07;}
				if(light>=120&&light<150){P1=0X0F;}
				if(light>=150&&light<180){P1=0X1F;}
				if(light>=180&&light<210){P1=0X3F;}
				if(light>=210&&light<=255){P1=0X7F;}
				//delay_ms(3000);
				//P1=0XFF;
			}
			else	
		{
			P1=0XFF;delay_ms(10);//break;
		}	
		}	 
}
void int0() interrupt 0
{
	flag=!flag;	
}
	

五、实验效果

由于不能上传视频,所以我将效果视频上传至优酷,请点击观看------->声控LED智能灯

 

 

2018-12-05 15:42:24 m0_37697335 阅读数 1743
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

一、对比

开关电源与线性稳压电源(LDO)是电源的两种主要类型。它们各有各的优点和应用场合。

线性电源的纹波小,但是效率低,效率低意味着发热量大(相当于把多余的压差转化成了热量),发热量大意味着需要更大的散热面积,这样体积就上来了。适用于低压差转换和一些要求电源电压稳定的场合,诸如供给单片机等器件作为电源。

开关电源与线性电源刚好相反,效率高但是纹波也大。但是体积小,适用于高的压差转化。

二、PWM调制方式实现的开关电源形式

占空比:开通的时间 Ton 与开关周期 T 的比值, ton(开通时间) + toff(关断时间) = T(开关周期),占空比 D=ton / T。

PWM一种实现能量流动平稳化的方法。通过很多的脉冲,高频地切换,将在开关接通期间存储能量而在开关切断时提供此能量的手段,从而实现平稳的电压。

举个简化的降压型开关电源的例子:

 

2018-11-25 11:42:46 weixin_42625444 阅读数 734
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

 

关注【电子开发圈】微信公众号,一起学习吧!

电子DIY、Arduino、51单片机、STM32单片机、FPGA……
电子百科、开发技术、职业经验、趣味知识、科技头条、设备拆机……

 

公众号首页发送“ 1014 ”,获取本篇课设全部设计资料。

原文:https://mp.weixin.qq.com/s/A-icT1XbDsL7c8-pzfG7vQ

 

本介绍了一种基于单片机控制的数控开关电源,以89C51单片机作为控制核心,对开关变换电路进行脉宽调制,构成一个智能闭环控制系统。单片机控制的开关电源具备更加完善的功能,更人性化、智能化,便于实时监控。其功能主要包括对开关电源输出电压进行检测,并显示实时电压值;通过按键进行编程预置期望输出的电压;通过A/D转换器采样输出电压,根据PID算法计算控制量修改占空比,以得到期望的输出电压,并通过PID算法控制输出电压稳定在设定的电压值上;拥有可靠的过流保护功能以及辅助电源可同时作为电源输入和给单片机提供工作电压,并可以通过键盘不断改变PID参数,可以进行实时调整。

 

 

假设基准电压为5v,由于电网波动导致输入电压减小,那么输出电压也将会减少,此时,所采样的电压将减小,假设为4.9v,误差为0.1v,经过比较放大后,脉冲调制电路根据这个误差,提高占空比使输出电压增大,同理,当由于电网波动导致输出电压增大时,脉冲调制电路降低占空比使输出电压减小,以此来控制输出电压的稳定。

 

 

市电经过整流滤波后,一路电压经过7805稳压得到一个+5v电压,该电压作为单片机的工作电源,另外一路电压直接作为开关变换电路的输入电压。单片机根据键盘输入值和取样值之间的差值,修改脉冲占空比,并输出控制功率开关管,以便得到期望的输出电压值,并根据模/数转换器所采样的电压和键盘输入比较,根据差值调用PID算法再次修改脉宽使输出电压稳定。

 

开关变换器采用磁铁心电感作为储能元件,在功率开关管导通时,电感储能,在开关管截止时,电感释放能量给负载。单片机定时采样输出端的电压,通过ADC0832送进单片机进行处理,单片机根据处理结果输出更新的控制信号,经过光电耦合器滤除干扰后输出控制信号控制功率开关管工作状态。

 

在本系统中,用户可以根据需要从键盘输入期望的电压,单片机会根据键盘输入与采样电压的差值,更新脉宽,使电源输出相应电压,更新脉宽后,单片机会马上调用PID控制算法,对输出电压进行稳定控制。

 

闭环时,电源自动进行脉宽调制,当系统读取到键盘预置的电压变化时,先将键盘输入值和从输出端的取样值相比较,假设当前键盘输入为10v,从输出端取样的值为6v,差值为4v,则系统会根据这个差值,更新脉宽使得输出端电压上升为10v;同样,当键盘输入为6v,输出端取样值为10v,差值为-4v,系统会根据算法,将占空比减小以使输出电压变小,这就是系统脉宽调制过程。

 

同时,电源可以自动稳压,假定在某一正常状态下,输出为V0,反馈电压问Vf(Vf=V0),用户设定电压为Vs,当V0=Vs时,偏差为0,单片机不进行脉宽更新,当电网波动导致输出增加时,即V0>Vs时,单片机采样的电压也增加,单片机根据偏差修改占空比使导通时间变小,从而使电压下降,同样当电网波动使输出电压下降时,即V0<Vs时,单片机修改脉宽使导通时间变长,从而使输出电压上升,如此循环来进行稳压。

 

1.整流滤波电路

 

市电经过变压器降压后,变为12v,对该电压整流后一部分电压直接作为开关变换电路的输入电压,另外将其通过7805得到5v的电压,给开关电源控制电路部分的单片机提供工作电源。

 

电路中采用发光二极管作为电源指示灯,交流220v降压后经过整流桥整流输出直流电压作为开关变换电路的输入电压,7805稳压输出5v给单片机提供电源。

 

 

2.开关变换电路

 

功率开关管采用达林顿管,由于它采用两个三极管进行级联,其放大倍数是两个管子放大倍数的乘积,因而具有很高的放大倍数,通过级联,可获取大的电流输出,对于提高电源的输出功率,有一定的作用。该开关管选择为PNP型,当控制脉冲的低电平时,开关导通,电感存储能量,开关把电路的输入电压变成高频脉冲,当控制脉冲为高电平时,开关截止,电感把所存储的能量释放给负载。为了确保电感电流能在开关转换过程中保持连续,选用肖特基二极管作为续流二极管选用,这种二极管具有较快的导通截止恢复时间,在开关导通变为截止时,能够很快的由截止转换到导通,所以能够确保电感电流连续。

 

 

3.保护电路

 

在电源输出端,设置负载电流检测电阻R0,通过R0将负载电流Io变成过流检测电压,三极管作为过流控制管,当开关电源负载电流时,过流控制三极管导通,电源输出电压由过流控制管集电极输出,触发晶闸管导通,将开关电源负载短路,实现保护。该电路有自锁功能,一旦负载电流增大的持续时间超过C1的充电时间,电路触发后,即使负载电流恢复正常,也不能解除保护状态,必须关断电源,排除过流因素,晶闸管才能复位。电路中Ro阻值的选择根据负载电流保护阈值而定,一般Ro取电阻值极小,在开关电源正常负载电流时其压降不足0.3v。R1和C1构成保护启动延时电路,以免开机瞬间负载电流冲击造成误动作。下图中,电感和输出端电容之间的部分是保护电路。

 

 

4. 软件设计思想

 

系统扫描键盘输入,当键盘有输入,系统立即会做出响应,根据采样电压与键盘输入之间的差值,更新脉宽,输出用户期望的电压,随后系统仍扫描键盘,当没有再次输入时,系统调用PID控制算法,控制输出电压稳定。电源额定电压为12v,初始化把设定值设为12.00v,系统扫描键盘时,若与该电压相等,系统调用PID算法,在系统每次调用PID控制算法前,若有键盘输入,系统优先响应键盘输入,更新脉宽。

 

软件子程序包括:(1)键盘和数码管扫描子程序,(2)ADC0832转换子程序,(3)定时器0中断产生方波子程序,(4)PID控制子程序,(5)定时器1中断修改占空比、进行PID控制、数码显示子程序。

 

 

 

2006-03-24 21:01:00 ncdawen 阅读数 4398
  • 单片机控制第一个外设-LED灯-第1季第6部分

    本课程是《朱有鹏老师单片机完全学习系列课程》第1季第6个课程,主要讲解LED的工作原理和开发板原理图、实践编程等,通过学习目的是让大家学会给单片机编程控制LED灯,并且为进一步学习其他外设打好基础。

    4000 人正在学习 去看看 朱有鹏

随着开关电源技术和绿色电源的飞速发展,APFC技术成为当前研究的热点,电子式开关电源技术已经成熟,而且有相当多的控制方式。目前人们正在进行数字式开关电源的研究与开发,已经有数字式带功率因数校正的开关电源产品上市。对于数字式开关电源,隔离技术和抗干扰技术是至关重要的,随着电子元器件的迅速发展,光电耦合器的线性度越来越高,光电耦合器是目前在单片机和开关电源中用得最多隔离抗干扰器件。光耦合器(optical coupler,英文缩写为OC)亦称光电隔离器或光电耦合器,简称光耦。它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管LED)与受光器(光敏半导体管)封装在同一管壳内。当输入端加电信号时发光器发出光线,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电—光—电”转换。以光为媒介把输入端信号耦合到输出端的光电耦合器,由于它具有体积小、寿命长、无触点,抗干扰能力强,输出和输入之间绝缘,单向传输信号等优点,在数字电路上获得广泛的应用。通常的光电耦合器由于它的非线性,因此在模拟电路中的应用只限于对较高频率的小信号的隔离传送。普通光耦合器只能传输数字(开关)信号,不适合传输模拟信号。近年来问世的线性光耦合器能够传输连续变化的模拟电压或模拟电流信号,使其应用领域大为拓宽。

光耦合器的性能特点

光耦合器的主要优点是单向传输信号,输入端与输出端完全实现了电气隔离,抗干扰能力强,使用寿命长,传输效率高。它广泛用于电平转换、信号隔离、级间隔离、开关电路、远距离信号传输、脉冲放大、固态继电器(SSR)、仪器仪表、通信设备及微机接口中。由于光电耦合器的输入阻抗与一般干扰源的阻抗相比较小,因此分压在光电耦合器的输入端的干扰电压较小,它所能提供的电流并不大,不易使半导体二极管发光;由于光电耦合器的外壳是密封的,它不受外部光的影响;光电耦合器的隔离电阻很大(约1012Ω)、隔离电容很小(约几个pF)所以能阻止电路性耦合产生的电磁干扰。线性方式工作的光电耦合器是在光电耦合器的输入端加控制电压,在输出端会成比例地产生一个用于进一步控制下一级的电路的电压。线性光电耦合器由发光二极管和光敏三极管组成,当发光二极管接通而发光,光敏三级管导通,光电耦合器是电流驱动型,需要足够大的电流才能使发光二极管导通,如果输入信号太小,发光二极管不会导通,其输出信号将失真。在开关电源,尤其是数字开关电源中,利用线性光耦合器可构成光耦反馈电路,通过调节控制端电流来改变占空比,达到精密稳压目的。

光耦合器的技术参数主要有发光二极管正向压降VF、正向电流IF、电流传输比CTR、输入级与输出级之间的绝缘电阻、集电极-发射极反向击穿电压V(BR)CEO、集电极-发射极饱和压降VCE(sat)。此外,在传输数字信号时还需考虑上升时间、下降时间、延迟时间和存储时间等参数。

电流传输比是光耦合器的重要参数,通常用直流电流传输比来表示。当输出电压保持恒定时,它等于直流输出电流IC与直流输入电流IF的百分比。其公式为:

采用一只光敏三极管的光耦合器,CTR的范围大多为20%~300%(如4N35),而PC817则为80%~160%,达林顿型光耦合器(如4N30)可达100%~5000%。这表明欲获得同样的输出电流,后者只需较小的输入电流。因此,CTR参数与晶体管的hFE有某种相似之处。线性光耦合器与普通光耦合器典型的CTR-IF特性曲线,分别如图1中的虚线和实线所示。

图1 两种光耦合器的CTR-IF特性曲线

由图1可见,普通光耦合器的CTR-IF特性曲线呈非线性,在IF较小时的非线性失真尤为严重,因此它不适合传输模拟信号。线性光耦合器的CTR-IF特性曲线具有良好的线性度,特别是在传输小信号时,其交流电流传输比(ΔCTR=ΔIC/ΔIF)很接近于直流电流传输比CTR值。因此,它适合传输模拟电压或电流信号,能使输出与输入之间呈线性关系。这是其重要特性。

使用光电耦合器主要是为了提供输入电路和输出电路间的隔离,在设计电路时,必须遵循下列原则:所选用的光电耦合器件必须符合国内和国际的有关隔离击穿电压的标准;由英国埃索柯姆(Isocom)公司、美国摩托罗拉公司生产的4N××系列(如4N25 、4N26、4N35)光耦合器,目前在国内应用地十分普遍。鉴于此类光耦合器呈现开关特性,其线性度差,适宜传输数字信号(高、低电平),可以用于单片机的输出隔离;所选用的光耦器件必须具有较高的耦合系数。

线性光耦合器的产品及选取原则

线性光耦合器的典型产品及主要参数见表1,这些光耦均以光敏三极管作为接收管。

在开关电源的隔离中,以及设计光耦反馈式开关电源时必须正确选择线性光耦合器的型号及参数, 除了必须遵循普通光耦的选取原则外,还必须遵循下列原则:

1、光耦合器的电流传输比(CTR)的允许范围是50%~200%。这是因为当CTR<50%时,光耦中的LED就需要较大的工作电流(IF>5.0mA),才能正常控制单片开关电源IC的占空比,这会增大光耦的功耗。若CTR>200%,在启动电路或者当负载发生突变时,有可能将单片开关电源误触发,影响正常输出。

2、若用放大器电路去驱动光电耦合器,必须精心设计,保证它能够补偿耦合器的温度不稳定性和漂移。

3、推荐采用线性光耦合器,其特点是CTR值能够在一定范围内做线性调整。

上述使用的光电耦合器时工作在线性方式下,在光电耦合器的输入端加控制电压,在输出端会成比例地产生一个用于进一步控制下一级电路的电压,是单片机进行闭环调节控制,对电源输出起到稳压的作用。

开关电源中光电耦合器电路的设计

图2 光电耦合器在数字式开关电源中的应用

在图2的开关电源中我们采用的电压环进行闭环调节实现输出电压的稳定输出,选用NEC公司的PS2501光电耦合器作为输入采样、反馈信号、输出驱动与单片机之间隔离器件,一方面光电耦合器可以起到隔离两个系统地线的作用,使两个系统的电源相互独立,消除地电位不同所产生的影响。另一方面,光电耦合器的发光二极管是电流驱动器件,可以形成电流环路的传送形式,电流环路是低阻抗电路,对噪音的敏感度低,提高了系统的抗干扰能力,起到了电磁兼容和隔离抗干扰的作用,不会因为电路中的高频电流的电磁干扰对单片机产生干扰,同时消除了电磁干扰而引起开关管误触发造成的损坏,而且线性度也比较好。所以在图2中,单片机与模拟电路分别使用相互独立的电源,COM1与COM2是两个不同的电源地,以消除模拟电路对单片机的干扰。

TL431是一个基准电压稳压器电路,它可以作为低温度系数的可编程参考放大器使用,允许灌入电流大100mA。在TL431内部是一个2.5V的基准电压,因而它的参考端输入电压可由直流输出电压的分压来提供,可使它呈现优良的工作状态。它具有很低的输出噪声和仅为50ppm/C的温度系数。用来作参考基准电源十分理想。在图2中电阻R11和电容C6组成的阻容网络在实际应用电路中是必不可少的,它主要用于品率补偿。

为了彻底阻断干扰信号进入系统,不仅信号通路要隔离,而且输入或输出电路与系统的电源也要隔离,即这些电路分别使用相互独立的隔离电源。对于共模干扰,采用隔离技术,即利用变压器或线性光电耦合器,将输入地与输出地断开,使干扰没有回路而被抑制。在开关电源中,光电耦合器是一个是非重要的外围器件,设计者可以充分的利用它的输入输出隔离作用对单片机进行抗干扰设计,并对变换器进行闭环稳压调节。

开关稳压电源

阅读数 1236

没有更多推荐了,返回首页