找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9217|回復(fù): 1
收起左側(cè)

一個(gè)PWM調(diào)光的LED電源-pic單片機(jī)控制

[復(fù)制鏈接]
ID:50962 發(fā)表于 2014-8-13 19:14 | 顯示全部樓層 |閱讀模式
本帖最后由 liuz 于 2014-8-13 19:16 編輯

這是這邊做的一個(gè)設(shè)計(jì),供大家參考。
一般PWM調(diào)光都是分兩級(jí)的,一級(jí)PFC部分(BOOST PFC或者Flybakc PFC),一級(jí)DC/DC調(diào)光部分。但明顯成本偏高,如果能用一級(jí)同時(shí)實(shí)現(xiàn)PFC和PWM調(diào)光就可以節(jié)省成本,基于這個(gè)想法,設(shè)計(jì)了一款次級(jí)用MCU控制的單級(jí)調(diào)光方案,經(jīng)實(shí)驗(yàn)效果良好,現(xiàn)與大家分享。此方案可接受0-10V電壓控制信號(hào),然后轉(zhuǎn)化為PWM脈沖同時(shí)控制初次級(jí)通斷來(lái)實(shí)現(xiàn)PWM調(diào)光。
1348018356505920b451c62_small.jpg
1348018382505920ce7e73b_small.jpg

134802666150594125c9e3e_small.jpg

效率和PF。


134803818850596e2c0943d_small.jpg 134803821550596e474ed80_small.jpg

EMI


134803825550596e6f4babc_small.jpg 134803826350596e7757e07_small.jpg


調(diào)光特性,可根據(jù)需要軟件調(diào)整。

134803839350596ef90710f_small.jpg

                              變壓器結(jié)構(gòu):

1348470965506008b503b01_small.jpg



10%負(fù)載時(shí)的輸出電流和MOS開關(guān)波形

50%負(fù)載時(shí)的輸出電流和MOS開關(guān)波形

90%負(fù)載時(shí)的輸出電流和MOS開關(guān)波形

1348471008506008e066cf2_small.jpg 1348471018506008ea60f2d_small.jpg
1348471032506008f859a03_small.jpg

程序:
//PWM Dimming main program.
#include "pic.h"


__CONFIG(0x7fc4);

unsigned int g_ADTable[4]={0,0,0,0};    //定義一個(gè)四位的數(shù)組
char g_Count=0;                         //定義變量  
bit Overflag=0;                         //溢出標(biāo)志位清零
interrupt ISR (void)                          //中斷服務(wù)子函數(shù)
{
  if (ADIE && ADIF)
    {  ADIF=0;
       g_ADTable[g_Count]=(((unsigned int)ADRESH)<<8) + ADRESL;
       g_Count++;
         if (g_Count==4)
           {
             g_Count=0;
             Overflag=1;
           }
         else
           {
             GODONE=1;
           }
    }  
}   

void initial (void)               // 單片機(jī)的初始化
{
  int i=0;
  TRISIO=0b00010000;             //初始化AD轉(zhuǎn)換

  ANSEL=0B00001000;              //GP4為模擬輸入
  GPIO=0b00000110;
  ADCON0=0B10001101;
  ADIE=1;                        //a/d中斷打開
  ADIF=0;
  PEIE=1;                        //中斷使能
  GIE=1;
  PR2=0xff;                //初始化PWM,全高電平輸出,使其先工作1s
  CCP1CON=0b00001100;
  CCPR1L=0xff;
  T2CON=0b00000001;        //最后兩位由10改為01,開關(guān)周期由500HZ變?yōu)?K
  TMR2ON=1;
  TMR2IF=0;                //PWM初始化設(shè)置完畢
  for (i=0; i<15000;i++)    //讓電源先工作起來(lái)
  {
  }
  GODONE=1;
}  

void PWM_Output(unsigned char PWM_Width)    //pwm輸出寬度
{
  unsigned char i=0,j=0;
  if (CCPR1L == PWM_Width)
    {
    }
  else
  {
     if (CCPR1L > PWM_Width)
       {
         i= CCPR1L - PWM_Width;
         for (j=1; j<i; j++)
           {
            CCPR1L=CCPR1L-1;
            TMR2IF=0;
            while (!TMR2IF)
              {
              }
           }
       }
     else
        {
           i=PWM_Width-CCPR1L;
           for (j=1; j<i; j++)
           {
            CCPR1L=CCPR1L+1;
            TMR2IF=0;
            while (!TMR2IF)
              {
              }
           }
        }
  }  
}

void main(void)
{
  int Tmp=0;
  unsigned char i=0, Adv=0xff;         //定義參變量及初始化
  initial ();                          //系統(tǒng)初始化
  while (1)                           
  {
     if (Overflag==1)
       {
          Tmp=0;
          for (i=0; i<4; i++)
            {
             Tmp=Tmp + g_ADTable[ i];
            }

          Tmp=Tmp>>4; //得到平均值,移2位得到平均值,再移2位得到8位的平均值,即最大255
          if (Tmp<=3)
            {
             Tmp=3;
            }
          Adv=Tmp;
          Overflag=0;
          GODONE=1;
       }

     else
         {
            GP1=1;
         }

     PWM_Output(Adv);   //調(diào)整PWM輸出
  }
}




回復(fù)

使用道具 舉報(bào)

ID:263750 發(fā)表于 2018-4-26 12:37 | 顯示全部樓層
厲害了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表