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

自己建设网站要多久网站数据丢失了做数据恢复需多久

自己建设网站要多久,网站数据丢失了做数据恢复需多久,seo企业站收录,wordpress 艺术 主题 2018文章目录 一、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/792916.html

相关文章:

  • wordpress仿站教程百度云j网站开发
  • 免费的网站免安装wordpress阅读权限插件
  • 无锡做网站公司哪家好qq炫舞开发公司
  • 北京网站建设降龙WordPress获取用户的标签
  • 网页编辑超级工具箱wordpress 优化数据
  • 英雄联盟网站建设云龙微网站开发
  • 订做网站建设本地服务器域名解析网站建设
  • 代码高亮网站英文商务网站制作
  • 深圳市做网站知名公司有哪些汉口网站推广优化
  • 长沙鞋网站建设易优cms二次开发
  • 丰都网站建设费用水果网站首页设计
  • 郑州网站优化公司排名龙岗网站app建设
  • 网站侵权怎么做公证或证据保存保定中小企业网站制作
  • 个人网站怎么建立流程潍坊制作网站软件
  • 佛山怎么做网站仙桃网站建设
  • 学院网站建设方案wordpress栏目标题
  • 宁波seo网站服务网页版淘宝
  • 网站建设前期规划方案苏州网页制作报价
  • 在域名做网站apmserve设置多个网站
  • 学生组织网站建设seo技术快速网站排名
  • 绿色环保网站模板沈阳建设工程交易中心官网
  • 网站打开不对彩票网站搭建 做网站
  • 海报制作网站免费精准营销平台
  • 电商网站建设费用价格什么是门户网站广告
  • 二手房网站开发文档网站 提交入口
  • 北京金融网站建设移动网站屏蔽
  • asp网站首页模板新浪短链接在线生成
  • 重庆网站建设狐灵传媒深圳最近消息
  • 教育学校网站建设南通住房和城乡建设部网站首页
  • 个人网站免费空间手机网站模板怎么用