msp430g2553由于要对电压和电流进行采样并进行相关的锁相运算,但定义的锁相运算只有第一个能正常工作,单独用第二个不能正常工作,把第一个去了,单独用第二个就可以正常使用,这是什么原因,所有变量均为全局变量,附上锁相运算的程序和采样后进入运算的程序a[1],a[0]分别是电压电流采样
- //ANF算法程序
- void anf(float shuju)
- {
- sinevalue =(shuju-512)*0.00322*300;
- e=sinevalue-sinesum;
- dc = dc + e* 65 * tim;
- a1=w * q;
- a2= w * e;
- jibo = jibo+tim* (1.2*a2-w*a1);
- q=q+tim*jibo;
- jiboquad=-w *q;
- sinesum= dc + jibo;
- w=w-a2*q*0.1*tim;
- f=w* 0.159155;
- }
- //ANF算法程序
- void anf1(float shuju1)
- {
- sinevalue1 =(shuju1-512)*0.00322*300;
- e1=sinevalue1-sinesum1;
- dc1 = dc1 + e1* 65 * tim1;
- a11=w1 * q1;
- a21= w1 * e1;
- jibo1 = jibo1+tim1* (1.2*a21-w1*a11);
- q1=q1+tim1*jibo1;
- jiboquad1=-w1 *q1;
- sinesum1= dc1 + jibo1;
- w1=w1-a21*q1*0.1*tim1;
- f1=w1* 0.159155;
- }
- shuju=a[0];
- anf(shuju);
- shuju1=a[0];
- anf1(shuju1);
复制代码
此帖出自
小平头技术问答
一周热门 更多>