衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

INA219電流采集驅動

Harmony&嵌入式學習 ? 來源:Harmony&嵌入式學習 ? 作者:Harmony&嵌入式學 ? 2023-07-17 09:23 ? 次閱讀

針對cortexm系列

wKgZomSzuPiAdIO1AAB5a5_A6mo512.png

INA219 是一款具備 I 2C 或 SMBUS 兼容接口的分流器 和功率監測計。該器件監測分流器電壓降和總線電源電 壓,轉換次數和濾波選項可通過編程設定。可編程校準 值與內部乘法器相結合,支持直接讀取電流值(單位: 安培)。通過附加乘法寄存器可計算功率(單位: 瓦)。I 2C 或 SMBUS 兼容接口 具有 16 個可編程地 址。

c文件

#include "ina219.h"

void INA_REG_Write(unsigned char reg,unsigned int data);

#ifdef INA_INSIDE_IIC
void INA_IIC_Delay()
{unsigned char x;
	for(x=1;x>0;x--)
	{
		__NOP();__NOP();__NOP();__NOP();__NOP();
	}
}

void INA_IIC_INIT(void)		//IIC初始化
{
	GPIO_InitTypeDef GPIO_INIT;
	RCC_APB2PeriphClockCmd(IIC_RCC,ENABLE);
	
	GPIO_INIT.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_INIT.GPIO_Pin=IIC_SDA | IIC_SCL;
	GPIO_INIT.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(IIC_PORT,&GPIO_INIT);
	
	IIC_SDA_H;
	IIC_SCL_H;
}

void INA_IIC_SDA_OUT(void)	//SDA配置為輸出
{
	GPIO_InitTypeDef GPIO_INIT;
	GPIO_INIT.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_INIT.GPIO_Pin=IIC_SDA ;
	GPIO_INIT.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(IIC_PORT,&GPIO_INIT);
}
void INA_IIC_SDA_IN(void)	//SDA配置為輸入
{
	GPIO_InitTypeDef GPIO_INIT;
	GPIO_INIT.GPIO_Mode=GPIO_Mode_IPU;
	GPIO_INIT.GPIO_Pin=IIC_SDA ;
	GPIO_INIT.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(IIC_PORT,&GPIO_INIT);
}

void INA_IIC_Start(void)	//開始信號
{
	IIC_SDA_H;
	IIC_SCL_H;
	INA_IIC_Delay();
	IIC_SDA_L;
	INA_IIC_Delay();
	IIC_SDA_L;
}
void INA_IIC_Stop(void )	//結束信號
{
	IIC_SDA_L;
	IIC_SCL_H;
	INA_IIC_Delay();
	IIC_SDA_H;
	INA_IIC_Delay();
	IIC_SCL_L;
	
	IIC_SCL_H;
	IIC_SDA_H;
}
bool INA_IIC_ACK_Read(void)	//讀取應答信號
{
	bool ack;
	IIC_SDA_H;
	INA_IIC_SDA_IN();

	IIC_SCL_H;
	INA_IIC_Delay();
	if(IIC_SDA_READ() == SET) ack=false;
	else ack=true;
	IIC_SCL_L;
	INA_IIC_SDA_OUT();
	return ack;
}
void INA_IIC_ACK_Send(bool ack)	//發送應答信號
{
	IIC_SCL_L;
	if(ack == true) 
		IIC_SDA_L;
	else IIC_SDA_H;
	IIC_SCL_H;
	INA_IIC_Delay();
	IIC_SCL_L;
}
void INA_IIC_Send_Byte(unsigned char byte)	//IIC發送一位數據
{
	unsigned char i;
	IIC_SCL_L;
	for(i=0;i>8);
	data_temp[1]=(unsigned char )(data & 0xFF);
	INA_IIC_Start();
	INA_IIC_Send_Byte(INA219_ADDRESS);	//發送INA219地址
	INA_IIC_Send_Byte(reg);							//發送寄存器地址
	INA_IIC_Send_Byte(data_temp[0]);						//發送高8位數據
	data++;
	INA_IIC_Send_Byte(data_temp[1])	;					//發送低8位數據
	INA_IIC_Stop();
}

