51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 单片机技术文章 > PIC单片机 > 详细内容
PIC单片机调压与过零检测
发布时间:2009/7/24  阅读次数:2235  字体大小: 【】 【】【

首先用PWM(脉宽调制)方法用于可控硅控制是有条件的,即调制频率不能大于市电频率(50Hz),也就是周期不能小于20mS,否则就不能达到调制作用,调制频率超过市电频率时,可控硅即处于连续导通状态而不能达到调压目的。只有调制频率低于市电频率才能起到调压目的,即限制市电的周波通过可控硅的数量而起到调压的目的。因此用该种方法调制的电压周波数一定是小于50HZ,超过了人眼视觉暂留效应,此就是用于调光产生闪烁的原因。该调压方法用在调功或对脉动电压不敏感的用途上尚可。如果采用可控硅调压用在调光上,须采用移相的调制方法,可使光连续可调。采用移相方法就需过零检测作为移相基点。过零检测其实并不难,如果要求调压比不是很高采用简单的方法即可奏效;用一只三极管即可。用单片机进行移相调压控制可以做得很精。

字串1

/********************************************************************************/
#i nclude           <pic.h>
__CONFIG (CPD&PROTECT&BOREN&MCLRDIS&PWRTEN&WDTEN&INTIO);
/********************************************************************************/
//
void           init                 (void);
/********************************************************************************/
//
                                           bit     fg_pw,fg_vs,fg_zq;
volatile       unsigned   char   fg_count;
volatile       unsigned   int     time1_temp,buff;
/********************************************************************************/
#define           powon                   GPIO|=0B00110000 字串1
#define           powoff                 GPIO&=0B00001111
#define           vpp                       GPIO2
#define           feedback             GPIO0
/********************************************************************************/
               void           init                 (void)
       {     CLRWDT();
               TRISIO=0B11001111;
         WPU=1;
         IOCB=4;                             //使能过零信号中断
         VRCON=0;
         PIE1=1;
         OPTION=0;
         INTCON&=7;
         INTCON|=0B10001000;

字串4


         CMCON=7;
               T1CON&=1;
         T1CON|=0x10;
  }
/*********************************************************************************/
               void           interrupt   isr_power     (void)
       {     GPIO=GPIO;
                     if         (TMR1IF&&TMR1ON)
                 { TMR1IF=0;
                           if           (fg_pw)
                         { if   (!fg_vs)
                             {powon;fg_vs=1;TMR1L=112;TMR1H=0xfe;}   //触发宽度400US(256+144)
                               else 字串9
                             {fg_vs=0;
                               powoff;             //关闭
TMR1ON=0;
                             }
                         }
                           else       {powoff;fg_count=0;}
                 }
                       if       (GPIF)
                 {     GPIF=0;
                         if (fg_pw)
                         {fg_zq=1; 字串2
                           TMR1H=(time1_temp>>8);
     //if       (vpp==0)     TMR1H-=3;         //上下沿检测,下沿时间补偿(3*256)US
                           TMR1ON=1;
                         }
                         else
                     { if         (vpp)     {TMR1ON=1;TMR1L=TMR1H=0;}   //l-->h
                           else
                         {time1_temp=(TMR1H<<8|TMR1L);       //h-->l
                           TMR1ON=0;
                           TMR1L=TMR1H=0;

字串8


                           time1_temp=~time1_temp;                 //同步信号周期检测(时间)

time1_temp+=1000;                             //一个半周时间中缩短1MS开始触发
                           buff=time1_temp;
                           if     (++fg_count>=4)       fg_pw=1;//连续周期检测4次
                         }
                     }
                 }
         }
/************************************************************************************/
                 void               main                 (void) 字串7
       {         unsigned int i;
                   TMR0=0;
                   init();
                   while     (1)
             {       if         (fg_pw&&fg_zq)
                     {   fg_zq=0;
                           if         (feedback)   {if(time1_temp<0xffff-1000) time1_temp+=20;}//功率(电压)上限
                           else
                           {if   (time1_temp>buff)time1_temp-=20;}   //功率(电压)下限
                         for   (i=1000;i!=0;i--) {;} 字串3
                         init();

                     }
             }
       }                         TMR1L=(time1_temp&0xff);

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[5]
  • 评论人:[匿名] 时间: [2012/1/5 21:08:10] IP:[201.12.155.8*]
  • YcTIhA , [url=http://nnozrexgnzbt.com/]nnozrexgnzbt[/url], [link=http://mtjvtwaxagzl.com/]mtjvtwaxagzl[/link], http://ikjxsqdlfiwx.com/
  • 评论人:[匿名] 时间: [2012/1/4 3:07:08] IP:[65.192.236.13*]
  • R7uH1s <a href="http://pncibiidlbhg.com/">pncibiidlbhg</a>
  • 评论人:[匿名] 时间: [2012/1/3 20:48:50] IP:[46.18.122.2*]
  • a2M8cx , [url=http://mbmcfxfkhius.com/]mbmcfxfkhius[/url], [link=http://vuwgumdowvys.com/]vuwgumdowvys[/link], http://nzkipyuvwgii.com/
  • 评论人:[匿名] 时间: [2012/1/3 0:50:17] IP:[46.182.222.15*]
  • 3b7Xg9 <a href="http://mimrimeoqihn.com/">mimrimeoqihn</a>
  • 评论人:[匿名] 时间: [2012/1/2 15:59:34] IP:[188.11.148.15*]
  • Whoa, whoa, get out the way with that good infraomtion.

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号