当前位置: 首页 > wzjs >正文

营销型网站建设调查表短视频培训课程

营销型网站建设调查表,短视频培训课程,wordpress内容搬家,wordpress网站建设要钱吗文章目录 一、INA219简介二、引脚功能三、寄存器介绍1.配置寄存器 0x002.分流电压寄存器 0x013.总线电压寄存器 0x024.功率寄存器 0x035.电流寄存器 0x046.基准寄存器 0x05 四、IIC 时序说明1.写时序2.读时序 五、程序六、实验现象1.线路图2.输出数据 一、INA219简介 INA219是…

文章目录

  • 一、INA219简介
  • 二、引脚功能
  • 三、寄存器介绍
    • 1.配置寄存器 0x00
    • 2.分流电压寄存器 0x01
    • 3.总线电压寄存器 0x02
    • 4.功率寄存器 0x03
    • 5.电流寄存器 0x04
    • 6.基准寄存器 0x05
  • 四、IIC 时序说明
    • 1.写时序
    • 2.读时序
  • 五、程序
  • 六、实验现象
    • 1.线路图
    • 2.输出数据


一、INA219简介

INA219是一个电流分流和电源监视器与I2C或smbus兼容的接口。该设备监测分流电压降和总线电源电压,可编程转换时间和滤波。可编程的校准值与内部乘法器相结合,可直接读出以安培为单位的电流。一个附加的相乘寄存器计算功率,单位为瓦。I2C或smbus兼容接口具有16个可编程地址。

在这里插入图片描述

二、引脚功能

IN+连接到分流电阻的正级
IN-连接到分流电阻的负级
GND电源地
VS电源正
SCL时钟线
SDA数据线
A0IIC地址设置引脚
A1IIC地址设置引脚

INA219有两个地址引脚,A0和A1。下图描述了16个可能地址中的每一个的引脚逻辑。由原理图可知 INA219 模块 A0 A1 引脚被下拉至 GND ,故 IIC 地址则为 Write:1000 0000 0x80 Read:1000 0001 0x81
在这里插入图片描述

三、寄存器介绍

在这里插入图片描述

1.配置寄存器 0x00

用于配置传感器的量程及工作模式等等
在这里插入图片描述

Bit字段类型默认值(二进制)描述
15RSTR/W0设置成1 复位
14NCR/W0无功能 保留
13BRNGR/W1总线电压量程范围
0 = 16V FSR
1 = 32V FSR
11 12PGR/W11分流电阻最大电压,可设置最大量程电流,I=V/R
(模块分流电阻R=0.1欧,非芯片内部电路)
00 ±40 mV
01 ±80 mV
10 ±160 mV
11 ±320 mV
7:10BADCR/W0011总线ADC分辨率及采样次数
参考下文说明
3:6SADCR/W0011分流ADC分辨率及采样次数
参考下文说明
0:2MODER/W111操作模式
000 关闭
001 分流电压 触发
010 总线电压 触发
011 分流及总线电压 触发
100 关闭ADC
101 分流电压 连续测量
110 总线电压 连续测量
111 分流及总线电压 连续测量

BADC(7:10) SADC(3:6) 的配置都参考下图
在这里插入图片描述

2.分流电压寄存器 0x01

存放分流电压数据
在这里插入图片描述

在这里插入图片描述

3.总线电压寄存器 0x02

存放总线电压数据
在这里插入图片描述
总线电压值 = 寄存器值>>3 * LSB(4mV)
上图可知数据存放于寄存器的 3-15Bit ,故计算的话先右移三位去掉其余非数据位,再乘最小分辨率LSB(4mV)

4.功率寄存器 0x03

存放功率数据
在这里插入图片描述
功率 = 寄存器值 * Power_LSB ,Power_LSB 的计算参考第6小节说明

5.电流寄存器 0x04

存放电流数据
在这里插入图片描述

电流值 = 寄存器值 * Current_LSB ,Current_LSB 的计算参考第6小节说明

6.基准寄存器 0x05

设置传感器的基准值
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
根据上面的公式计算Cal(基准值) 首先得计算 Current_LSB(电流最小分辨率),trunc 取整,Rshunt 分流电阻0.1R

Current_LSB_MAX = Maximum Expected Current(最大电流) / 2^15
Current_LSB_MIN = Maximum Expected Current(最大电流) / 2^12

