中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

福田祥菱q雙排小貨車報(bào)價(jià)及圖片廈門seo推廣外包

福田祥菱q雙排小貨車報(bào)價(jià)及圖片,廈門seo推廣外包,手機(jī)端網(wǎng)站開發(fā)源碼,自己做網(wǎng)站犯法嗎目錄 前言1 原理圖2 IIC地址說明3 寄存器地址說明4 開始工作前配置5 程序代碼1)驅(qū)動(dòng)程序2)頭文件3) 測(cè)試代碼 前言 INA219 是一款具備 I2C 或 SMBUS 兼容接口的分流器和功率監(jiān)測(cè)計(jì)。該器件監(jiān)測(cè)分流器電壓降和總線電源電壓,轉(zhuǎn)換次數(shù)和濾波選項(xiàng)…

目錄

  • 前言
  • 1 原理圖
  • 2 IIC地址說明
  • 3 寄存器地址說明
  • 4 開始工作前配置
  • 5 程序代碼
    • 1)驅(qū)動(dòng)程序
    • 2)頭文件
    • 3) 測(cè)試代碼

前言

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

INA219 可在 0V 至 26V 范圍內(nèi)感測(cè)總線中的分壓。該器件由 3V 至 5.5V 單電源供電,電源的最大流耗為1mA。INA219 的工作溫度范圍為 -40°C 至 125°C。

1 原理圖

在這里插入圖片描述

2 IIC地址說明

在這里插入圖片描述
此測(cè)試時(shí)A0、A1都下拉接地,所以INA219的IIC通信地址為1000000B

3 寄存器地址說明

在這里插入圖片描述

  • 0x00 配置寄存器,用來配置工作模式、采集范圍以及其他參數(shù)
  • 0x01 分流電阻兩端的電壓
  • 0x02 總線電壓(IN-到GND的電壓差)
  • 0x03 功率
  • 0x04 經(jīng)過分流電阻兩端的電流
  • 0x05 校準(zhǔn)寄存器,用于對(duì)測(cè)量結(jié)果進(jìn)行校準(zhǔn)

