打印
[STM8]

嵌入式调功率(有偿求解)

[复制链接]
552|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sang523|  楼主 | 2017-1-18 08:53 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 sang523 于 2017-1-18 12:09 编辑

目前在做无极灯调光,用stm8s103,TIM1输出互补的pwm,触发无极灯,现在调整其功率,通过计数PWM脉冲个数并外部加控制硬件来实现,以下是tim1溢出中断里的程序。#pragma vector=TIM1_OVR_UIF_vector
__interrupt void TIM1_OVR_UIF_IRQHandler(void)
{
   TIM1_SR1=0X00;                    //清除中断标志位
switch(flag)
{
case 1:
if(flag1==1)
{
TIM1_ARRH=0X00;                //每进入一个状态先进行变频(main里面是一个固定频率)
TIM1_ARRL=110;
TIM1_CCR1H=0X00;
TIM1_CCR1L=55;
TIM1_DTR=7;
  PD2=0;                                //PD2端口是外部加控制硬件的端口,作用于输出pwm口上,既置1为高电平(代表pwm没有输出),置0代表pwm正常输出。
  count13++;   
if(count13==1000)             //在该频率下先数1000个脉冲,保证稳定
{
  count13=0;
flag1=1;
  }
}

if(flag1==1)                         //开始进入调整
{
   count13++;                       
   if(count13==3)                      //数3个脉冲后PD2置1,pwm输出受控
  {
    PD2=1;
   }
   if(count13==6)                     //数3个脉冲后PD2置0,pwm正常输出
   PD2=0;
   count13=0;
  }
};break;
case 2:                                   //case 2代表pwm正常输出
PD2=0;flag1=0;break;
  }
}
现在我通过ad采电压值来调整功率
while(1)
{
    delay1ms(16);                                       //每两次采样间隔为16ms,时间不精确
   ADC_CSR=0X06;
   ADC1024();                                             
   AD5=AD;
   if((AD5>=819)&&(AD5<=1024))                 //数值都是跟电压值对应的  
  {
  count14++;
  if((count14>=100)&&(PD2==0))                //采样100次以上且此时PD2端口为低
   TIM1_IER=0X01;flag=2;                           //中断使能,先正常输出pwm。
   }
   else if((AD5<819)&&(AD5>=726))
  {
    count15++;
   if((count15>=100)&&(PD2==0))
   flag=1;                                                    //进入第一种调整状态
   }
}
现在我通过改变ad采的电压值使其在1,2状态来回切换,大部分情况下都很理想,灯偶尔会出现重启或死掉

QQ图片20170118083931.jpg (424.17 KB )

QQ图片20170118083931.jpg

QQ图片20170118084600.jpg (371.57 KB )

QQ图片20170118084600.jpg

QQ图片20170118084743.jpg (339.98 KB )

QQ图片20170118084743.jpg
沙发
doudouhi| | 2017-1-18 09:20 | 只看该作者
你用了switch语句的话,不是应该flag等于1的时候执行case1 后的所有语句吗,那再在里面对flag进行判断没有意义了吧,那这样count13只会是0-6循环吧

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

133

帖子

2

粉丝