最大电流 = 分流电阻最大电压(可通过00寄存器自行配置,本文采用320mV) / 分流电阻 = 320mV / 0.1R=3.2A

Current_LSB_MAX = 3.2A / 2^15 = 0.00009765625
Current_LSB_MIN = 3.2A / 2^12 = 0.00078125
取中间值适用值: Current_LSB = 0.0001A

因此 Cal(基准值) = 0.04096 / 0.0001A * 0.1R = 4096 = 0x1000 ,将该值写入寄存器 0x05 即可
测量结果如果出现偏差过大可用下图公式校准基准值
在这里插入图片描述
手册还给出了功率最小分辨率 Power_LSB 的计算公式
在这里插入图片描述

Power_LSB = 20 * 0.0001A = 0.002W

四、IIC 时序说明

1.写时序

在这里插入图片描述

2.读时序

在这里插入图片描述
该时序前还应加一个发送寄存器地址的时序:起始信号—IIC地址—ACK—寄存器地址—ACK

五、程序

INA219.c

#include <STC89C5xRC.H>
#include <IIC.H>
/*IIC 地址-------------------------------------------------------------------------------------------------------------*/
#define INA219 0x80
/*寄存器地址------------------------------------------------------------------------------------------------------------*/
#define	INA219_Configuration                          0x00
#define INA219_Shuntvoltage                           0x01
#define INA219_Busvoltage                             0x02
#define INA219_Power                                  0x03
#define INA219_Current                                0x04
#define INA219_Calibration                            0x05
/* INA219_curation Bit15-0 ------------------------------------------------------------------------------------------*/
#define RST 			0 		//设置成1复位 0(默认) (Bit15)
//                      0       //(Bit14 保留)
#define BRNG 			0   	//总线电压量程范围 16V (Bit13)
#define PG  			0x03	//分流电阻最大电压 ±320mV(默认) (Bit11-12)
#define BADC		    0x0C	//总线电压ADC分辨率/平均值设置  12位分辨率/16次平均值/8.51ms(Bit7–10)
#define SADC			0x0C    //分压电阻ADC分辨率/平均值设置  12位分辨率/16次平均值/8.51ms(bit3-6)
#define	MODE     	    0x07 	//运行模式  连续检测(默认)(Bit0–2)#define Configuration_H (RST << 7)|(BRNG << 5)|(PG << 3)|((BADC >> 1) & 0x0F)
#define Configuration_L ((BADC & 0x01) << 7)|(BADC << 3)|(MODE)
/* INA219_Calibration -------------------------------------------------------------------------------------------------*/
#define Calibration_H 0x10
#define Calibration_L 0x00
/*
0.32V/0.1R = 3.2A
Current_LSB_MAX = 3.2/2^12 = 0.00078125A
Current_LSB_MIN = 3.2/2^15 = 0.00009765625A
Current_LSB = 0.0001A = 0.1mA
Power_LSB = 20 * Current_LSB = 20 * 0.1mA = 2mW
CAL = 0.04096/(0.0001A*0.1R) = 4096 = 0x1000
*/
void INA219_Write(unsigned char Register,unsigned char Data_H,unsigned char Data_l)
{IIC_Start();IIC_SendByte(INA219);IIC_ReceiveAck();//没有对返回的 ACK 做处理IIC_SendByte(Register);IIC_ReceiveAck();IIC_SendByte(Data_H);IIC_ReceiveAck();IIC_SendByte(Data_l);IIC_ReceiveAck();IIC_Stop();
}
unsigned int INA219_Read(unsigned char Register)
{unsigned int Register_Data=0;IIC_Start();IIC_SendByte(INA219);IIC_ReceiveAck();//没有对返回的 ACK 做处理IIC_SendByte(Register);IIC_ReceiveAck();IIC_Start();IIC_SendByte(INA219+0x01);IIC_ReceiveAck();Register_Data = IIC_ReceiveByte();IIC_SendAck(0);Register_Data = (Register_Data<<8)|IIC_ReceiveByte();
//	IIC_SendAck(1);IIC_Stop();return Register_Data;
}
void INA219_Init()
{INA219_Write(INA219_Configuration,Configuration_H,Configuration_L);INA219_Write(INA219_Calibration,Calibration_H,Calibration_L);
}
unsigned int INA219_GetVoltage()//总线电压值 =  寄存器值>>3 * LSB(4mV)
{unsigned int Voltage;Voltage = (unsigned int)(((INA219_Read(INA219_Busvoltage)) >> 3) * 4);return Voltage;
}
unsigned int INA219_GetCurrent()//电流值 = 寄存器值 * Current_LSB(0.1mA)
{unsigned int Current;Current = (unsigned int)((INA219_Read(INA219_Current)) * 0.1);return Current;
}
unsigned int INA219_GetPower()//功率 = 寄存器值 * Power_LSB(2mW)
{unsigned int Power;Power = (unsigned int)((INA219_Read(INA219_Power)) * 2);return Power;
}

