RN8302计量芯片使用经验分享

2019-12-11 18:13发布

本帖最后由 Baldwin 于 2018-8-22 19:16 编辑

最近有款产品需要用到电能计量,选用了FM33A0xx+RN8302主流方案。计量模块开发也是从一知半解到懵懂,再到熟悉,酸甜苦辣因有尽有 ,下面把相关资料分享给大家,尽量少走弯路;
1---------------------------------------硬件部分-------------------------------------------------------------------------
RN8302外围电路
RN8302计量单元配置寄存器.png (138.91 KB, 下载次数: 0) 下载附件 2018-8-22 12:31 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
70条回答
蛋定
1楼-- · 2019-12-16 08:30
将要用到电量计量芯片,做个记号
bigharpoon
2楼-- · 2019-12-16 10:18
标记标记
magiczero
3楼-- · 2019-12-16 15:01
谢谢分享
Baldwin
4楼-- · 2019-12-16 18:17
 精彩回答 2  元偷偷看……
Baldwin
5楼-- · 2019-12-17 00:05
mon51 发表于 2019-3-20 21:39
请问楼主:1、可以把H文件贴出来吗?2、BufToU32()这个函数可以看看吗? 3、有读取电压,电流有效值的代码吗 ...

  1. uint8_t RN8302_ReadCurrentReg(uint8_t phase,uint8_t *regdata)
  2. {
  3.     uint8_t regbuf[4];
  4.     if(phase == 0){
  5.         if(RN8302_ReadReg(0x000B,regbuf,4)==0){
  6.             m_memcpy((uint8_t*)regdata,regbuf,4);
  7.         }
  8.     }
  9.     else if(phase == 1){
  10.         if(RN8302_ReadReg(0x000C,regbuf,4)==0){
  11.             m_memcpy((uint8_t*)regdata,regbuf,4);
  12.         }
  13.     }
  14.     else if(phase == 2){
  15.         if(RN8302_ReadReg(0x000D,regbuf,4)==0){
  16.             m_memcpy((uint8_t*)regdata,regbuf,4);
  17.         }
  18.     }
  19.        
  20.         return 0;
  21. }

  22. uint8_t RN8302_ReadVoltage(uint8_t phase)
  23. {
  24.     uint8_t regbuf[5];
  25.         uint32_t regtemp = 0;
  26.         const uint16_t regArry[]={0x0007,0x0008,0x0009};
  27.        
  28.         if(RN8302_ReadReg(regArry[phase],regbuf,4)==0)
  29.         {            
  30.                 regtemp = (regbuf[0]<<24)+(regbuf[1]<<16)+
  31.                                          (regbuf[2]<<8)+(regbuf[3]);
  32.         #ifdef RN8302_USING_PowerCorrection
  33.         Voltage[phase] = (uint16_t)(regtemp*10.0/ (44000000/220)); //扩大10
  34.         #endif

  35.         #ifdef RN8302_USING_ErrCorrection
  36.         Voltage[phase] = (uint16_t)(regtemp*10.0*Kv); //扩大10
  37.         #endif

  38.         }
  39.        
  40.         return 0;
  41. }
复制代码
这是电压、电流的换算,使用这个宏定义RN8302_USING_PowerCorrection
BUF2int这个函数就是将数组中的4个字节换算成uint32_t
Baldwin
6楼-- · 2019-12-17 05:46
panda1985 发表于 2019-3-20 16:38
我想问一下   使用RN8209D必须要先校表吗?  我就想检测电压 电流 功率  需不需要校表? ...

你好,RN8209计量芯片需要先校表的;如果对要求不高,你可以串一个电表来进行校表,通过电表测量出的电压、电流来换算你自己的值

一周热门 更多>