void INA_Init(void )	
{
	INA_IIC_INIT();
	INA_REG_Write(INA219_REG_CONFIG,INA219_CONFIG_value);
	INA_REG_Write(INA219_REG_CALIBRATION,INA_CAL);
}
unsigned int INA_GET_Voltage_MV(void)	//獲取電壓(單位:mv)
{
	unsigned char data_temp[2];
	INA_Read_Byte_s(0x02,data_temp);
	return (int)((((data_temp[0]> 3)*4);	//右移3為去掉:bit2,CNVR,OVF三位,再乘以 4MV (官方文檔規定),得到當前總線的電壓值
}
unsigned int INA_GET_Current_MA(void)		//獲取電流(單位:mA)
{
	unsigned char data_temp[2];
	INA_REG_Write(INA219_REG_CONFIG,INA219_CONFIG_value);
	INA_Read_Byte_s(INA219_REG_CURRENT,data_temp);
	return (int)((((data_temp[0]

H文件


#ifndef _INA219_H_
#define _INA219_H_
#include "stm32f10x.h"
#include "stdbool.h"
// I2C Address Options
/*
#define INA219_I2C_ADDRESS_CONF_0               (u8)(0x40 

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5363

    瀏覽量

    121155
  • 接口
    +關注

    關注

    33

    文章

    8691

    瀏覽量

    151911
  • 電流采集
    +關注

    關注

    0

    文章

    5

    瀏覽量

    6567
收藏 人收藏

    評論

    相關推薦

    利用INA219作為電池輸入的電壓電流采集,會出現燒毀的情況怎么解決?

    利用INA219作為電池輸入的電壓電流采集(前端未加TVS),在使用過程中出現INA219整體燒毀直接冒火碳化,請問出現這種問題一般什么原因導致?浪涌?
    發表于 08-05 08:11

    請問INA219電流LSB最小能達到多少?

    各位好,請教下INA219電流LSB最小能達到多少?
    發表于 08-14 08:02

    INA219電流過大怎么處理?

    如下圖的設計,其他所有電路均不焊接情況下,排除短路,只要焊接上INA219,3V3就會達到104mA (不過不是LDO的極限),這看起來并不正常,但是我從電路上沒看到不正常的地方,我是INA219,top mark是A219
    發表于 08-19 06:40

    使用ina219電流時,要進行標定嗎?

    使用ina219電流時,要進行標定嗎?還有校準寄存器如何使用?謝謝
    發表于 09-05 06:09

    INA219讀取電流不正常的原因?怎么解決?

    1.用INA219讀取電流,會讀到和分流電阻電壓寄存器一樣的定值,在沒有負載的情況下也是這樣 2.按照數據手冊計算的配置值沒用,隨便改對電流電壓的測量都不會造成什么影響 3.電流的L
    發表于 12-03 06:26

    怎樣讀出eZdspC5535上INA219的數據?

    INA219軟件 怎樣讀出eZdspC5535上INA219的數據?
    發表于 01-10 06:00

    有關INA219芯片的使用問題

    在使用TI 公司的INA219芯片進行電流,電壓以及功率的數值進行測量時,遇到了如下幾個問題1.只有先配置Calibration Register 才能檢測到電流嗎?如何精準的配置
    發表于 01-20 10:26

    請問INA219軟件怎樣讀出eZdspC5535上INA219的數據?

    INA219軟件 怎樣讀出eZdspC5535上INA219的數據?
    發表于 06-18 11:33

    如何去使用INA219零漂移雙向電流/功率監測計呢

    INA219是什么?如何去使用INA219零漂移雙向電流/功率監測計呢?
    發表于 10-15 06:54

    INA219,pdf(Zerø-Drift,

    The INA219 is a high-side current shunt and power monitor with an I2C interface. The INA219
    發表于 09-24 23:17 ?57次下載

    INA219電量監測芯片的使用經驗和資料及使用步驟詳細說明

    手冊如上,INA219 是TI推出的具有I2C 接口的零漂移雙向電流/功率監測計,INA219內部結構圖如上,芯片同是支持差分分壓電流檢測跟總線電壓檢測
    的頭像 發表于 09-08 11:37 ?7.6w次閱讀

    電壓電流INA219開源項目

    電子發燒友網站提供《電壓電流INA219開源項目.zip》資料免費下載
    發表于 07-29 10:42 ?31次下載
    電壓<b class='flag-5'>電流</b>表<b class='flag-5'>INA219</b>開源項目

    INA219電流電壓檢測模塊

    電子發燒友網站提供《INA219電流電壓檢測模塊.zip》資料免費下載
    發表于 08-09 11:31 ?13次下載
    <b class='flag-5'>INA219</b><b class='flag-5'>電流</b>電壓檢測模塊

    隔離INA219模塊開源分享

    電子發燒友網站提供《隔離INA219模塊開源分享.zip》資料免費下載
    發表于 11-22 09:18 ?8次下載
    隔離<b class='flag-5'>INA219</b>模塊開源分享

    INA219遷移到INA232

    電子發燒友網站提供《從INA219遷移到INA232.pdf》資料免費下載
    發表于 11-14 14:17 ?0次下載
    從<b class='flag-5'>INA219</b>遷移到<b class='flag-5'>INA</b>232
    百家乐官网算号软件| 百家乐官网德州扑克轮盘| 百家乐官网百博亚洲| 职业赌百家乐技巧| 能赢钱的棋牌游戏| 百家乐官网盛大娱乐城城| 百家乐能战胜吗| 金龍百家乐的玩法技巧和规则 | 百家乐官网庄闲概率| 百家乐技巧和规律| 大发888网页登录| 百家乐官网技巧-澳门百家乐官网官方网址| 百家乐高手和勒威| 金濠娱乐城| 百家乐官网怎赌才赢钱| 励骏会百家乐官网的玩法技巧和规则| 水果机8键遥控器| 百家乐官网直杀| 犹太人百家乐的玩法技巧和规则| 百家乐官网怎打能赢| 百家乐输了100万| 足球博彩| 速博百家乐官网的玩法技巧和规则 | 百家乐官网代理占成| 百家乐赢钱密籍| 娱乐城注册送彩金100| 百家乐官网在线赌场娱乐网规则 | 百家乐官网网娱乐城| 芝加哥百家乐官网的玩法技巧和规则 | 24山之巽山乾向水法及兼家分针| 大发888 com| 易球百家乐官网娱乐城| 金花百家乐的玩法技巧和规则 | 百家乐官网平注法到| 大发888下载地址| 百家乐官网娱乐平台网| 大发888娱乐新澳博| 皇家百家乐官网出租平台| 博彩吧| 网上百家乐官网作| 卡卡湾网上娱乐|