请问下大家 Vrms 和Irms读取的值, 怎么转换成实际电压和电流啊。
我分别查了 5W,11W,60W的白炽灯,节能灯。
读取的Irms数据如下
5W: 03BC36
11W: 03C198
60W: 0475BC
Vrms:74e44e(后16位也在一个范围内变动)
后16为会一直小范围变动,没有做过校准。
读取的一些配置信息和我设置的都一样, 读取0x04和0x08(电压电流增益)为0x400000
读取Vrms和Irms的时候 状态寄存器返回的是0x900081 表示DRDY CRDY FUP都已经更新了,并且命令是对的 。
初始化函数如下
- void cs5463init(void)
- {
- unsigned char statue[4]={0x5e,0x80,0x00,0x00};
- unsigned char config[4]={0x40,0x00,0x00,0x01};
- unsigned char count[4] ={0x4a,0x00,0x0f,0xa0};
- unsigned char mask[4] ={0x74,0x00,0x00,0x00};
- unsigned char smode[4] ={0x64,0x00,0x00,0x01};
- unsigned char start[4] ={0xe8,0x00,0x00,0x00};
-
- goio_init();
- cs5463_reset();
- SpiInit();
- SdiWrite(statue);
- SdiWrite(config);
- SdiWrite(count);
- SdiWrite(mask);
- SdiWrite(smode);
- SdiWriteByte(start[0]);
-
- delay(100000);
- SdoRead(read_count);
- SdoRead(read_config);
- SdoRead(read_temp);
- SdoRead(read_dcvoff);
- SdoRead(read_dcioff);
- SdoRead(read_state);
-
- }
复制代码
读取函数如下
- void cs5463_read_Vrms(unsigned char *p)
- {
- unsigned char vrms[4]={0x18,0x00,0x00,0x00};
-
- SdoRead(read_state);
- while(read_state[1]&0x80 != 0x80)
- {
- SdoRead(read_state);
- }
- SdoRead(vrms);
- memcpy(p,vrms+1,3);
- }
- void cs5463_read_Irms(unsigned char *p)
- {
- unsigned char irms[4]={0x16,0x00,0x00,0x00};
-
- SdoRead(read_state);
- while(read_state[1]&0x80 != 0x80)
- {
- SdoRead(read_state);
- }
-
- SdoRead(irms);
- memcpy(p,irms+1,3);
- }
复制代码
VRMS /0xFFFFFF *150/0.6; 前提是必须要用150mvRMS 信号校准。
你的外围电路设计为 满量程信号为150mV RMS
一周热门 更多>