打印
[技术求助]

msp430ad采样控制pwm占空比做稳压源

[复制链接]
900|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Rospiers|  楼主 | 2018-1-25 14:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
思路是用:ad采的电压0x7ce/ad参考电压=pwm占空比x/pwm周期   
    if (ADC12MEM0 > 0x7CE)                  
      x = x - 5;
    else
      x=160;
    if (ADC12MEM0 < 0x7CE)                  
      x = x + 5;
    else
      x=160;

但是行不通!
求各路大神给点思路或自己的程序给我参考一下!

相关帖子

沙发
Lewisnx| | 2018-1-25 15:04 | 只看该作者
你先写个函数,能够改变pwm占空比。再根据模拟电压值,算好参数,传给那个函数就行了

使用特权

评论回复
板凳
CCompton| | 2018-1-25 15:19 | 只看该作者
先别判断adc相关的,就只操作改变占空比的寄存器。看看输出是否变化

使用特权

评论回复
地板
Richardd| | 2018-1-25 15:34 | 只看该作者
如果我没猜错的话,ADC12CTL0是采样值,TA0CCR1是占空比,先从程序分析,这个方法是有问题的,比如采样小于1092就减,大于1092就加?中间没有余量?然后就是对满值处理也有问题。

使用特权

评论回复
5
Mattheww| | 2018-1-25 16:05 | 只看该作者
if(ADC12CTL0<0x440)//判断采样值是否大于1088
{
   if(TA0CCR1<497)//判断占空比是否小于497
   {
     TA0CCR1 = TA0CCR1+5;//如果占空比小于497则加5
   }
   else
    TA0CCR1 = 512;//否则直接赋值
}
else if(ADC12CTL0>0x460)
{
   if(TA0CCR1>10)
   {
     TA0CCR1 = TA0CCR1 - 10;
   }
   else
   TA0CCR1 = 0;
}

使用特权

评论回复
6
Erichk| | 2018-1-25 16:30 | 只看该作者
你的办法可以改变占空比,但是上电之后占空比就会在设定的值左右浮动,不能达到稳定输出的效果,请问怎么才能我输入多少伏(>5v),输出都可以保持在5V左右

使用特权

评论回复
7
Thorald| | 2018-1-25 17:02 | 只看该作者
肯定有浮动,你把中间的余量该大就行,因为1088和1120才差多少AD,你把差值调到100左右,并且判断次数增加,比如这样
if(ADC12CTL0<0x424)//判断采样值是否大于1088
{
  ADcount_V2 = 0;
   ADcount_V1++;//自己定义
  if(ADcount_V1 == 10)
  {
   ADcount_V1 = 0;
&nbsp; &nbsp;if(TA0CCR1<497)//判断占空比是否小于497
&nbsp; &nbsp;{
&nbsp; &nbsp;&nbsp;&nbsp;TA0CCR1 = TA0CCR1+5;//如果占空比小于497则加5
&nbsp; &nbsp;}
&nbsp; &nbsp;else
&nbsp; &nbsp; TA0CCR1 = 512;//否则直接赋值
  }
}
else if(ADC12CTL0>0x488)
{
ADcount_V1 = 0;
  ADcount_V2++;
if(ADcount_V2 == 10)
{
   ADcount_V2 = 0;
&nbsp; &nbsp;if(TA0CCR1>10)
&nbsp; &nbsp;{
&nbsp; &nbsp;&nbsp;&nbsp;TA0CCR1 = TA0CCR1 - 10;
&nbsp; &nbsp;}
&nbsp; &nbsp;else
&nbsp; &nbsp;TA0CCR1 = 0;
}
}

使用特权

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

本版积分规则

116

主题

377

帖子

0

粉丝