CS5463如何测电压

2020-01-22 12:09发布

我在网上搞了一个程序移植过来,程序大体思路是这样的 先初始化定时器 然后串口 CS5463  然后进行校准 最好通过定时器到了一定时间开始只读0X18电压数据寄存器 结果读出来的数据全为0
我这里么有啥工具 我只是想简单的测一个电压 求做过的人指导一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
wujin715
1楼-- · 2020-01-23 10:00
可能还是初始化的问题我把CS5463的初始化贴出来 参考一下5460的
void CS5463Init()
{

        RESET2=0;
        _nop_();

        RESET2=1;        //8个振荡周期大约是2us
        _nop_();
        _nop_();

        SpiInit();
        _nop_();

        delay100us();
/**********************Status Register************************************/
        CmdData[0]=WRITE+15*2;
        CmdData[1]=0x80;                                //Clear DRDY
        CmdData[2]=0x00;
        CmdData[3]=0x00;
        SdiWrite(CmdData);
/***********************Config Register***********************************/
        CmdData[0]=WRITE;
        CmdData[1]=0x00;
        CmdData[2]=0x00;
        CmdData[3]=0x01;                                //K=1
        SdiWrite(CmdData);
/************************Cycle Count Register*****************************/
        CmdData[0]=WRITE+5*2;
        CmdData[1]=0x00;
        CmdData[2]=0x0f;
        CmdData[3]=0xa0;                                //N=4000
        SdiWrite(CmdData);
/********************Control Register*************************************/
        CmdData[0]=WRITE+28*2;                        //Disable CPUCLK
        CmdData[1]=0x00;
        CmdData[2]=0x00;
        CmdData[3]=0x04;
        SdiWrite(CmdData);
/*******************Operational Mode Register*****************************/
        CmdData[0]=WRITE+18*2;
        CmdData[1]=0x00;
        CmdData[2]=0x00;
        CmdData[3]=0x61;                                //Enable IHPF VHPF AFC
        SdiWrite(CmdData);

/*************************Mask Register***********************************/
        CmdData[0]=WRITE+26*2;                        //Mask Register
        CmdData[1]=0x00;
        CmdData[2]=0x00;
        CmdData[3]=0x00;                                //Disable INT
        SdiWrite(CmdData);


        Instruction(START_CONV_C);                //Perform Continuous Computation Cycles
        T_Offset_Calibrate();
}
ningting06
2楼-- · 2020-01-23 11:19
wujin715 发表于 2014-8-13 22:06
可能还是初始化的问题我把CS5463的初始化贴出来 参考一下5460的
void CS5463Init()
{

如果我只采样电压 电流采集端是否可以悬空 还有我CS5463的INT是接地的 这样做是否正确?没一点头绪 手册也是英文的 读起来相当吃力  
wujin715
3楼-- · 2020-01-23 11:41
悬空可以 不过不如接地稳定  int不记得了 晚上我回去看看
ningting06
4楼-- · 2020-01-23 15:09
 精彩回答 2  元偷偷看……
embeddev_1
5楼-- · 2020-01-23 15:39
wujin715 发表于 2014-8-13 22:06
可能还是初始化的问题我把CS5463的初始化贴出来 参考一下5460的
void CS5463Init()
{

还有些疑惑
cs5463分为校准后和从来没有校准,校准后比较简单

  (Vrms/0.6)*V满量程= 实测电压有效值

  (Irms/0.6)*I满量程= 实测电压有效值;

  现在根据cs5463测得的Pactive寄存器(~1-1)怎么计算实际有功功率?

没有校准的,理论上应该是这样计算
V,I通道最大输入+-250mv,对应有效值176mv

Vrms/1=x/176  --> x=276Vrms

x再乘以互感器变比既可以得到源端电压有效值,电流也是类似

现在不明白的就是Pactive寄存器,这个得到一个(-1~1)之间的数,根据这个数怎么反推实际有功功率?

Vrms*Irms=S; PF=P有功/S;

ningting06
6楼-- · 2020-01-23 18:32
embeddev_1 发表于 2014-8-14 15:27
还有些疑惑
cs5463分为校准后和从来没有校准,校准后比较简单

这不校准 误差也太大了把 相差范围竟然到了+-10V

一周热门 更多>