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

seo网站上线前分析百度网站优化培训

seo网站上线前分析,百度网站优化培训,直播做ppt的网站有哪些,软件开发计划模板文章目录 一、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/511797.html

相关文章:

  • 找厂家采购什么平台西安seo建站
  • 如何做双版网站优化seo是什么
  • 杭州做卖房子的工作哪个网站好数据分析工具
  • 网站没排名怎么办竞价推广代运营服务
  • 制作购物网站优化营商环境工作总结
  • 用vs做的网站怎么打开网站构建的基本流程
  • 网站基础内容网络营销一般月薪多少
  • 中国老区建设促进会网站全网营销推广 好做吗
  • 有几个网站做seo有什么好处
  • 金蓝盟企业管理咨询公司自动seo网站源码
  • 做微商怎样加入网站卖东西赚钱站长工具网
  • 西安网站seo服务推广赚佣金的软件排名
  • 琼山网站制作网站设计公司哪家专业
  • 安徽建设网官方网站北京官网优化公司
  • wordpress 操作系统seo推广培训中心
  • 白城网站建设全国互联网营销大赛官网
  • 做设计太依赖网站素材推广怎么推
  • 网站百度突然不收录福建企业seo推广
  • 手机移动开发网站建设石家庄seo优化公司
  • 福州网站建设好的公司网络推广关键词优化公司
  • 网站建设维护公司谷歌关键词优化怎么做
  • 织梦大气金融类通用企业网站模板跨境电商营销推广
  • 我的世界电影怎么做的视频网站百度收录刷排名
  • 苏州高端网站建设定制百度指数官网查询
  • 做墙绘一般在哪个网站最新网络营销方式
  • 沈阳网页设计收费标准seo网站优化系统
  • 临沂网站设计价格seo博客模板
  • 做网站app是什么h行业百度营销平台
  • 哪个网站注册域名seo搜索优化培训
  • 全国知名网站排名进入百度网首页