第一次用MSP430f5438做稳压电源,但占空比一直在下降,求指导
您好,请问一下,一下是我的程序,想要稳定在一定范围内,但占空比一直在下降,求指导
if(V1<1677)//V1是AD芯片采集回来的数据
{
time1=time1+1;
TA1CCR2 =time1; // TA1CCR0 =800 ,TA1CCR2 =time1, TA1CCTL2 =OUTMOD_7
TLC2543_read(0x02); //AD采集的通道
}
if(V1>1700)
{
time1=time1-1;
TA1CCR2 =time1;
TLC2543_read(0x02);
}
if(((V1>1677)&&(V1<1698))!=0)
{ time1=time1;
TLC2543_read(0x02);
}
pwm_init();
亲;AD是如何接的?如何避免外界噪音?原理上没问题,可信号离散后;会有很多问题需要注意。建议用示波器看看端口波形。
先跟到代码里看一下V1的值是多少,看占空比下降时因为AD采样的实际结果导致的还是代码不对导致的
我分析有两点:一、if(V1<1677)//V1是AD芯片采集回来的数据;else if(V1>1700);这里不能省else。二、估计AD采样本身就一直是大于1700的,所以占空比一直下降是一直跑了if(V1>1700)这段代码
建议先测量一下要采集的电压,和ad的采样对比,先确定是在哪一段程序出现的问题
http://bbs.ednchina.com/BLOG_ARTICLE_159997.HTM
http://space.ednchina.com/Upload/2008/9/15/7eee04c0-ee10-4790-9623-8de093f79239.pdf
希望对您有所帮助!先从硬件看看再看看软件是否与之匹配。祝好!
不知道楼主的MC寄存器是怎么设置的以及电源输出是怎样的,如果和timer1有关,你在调试的时候电压的大小变化顺序会影响到timer1的大小,
建议结合示波器比较电压大小的变化对占空比造成的影响,逐步调试找出问题的所在
一直下降,肯定在 if(V1>1700)这个语句中,查查V1为啥大于1700,
建议用if...else语句或者switch语句改写上述代码,会更简洁高效易维护。
先跟到代码里看一下V1的值是多少,看占空比下降时因为AD采样的实际结果导致的还是代码不对导致的
(1)先查查硬件连接,用万用表测试一下TLC2543的输入电压。
(2)再比对F5438部分引脚的时序
(3)检查程序,单步调试。
占空比一直在减小,先分析一下减小的原因,从程序上看就是V1>1700,亦或者V1<1700,很久没玩430了,也不是道第七种模式是怎么个输出的,反正就是V1的数据就这这两者里面,不可能跳变,实质就是正反馈,你可以试试将两者的条件换换看看。
先跟到代码里看一下V1的值是多少,看占空比下降时因为AD采样的实际结果导致的还是代码不对导致的
你应该看看AD采集部分有没有问题 。因为你这个是一个反馈系统 只有AD反馈错误了 才有可能导致这种情况的出现。
应该是V1值采样产生的误差,在不断循环过程中,误差越来越大,导致占空比变化,从采样端找找原因
先断开外部电路,将ADC连接到一个固定不动的位置,然后看是否存在占空比下降,这一步先确定问题是出在软件,还是外部电路。
如果是软件问题,那么断开后,仍然存在,这个时候可以检查软件部分,如果固定下来了,那么就是硬件问题。
思路是这样的 先= 要分开来思考
首先,我觉得应该先检查你的V1,你的AD值测量是否正确,是否会达到1677这个阈值,如果测量值本身就有错误,那PWM只向着一个方向变化也就不足为奇了,其次,就是你的PWM这个外设,配置上是否正确,这点也 很重要,还有就是涉及到定时器,不过看情况,没什么关系,最后,最好的办法就是加个仿真器,实时的仿真一下,一目了然了就。
先查看一下待采样的值是否稳定。还有代码中的判断条件是否合适。
你应该首先测一下你的AD采集正常不正常,然后再查控制部分