已回答假定已回答

ADE7753读取irms和vrms?

52352563@qq.com 在 2014-7-14 詢問的問題
最後回覆由boerdianli於2014-8-7提供

void ADE7753_Init(void)

{   uint8_t buf[2];

          buf[0]=0x80;

          buf[1]=0x00;

          Write7753(MODE,buf,2);//软件复位芯片

          _delay_us(20);

          buf[0]=0x00;

          buf[1]=0x18;

          Write7753(IRQEN,buf,2);//软件复位芯片

          buf[0]=0x64;

          buf[1]=0x00;

          Write7753(LINECYC,buf,2);//软件复位芯片

          buf[0]=0x04;

          //buf[1]=0x00;

          Write7753(GAIN,buf,1);//软件复位芯片

          buf[0]=0x0c;

          buf[1]=0xb2;

          Write7753(CFDEN,buf,2);//软件复位芯片

          buf[0]=0x00;

          buf[1]=0x00;

          Write7753(0X13,buf,2);//软件复位芯片

          buf[0]=0x00;

          buf[1]=0x00;

          Write7753(0X1B,buf,2);//软件复位芯片

          buf[0]=0x00;

          buf[1]=0x00;

          Write7753(0X14,buf,2);//软件复位芯片

          buf[0]=0x0f;

          //buf[1]=0x00;

          Write7753(0X0d,buf,1);//软件复位芯片

          buf[0]=0x0f;

          //buf[1]=0x00;

          Write7753(0X0e,buf,1);//软件复位芯片

 

}

int main(void)

{  

          wdt_disable();

          InitPort();

          ADE7753_Init();

          _delay_ms(200);

          uint32_t test1;

          uint32_t test2;

    while(1)

    {  

                    test2=Read7753(VRMS,3);          test1=Read7753(IRMS,3);

                    showVIHZ(1,test2);用于显示

_delay_ms(2000);

showVIHZ(2,test1);用于显示

 

_delay_ms(2000);

 

    }

}

 

为什么我读到的irms的值很稳定,而且能随外部加的电流的大小变化而变化,没次读取出来的都是固定值,波动不会及其微小,而读vrms的时候,加220v的电压,读出来是64w到66W之间,还没换算,这个波动太大了,请问adi专家,我的问题出在哪里了?是不是读取的方式不对还是怎么了?求解答?

結果