Phreak 发表于 2007-7-12 00:25:55

闲的蛋疼,打算做个TrueRMS功率表,周末开工,画个草图大家看看有什么问题。

http://cache.amobbs.com/bbs_upload782111/files_7/armok01161522.JPG

http://cache.amobbs.com/bbs_upload782111/files_7/armok01161523.JPG



TA14Z是电流互感器,12V电源变压器兼做电压采样。

oldkey 发表于 2007-7-12 08:30:37

精度很低

chenerbox1 发表于 2007-7-12 09:15:07

可以参考avr465 的设计 精度应该还可以吧

cnpollux 发表于 2007-7-12 10:01:45

果然是闲的,呵呵,有很多集成的IC,ADI,炬力,SAMES,Microchip

marx 发表于 2007-7-12 12:19:14

现成的芯片都是电度表吧?不能显示功率而且必须搭配专用LCD面板。

Phreak 发表于 2007-7-12 15:59:48

刚才把avr465看了,精度不能满足要求。

用免费的Visual C++ 2005 Express验证了一下算法,还是相当理想的,最终输出如下:



25003602 (Watt0)

21651414 (Watt30)

49       (Watt90)

49       (VAR0)

-12498567(VAR30)

-25003504(VAR90)

866      (PF30)



下面是源程序:



#include "stdafx.h"

#include <iostream>

#include <fstream>

#include <string>

#include <math.h>



#define PI 3.1415926535

#define SAMPLES 200   // interval 100us @ a 20ms cycle

#define OFFSET 512    // a/d sample dc middle level indicating AC zero

#define SCALE 500   // a/d full scale



using namespace std;





int _tmain(int argc, _TCHAR* argv[])

{   

        unsigned int v,i0,i30,i90;

        unsigned int i;

        long watt0,watt30,watt90,var0,var30,var90,temp0,temp1,temp2;

        double d;



// make the origin sample data

        for(i=0;i<SAMPLES;i++){

                v=SCALE*sin(PI*2*i/SAMPLES)+OFFSET;

                i0=SCALE*sin(PI*2*i/SAMPLES)+OFFSET;

                i30=SCALE*sin(PI*2*i/SAMPLES-PI*2/12)+OFFSET;

                i90=SCALE*sin( PI*2*i/SAMPLES-PI*2/4)+OFFSET;

                cout<<"
i0:"<<i0<<" i30:"<<i30<<" i90:"<<i90;

        }



// process the data

        watt0=0;

        watt30=0;

        watt90=0;

        var0=0;

        var30=0;

        var90=0;

        for(i=0;i<SAMPLES;i++){

                temp0=v; // voltage in quadrature

                temp0-=OFFSET; cout<<'
'<<temp0;

                temp1=v;// voltage in phase

                temp1-=OFFSET;

                temp2=i0;

                temp2-=OFFSET;

                watt0+=temp1*temp2;

                var0+=temp0*temp2;

                temp2=i30;

                temp2-=OFFSET;

                watt30+=temp1*temp2;

                var30+=temp0*temp2;

                temp2=i90;

                temp2-=OFFSET;

                watt90+=temp1*temp2;

                var90+=temp0*temp2;

        }

    cout<<'
'<<watt0;   

        cout<<'
'<<watt30;   

        cout<<'
'<<watt90;

    cout<<'
'<<var0;   

        cout<<'
'<<var30;   

        cout<<'
'<<var90;



        // Power Factor

        watt30/=4000;

        var30/=4000;

        d=watt30*watt30+var30*var30;

        d=sqrt(d)/1000;

        d=watt30/d;

        temp0=d;

        cout<<'
'<<temp0;

       



        return 0;

}

fetish 发表于 2007-7-13 19:31:42

等着看你的大作。
-----此内容被fetish于2007-07-13,19:32:47编辑过

Phreak 发表于 2007-7-15 16:20:17

板子焊完了,Show一下,下面就要把三块板子(+1602)连起来了。



http://cache.amobbs.com/bbs_upload782111/files_7/armok01161977.JPG

http://cache.amobbs.com/bbs_upload782111/files_7/armok01161978.JPG

diannaoza 发表于 2007-7-15 18:39:37

你这个壳子漂亮,实用。在哪买的?好想买几个,自己做的东西都祼体中。。。

Phreak 发表于 2007-7-15 18:46:51

http://cache.amobbs.com/bbs_upload782111/files_7/armok01162017.JPG

http://cache.amobbs.com/bbs_upload782111/files_7/armok01162018.JPG

Phreak 发表于 2007-7-16 00:58:48

电压测试基本完成









































































为什么没人给点建议?

Phreak 发表于 2007-7-18 00:40:00

顶一下

Phreak 发表于 2007-7-30 13:50:50

可耻地失败了,测白炽灯没问题,测电脑这种谐波分量大的负载,差的一塌糊涂。

benladn911 发表于 2007-7-30 14:08:51

替 楼主的 精神 顶你一下~! 呵呵

zouhj 发表于 2007-7-31 16:26:18

diannaoza 发表于 2007-7-31 16:29:20

对呀,早期发的图片不显了,估计服务器做什么调整或出了差错。

www1519 发表于 2008-4-11 16:05:57

哎呀
疼死我啦!

tidsp 发表于 2008-4-11 16:26:32

你用电流互感器采样电流,直流分量没了,并且直流分量会导致互感器饱和,即使使用抗直流的互感器,精度也只能到达百分之几,电压采样经过了电容,在低频下,阻抗太大,并且对频率太敏感。

myworkmail 发表于 2008-4-11 17:01:19

你用AVR做不成的,因为你不能作到U,I同步采样,而且精度不够,最少要16位的AD,还涉及到算法,你头就晕了,

tidsp 发表于 2008-4-11 21:16:28

不能作到U,I同步采样,可以补偿的

vivalite 发表于 2008-4-12 06:11:31

对于开关电源这种负载,给负载加上功率因素补偿再测

tidsp 发表于 2008-4-12 11:18:59

对于开关电源这种负载,给负载加上功率因素补偿再测
电表还限制用户怎么用电,不现实啊,只是MCU做,因为采样次数太低,谐波肯定做不好,普通的电表芯片4K采样速度4K左右的采样速度,大谐波时候也是有些误差。

vivalite 发表于 2008-4-12 12:11:25

参考18楼19楼。两种方法:同步采样或加补偿

Xearo 发表于 2008-4-13 00:28:32

蛋疼的人蛋继续痛
痛并快乐着……

schwarz 发表于 2009-9-26 23:50:58

强帖留名

xxc007 发表于 2018-5-18 10:28:36

找资料挖坟
页: [1]
查看完整版本: 闲的蛋疼,打算做个TrueRMS功率表,周末开工,画个草图大家看看有什么问题。