4 開始工作前配置

  • 0x00 寄存器Bit 13:設(shè)置檢測(cè)最大檢測(cè)電壓 0 = 16V,1 = 32V (此處項(xiàng)目需要測(cè)3V到5V的電壓,故設(shè)置Bit 13 為 0
  • 0x00 寄存器Bit 11-12:設(shè)置總線分流電阻最大的電壓(此處項(xiàng)目需要測(cè)0A到5A的電流,故設(shè)置Bit 11-12 為 01,即量程±80mV,可測(cè)電流±8A
  • 0x00 寄存器Bit 0-2:設(shè)置工作模式(默認(rèn))
  • 0x05 寄存器:設(shè)置基準(zhǔn)值(根據(jù)需要測(cè)的電壓、電流范圍再套入公式得出結(jié)果

由以下公式可得出0x05的配置值。
C a l = t r u n c ( 0.04096 C u r r e n t L S B × R s h u n t ) Cal = trunc\left ( \frac{0.04096}{CurrentLSB\times Rshunt} \right ) Cal=trunc(CurrentLSB×Rshunt0.04096?)
C u r r e n t L S B = M a x i m u m E x p e c t e d C u r r e n t 2 15 CurrentLSB = \frac{Maximum Expected Current}{2^{15}} CurrentLSB=215MaximumExpectedCurrent?

數(shù)據(jù)手冊(cè)說明文檔
在這里插入圖片描述

5 程序代碼

1)驅(qū)動(dòng)程序

#include "main.h"
#include "ina219aidcnr_helper.h"uint16_t ina219_calibrationValue;
uint16_t ina219_currentDivider_mA;
float ina219_powerMultiplier_mW;/*** @brief  The IIC reads 16bit data from the specified register address.* @param  ina219 Slave configuration structure of the IIC.* @param  registerAddress Internal memory address.* @return 16 bit register data.*/
uint16_t INA219_ReadDataForRegister_16Bits(INA219_t *ina219, uint8_t registerAddress)
{uint8_t Value[2];HAL_I2C_Mem_Read(ina219->ina219_i2c, (INA219_ADDRESS<<1), registerAddress, 1, Value, 2, 1000);return ((Value[0] << 8) | Value[1]);
}/*** @brief  Writes 16 bits of data to the register.* @param  ina219 Slave configuration structure of the IIC.* @param  registerAddress Internal memory address.* @param  Value 16 bits of data to be written.*/
void INA219_WriteDataToRegister_16Bits(INA219_t *ina219, uint8_t registerAddress, uint16_t Value)
{uint8_t regAddr[2];/* High Byte */regAddr[0] = (Value >> 8) & 0xff;/* Low Byte */regAddr[1] = (Value >> 0) & 0xff;HAL_I2C_Mem_Write(ina219->ina219_i2c, (INA219_ADDRESS<<1), registerAddress, 1, (uint8_t*)regAddr, 2, 1000);
}/*** @brief  Read bus voltage.* @param  ina219 Slave configuration structure of the IIC.* @return Read voltage value, unit mV.*/
uint16_t INA219_ReadBusVoltage(INA219_t *ina219)
{uint16_t result = INA219_ReadDataForRegister_16Bits(ina219, INA219_REG_BUS_VOLTAGE);/* return mV */return ((result >> 3  ) * 4);
}/*** @brief  Read current register value.* @param  ina219 Slave configuration structure of the IIC.* @return Current register value.*/
uint16_t INA219_ReadCurrentRaw(INA219_t *ina219)
{uint16_t result = INA219_ReadDataForRegister_16Bits(ina219, INA219_REG_CURRENT);return (result);
}/*** @brief  Read current register value, unit mA.* @param  ina219 Slave configuration structure of the IIC.* @return Current value.*/
uint16_t INA219_ReadCurrent_mA(INA219_t *ina219)
{uint16_t result = INA219_ReadCurrentRaw(ina219);return (result / ina219_currentDivider_mA);
}/*** @brief  Read current register value, unit mV.* @param  ina219 Slave configuration structure of the IIC.* @return Shunt Voltage value.*/
uint16_t INA219_ReadShuntVoltage_mV(INA219_t *ina219)
{uint16_t result = INA219_ReadDataForRegister_16Bits(ina219, INA219_REG_SHUNT_VOLTAGE);/* When multiple sign bits are present, they will all be the same value.* Negative numbers are represented in 2's complement format.* Generate the 2's complement of a negative number by complementing the absolute value binary number and adding 1.* Extend the sign, denoting a negative number by setting the MSB = 1.* Extend the sign to any additional sign bits to form the 16-bit word. */if(result > MAX_SHUNT_RANGE){result = 65536 - MAX_SHUNT_RANGE;}/* Shunt voltage, unit mV. */return (result / 100);
}/*** @brief  INA219 system reset.* @param  ina219 Slave configuration structure of the IIC.*/
void INA219_Reset(INA219_t *ina219)
{INA219_WriteDataToRegister_16Bits(ina219, INA219_REG_CONFIG, INA219_CONFIG_RESET);HAL_Delay(1);
}/*** @brief Set calibration register.* @param ina219 Slave configuration structure of the IIC.* @param calibrationData Calibrated data.*/
void INA219_SetCalibration(INA219_t *ina219, uint16_t calibrationData)
{INA219_WriteDataToRegister_16Bits(ina219, INA219_REG_CALIBRATION, calibrationData);
}/*** @brief  Gets the value of the configuration register.* @param  ina219 Slave configuration structure of the IIC.* @return Configuration Register value.*/
uint16_t INA219_GetConfigInfo(INA219_t *ina219)
{uint16_t result = INA219_ReadDataForRegister_16Bits(ina219, INA219_REG_CONFIG);return result;
}/*** @brief Set configuration register.* @param ina219 Slave configuration structure of the IIC.* @param configData Configuration data.*/
void INA219_SetConfig(INA219_t *ina219, uint16_t configData)
{INA219_WriteDataToRegister_16Bits(ina219, INA219_REG_CONFIG, configData);
}/*** @brief The measurement results are calibrated. Voltage range is 16V, Current range is 8A.* @param ina219 Slave configuration structure of the IIC.*/
void INA219_SetCalibration_16V_8A(INA219_t *ina219)
{uint16_t configInfo = INA219_CONFIG_VOLTAGE_RANGE_16V |INA219_CONFIG_GAIN_2_80MV | INA219_CONFIG_BADCRES_12BIT |INA219_CONFIG_SADCRES_12BIT_1S_532US |INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS;// Current_LSB = Maximum Expected Current / 2^15 = (80 / 10) / 2^15 = 0.0002// Cal = 0.04096 / (Current_LSB / R) = 0.04096 / (0.0002A * 0.01R) = 20480 = 0x5000// Calibration Register = 20480ina219_calibrationValue = 20480;// 1mA = Current_LSB * bits = 200uA * 5bit (5 bit/mA)ina219_currentDivider_mA = 5;// 1mW = Power_LSB * bits = 4mW * 0.25bit (0.25f bit/mW)ina219_powerMultiplier_mW = 0.25f;INA219_SetCalibration(ina219, ina219_calibrationValue);INA219_SetConfig(ina219, configInfo);
}/*** @brief  Ina219 driver initialization* @param  ina219 Slave configuration structure of the IIC.* @param  i2c Pointer to a I2C_HandleTypeDef structure that contains*             the configuration information for the specified I2C.* @param  Address  Configuration data.* @return status.*/
uint8_t INA219_Init(INA219_t *ina219, I2C_HandleTypeDef *i2c, uint8_t Address)
{ina219->ina219_i2c = i2c;ina219->Address = Address;ina219_currentDivider_mA = 0;ina219_powerMultiplier_mW = 0;uint8_t ina219_isReady = HAL_I2C_IsDeviceReady(i2c, (Address << 1), 3, 2);if(ina219_isReady == HAL_OK){INA219_Reset(ina219);INA219_SetCalibration_16V_8A(ina219);return 1;}else{return 0;}
}

2)頭文件


#ifndef INA219AIDCNR_HELPER_H
#define INA219AIDCNR_HELPER_H#define INA219_ADDRESS 							        (0x40)
#define MAX_SHUNT_RANGE                     			(0x0FA0)/* Register */
#define	INA219_REG_CONFIG						        (0x00)
#define	INA219_REG_SHUNT_VOLTAGE				    	(0x01)
#define	INA219_REG_BUS_VOLTAGE					    	(0x02)
#define	INA219_REG_POWER						        (0x03)
#define	INA219_REG_CURRENT						      	(0x04)
#define	INA219_REG_CALIBRATION					    	(0x05)
//
#define INA219_CONFIG_RESET 					      	(0x8000)
//
#define INA219_CONFIG_VOLTAGE_RANGE_16V					(0x0000)      // 0-16V Range
#define INA219_CONFIG_VOLTAGE_RANGE_32V					(0x2000)      // 0-32V Range#define	INA219_CONFIG_GAIN_1_40MV				    	(0x0000)      // Gain 1, 40mV Range
#define	INA219_CONFIG_GAIN_2_80MV				    	(0x0800)      // Gain 2, 80mV Range
#define	NA219_CONFIG_GAIN_4_160MV				    	(0x1000)      // Gain 4, 160mV Range
#define	INA219_CONFIG_GAIN_8_320MV				  		(0x1800)      // Gain 8, 320mV Range#define	INA219_CONFIG_BADCRES_9BIT				      	(0x0000)  // 9-bit bus res = 0..511
#define	INA219_CONFIG_BADCRES_10BIT				      	(0x0080)  // 10-bit bus res = 0..1023
#define	INA219_CONFIG_BADCRES_11BIT				      	(0x0100)  // 11-bit bus res = 0..2047
#define	INA219_CONFIG_BADCRES_12BIT				      	(0x0180)  // 12-bit bus res = 0..4097
#define	INA219_CONFIG_BADCRES_12BIT_2S_1060US 			(0x0480)  // 2 x 12-bit bus samples averaged together
#define	INA219_CONFIG_BADCRES_12BIT_4S_2130US	  		(0x0500)  // 4 x 12-bit bus samples averaged together
#define	INA219_CONFIG_BADCRES_12BIT_8S_4260US	  		(0x0580)  // 8 x 12-bit bus samples averaged together
#define	INA219_CONFIG_BADCRES_12BIT_16S_8510US			(0x0600)  // 16 x 12-bit bus samples averaged together
#define	INA219_CONFIG_BADCRES_12BIT_32S_17MS	  		(0x0680)  // 32 x 12-bit bus samples averaged together
#define	INA219_CONFIG_BADCRES_12BIT_64S_34MS	  		(0x0700)  // 64 x 12-bit bus samples averaged together
#define	INA219_CONFIG_BADCRES_12BIT_128S_69MS	  		(0x0780)  // 128 x 12-bit bus samples averaged together#define	INA219_CONFIG_SADCRES_9BIT_1S_84US		  		(0x0000)  // 1 x 9-bit shunt sample
#define	INA219_CONFIG_SADCRES_10BIT_1S_148US	  		(0x0008)  // 1 x 10-bit shunt sample
#define	INA219_CONFIG_SADCRES_11BIT_1S_276US	  		(0x0010)  // 1 x 11-bit shunt sample
#define	INA219_CONFIG_SADCRES_12BIT_1S_532US	  		(0x0018)  // 1 x 12-bit shunt sample
#define	INA219_CONFIG_SADCRES_12BIT_2S_1060US	  		(0x0048)  // 2 x 12-bit shunt samples averaged together
#define	INA219_CONFIG_SADCRES_12BIT_4S_2130US	  		(0x0050)  // 4 x 12-bit shunt samples averaged together
#define	INA219_CONFIG_SADCRES_12BIT_8S_4260US	 	 	(0x0058)  // 8 x 12-bit shunt samples averaged together
#define	INA219_CONFIG_SADCRES_12BIT_16S_8510US			(0x0060)  // 16 x 12-bit shunt samples averaged together
#define	INA219_CONFIG_SADCRES_12BIT_32S_17MS	  		(0x0068)  // 32 x 12-bit shunt samples averaged together
#define	INA219_CONFIG_SADCRES_12BIT_64S_34MS	  		(0x0070)  // 64 x 12-bit shunt samples averaged together
#define	INA219_CONFIG_SADCRES_12BIT_128S_69MS	  		(0x0078)  // 128 x 12-bit shunt samples averaged together#define INA219_CONFIG_MODE_MASK					        0x07
#define	INA219_CONFIG_MODE_POWERDOWN			       	0x00
#define	INA219_CONFIG_MODE_SVOLT_TRIGGERED		   		0x01
#define	INA219_CONFIG_MODE_BVOLT_TRIGGERED		   		0x02
#define	INA219_CONFIG_MODE_SANDBVOLT_TRIGGERED	 		0x03
#define	INA219_CONFIG_MODE_ADCOFF				        0x04
#define	INA219_CONFIG_MODE_SVOLT_CONTINUOUS		   		0x05
#define	INA219_CONFIG_MODE_BVOLT_CONTINUOUS		   		0x06
#define	INA219_CONFIG_MODE_SANDBVOLT_CONTINUOUS  		0x07typedef struct
{I2C_HandleTypeDef 	*ina219_i2c;uint8_t				Address;
} INA219_t;uint8_t INA219_Init(INA219_t *ina219, I2C_HandleTypeDef *i2c, uint8_t Address);
uint16_t INA219_ReadBusVoltage(INA219_t *ina219);
uint16_t INA219_ReadCurrent_mA(INA219_t *ina219);
uint16_t INA219_ReadCurrent_raw(INA219_t *ina219);
uint16_t INA219_ReadShuntVoltage_mV(INA219_t *ina219);
uint16_t INA219_ReadDataForRegister_16Bits(INA219_t *ina219, uint8_t registerAddress);
uint16_t INA219_GetConfigInfo(INA219_t *ina219);void INA219_Reset(INA219_t *ina219);
void INA219_SetCalibration(INA219_t *ina219, uint16_t calibrationData);
void INA219_SetConfig(INA219_t *ina219, uint16_t configData);
void INA219_SetCalibration_16V_8A(INA219_t *ina219);
void INA219_WriteDataToRegister_16Bits(INA219_t *ina219, uint8_t registerAddress, uint16_t Value);#endif //INA219AIDCNR_HELPER_H

3) 測(cè)試代碼