main.c

#include <STC89C5xRC.H>
#include <uart.H>
#include <INA219.H>
#include <delay.H>
//整形数据转字符数组
void IntToString(unsigned char *str,unsigned int dat)//str 存放字符的数组,dat 整形数据
{unsigned char i = 0;unsigned int buf[12];do { //先转换成 低位在前的十进制数组 将低位高位互换buf[i++] = dat % 10;dat /= 10;} while (dat > 0);while (i-- > 0) //将数组值转换为 ASCII 码反向拷贝到接收指针上{*str++ = buf[i] + '0';}*str = '\0';
}	
void main()
{unsigned int Voltage = 0,Current = 0,Power = 0;unsigned char arr[12];char * P = arr;uart_init();//波特率2400INA219_Init();Delay_x_ms(1000);while(1){Voltage = INA219_GetVoltage();Delay_x_ms(100);//获取总线电压Current = INA219_GetCurrent();Delay_x_ms(100);//获取电流Power = INA219_GetPower();//获取功率IntToString(P,Voltage);//int转char数组UART_Send(P);UART_Send("mV");UART_SendByte(0x0D);UART_SendByte(0x0A);IntToString(P,Current);UART_Send(P);UART_Send("mA");UART_SendByte(0x0D);UART_SendByte(0x0A);IntToString(P,Power);UART_Send(P);UART_Send("mW");UART_SendByte(0x0D);UART_SendByte(0x0A);Delay_x_ms(1000);}
}

六、实验现象

1.线路图

在这里插入图片描述

2.输出数据

5V 0.8A 测试
电源—负载仪
在这里插入图片描述
程序输出数据

在这里插入图片描述

5V 2A 测试
电源—负载仪
在这里插入图片描述
程序输出数据
在这里插入图片描述

7V 1A 测试
电源—负载仪
在这里插入图片描述
程序输出数据
在这里插入图片描述

以上内容个人理解,如有不正欢迎指教,需要资料及工程可留言邮箱

http://www.dtcms.com/wzjs/294856.html

相关文章:

  • 长安东莞网站推广做网站公司哪家正规
  • 网站建设需要具备的能力seo关键词怎么优化
  • 网站开发 商标注册分析网站推广和优化的原因
  • 有什么做动图比较方便的网站网拍外宣怎么推广
  • 网站建设的目的定位盈利模式和功能网站建设介绍ppt
  • 广州微网站建设多少钱产品品牌推广策划方案
  • 外贸网站案例链接是什么意思
  • 门户网站类是什么意思怎么找当地的地推团队
  • 学雷锋_做美德少年网站武汉seo百度
  • 成都网站建设sntuu淘宝运营培训课程免费
  • 机械加工网站平台南昌seo快速排名
  • 网站建设 电话咨询全国疫情实时动态
  • 社保服务个人网站长沙正规seo优化公司
  • 网站策划内容有哪些百度seo自然优化
  • 建设网站的结束语竞价外包运营
  • 网站备案 公司名称关联性网站seo设置是什么
  • wordpress 网站加密seo研究学院
  • 北京网站公司建设网络营销的实现方式有哪些
  • 企业网站建设兴田德润实惠短视频营销成功的案例
  • 那些论坛网站做的比较好大学生网络营销策划书
  • delphi 可做网站吗目前引流最好的平台
  • 商城网站建站程序安卓优化大师全部版本
  • 寻找武汉手机网站建设网络营销的四个步骤
  • 九江县建设规划局网站临沂头条新闻今日头条
  • wordpress 自定义字段南宁百度seo排名优化
  • 做调查问卷能赚钱的网站如何做百度关键词推广
  • 企业网站建设内存android优化大师
  • 可以做网站挂在百度上吗今日国际重大新闻事件
  • 1688网站链接图片怎么做平台推广策略都有哪些
  • 可以投稿的写作网站推特最新消息今天