我们通常使用的可调电源,普通的可调电源一般会有两个内容的显示,一个是当前调至的电压值,一个是当前用电器的电流值。下面介绍一下使用INA226的功率芯片制作这个既能显示电压值,又能显示电流值的表头制作。

一.所需硬件

1. INA226功率芯片,这个是采集数据的主要器件,下面会有介绍。

2. 屏幕(这里使用的OLED12864-7线SPI),用于显示电压电流值。

3. 单片机(这里使用的是新唐N76E003),因为我们要把采集的数据转换成我们所需要的数值显示在屏幕上,所以不需要太强大的MCU,一般的最小的51即可。

4. 采样电阻——100mΩ。INA226需要用采样电阻来获取电流值,所以这个电阻尽量选择精度高一点的,功率大一点的。

5. 剩下的就是一些单片机的基本外设了,电容、电阻等等就不多说了。

二.INA226简介

直接放截图吧,更详细的内容看附件的芯片手册。

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(1)

三.硬件PCB

根据INA226的手册,简单的画了一个PCB,将单片机、OLED屏也集成到了PCB中,AD工程请见附件。

原理图:

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(2)

PCB图:

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(3)

四.软件编写

1. INA226驱动,IIC通信,需要在单片机进行IIC驱动编写,具体可见附件的IIC_INA226.c

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(4)

2. INA226的读写

INA226有10个寄存器,其中4个是可读可写,6个只能读取

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(5)

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(6)

每个寄存器的意义请看下图,程序里也有。

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(7)

之后就是INA226的读寄存器和写寄存器

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(8)

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(9)

INA226_data.Read_Data[1]是输入的电压值,也就是iread(0x80,2),读取的0x80的地址(本机地址),0x02是读取的寄存器,由手册可知,0x02代表的是总线电压。如果不准的话,可以更改后面的系数1.25。我这里感觉还挺准的。

INA226_data.Read_Data[0是输入的电流值,也就是iread(0x80,4),0x04是读取的寄存器,由手册可知,0x04代表的是电流,INA226_data.Var_Iref是系数,也是同理,校准用的。

3. OK,主要的已经搞定,接下来就是OLED12864的驱动了,我使用的是大字体显示,本来屏幕就小,那么字就大一点。

下图是电流和电压的数值显示

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(10)

4. 基本差不多了,还有注意的是初始化的时候,INA226需要写入采样时间和电流的校准值

寄存器0x05,校准寄存器,0x0036是怎么算出来的呢,手册上面有公式。

公式:0.00512/( 电流分辨率0.001A * 取样电阻0.1)=51.2=0x0033

之后感觉不是很准,我把数值上调到了=0x0036

寄存器0x00,采样时间寄存器。设置转换时间204us,求平均值次数128,采样时间为204*128,设置模式为分流和总线连续模式。

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(11)

五.实物调试

接下来就是把程序烧录到单片机中,进行调试了,下图是我制作完成的实物,大家凑合看吧,看着有点Low,哈哈,调试了好长时间,也换过好多硬件调试,上面是我制作的经验心得,分享给大家。

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(12)

基于单片机数字电压表测试数据表(基于新唐单片机的电压电流表头制作)(13)

原标题:基于新唐单片机的电压电流表头制作(INA226)原作者:小叶三千本文为21ic有奖征文作品,详情请见21ic论坛活动专区:第二届万元红包——蓝V达人有奖征文活动,如果您也有兴趣参与征文,欢迎进入论坛参与活动~

,