发新帖本帖赏金 30.00元(功能说明)我要提问
返回列表
打印
[N32G43x]

低成本电压电流测量,国民技术N32G435很适合!

[复制链接]
1700|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lcdi|  楼主 | 2022-3-31 00:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lcdi 于 2022-3-31 00:26 编辑

#申请原创#@21小跑堂
低成本电压电流测量,国民技术N32G435很适合!

电压电流采样测量是常常见到的mcu应用,电压的测量相对容易。电流测量则要麻烦一些。尤其是考虑到微小电流(ua级)和较宽的测量范围,往往需要对电流采样电阻上的电压差进行高倍率的放大,或者需要改变取样电阻以获得不同的测量范围。电路的复杂性和成本就会较高。模拟前端则需要专门设计的电流放大器,通常就是仪表放大器,适用的共模电压范围也不是很宽。
如果是低端要求不高的测量那就可以使用通用运放,一级或者两级放大,在低端采样不需要考虑共模电压,实现起来比较简单。这样的低成本电压电流测量,用国民技术的N32G435系列微控制器就很合适了。国民技术的N32G435有着较高的集成度,带有高性能的ADC和集成OPA,很适合电流放大测量,价格又不高。可以节省运放成本和减少PCB占用。能够实现低成本,电路简洁的电压电流测量。

下面让我们来探索一下如何实现:

设计的目标是低成本,简洁实现~~

那么电压测量使用电阻分压到ADC的输入范围就行了。电流测量其实也就是测量电流采样电阻上的微小电压差,所以需要有放大。G435芯片里面有2个OPA,可以配置成PGA,程序就可以控制放大倍数了,这就非常灵活方便了。

让我们从官方例程开始,N32G435库里面的例程,有个OpaAdByTim,看起来非常合适。
keil里面安装好支持包,打开此例程,编译通过,下载运行,一切顺利……嗯……应该是吧,结果在哪儿看呢?串口也没有回传~~还是得去读读代码啦。
主程序里前面就是各部分配置函数,主循环只有更改PGA增益,其他就没了。
所以应该在中断里~ADC中断函数里有这样的:
        ADC_ConvertedValue[0][0] = ADC_GetInjectedConversionDat(ADC, ADC_INJ_CH_1) & MASK_AD_BITS;
        ADC_ConvertedValue[0][1] = ADC_GetInjectedConversionDat(ADC, ADC_INJ_CH_2) & MASK_AD_BITS;

别处就没有对ADC_ConvertedValue的处理了。所以就只能进入调试状态,断点到此,看看数据啦~没错,官方例程就是这样简洁!

这样不够直观,要看数据变化也繁琐了点,所以还是需要稍微更改一下。
为了简单起见,加个串口传送的部分,就可以用各种串口软件查看了。
可以参考另外一个例程,USART下面的Printf例程。把里面的头文件包上,配置代码也复制过来,RCC配置,GPIO配置都复制过来,别忘记fputc函数,这是重定义到串口输出的关键。一番复制粘贴然后编译……哦……出错了,什么什么USARTx未定义!好吧,查找了一番发现这些是在串口例程那边的main.h里,复制过来到这边(OpaAdByTim)的main.h里.编译成功!

接着就可以用printf回传到PC了。至于涉及到变量引用、转换的需要又多搞了几个全局变量来,然后在主程序循环中又对ADC结果做了多点平均,这些大家都会的操作就不必多说了。
回传时顺便做了个数值转换,测得开发板VCC电压是3.25V,所以 数据*3250/4096 就可以得到测量数据的电压值(mv)。
代码中可以看到OPA1的正输入端连在PA4上,OPA2的正输入端连在PA7上。
默认的OPA模式是跟随模式,没有放大。改成PGA模式,下面的增益设置才能起作用:
    OPAMP_Initial.Mod            = OPAMP_CS_PGA_EN; //OPAMP_CS_FOLLOW;//OPAMP_CS_PGA_EN;
    OPAMP_Initial.Gain           = OPAMP_CS_PGA_GAIN_32;


PC端使用了一个叫serial port plotter的软件,不但可以看到数据,还能绘制图形。
只是上传的数据要符合其格式要求,也就是这样的:
printf("$%d %d;",datasum_i,datasum_j);

前面$,中间空格,结尾;。
数据一旦可视化就直观多了。nice!

这次就用电阻分压出一个小电压信号,用PGA放大来测量(以此实现电流测量):

以上是锂电池输出经过100k欧可调电阻/100欧 电阻分压出的低电压,PGA倍数32(最大),测得210/32=6.56mv,万用表测量6.8mv。
可以看到稳定性稍差,这是因为用了20厘米以上的杜邦线连接,自然会有些干扰了。


经过256数据平滑处理就会稳定多了。

再把PGA设为8倍,无平滑处理。测得52/8=6.5mv.说明PGA倍数准确。


接下来设定为2倍,调整一下电阻比例,测得380/2=190mv.万用表测量190mv。

以上是OPA1的测量结果,那么OPA2如何呢?
32倍时测得72/32=2.25mv,万用表测量1.9mv。
OPA1测量结果偏小,OPA2偏大。那么输入接地,可测得OPA1为0,OPA2为16/32=0.5mv。
这也就是offset了。OPA1的offset为负值,ADC采样不到。

如果要搭建其他方式的运放电路,可以选择通用模式,运放端子引出到引脚,内部无连接(除了ADC)。或者只是缓冲一下选择跟随器模式就好。不过PGA模式最简洁低成本方便可调,要求不太高的话真是再合适不过了。看手册里的参数指标比起358还是要好一些的。

另外,手册里输出范围的说明,输入是轨到轨,输出并不是,而是缩减0.15V。
但实际测量不会这样,还是可以实现轨到轨输出,所以是哪样呢?!


以上实验代码均在main.c和main.h里,如下
OpaAdByTim.zip (9.46 KB)

总之,经过以上测试,验证了N32G435内部OPA和ADC的性能,官方的库和例程也工作稳定,非常不错。完全适合做低成本的电压电流测量应用。非常值得推荐!




使用特权

评论回复

打赏榜单

21小跑堂 打赏了 30.00 元 2022-04-21
理由:恭喜通过原创文章审核!请多多加油哦!

评论
21小跑堂 2022-4-21 16:39 回复TA
基于国民技术的低电压电流测量,在实际低功耗应用中非常实用。基于源码的电流测量,并有一定拓展,具有一定参考价值。 
沙发
terryzhouhz| | 2022-4-28 09:17 | 只看该作者
高手!!

使用特权

评论回复
板凳
quickman| | 2022-6-20 15:21 | 只看该作者
使用的是什么传感器呢?

使用特权

评论回复
地板
zerorobert| | 2022-6-20 15:31 | 只看该作者
这个可以做成usb功率测量  

使用特权

评论回复
5
lcdi|  楼主 | 2022-6-21 11:00 | 只看该作者
quickman 发表于 2022-6-20 15:21
使用的是什么传感器呢?

低端的电流测量,只需要采样电阻~

使用特权

评论回复
6
lcdi|  楼主 | 2022-6-21 11:02 | 只看该作者
zerorobert 发表于 2022-6-20 15:31
这个可以做成usb功率测量

是的,非常适合,后续会继续设计,包含usb PD功率测量~

使用特权

评论回复
发新帖 本帖赏金 30.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://www.eeboard.com/avago-shengji?invite_id=5579

33

主题

421

帖子

7

粉丝