打印

请教:用PIC16F877A的充电程序

[复制链接]
1717|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sbcceeq|  楼主 | 2011-1-19 09:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位老师好,我仿照一些资料编写的给24V蓄电池充电的程序,目的是当检测到电池两端电压大于20V时,输出的PWM占空比为0.8,PWM输出给MOS管的栅极以控制开关管的导通,主要是每隔0.1秒AD转换检测电池电压,关于检测时刻所查的资料上有句话是:为了提高检测电压的准确性应该在PWM输出为由高到低电平转换时检测.我以下的程序段能否实现这个要求呢?用的型号是PIC16F877A



while (!RC2); // RC2为PWM输出,等高电平出现
   while (RC2); // RC2为PWM输出,等低电平出现
      TRISC2 = 1;  // 禁止RC2(PWM口)输出
   V_value=AD_SUB(2);//AN2通道为蓄电池电压检测通道,得到AD转换后的值
   TRISC2 = 0;  // 允许RC2(PWM口)输出






另外每隔0.1秒检测一次电压这个功能我的程序是否能实现呢?以下是程序。肯请高手们指点!谢谢!


void main(void)
{ init();//IO口、PWM设置、TMR1初始化
while (1)
{
  if (timer_tic)   //0.1秒计时到
  {
   timer_tic= 0;  //
   
   while (!RC2); // RC2为PWM输出,等高电平出现
   while (RC2); // RC2为PWM输出,等低电平出现
   
   TRISC2 = 1;  // 禁止RC2(PWM口)输出
   V_value=AD_SUB(2);//AN2通道为蓄电池电压检测通道,得到AD转换后的值
   TRISC2 = 0;  // 允许RC2(PWM口)输出
    if(V_value>0x166&&V_value<0x3f2) CCPR1L=0x20;  //当电池电压大于20V小于29V时, CCPR1L为0x20,对应占空比为0.8
      } // end if timer tic

   if (TMR1IF)//
  {
   TMR1IF = 0;
   TMR1H = 0x85;
   TMR1L = 0xEE;  // 0.1 秒定时
   timer_tic = 1; //
  }
}
}

unsigned int AD_SUB(char channel)
{ char i;
unsigned int  AD_RES;
ADCON0 = AD_SETUP | (channel << 3);  //若AD_SETUP=0x81则TAD=32Tosc
// ADCON0 |=(channel<<3);   //设置AD转换通道,打开通道
for (i=1;i<5;i++) NOP(); //打开AD通道后延时20us左右
ADGO=1;    //开始AD转换
while (ADGO==1);   //等待AD转换结束
ADIF=0;    //清AD结束标志
AD_RES=0;
AD_RES=ADRESH<<8;
AD_RES|=ADRESL;
return (AD_RES);
}
沙发
yewuyi| | 2011-1-19 10:52 | 只看该作者
为了提高检测电压的准确性应该在PWM输出为由高到低电平转换时检测.

这句一般是做马达的电流检测中才采用,对于你此类应用,PWM反应到电池上的肯定是直流性质的平均电压,所以,不需要关心PWM,可以随时启动AD采集电池上的电压。

另外,如果你打算直接把PWM脉冲输出直接接到电池上的话,则肯定是有问题的,PWM输出应该要接一些电路才可以。

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
sbcceeq + 1
板凳
sbcceeq|  楼主 | 2011-1-19 11:12 | 只看该作者
本帖最后由 yewuyi 于 2011-1-19 12:32 编辑

非常感谢 !
我将单片机的PWM接到一个驱动芯片后接到MOS管上,还想向你请教另外一个问题:最初的充电阶段是恒流充电,我检测充电电流如果不为我设的恒定值,就改变PWM的占空比,直到出现我想象的恒定电流为止,这样能实现恒流充电吗?如果出现我把占空比调到1,电流仍然很小,该怎么办呢?我目前所编的程序是恒定输出电压是28V,但充电电流很小

使用特权

评论回复
地板
yewuyi| | 2011-1-19 12:32 | 只看该作者
如果占空比提高到1,依然电流很小,达不到恒流充的电流要求的话,则应该提供PWM驱动电源的电压,这个根据欧姆定律就应该知道答案,还有什么可想的!?

使用特权

评论回复
5
sbcceeq|  楼主 | 2011-1-19 19:40 | 只看该作者
说的是,谢谢叶工!

使用特权

评论回复
6
qzhui121| | 2011-3-5 15:02 | 只看该作者
很不错的解释,学习中

使用特权

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

本版积分规则

个人签名:fdfasfsadf

13

主题

41

帖子

0

粉丝