0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

INA219電流采集驅(qū)動(dòng)

Harmony&嵌入式學(xué)習(xí) ? 來(lái)源:Harmony&嵌入式學(xué)習(xí) ? 作者:Harmony&嵌入式學(xué) ? 2023-07-17 09:23 ? 次閱讀

針對(duì)cortexm系列

wKgZomSzuPiAdIO1AAB5a5_A6mo512.png

INA219 是一款具備 I 2C 或 SMBUS 兼容接口的分流器 和功率監(jiān)測(cè)計(jì)。該器件監(jiān)測(cè)分流器電壓降和總線電源電 壓,轉(zhuǎn)換次數(shù)和濾波選項(xiàng)可通過(guò)編程設(shè)定??删幊绦?zhǔn) 值與內(nèi)部乘法器相結(jié)合,支持直接讀取電流值(單位: 安培)。通過(guò)附加乘法寄存器可計(jì)算功率(單位: 瓦)。I 2C 或 SMBUS 兼容接口 具有 16 個(gè)可編程地 址。

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)	//開(kāi)始信號(hào)
{
	IIC_SDA_H;
	IIC_SCL_H;
	INA_IIC_Delay();
	IIC_SDA_L;
	INA_IIC_Delay();
	IIC_SDA_L;
}
void INA_IIC_Stop(void )	//結(jié)束信號(hào)
{
	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)	//讀取應(yīng)答信號(hào)
{
	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)	//發(fā)送應(yīng)答信號(hào)
{
	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發(fā)送一位數(shù)據(jù)
{
	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);	//發(fā)送INA219地址
	INA_IIC_Send_Byte(reg);							//發(fā)送寄存器地址
	INA_IIC_Send_Byte(data_temp[0]);						//發(fā)送高8位數(shù)據(jù)
	data++;
	INA_IIC_Send_Byte(data_temp[1])	;					//發(fā)送低8位數(shù)據(jù)
	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 (官方文檔規(guī)定),得到當(dāng)前總線的電壓值
}
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 

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5343

    瀏覽量

    120348
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8596

    瀏覽量

    151145
  • 電流采集
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    6553
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    利用INA219作為電池輸入的電壓電流采集,會(huì)出現(xiàn)燒毀的情況怎么解決?

    利用INA219作為電池輸入的電壓電流采集(前端未加TVS),在使用過(guò)程中出現(xiàn)INA219整體燒毀直接冒火碳化,請(qǐng)問(wèn)出現(xiàn)這種問(wèn)題一般什么原因?qū)е??浪涌?
    發(fā)表于 08-05 08:11

    請(qǐng)問(wèn)INA219電流LSB最小能達(dá)到多少?

    各位好,請(qǐng)教下INA219電流LSB最小能達(dá)到多少?
    發(fā)表于 08-14 08:02

    INA219電流過(guò)大怎么處理?

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

    使用ina219測(cè)電流時(shí),要進(jìn)行標(biāo)定嗎?

    使用ina219測(cè)電流時(shí),要進(jìn)行標(biāo)定嗎?還有校準(zhǔn)寄存器如何使用?謝謝
    發(fā)表于 09-05 06:09

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

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

    有關(guān)INA219芯片的使用問(wèn)題

    在使用TI 公司的INA219芯片進(jìn)行電流,電壓以及功率的數(shù)值進(jìn)行測(cè)量時(shí),遇到了如下幾個(gè)問(wèn)題1.只有先配置Calibration Register 才能檢測(cè)到電流嗎?如何精準(zhǔn)的配置
    發(fā)表于 01-20 10:26

    請(qǐng)問(wèn)INA219軟件怎樣讀出eZdspC5535上INA219的數(shù)據(jù)?

    INA219軟件 怎樣讀出eZdspC5535上INA219的數(shù)據(jù)?
    發(fā)表于 06-18 11:33

    如何去使用INA219零漂移雙向電流/功率監(jiān)測(cè)計(jì)呢

    INA219是什么?如何去使用INA219零漂移雙向電流/功率監(jiān)測(cè)計(jì)呢?
    發(fā)表于 10-15 06:54

    INA219電壓電流表的資料分享

    描述電壓電流INA219這真的是一個(gè)很酷的小設(shè)備,它不僅可以讓你測(cè)量電流,還可以測(cè)量電壓。通過(guò)一點(diǎn)乘法,您甚至可以測(cè)量功率。在電壓方面,您可以直接超過(guò) Arduino 5 伏的限制。事實(shí)上,您最多
    發(fā)表于 08-18 07:16

    INA219,pdf(Zerø-Drift,

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

    INA219電量監(jiān)測(cè)芯片的使用經(jīng)驗(yàn)和資料及使用步驟詳細(xì)說(shuō)明

    手冊(cè)如上,INA219 是TI推出的具有I2C 接口的零漂移雙向電流/功率監(jiān)測(cè)計(jì),INA219內(nèi)部結(jié)構(gòu)圖如上,芯片同是支持差分分壓電流檢測(cè)跟總線電壓檢測(cè)
    的頭像 發(fā)表于 09-08 11:37 ?7.5w次閱讀

    電壓電流INA219開(kāi)源項(xiàng)目

    電子發(fā)燒友網(wǎng)站提供《電壓電流INA219開(kāi)源項(xiàng)目.zip》資料免費(fèi)下載
    發(fā)表于 07-29 10:42 ?31次下載
    電壓<b class='flag-5'>電流</b>表<b class='flag-5'>INA219</b>開(kāi)源項(xiàng)目

    INA219電流電壓檢測(cè)模塊

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

    隔離INA219模塊開(kāi)源分享

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

    INA219遷移到INA232

    電子發(fā)燒友網(wǎng)站提供《從INA219遷移到INA232.pdf》資料免費(fèi)下載
    發(fā)表于 11-14 14:17 ?0次下載
    從<b class='flag-5'>INA219</b>遷移到<b class='flag-5'>INA</b>232