打印
[电源技术资料]

HT7017电源计量芯片测得220V交流电电压有效值不稳定

[复制链接]
1717|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
joion|  楼主 | 2019-9-18 13:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请问大家有谁做过220V通过HT7017检测电压有效值的吗?
我之前在做一个项目,其中有交流220V电源需要检测出有效值,通过串口通信传递到单片机上。设计电路如下图所示:
在焊接完测试时,发现寄存器中读取的220V电压有效值会随着火线零线连接线的摇晃或震动而波动,且波动在20V--30V左右。电压有效值不稳定。
应该怎样改进这种电路呢? 还是我程序有问题?
程序中初始化如下:

        while(1){
                Write_Reg_1();//软复位HT7017
                num0_r=0;
                if(rx_buf0[0]==0x54){
                        state[0] = 1;
                        rx_buf0[0]=0;
                        break;
                }else if(rx_buf0[0]==0x63){
                        state[0] = 2;
                        rx_buf0[0]=0;
                        break;
                }
                Usart1_SendBuf(state,5);
                Delay_ms(100);
        }
        Delay_ms(100);
        clear0fun();
       
        while(1){
                Write_Reg_2();//写保护
                num0_r=0;
                if(rx_buf0[0]==0x54){
                        state[1] = 1;
                        rx_buf0[0]=0;
                        break;
                }else if(rx_buf0[0]==0x63){
                        state[1] = 2;
                        rx_buf0[0]=0;
                        break;
                }
                Usart1_SendBuf(state,5);
                Delay_ms(100);
        }       
        Delay_ms(100);
        clear0fun();
       
        while(1){
                Write_Reg_3();//0x07 0000 0111表示将ADC的电流两个通道和电压通道打开
                num0_r=0;
                if(rx_buf0[0]==0x54){
                        state[2] = 1;
                        rx_buf0[0]=0;
                        break;
                }else if(rx_buf0[0]==0x63){
                        state[2] = 2;
                        rx_buf0[0]=0;
                        break;
                }
                Usart1_SendBuf(state,5);
                Delay_ms(100);
        }
        Delay_ms(100);
        clear0fun();
       
        while(1){
                Write_Reg_4();//电压电流通道高通滤波器打开
                num0_r=0;
                if(rx_buf0[0]==0x54){
                        state[3] = 1;
                        rx_buf0[0]=0;
                        break;
                }else if(rx_buf0[0]==0x63){
                        state[3] = 2;
                        rx_buf0[0]=0;
                        break;
                }
                Usart1_SendBuf(state,5);
                Delay_ms(100);
        }

HT7017部分.JPG (217.1 KB )

HT7017周边电路

HT7017周边电路

互感器部分.JPG (216.69 KB )

互感器检测电路

互感器检测电路

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