找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5893|回复: 8
收起左侧

ADE7758的电力参数采集芯片,含单片机源码

[复制链接]
ID:322688 发表于 2018-5-5 12:30 | 显示全部楼层 |阅读模式
说起ADE7758的电力参数采集芯片,应用很多,早几年用他做了一个产品,
看了现在好像还有人在用,
现在把自己用的源代码发上来,希望对大家有帮助,
  1. #include<reg52.h>
  2. #include<stdio.h>
  3. #include<ABSACC.H>
  4. #include<Hardware.H>
  5. #include<ExTimer.H>
  6. #include<12864.H>
  7. #include<MATH.H>
  8. #include<Alarm.H>
  9. #include<ADC.H>
  10. #include<LC.H>
  11. /*
  12. static unsigned char IE_COPY=0;  //进入中断之后保存IE 全局变量
  13. static unsigned char Com_Counter=6;
  14. static unsigned char Capture_1H=0;
  15. static unsigned char Capture_1L=0;
  16. static unsigned char Capture_2H=0;
  17. static unsigned char Capture_2L=0;
  18. static unsigned char Capture_Couter=0;
  19. static unsigned int  T;
  20. static unsigned int  Number_Fre;
  21. static unsigned int  Max,Min,Speed_Filter[10];
  22. static unsigned long Capture_Result;
  23. static unsigned long Accelaration;
  24. */

  25. /*ADC模拟量数据修正设置数据定义,位于XRAM.是EEPROM 的映射*/

  26. #define BV_Offset 0x00C2//电池偏移
  27. #define BV_Gain   0x00C3//电池增益

  28. #define ET_Offset 0x00C4//水温偏移
  29. #define ET_Gain   0x00C5//水温增益

  30. #define OP_Offset 0x00C6//油压偏移
  31. #define OP_Gain   0x00C7//油压增益

  32. #define FL_Offset 0x00C8//油量偏移
  33. #define FL_Gain   0x00C9//油量增益

  34. #define OV_Offset 0x00CA//电压偏移
  35. #define OV_Gain   0x00CB//电压增益

  36. #define OC_Offset 0x00CC//电流偏移
  37. #define OC_Gain   0x00CD//电流增益

  38. #define PF_Offset 0x00CE//功率因数偏移
  39. #define PF_Gain   0x00CF//功率因数增益

  40. /*ADC 采集的模拟量数据   全局变量*/
  41. volatile unsigned int idata BatteryVoltage=0;
  42. volatile unsigned int idata ETVoltage=0;
  43. volatile unsigned int idata OPVoltage=0;
  44. volatile unsigned int idata FLVoltage=0;

  45. /*ADE 采集的模拟量数据   全局变量*/
  46. volatile unsigned int idata GenVoltageL1=0;
  47. volatile unsigned int idata GenVoltageL2=0;
  48. volatile unsigned int idata GenVoltageL3=0;

  49. volatile unsigned int idata GenVoltageL12=0;
  50. volatile unsigned int idata GenVoltageL23=0;
  51. volatile unsigned int idata GenVoltageL31=0;

  52. volatile unsigned long idata GenCurrentC1=0;
  53. volatile unsigned long idata GenCurrentC2=0;
  54. volatile unsigned long idata GenCurrentC3=0;

  55. volatile unsigned int idata GenKwL1=0;
  56. volatile unsigned int idata GenKwL2=0;
  57. volatile unsigned int idata GenKwL3=0;

  58. volatile unsigned int idata GenKvarL1=0;
  59. volatile unsigned int idata GenKvarL2=0;
  60. volatile unsigned int idata GenKvarL3=0;

  61. volatile unsigned long idata GenKvaL1=0;
  62. volatile unsigned long idata GenKvaL2=0;
  63. volatile unsigned long idata GenKvaL3=0;

  64. volatile unsigned int idata GenFrequency;

  65. volatile unsigned int idata GenPF1=0;
  66. volatile unsigned int idata GenPF2=0;
  67. volatile unsigned int idata GenPF3=0;

  68. volatile unsigned long idata GenSpeed;

  69. unsigned char idata ad_x=0;
  70. volatile unsigned int value_ET=0;
  71. volatile unsigned int value_OP=0;
  72. volatile unsigned int value_FL=0;
  73. /*定时器2 的变量定义*/
  74. unsigned char bdata mask;

  75. sbit Freq_BIT=mask^0;
  76. sbit INT0_BIT=mask^1;


  77. /*定义可位寻址的寄存器,用于缓冲*/

  78. /*离散输入缓冲*/
  79. extern unsigned char bdata DI_BUF;
  80. /*离散输出缓冲*/
  81. extern unsigned char bdata DO_BUF;
  82. /*现场操作模式缓冲*/
  83. extern unsigned char bdata LC_Model_BUF;
  84. /*--------------------------------------------------------------*/
  85. /*偏移、增益修正公共函数*/
  86. unsigned int AD_OffsetGain(unsigned int DataInput,unsigned int Gain,unsigned int Offset)
  87. {  
  88.         unsigned long Data;
  89. /*偏移修正*/
  90.         Data=XWORD[Offset];//读取偏移设置数据
  91. /*偏移量计算*/        
  92.         if (Data>=100)
  93.         {
  94.         //BV_Offset>=100,正偏移,修正单位1/LSB(0.1V/LSB)。
  95.                 DataInput=(DataInput+(Data-100));        //屏蔽正负标志,计算真实的正偏移量
  96.         }
  97.         else
  98.         {
  99.         //BV_Offset<100,负偏移,修正单位1/LSB(0.1V/LSB)。
  100.                
  101.                 //判断是否大于要修正的负偏移量
  102.                 if (DataInput>(100-Data))
  103.                 {        
  104.                         DataInput=(DataInput-(100-Data));        //小于100,计算真实的负偏移量
  105.                 }
  106.                 else
  107.                 {
  108.                 //小于要修正的偏移量
  109.                         DataInput=0;
  110.                 }        
  111.         }
  112. /*增益修正*/
  113.         Data=XWORD[Gain];//读取增益设置数据        
  114. /*增益计算*/        
  115.         //Gain,正负增益,修正单位0.001/LSB。
  116.         Data=(Data*DataInput)/1000;
  117.         
  118.         return Data;
  119. }
  120. /*--------------------------------------------------------------*/
  121. /*软件延时函数*/
  122. void AD_Delay(unsigned int Delay)
  123. {  
  124.     unsigned int  i;        //时间倍数。
  125.     for(; Delay>0; Delay--)
  126.     {
  127.     for(i=0; i<100; i++)
  128.             {
  129.             }        //时间倍数循环。
  130.     }
  131. }
  132. /*--------------------------------------------------------------*/
  133. /*Timer2 中断服务程序*/
  134. void Timer2_Sev(void)
  135. {
  136. //初始化T2
  137.         TF2=0;
  138.         
  139.         RCAP2L = 0x00;
  140.         RCAP2H = 0x00;
  141.         TL2    = 0x00;
  142.         TH2    = 0x00;        
  143.         
  144.         TR2    = 0;                //关闭T2
  145.         ET2        =0;
  146.         EX0=0;
  147.         
  148.         GenFrequency=0;
  149.         
  150.         INT0_BIT=1;
  151.         Freq_BIT=0;
  152. }
  153. /*--------------------------------------------------------------*/
  154. /*INT0 中断服务程序*/
  155. void Int0_Sev(void)
  156. {

  157.         if (Freq_BIT==0)
  158.         {

  159.                 //AD_Delay(10);
  160.                 //while (INT0==1);
  161.                
  162.                 TL2    = 0x00;
  163.                 TH2    = 0x00;        
  164.                 TR2=1;                //T2
  165.                 ET2=1;                //使能中断

  166.                 Freq_BIT=1;
  167.                                 
  168.                 //nPEN=0;
  169.                 //AD_Delay(20);
  170.                 //while (INT0==0);
  171.                
  172.         }
  173.         else
  174.         {        
  175.                 //AD_Delay(10);
  176.                 //while (INT0==1);
  177.                
  178.                 TR2=0;
  179.                 ET2=0;
  180.                 EX0=0;
  181.                
  182.                 GenFrequency=(((TH2*256)+TL2)/73.67);

  183.                
  184.                 //nPEN=1;
  185.                 Freq_BIT=0;
  186.                 INT0_BIT=1;
  187.                         
  188.         }

  189. }
  190. /*--------------------------------------------------------------*/
  191. /*发电机电压数据采集*/
  192. void ADE_GenVoltage(void)
  193. {

  194.         unsigned char Mask;
  195.         unsigned int i;

  196.         Power_Measure_Write(LCYCMODE,0x38);//ZXSEL Bit3=1,Bit4=1,Bit5=1,选择PhaseA、B、C。
  197.         Power_Measure_Write(MASK,0xFC0);   //ZXA=1,ZXB=1,ZXC=1,选择PhaseA、B、C过零交点标志。

  198. //循环检测三相

  199.         Power_Measure_Write(ZXTOUT,0x0FFF); //将过零溢出时间。
  200.         Power_Measure_Read(RSTATUS);           //复位状态标志寄存器。
  201.         Mask=0;
  202.         i=0;
  203.         while (Mask==0)//等待结束标志位
  204.         {
  205.                 //判断A相是否有过零标志位***************************************************
  206.                 if ((Power_Measure_Read(STATUS)&0x0200)==0x0200)
  207.                 {
  208.                 //A相有过零标志位
  209.                         GenCurrentC1=Power_Measure_Read(AIRMS)/10;//读取ADE7758的电流数据
  210.                         GenVoltageL1=Power_Measure_Read(AVRMS)/4700; //读取ADE7758的电压数据
  211.                         Mask=1;        //标志结束
  212.                 }
  213.                 //A相检测采集过程中是否有线电压过零交变故障标志位
  214.                 if ((Power_Measure_Read(STATUS)&0x0040)==0x0040)
  215.                 {
  216.                 //A相采集过程中有线电压过零交变故障标志
  217.                    //dengzhen
  218.                         GenVoltageL1=0; //不读取ADE7758的数据
  219.                         Mask=1;        //标志结束
  220.                 }

  221.                 if (i==0x30)
  222.                 {
  223.                         GenVoltageL3=0; //不读取ADE7758的数据
  224.                         Mask=1;        //标志结束
  225.                 }
  226.                 else
  227.                 {
  228.                         i++;
  229.                 }
  230.         }
  231. if (Dianji_flag==1)//启动成功后采集后两相发电电压
  232. {
  233.         Power_Measure_Write(ZXTOUT,0x0FFF); //将过零溢出时间。
  234.         Power_Measure_Read(RSTATUS);           //复位状态标志寄存器。
  235.         Mask=0;
  236.         i=0;

  237.                 while (Mask==0)//等待结束标志位
  238.                 {
  239.                         //判断B相是否有过零标志位***************************************************
  240.                         if ((Power_Measure_Read(STATUS)&0x0400)==0x0400)
  241.                         {
  242.                         //B相有过零标志位
  243.                                 GenCurrentC2=Power_Measure_Read(BIRMS)/10;//读取ADE7758的电流数据
  244.                                 GenVoltageL2=Power_Measure_Read(BVRMS)/4700; //读取ADE7758的电压数据
  245.                                 Mask=1;        //标志结束
  246.                         }
  247.                         //B相检测采集过程中是否有线电压过零交变故障标志位
  248.                         if((Power_Measure_Read(STATUS)&0x0080)==0x0080)
  249.                         {
  250.                         //B相采集过程中有线电压过零交变故障标志
  251.                         //dengzhen
  252.                                 GenVoltageL2=0; //不读取ADE7758的数据
  253.                                 Mask=1;        //标志结束
  254.                         }
  255.         
  256.                         if (i==0x30)
  257.                         {
  258.                                 GenVoltageL3=0; //不读取ADE7758的数据
  259.                                 Mask=1;        //标志结束
  260.                         }
  261.                         else
  262.                         {
  263.                                 i++;
  264.                         }
  265.                 }        
  266.                 Power_Measure_Write(ZXTOUT,0x0FFF); //将过零溢出时间。
  267.                 Power_Measure_Read(RSTATUS);          //复位状态标志寄存器。
  268.                 Mask=0;
  269.                 i=0;
  270.                 while (Mask==0)//等待结束标志位
  271.                 {
  272.                         //判断C相是否有过零标志位***************************************************
  273.                         if ((Power_Measure_Read(STATUS)&0x0800)==0x0800)
  274.                         {
  275.                         //C相有过零标志位
  276.                                 GenCurrentC3=Power_Measure_Read(CIRMS)/10;         //读取ADE7758的电流数据
  277.                                 GenVoltageL3=Power_Measure_Read(CVRMS)/4700; //读取ADE7758的电压数据
  278.                                 Mask=1;        //标志结束
  279.                         }
  280.                         //C相检测采集过程中是否有线电压过零交变故障标志位
  281.                         if ((Power_Measure_Read(STATUS)&0x0100)==0x0100)
  282.                         {
  283.                         //C相采集过程中有线电压过零交变故障标志
  284.                         //dengzhen
  285.                                 GenVoltageL3=0; //不读取ADE7758的数据
  286.                                 Mask=1;        //标志结束
  287.                         }
  288.         
  289.                         if (i==0x30)
  290.                         {
  291.                                 GenVoltageL3=0; //不读取ADE7758的数据
  292.                                 Mask=1;        //标志结束
  293.                         }
  294.                         else
  295.                         {
  296.                                 i++;
  297.                         }
  298.                 }        
  299. }
  300.         /*厂方修正*/
  301.                 GenVoltageL1=AD_OffsetGain(GenVoltageL1,0x00E5,0x00E4);
  302.                 GenVoltageL2=AD_OffsetGain(GenVoltageL2,0x00E7,0x00E6);
  303.                 GenVoltageL3=AD_OffsetGain(GenVoltageL3,0x00E9,0x00E8);
  304.         /*用户修正*/
  305.                 GenVoltageL1=AD_OffsetGain(GenVoltageL1,OV_Gain,OV_Offset);
  306.                 GenVoltageL2=AD_OffsetGain(GenVoltageL2,OV_Gain,OV_Offset);
  307.                 GenVoltageL3=AD_OffsetGain(GenVoltageL3,OV_Gain,OV_Offset);

  308. //======================================
  309.         //判断A相电压是否小于15伏
  310.         
  311. if (GenVoltageL1<10)
  312.    {
  313.         //A相电压小于10伏
  314.                
  315.                 GenVoltageL1=0;
  316.                 GenVoltageL2=0;
  317.                 GenVoltageL3=0;                //将三相相电压强制为0V
  318.                
  319.                 GenVoltageL12=0;
  320.                 GenVoltageL23=0;
  321.                 GenVoltageL31=0;        //将三相线电压强制为0V
  322.         }
  323.         else
  324.         {
  325.             
  326.    //A相电压衐大于10伏
  327.                 //计算各相线电压
  328.         
  329.                 GenVoltageL12= sqrt(((GenVoltageL1*1.5)*(GenVoltageL1*1.5))+((GenVoltageL2*0.866)*(GenVoltageL2*0.866)));
  330.                 GenVoltageL23= sqrt(((GenVoltageL2*1.5)*(GenVoltageL2*1.5))+((GenVoltageL3*0.866)*(GenVoltageL3*0.866)));
  331.                 GenVoltageL31= sqrt(((GenVoltageL3*1.5)*(GenVoltageL3*1.5))+((GenVoltageL1*0.866)*(GenVoltageL1*0.866)));
  332.                
  333.    }
  334. }
  335. /*--------------------------------------------------------------*/
  336. /*发电机电压数据采集*/
  337. /*
  338. void VoltageDroop(void)
  339. {
  340.                 unsigned int Data;        
  341. //非通用修正 20061010

  342.                 Data=XWORD[0x00AC];
  343.                 Data=GenCurrentC1*100/Data;
  344.                 GenVoltageL1=GenVoltageL1+(GenVoltageL1*(Data*0.03)/100);
  345.                 GenVoltageL12=GenVoltageL12+(GenVoltageL12*(Data*0.03)/100);

  346.                 Data=XWORD[0x00AC];
  347.                 Data=GenCurrentC2*100/Data;
  348.                 GenVoltageL2=GenVoltageL2+(GenVoltageL2*(Data*0.03)/100);
  349.                 GenVoltageL23=GenVoltageL23+(GenVoltageL23*(Data*0.03)/100);

  350.                 Data=XWORD[0x00AC];
  351.                 Data=GenCurrentC3*100/Data;
  352.                 GenVoltageL3=GenVoltageL3+(GenVoltageL3*(Data*0.03)/100);
  353.                 GenVoltageL31=GenVoltageL31+(GenVoltageL31*(Data*0.03)/100);
  354. }
  355. */
  356. /*--------------------------------------------------------------*/
  357. /*发电机电流数据采集*/
  358. void ADE_GenCurrent(void)
  359. {
  360.         //判断A相电压是否大于80伏
  361.         if (GenVoltageL1>70)
  362.         {        
  363.         //CT比例
  364.                 GenCurrentC1=GenCurrentC1/(10000/XWORD[0x00AC]);
  365.                 GenCurrentC2=GenCurrentC2/(10000/XWORD[0x00AC]);
  366.                 GenCurrentC3=GenCurrentC3/(10000/XWORD[0x00AC]);
  367.         //厂方修正
  368.                 GenCurrentC1=AD_OffsetGain(GenCurrentC1,0x00EB,0x00EA);
  369.                 GenCurrentC2=AD_OffsetGain(GenCurrentC2,0x00ED,0x00EC);
  370.                 GenCurrentC3=AD_OffsetGain(GenCurrentC3,0x00EF,0x00EE);        
  371.         //用户修正
  372.                 GenCurrentC1=AD_OffsetGain(GenCurrentC1,OC_Gain,OC_Offset);
  373.                 GenCurrentC2=AD_OffsetGain(GenCurrentC2,OC_Gain,OC_Offset);
  374.                 GenCurrentC3=AD_OffsetGain(GenCurrentC3,OC_Gain,OC_Offset);
  375.                
  376.                 if ((GenCurrentC1/10)<(XWORD[0x00AC]*0.01))
  377.                 {
  378.                                 //C1小于3A,三相电流为0
  379.                                 GenCurrentC1=0;
  380.                 }
  381.                 if ((GenCurrentC2/10)<(XWORD[0x00AC]*0.01))
  382.                 {
  383.                                 //C1小于3A,三相电流为0
  384.                                 GenCurrentC2=0;
  385.                 }
  386.                 if ((GenCurrentC3/10)<(XWORD[0x00AC]*0.01))
  387.                 {
  388.                                 //C1小于3A,三相电流为0
  389.                                 GenCurrentC3=0;
  390.                 }
  391.         }
  392.   else
  393.         {
  394.         //相电压小于150V
  395.                 GenCurrentC1=0;
  396.                 GenCurrentC2=0;
  397.                 GenCurrentC3=0;        
  398.         }
  399.         //dengzhen 20101026
  400.         if (GenCurrentC1>54000)
  401.         {
  402.                         GenCurrentC1=54000;
  403.                         GenCurrentC2=54000;
  404.                         GenCurrentC3=54000;
  405.         }
  406. }
  407. /*--------------------------------------------------------------*/
  408. /*发电机频率数据采集*/
  409. void ADE_GenFrequency(void)
  410. {
  411. ////////////////////////////////////////////////guoyajun-08.7.24/////////////////////////////////////////
  412.         if(XWORD[0x00F7]==0) //==0 >220V  ==1>110V  //电网选择
  413.           {  
  414.                                          ////燃油阀门
  415.             if((GenVoltageL1<15)||((DO_BUF&0x02)==0x00))
  416.                      GenFrequency=0; //将频率数据强制为0;                                    
  417.             else if(GenVoltageL1<180)  //频率在40赫兹内使用电压计算频率
  418.              GenFrequency=(GenVoltageL1*10)/4.4;            
  419.                     else
  420.                     {
  421.              Power_Measure_Write(LCYCMODE,0x38);//ZXSEL Bit3=1,Bit4=1,Bit5=1,选择PhaseA、B、C。        
  422.              GenFrequency=(Power_Measure_Read(FREQ)*0.625); //读取ADE7758的频率数
  423.                     }
  424.          }
  425.                  else //110v //电网选择
  426.                  {
  427.                     if((GenVoltageL1<15)||((DO_BUF&0x02)==0x00))
  428.                      GenFrequency=0; //将频率数据强制为0;
  429.                     else if(GenVoltageL1<74)  //频率在40赫兹内使用电压计算频率
  430.              GenFrequency=(GenVoltageL1*10)/1.83;            ////燃油阀门
  431.                     else
  432.                     {
  433.              Power_Measure_Write(LCYCMODE,0x38);//ZXSEL Bit3=1,Bit4=1,Bit5=1,选择PhaseA、B、C。        
  434.              GenFrequency=(Power_Measure_Read(FREQ)*0.625); //读取ADE7758的频率数
  435.                     }
  436.                  }
  437. }

  438. /*--------------------------------------------------------------*/
  439. /*发电机视在功率数据采集*/
  440. void ADE_GenKVA(void)
  441. {

  442.         unsigned long VData;
  443.         VData=GenVoltageL1;
  444.         VData=VData*GenCurrentC1;
  445.         /*
  446.         SBUF=GenVoltageL1>>8; while (TI==0){};TI=0;
  447.         SBUF=GenVoltageL1; while (TI==0){};TI=0;
  448.         SBUF=VData>>24; while (TI==0){};TI=0;
  449.         SBUF=VData>>16; while (TI==0){};TI=0;
  450.         SBUF=VData>>8; while (TI==0){};TI=0;
  451.         SBUF=VData; while (TI==0){};TI=0;
  452.         SBUF=0xAA; while (TI==0){};TI=0;
  453.         SBUF=0x55; while (TI==0){};TI=0;
  454.         */
  455.         if((VData%100)>=500)
  456.         {
  457.                 VData=(VData/1000)+1;
  458.         }
  459.         else
  460.         {
  461.                 VData=VData/1000;
  462.         }
  463.         GenKvaL1=VData;
  464.         if (GenKvaL1>29999) GenKvaL1=29999;

  465.         VData=GenVoltageL2;
  466.         VData=VData*GenCurrentC2;
  467.         if((VData%100)>=500)
  468.         {
  469.                 VData=(VData/1000)+1;
  470.         }
  471.         else
  472.         {
  473.                 VData=VData/1000;
  474.         }
  475.         GenKvaL2=VData;
  476.         if (GenKvaL2>29999) GenKvaL2=29999;

  477.         VData=GenVoltageL3;
  478.         VData=VData*GenCurrentC3;
  479.         if((VData%100)>=500)
  480.         {
  481.                 VData=(VData/1000)+1;
  482.         }
  483.         else
  484.         {
  485.                 VData=VData/1000;
  486.         }
  487.         GenKvaL3=VData;
  488.         if (GenKvaL3>29999) GenKvaL3=29999;
  489. }
  490. /*--------------------------------------------------------------*/
  491. /*发电机功率因数数据采集*/
  492. void ADE_GenPF(void)
  493. {
  494.         unsigned long Data;
  495.         unsigned char Mask;
  496.         unsigned char i;


  497. /*ADE配置*/        
  498.         Power_Measure_Write(LCYCMODE,0xBF);
  499.         Power_Measure_Write(LINECYC        ,20);
  500.         Power_Measure_Write(MASK,0x1000);   //LENERGY=1

  501.         Power_Measure_Read(RSTATUS);          //复位状态标志寄存器。
  502.         Mask=0;
  503.         i=0;
  504.         while (Mask==0)//等待结束标志位
  505.         {
  506.                 //判断是否有计量完毕标志位***************************************************
  507.                 if ((Power_Measure_Read(STATUS)&0x1000)==0x1000)
  508.                 {
  509.                 //
  510.                         Data=Power_Measure_Read(AWATTHR)*100/Power_Measure_Read(AVAHR);
  511.                         GenPF1=Data;
  512.                         Data=Power_Measure_Read(BWATTHR)*100/Power_Measure_Read(BVAHR);
  513.                         GenPF2=Data;
  514.                         Data=Power_Measure_Read(CWATTHR)*100/Power_Measure_Read(CVAHR);
  515.                         GenPF3=Data;
  516.                         Mask=1;        //标志结束
  517.                 }
  518.                 if (i==0x40)
  519.                 {
  520.                         GenPF1=100; //不读取ADE7758的数据
  521.                         GenPF2=100; //不读取ADE7758的数据
  522.                         GenPF3=100; //不读取ADE7758的数据
  523.                         Mask=1;        //标志结束
  524.                 }
  525.                 else
  526.                 {
  527.                         i++;
  528.                 }
  529.         }
  530.         GenPF1=AD_OffsetGain(GenPF1,PF_Gain,PF_Offset);
  531.         GenPF2=AD_OffsetGain(GenPF2,PF_Gain,PF_Offset);
  532.         GenPF3=AD_OffsetGain(GenPF3,PF_Gain,PF_Offset);
  533. //====================================
  534.         if (GenPF1>110)
  535.         {
  536.                 if (GenPF1>120) GenPF1=0;
  537.                  else GenPF1=110;
  538.         }

  539.         if (GenPF1<30) GenPF1=000;
  540.         if (GenCurrentC1==0) GenPF1=100;
  541. //====================================
  542.         if (GenPF2>110)
  543.         {
  544.                 if (GenPF2>120) GenPF2=0;
  545.                  else GenPF2=110;
  546.         }

  547.         if (GenPF2<30) GenPF2=000;
  548.         if (GenCurrentC2==0) GenPF2=100;
  549. //====================================
  550.         if (GenPF3>110)
  551.         {
  552.                 if (GenPF3>120) GenPF3=0;
  553.                  else GenPF3=110;
  554.         }

  555.         if (GenPF3<30) GenPF3=000;
  556.         if (GenCurrentC3==0) GenPF3=100;
  557. }
  558. /*--------------------------------------------------------------*/
  559. /*发电机有功功率数据采集*/
  560. void ADE_GenKW(void)
  561. {
  562.         if (GenCurrentC1!=0)
  563.         {
  564.                 GenKwL1=GenKvaL1*GenPF1/100;
  565.                 GenKwL2=GenKvaL2*GenPF2/100;
  566.                 GenKwL3=GenKvaL3*GenPF3/100;
  567.                 /*
  568.                 SBUF=GenKvaL1>>8; while (TI==0){};TI=0;
  569.                 SBUF=GenKvaL1; while (TI==0){};TI=0;
  570.                 SBUF=GenPF1>>8; while (TI==0){};TI=0;
  571.                 SBUF=GenPF1; while (TI==0){};TI=0;
  572.                 SBUF=GenKwL1>>8; while (TI==0){};TI=0;
  573.                 SBUF=GenKwL1; while (TI==0){};TI=0;
  574.                 SBUF=0x0D; while (TI==0){};TI=0;
  575.                 SBUF=0x0A; while (TI==0){};TI=0;
  576.                 */
  577.         }
  578.         else
  579.         {
  580.                 GenKwL1=0;GenKwL2=0;GenKwL3=0;
  581.         }
  582. /*用户修正*/        
  583. /*        GenKwL1=AD_OffsetGain(GenKwL1,Kw_Gain,Kw_Offset);
  584.         GenKwL2=AD_OffsetGain(GenKwL2,Kw_Gain,Kw_Offset);
  585.         GenKwL3=AD_OffsetGain(GenKwL3,Kw_Gain,Kw_Offset);
  586. */
  587. }
  588. /*--------------------------------------------------------------*/
  589. /*发电机无功功率数据采集*/
  590. void ADE_GenKVAR(void)
  591. {
  592.         if (GenCurrentC1!=0)
  593.         {
  594.                 if (10000>(GenPF1*GenPF1))
  595.                 {
  596.                         GenKvarL1=GenKvaL1*(sqrt(10000-GenPF1*GenPF1))/100;
  597.                 }
  598.                 if (10000>(GenPF2*GenPF2))
  599.                 {
  600.                         GenKvarL2=GenKvaL2*(sqrt(10000-GenPF2*GenPF2))/100;
  601.                 }
  602.                 if (10000>(GenPF3*GenPF3))
  603.                 {
  604.                         GenKvarL3=GenKvaL3*(sqrt(10000-GenPF3*GenPF3))/100;
  605.                 }
  606.         }
  607.         else
  608.         {
  609.                 GenKvarL1=0;GenKvarL2=0;GenKvarL3=0;
  610.         }
  611. }
  612. /*--------------------------------------------------------------*/
  613. /*蓄电池电压数据采集在通道3*/
  614. void ADC_BV(void)
  615. {
  616.         unsigned int Data;
  617.         unsigned Count;
  618.         
  619.         Data=0;
  620.         
  621.         for (Count=0;Count<10;Count++)
  622.         {        
  623.                 Data=Data+(ADC_Read(0x06)/2.687);
  624.         }
  625.         
  626.         //硬件计算
  627.         BatteryVoltage=(Data/10);
  628.         
  629.         /*偏移、增益修正公共函数*/
  630.         BatteryVoltage=AD_OffsetGain(BatteryVoltage,BV_Gain,BV_Offset);

  631. }

  632. /*
  633. 上海耀通电子仪表公司:销售负责人:姚先生 经理
  634. 联系电话:021-69625513
  635. 电阻温度传感器:306J
  636. 温度        电阻  AD电压

  637. 40                287          395
  638. 60                134         
  639. 80                69
  640. 95                44.3
  641. 100                38.5
  642. 120                22.7        
  643. */
  644. //AD采样电压值,温度
  645. unsigned int code Tempreture_Div[13][2]=  
  646. {
  647. {468,0},                    
  648. {458,10},
  649. //{453,13},
  650. //{450,16},
  651. {446,20},
  652. //{431,26},
  653. {422,28},
  654. //{405,33},
  655. {397,37},
  656. // {378,43},
  657. {365,46},
  658. // {348,52},
  659. {328,58},
  660. {300,67},
  661. {265,80},
  662. //{246,84},
  663. //{242,86},
  664. //{233,88},
  665. {227,90},                 //阻值41.8
  666. //{222,95},  //阻值39    // 电压值为:0.39v  //  (1.8/1024)* 222 = 0.39V     // 0.39v/(1.8/1024)= 222
  667. {218,100},         //阻值36.9
  668. //{214,105},
  669. {210,110},
  670. {201,120}
  671. };

  672. /*--------------------------------------------------------------*/
  673. /*发动机温度数据采集在通道1*/
  674. void ADC_ET(void)
  675. {
  676.         unsigned int Data;
  677.         unsigned Count;
  678.   Data=0;
  679.         for (Count=0;Count<20;Count++)
  680.         {        
  681.           //Data=Data+(207-ADC_Read(0x02)*0.49);
  682.           Data=Data+ADC_Read(0x02);
  683.         }
  684.         //硬件计算
  685.         ETVoltage=(Data/20);
  686.         if(ETVoltage>470) //判断是否接有温度传感器
  687.           {
  688.            ETVoltage=0;
  689.      return;
  690.      }
  691.   if((ETVoltage<=Tempreture_Div[0][0])&&(ETVoltage>=Tempreture_Div[1][0])) //0--10
  692.           {
  693.             Data=(Tempreture_Div[0][0]-ETVoltage)*10/(Tempreture_Div[0][0]-Tempreture_Div[1][0])+Tempreture_Div[0][1];
  694.           }
  695.         else if((ETVoltage<=Tempreture_Div[1][0])&&(ETVoltage>=Tempreture_Div[2][0])) //10--20
  696.           {
  697.             Data=(Tempreture_Div[1][0]-ETVoltage)*10/(Tempreture_Div[1][0]-Tempreture_Div[2][0])+Tempreture_Div[1][1];
  698.           }      
  699.   else if((ETVoltage<=Tempreture_Div[2][0])&&(ETVoltage>=Tempreture_Div[3][0])) //20--28
  700.           {
  701.             Data=(Tempreture_Div[2][0]-ETVoltage)*8/(Tempreture_Div[2][0]-Tempreture_Div[3][0])+Tempreture_Div[2][1];
  702.           }
  703.         else if((ETVoltage<=Tempreture_Div[3][0])&&(ETVoltage>=Tempreture_Div[4][0])) //28--37
  704.           {
  705.             Data=(Tempreture_Div[3][0]-ETVoltage)*9/(Tempreture_Div[3][0]-Tempreture_Div[4][0])+Tempreture_Div[3][1];
  706.           }
  707.   else if((ETVoltage<=Tempreture_Div[4][0])&&(ETVoltage>=Tempreture_Div[5][0])) //37--46
  708.       {
  709.             Data=(Tempreture_Div[4][0]-ETVoltage)*9/(Tempreture_Div[4][0]-Tempreture_Div[5][0])+Tempreture_Div[4][1];
  710.           }
  711.   else if((ETVoltage<=Tempreture_Div[5][0])&&(ETVoltage>=Tempreture_Div[6][0])) //46--58
  712.           {
  713.             Data=(Tempreture_Div[5][0]-ETVoltage)*12/(Tempreture_Div[5][0]-Tempreture_Div[6][0])+Tempreture_Div[5][1];
  714.           }
  715.         else if((ETVoltage<=Tempreture_Div[6][0])&&(ETVoltage>=Tempreture_Div[7][0])) //58--67
  716.           {
  717.             Data=(Tempreture_Div[6][0]-ETVoltage)*9/(Tempreture_Div[6][0]-Tempreture_Div[7][0])+Tempreture_Div[6][1];
  718.           }
  719.         else if((ETVoltage<=Tempreture_Div[7][0])&&(ETVoltage>=Tempreture_Div[8][0])) //67--80
  720.           {
  721.             Data=(Tempreture_Div[7][0]-ETVoltage)*13/(Tempreture_Div[7][0]-Tempreture_Div[8][0])+Tempreture_Div[7][1];
  722.           }
  723.   else if((ETVoltage<=Tempreture_Div[8][0])&&(ETVoltage>=Tempreture_Div[9][0])) //80--90
  724.           {
  725.             Data=(Tempreture_Div[8][0]-ETVoltage)*10/(Tempreture_Div[8][0]-Tempreture_Div[9][0])+Tempreture_Div[8][1];
  726.           }
  727.         else if((ETVoltage<=Tempreture_Div[9][0])&&(ETVoltage>=Tempreture_Div[10][0])) //90--100
  728.           {
  729.             Data=(Tempreture_Div[9][0]-ETVoltage)*10/(Tempreture_Div[9][0]-Tempreture_Div[10][0])+Tempreture_Div[9][1];
  730.           }
  731.         else if((ETVoltage<=Tempreture_Div[10][0])&&(ETVoltage>=Tempreture_Div[11][0])) //100--110
  732.           {
  733.             Data=(Tempreture_Div[10][0]-ETVoltage)*10/(Tempreture_Div[10][0]-Tempreture_Div[11][0])+Tempreture_Div[10][1];
  734.           }
  735.         else if((ETVoltage<=Tempreture_Div[11][0])&&(ETVoltage>=Tempreture_Div[12][0])) //110--120
  736.           {
  737.             Data=(Tempreture_Div[11][0]-ETVoltage)*10/(Tempreture_Div[11][0]-Tempreture_Div[12][0])+Tempreture_Div[11][1];
  738.           }
  739.   else
  740.      {
  741.             ETVoltage=0;
  742.         return;
  743.            }
  744.   ETVoltage=Data;
  745.         ETVoltage=AD_OffsetGain(ETVoltage,ET_Gain,ET_Offset);

  746. }
  747. /*******************************************
  748. 机油压力传感器:303J

  749. 压力(mpa) 电阻(欧姆)
  750. 0                           20                                258        
  751. 0.1                          36                16                  336
  752. 0.2               50                14                400
  753. 0.3               65            15            465.63
  754. 0.4               80                15
  755. 0.5               95            15
  756. */

  757. /*发动机油压数据采集在通道0*/
  758. void ADC_OP(void)
  759. {
  760.         unsigned int Data;
  761.         unsigned Count;               
  762.         Data=0;        

  763.         for (Count=0;Count<20;Count++)
  764.         {        
  765.                 Data=Data+(ADC_Read(0x00)*0.164-46);
  766.                 if ((ADC_Read(0x00)*0.164-46)<=00) Data=0;                        
  767.         }
  768.         //硬件计算
  769.         OPVoltage=(Data/20);
  770.     /*偏移、增益修正公共函数*/
  771.         OPVoltage=AD_OffsetGain(OPVoltage,OP_Gain,OP_Offset);
  772.     if(OPVoltage<5||OPVoltage>100)
  773.       OPVoltage=0;
  774. }

  775. /*油温检测---与水温相同*/
  776. void ADC_FL(void)
  777. {
  778.         unsigned int Data;
  779.         unsigned Count;
  780.         Data=0;
  781.         
  782.         for (Count=0;Count<20;Count++)
  783.         {
  784.           Data=Data+ADC_Read(0x04);
  785.         }
  786.         FLVoltage=(Data/20);

  787.         if(FLVoltage>470) //判断是否接有温度传感器
  788.           {
  789.            FLVoltage=0;
  790.      return;
  791.     }
  792.   if((FLVoltage<=Tempreture_Div[0][0])&&(FLVoltage>=Tempreture_Div[1][0])) //0--10
  793.           {
  794.             Data=(Tempreture_Div[0][0]-FLVoltage)*10/(Tempreture_Div[0][0]-Tempreture_Div[1][0])+Tempreture_Div[0][1];
  795.           }
  796.         else if((FLVoltage<=Tempreture_Div[1][0])&&(FLVoltage>=Tempreture_Div[2][0])) //10--20
  797.           {
  798.             Data=(Tempreture_Div[1][0]-FLVoltage)*10/(Tempreture_Div[1][0]-Tempreture_Div[2][0])+Tempreture_Div[1][1];
  799.           }      
  800.   else if((FLVoltage<=Tempreture_Div[2][0])&&(FLVoltage>=Tempreture_Div[3][0])) //20--28
  801.           {
  802.             Data=(Tempreture_Div[2][0]-FLVoltage)*8/(Tempreture_Div[2][0]-Tempreture_Div[3][0])+Tempreture_Div[2][1];
  803.           }
  804.         else if((FLVoltage<=Tempreture_Div[3][0])&&(FLVoltage>=Tempreture_Div[4][0])) //28--37
  805.           {
  806.             Data=(Tempreture_Div[3][0]-FLVoltage)*9/(Tempreture_Div[3][0]-Tempreture_Div[4][0])+Tempreture_Div[3][1];
  807.           }
  808.   else if((FLVoltage<=Tempreture_Div[4][0])&&(FLVoltage>=Tempreture_Div[5][0])) //37--46
  809.       {
  810.             Data=(Tempreture_Div[4][0]-FLVoltage)*9/(Tempreture_Div[4][0]-Tempreture_Div[5][0])+Tempreture_Div[4][1];
  811.           }
  812.   else if((FLVoltage<=Tempreture_Div[5][0])&&(FLVoltage>=Tempreture_Div[6][0])) //46--58
  813.           {
  814.             Data=(Tempreture_Div[5][0]-FLVoltage)*12/(Tempreture_Div[5][0]-Tempreture_Div[6][0])+Tempreture_Div[5][1];
  815.           }
  816.         else if((FLVoltage<=Tempreture_Div[6][0])&&(FLVoltage>=Tempreture_Div[7][0])) //58--67
  817.           {
  818.             Data=(Tempreture_Div[6][0]-FLVoltage)*9/(Tempreture_Div[6][0]-Tempreture_Div[7][0])+Tempreture_Div[6][1];
  819.           }
  820.         else if((FLVoltage<=Tempreture_Div[7][0])&&(FLVoltage>=Tempreture_Div[8][0])) //67--80
  821.           {
  822.             Data=(Tempreture_Div[7][0]-FLVoltage)*13/(Tempreture_Div[7][0]-Tempreture_Div[8][0])+Tempreture_Div[7][1];
  823.           }
  824.   else if((FLVoltage<=Tempreture_Div[8][0])&&(FLVoltage>=Tempreture_Div[9][0])) //80--90
  825.           {
  826.             Data=(Tempreture_Div[8][0]-FLVoltage)*10/(Tempreture_Div[8][0]-Tempreture_Div[9][0])+Tempreture_Div[8][1];
  827.           }
  828.         else if((FLVoltage<=Tempreture_Div[9][0])&&(FLVoltage>=Tempreture_Div[10][0])) //90--100
  829.           {
  830.             Data=(Tempreture_Div[9][0]-FLVoltage)*10/(Tempreture_Div[9][0]-Tempreture_Div[10][0])+Tempreture_Div[9][1];
  831.           }
  832.         else if((FLVoltage<=Tempreture_Div[10][0])&&(FLVoltage>=Tempreture_Div[11][0])) //100--110
  833.           {
  834.             Data=(Tempreture_Div[10][0]-FLVoltage)*10/(Tempreture_Div[10][0]-Tempreture_Div[11][0])+Tempreture_Div[10][1];
  835.           }
  836.         else if((FLVoltage<=Tempreture_Div[11][0])&&(FLVoltage>=Tempreture_Div[12][0])) //110--120
  837.           {
  838.             Data=(Tempreture_Div[11][0]-FLVoltage)*10/(Tempreture_Div[11][0]-Tempreture_Div[12][0])+Tempreture_Div[11][1];
  839.           }
  840.     else
  841.       {
  842.             FLVoltage=0;
  843.         return;
  844.            }
  845.     FLVoltage=Data;
  846.    
  847.     //偏移、增益修正公共函数
  848.         FLVoltage=AD_OffsetGain(FLVoltage,FL_Gain,FL_Offset);
  849. }
  850. //---------------捕获中断
  851. /*
  852. void Capture_Fuc() interrupt 6
  853. {
  854.   if(Capture_Couter==0)
  855.          {
  856.            Capture_1H=CCAP0H;
  857.      Capture_1L=CCAP0L;
  858.      Capture_Couter=Capture_Couter+1;
  859.          }
  860.   else
  861.          {
  862.      Capture_2H=CCAP0H;
  863.      Capture_2L=CCAP0L;
  864.            CCON=0X00;
  865.            Capture_Couter++;
  866.            EA=0;
  867.          }
  868.   CCF0=0;//清除中断标志
  869. }

  870. //mpu频率检测函数
  871. unsigned long Speed_Capture()
  872. {
  873. unsigned char Count0;
  874. unsigned char sample_counter;
  875. char cha_zhi;
  876. /////////////////////////////////////////////////////////////////////////
  877.   CMOD=0;
  878.   CCON=0;   //0X40启动计数器  //0X00关闭计数器
  879.   CCAPM0=0X21;//上升沿下降沿捕获,开捕获中断
  880.   IE_COPY=IE; //保存IE

  881. for(sample_counter=0;sample_counter<10;sample_counter++)
  882. {
  883.     /////////////////////////////////////////////////////////////////////////
  884.     CH=0;
  885.     CL=0;
  886.     T=5000;
  887.         Capture_Couter=0;
  888.     IE=0XC0;   //只打开捕获中断
  889.     CCON=0X40;//启动计数器
  890.     ///////////////////////////////////等待捕获中断///////////////////////////
  891.     while(T--)
  892.      {
  893.        if(Capture_Couter==2)
  894.             {
  895.               EA=0;
  896.           Capture_Result=(Capture_2H-Capture_1H)*256+(Capture_2L-Capture_1L);
  897.           Capture_Result=1843200/Capture_Result;
  898.           Speed_Filter[sample_counter]=Capture_Result;
  899.                   CCON=0;
  900.           break;
  901.         }
  902.        if(T==1)
  903.             {
  904.          IE=IE_COPY; //保存IE
  905.          return 0;
  906.         }
  907.      }
  908. }
  909. Accelaration=0;
  910. Max=Min=Speed_Filter[0];
  911. for(Count0=0;Count0<10;Count0++)
  912. {
  913.    if(Max>Speed_Filter[Count0])
  914.        Max=Speed_Filter[Count0];
  915.    else if(Speed_Filter[Count0]<Min)
  916.        Min=Speed_Filter[Count0];
  917.    Accelaration+=Speed_Filter[Count0];                                                                                                                        
  918. }      
  919. Capture_Result=(Accelaration-Max-Min)>>3;
  920. cha_zhi=Capture_Result-Number_Fre;
  921. cha_zhi=fabs(cha_zhi);

  922. if(cha_zhi>20)
  923. {
  924.   Com_Counter--;
  925.   if(Com_Counter==0)
  926.   {
  927.         Com_Counter=6;
  928.     Number_Fre=Capture_Result;
  929.   }
  930.   Capture_Result=Number_Fre;
  931. }
  932. else
  933. {
  934.   Com_Counter=6;
  935. }
  936. IE=IE_COPY; //保存IE
  937. return Capture_Result;
  938. }
  939. //=====================================================================
  940. /*发动机转速数据采集*/
  941. void ADC_GenSpeed(void)
  942. {
  943.         unsigned long frequency=0;
  944. // dengzhen 20100621
  945. if(XWORD[0x00AD]<2) //飞轮齿数为0
  946.   {
  947.     if(GenFrequency==0)
  948.       GenSpeed=0;                                                                                                        //飞轮齿数为零且发电频率为零将速度设置为零
  949.     else
  950.       GenSpeed=GenFrequency*3;                                                //飞轮齿数为零且发电频率不为零使用频率换算转速         
  951.   }
  952.   if(XWORD[0x00AD]>2) //飞轮齿数不为0
  953.   {
  954.      //frequency=Speed_Capture();
  955.                   if(frequency<31)   //mpu频率低于31Hz 转速强制为0
  956.                           {
  957.         GenSpeed=0;
  958.       }
  959.      else
  960.              {
  961.               GenSpeed=frequency*60/XWORD[0x00AD];
  962.               if(GenSpeed>4000) GenSpeed=0;
  963.             }
  964.    }
  965. }
  966. ////////////////////////////////////////////////数据采集/////////////////////////////////////////////////
  967. // ============= AD数据软件滤波  =====================
  968. void filter_ET(unsigned int Temp1)
  969. {
  970.    unsigned int  new_value;
  971.    
  972.    new_value = Temp1;
  973.    if ( ( new_value - value_ET > 3 ) || ( value_ET - new_value > 3 ))
  974.            {
  975.       ETVoltage = value_ET;
  976.     }
  977.     else
  978.     {
  979.       ETVoltage = new_value;
  980.     }
  981. }
  982. void filter_OP(unsigned int Temp1)
  983. {
  984.    unsigned int new_value;
  985.    
  986.    new_value = Temp1;
  987.    if ( ( new_value - value_OP > 3 ) || ( value_OP - new_value > 3 ))
  988.            {
  989.       OPVoltage = value_OP;
  990.     }
  991.     else
  992.     {
  993.       OPVoltage = new_value;
  994.     }
  995. }
  996. void filter_FL(unsigned int Temp1)
  997. {
  998.    unsigned int new_value;
  999.    
  1000.    new_value = Temp1;
  1001.    if ( ( new_value - value_FL > 3 ) || ( value_FL - new_value > 3 ))
  1002.            {
  1003.       FLVoltage = value_FL;
  1004.     }
  1005.     else
  1006.     {
  1007.       FLVoltage = new_value;
  1008.     }
  1009. }

  1010. //------------数据采集--------------------//
  1011. void ADC_Collection(void)
  1012. {
  1013.     /*各种数据采集*/
  1014.   ADE_GenVoltage();            //发电机组各相的相电压、线电压
  1015.         ADE_GenCurrent();            //发电机组各相电流
  1016.         if (Dianji_flag==1)                //启动成功后采集
  1017.         {
  1018.                 ADE_GenPF();                                //功率因数
  1019.                 ADE_GenKVA();             //发电机组各相的视在功率
  1020.                 ADE_GenKW();             //发电机组各相的有功功率
  1021.                 ADE_GenKVAR();             //发电机组各相的无功功率
  1022.         }
  1023.           ad_x++;
  1024.          if(ad_x==3)
  1025.           {
  1026.                         ADC_BV();                     //蓄电池组的电压        
  1027.                         ADC_ET();                     //发动机温度
  1028.                         value_ET=ETVoltage;
  1029.                         ADC_OP();                     //发动机油压
  1030.                         value_OP=OPVoltage;
  1031.                         ADC_FL();                     //燃油容量
  1032.                         value_FL=FLVoltage;
  1033.                 }
  1034.                 if(ad_x==6)
  1035.                 {
  1036.                         ADC_ET();
  1037.                         filter_ET(ETVoltage);

  1038.                         ADC_OP();        
  1039.                         filter_OP(OPVoltage);
  1040.         
  1041.                         ADC_FL();
  1042.                         filter_FL(FLVoltage);
  1043.                    ad_x=0;        
  1044.                 }
  1045.                         
  1046.   ADE_GenFrequency();         //发电机组的频率(使用ADE7758)的数据
  1047.   ADC_GenSpeed();      //if((LC_Model_BUF&0x04)==0x04)  //发电机组的转速
  1048. }
  1049. //-----------end-------------//
