一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2598|回复: 6

[其他综合] 单片机请教

[复制链接]
发表于 2012-3-11 20:17 | 显示全部楼层 |阅读模式
部分程序
用途  用两个定时器控制光耦可控硅tlp3521调速两个小电机 功率大约几W  用外部中断0检测过零脉冲 下面语句是检测到过零脉冲后将定时器写入初值 并开启
现在的问题是对灯泡调光正常 用于风机时 能工作几秒后,风机发出很大哼声 转速很低  这是在风机段子上并接上个15W灯泡 风机转速立刻正常,断开后风机转速不正常  我判断原因是因为
可控硅开启时间短(程序里面为100US) 由于负载为感性 开启时间短 未达到可控硅的维持电流 造成?不知是否正确 tlp3521参数上维持电流25MA  好像芯片也选的不好,
void exint0() interrupt 0   
{
if(time_min<938)     //只有时间计数小于469时才进行风机的终端开启风机化霜时不开启
  {                          //这个是程序的失败点虽然可以正常工作 但是在温度临界点时 风机会出现  
                              //间断启动 以后应该考虑到 改成平局值 与预期的调速在实际应用困难
   if((lc_temp>30)||(ld_temp>30))   
    {
     if((lchw-lcsd)>=-1)
      {
       TH0=0xdd;TL0=0;
       TR0=1;
      }
     else
      {
       TH0=0x7c;TL0=0;
       TR0=0;
      }
     if((ldhw-ldsd)>=-2)
      {
       TH1=0xdd;TL1=0x08;
       TR1=1;
      }  
     else
      {
       TH1=0x6c;TL1=0x08;
       TR1=1;
      }
    }
   else    //当压缩机运转时的风速状态
    {
     TH0=0x7c;TL0=0;
     TR0=1;
     TH1=0x7c;TL1=0x08;
     TR1=1;   
    }
  }
else
  {
   TR1=0;
   TR0=0;
  }
下面分别是定时器中断开启可控硅
/*定时器0中断服务函数 主要用于冷藏风机调速等等*/
void time0() interrupt 1     
{
TR0=0;
fz_lcfj=1;               //负载 风机
delay_us(100);
fz_lcfj=0;
}
/*定时器1中断服务函数 主要用于冷藏风机调速等等*/
void time1() interrupt 3   
{
TR1=0;
fz_ldfj=1;//负载 风机
delay_us(100);
fz_ldfj=0;
}
现在我的解决方法是两种 一种加大可控硅导通时间  这相当于浪费太多的时间
另一种定时器1(定时器0)里面将fz_lcfj置1后重新启动定时器 一段时间后在执行定时中断 将fz_lcfj=0.
请老师指点 谢谢
发表于 2012-3-11 22:38 | 显示全部楼层
上电路图吧

我觉得换pwm调速可能会好点
回复

使用道具 举报

发表于 2012-3-11 22:59 | 显示全部楼层
感性负载得要较长的开启脉冲,这个你可以直接改一下脉冲的时间的啊。
采用过零的办法来电机调速,应力噪声是不可避免的。
回复

使用道具 举报

发表于 2012-3-11 23:22 | 显示全部楼层
阻性负载脉冲有3~60uS即够了,感性负载有几百到1000uS之间,还有出现转动缓慢的原因是以下:


void time0() interrupt 1
{
TR0=0;

//检测到过零后,先延时一段时间再输出脉冲,不然电机会转动不畅,延时的时间是800uS左右
fz_lcfj=1;               //负载风机
delay_us(100);
fz_lcfj=0;
}
回复

使用道具 举报

发表于 2012-3-11 23:36 | 显示全部楼层
现在你的延时都用原地打转的啦,那肯定是浪费时间的,应该用计数器的方式。
回复

使用道具 举报

 楼主| 发表于 2012-3-12 19:42 | 显示全部楼层
谢谢老师  我的今天解决了   开始采用
在定时器中断执行后再次启动定时器 定时一段时间后关闭fz_ldfj=0;
在实际中好像还是不行   我看了下tlp3521的参数 维持电流25ma 纯阻性大约5.5W
我控制的电机功率估计也就5W左右 造成维持电流过小
解决方法对fz_ldfj=1;后 不关闭   在外部中断0(过零检测)中关闭fz_ldfj=0;
由于感性负载电流相位迟于电压  可以调速 就是不知道这样工作对于芯片正常不?
回复

使用道具 举报

 楼主| 发表于 2012-3-12 19:47 | 显示全部楼层
功率很小的交流电机 在封闭空间 对于抖动 噪音 转速 要求不是很严  这个是给别人做的韩国产的三星冰箱的控制板  原来电脑版停产 工厂也不管 无奈~~第一次做东西 对于软件而且还是边看书边做   硬件我会的
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-11-4 20:12 , Processed in 0.040857 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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