搜索
bottom↓
回复: 5

用CS5460作了个电源监测,但读出来的数据乱跳

[复制链接]

出0入0汤圆

发表于 2012-4-2 17:15:27 | 显示全部楼层 |阅读模式
用了cs5460A了个电源监测,读I ,V ,P ,E(7~12)数据变化很大,读IRMS ,VRMS(11,12)数据可以用。
初始化程序如下:
//*************CS5460初始化函数*********//
void Init5460a(void)
{
        Rst_L();
        _delay_ms(100);
        Rst_H();
        _delay_ms(50);
       
        unsigned char buff1[4],read[4];
        //写串口初始化//
        buff1[0]=0xff;//SYNC1
        buff1[1]=0xff;//SYNC1
        buff1[2]=0xff;//SYNC1
        buff1[3]=0xff;//SYNC0
        Write_CS5460A(buff1,4);
//写串口初始化//
        buff1[0]=0xff;//SYNC1
        buff1[1]=0xff;//SYNC1
        buff1[2]=0xff;//SYNC1
        buff1[3]=0xfe;//SYNC0
        Write_CS5460A(buff1,4);
//写配置寄存器
        buff1[0]=WRITE|CONFIG;
        buff1[1]=0x00;//GI=0  电流通道增益=10
        buff1[2]=0x18;//中断形式:00-高电平  08-低电平  10-下降沿  18-上升沿
        buff1[3]=0xe1;//DLCK=MCLK/1
        Write_CS5460A(buff1,4);
        _delay_ms(10);
//清状态寄存器
        buff1[0]=WRITE|STATUS;
        buff1[1]=0xff;
        buff1[2]=0xff;
        buff1[3]=0xff;
        Write_CS5460A(buff1,4);
//写屏蔽中断寄存器
        buff1[0]=WRITE|MASK;
        buff1[1]=0x00;
        buff1[2]=0x00;
        buff1[3]=0x00;
        Write_CS5460A(buff1,4);
//写控制寄存器
        buff1[0]=WRITE|CTRL;
        buff1[1]=0x00;
        buff1[2]=0x00;
        buff1[3]=0x00;
        Write_CS5460A(buff1,4);
//写EOUT脉冲输出寄存器
        /*buff1[0]=0x4c;
        buff1[1]=0x00;
        buff1[2]=0x34;
        buff1[3]=0x9c;
        Write_CS5460A(buff1,4);
        _delay(50);
        */
        //写CYCLE COUNT寄存器
        buff1[0]=WRITE|CYCLE_COUNT;
        buff1[1]=0x00;
        buff1[2]=0x01;
        buff1[3]=0x90;          //每秒计算10次,N=400
        Write_CS5460A(buff1,4);
        //写电流增益寄存器
        /*buff1[0]=0x44;
        buff1[1]=0x40;//增益1
        buff1[2]=0x00;
        buff1[3]=0x00;
        Write_CS5460A(buff1,4);
//写电压增益寄存器
        buff1[0]=0x48;
        buff1[1]=0x40;//增益1
        buff1[2]=0x00;
        buff1[3]=0x00;
        Write_CS5460A(buff1,4);*/
//写AC current offset
        /*buff1[0]=WRITE|VOLT_AC_OFFSET;
        buff1[1]=0x00;
        buff1[2]=0x12;
        buff1[3]=0x5c;
        Write_CS5460A(buff1,4);*/
//读状态寄存器
        Read_CS5460A(0x1e,read);
        buff1[0]=WRITE|STATUS;
        buff1[1]=read[0];
        buff1[2]=read[1];
        buff1[3]=read[2];
        Write_CS5460A(buff1,4);
//启动Cs5460,执行连续周期计算
        buff1[0]=0xe8;
        Write_CS5460A(buff1,1);
}
硬件没有问题,是在别的产品上移植的。
我怀疑读的是AC变化数据,
请问,它只有一个寄存器,怎么分AC与DC。

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2012-8-15 08:13:27 | 显示全部楼层
AD采集不是都是瞬时值吗?
采集后再进行有效值计算。。
应该不分AC DC 的吧。

出0入0汤圆

 楼主| 发表于 2012-8-15 16:21:21 | 显示全部楼层
打电话问了原厂,I ,V ,P ,E为瞬时值。

出0入0汤圆

发表于 2014-5-30 13:48:48 | 显示全部楼层
交流瞬时值不应该就是跳动的吗?

出0入0汤圆

发表于 2014-8-24 22:23:40 | 显示全部楼层
学习了!

出0入0汤圆

发表于 2014-8-27 09:28:33 | 显示全部楼层
用CS5463功能强大
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 05:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表