int main(void)
{/* USER CODE BEGIN 1 */uint16_t vbus, vshunt, current;/* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();MX_I2C2_Init();/* USER CODE BEGIN 2 */while(!INA219_Init(&ina219, &hi2c2, INA219_ADDRESS)){}/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */vbus = INA219_ReadBusVoltage(&ina219);vshunt = INA219_ReadShuntVoltage_mV(&ina219);current = INA219_ReadCurrent_mA(&ina219);sprintf(strBuffer, "INA219 param: vbus:%d mV; current:%d mA\r\n", vbus, current);HAL_UART_Transmit(&huart1, strBuffer, strlen(strDataBuf), 0xff);UserDelay_ms(500);}
http://www.risenshineclean.com/news/62302.html

相關(guān)文章:

  • 天津自己制作網(wǎng)站網(wǎng)站新站整站排名
  • 網(wǎng)站開發(fā)網(wǎng)頁設(shè)計(jì)游戲代理加盟平臺(tái)
  • seo兼職論壇手機(jī)優(yōu)化大師官網(wǎng)
  • 怎么快速推廣網(wǎng)站萬網(wǎng)域名交易
  • 建行信用卡網(wǎng)站登錄網(wǎng)站域名查詢系統(tǒng)
  • 那個(gè)網(wǎng)站做外貿(mào)好百度大搜是什么
  • dw做的網(wǎng)站鏈接不會(huì)跳轉(zhuǎn)什么是搜索引擎優(yōu)化
  • 做期貨網(wǎng)站微營(yíng)銷平臺(tái)系統(tǒng)
  • 西寧網(wǎng)站設(shè)計(jì)制作公司品牌推廣軟文200字
  • 只做襯衫的網(wǎng)站關(guān)鍵詞采集軟件
  • 沈陽網(wǎng)站建設(shè)找哪家系統(tǒng)優(yōu)化軟件哪個(gè)好
  • 企業(yè)網(wǎng)站建設(shè)方案書范本域名批量查詢
  • 網(wǎng)站 續(xù)費(fèi)商業(yè)策劃公司十大公司
  • 網(wǎng)站后端都需要什么意思網(wǎng)站交換鏈接的常見形式
  • 企業(yè)展示型電商網(wǎng)站模板google關(guān)鍵詞規(guī)劃師
  • php和什么語言做網(wǎng)站豬肉價(jià)格最新消息
  • 在越南做網(wǎng)站需要什么排超聯(lián)賽積分榜
  • 工業(yè)做網(wǎng)站技能培訓(xùn)有哪些科目
  • 大連城市建設(shè)管理局網(wǎng)站建站公司網(wǎng)站建設(shè)
  • 自己的網(wǎng)站首頁背景怎么做最有效的宣傳方式
  • 義烏做網(wǎng)站的公司哪家好廣州seo外包
  • 桂林做網(wǎng)站網(wǎng)絡(luò)營(yíng)銷推廣方案范文
  • 完備的網(wǎng)站建設(shè)推廣做網(wǎng)站推廣一般多少錢
  • 長(zhǎng)沙小升初有什么做試卷的網(wǎng)站濟(jì)南網(wǎng)站優(yōu)化排名推廣
  • 北京做網(wǎng)站公司有哪些百度怎么優(yōu)化網(wǎng)站關(guān)鍵詞
  • ssm如何做網(wǎng)站驗(yàn)證登陸綜合型b2b電子商務(wù)平臺(tái)網(wǎng)站
  • 如何在網(wǎng)上接做網(wǎng)站的小項(xiàng)目抖音seo
  • 建設(shè)導(dǎo)航網(wǎng)站百度投訴電話人工服務(wù)總部
  • 學(xué)校門戶網(wǎng)站建設(shè)的意義怎樣做好銷售和客戶交流
  • 怎么建設(shè)網(wǎng)站臨汾撫州seo外包