复制代码



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:1 发表于 2018-5-5 15:26 | 显示全部楼层
好资料 工程压缩包能分享下吗?没有头文件
回复

使用道具 举报

ID:278236 发表于 2018-5-5 17:15 | 显示全部楼层
能分享protues仿真图吗
回复

使用道具 举报

ID:322688 发表于 2018-5-7 00:39 | 显示全部楼层
头文件

Hardware.rar

2.27 KB, 下载次数: 70, 下载积分: 黑币 -5

头文件

回复

使用道具 举报

ID:322688 发表于 2018-5-7 00:40 | 显示全部楼层
没有protues仿真图,是电路图
回复

使用道具 举报

ID:403213 发表于 2018-9-27 16:01 | 显示全部楼层
亲,问下你用过ADE7763这款芯片吗? 和这个ADE7758类似。我这边硬件都有,目前就是想知道ADE7763这款芯片如何测量能耗和功率的。 需要有个人帮我讲一下原理,不需要你帮我写任何代码。如果可以,希望能提供一些指导,谢谢! 我这边可以付一定费用,如果感兴趣的话,加我的QQ528115186联系。
回复

使用道具 举报

ID:494823 发表于 2019-3-30 16:02 | 显示全部楼层
想看看电路图
回复

使用道具 举报

ID:574118 发表于 2023-4-26 19:45 | 显示全部楼层
dengzhen11 发表于 2018-5-7 00:40
没有protues仿真图,是电路图

能分享一下电路图吗
回复

使用道具 举报

ID:969272 发表于 2023-4-30 20:53 | 显示全部楼层
电路图没有?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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