LTC2943-具温度,电压和电流测量功能的多节电池电量测量芯片
-
资源ID:102160831
资源大小:188KB
全文页数:36页
- 资源格式: DOC
下载积分:15金贝
快捷下载
账号登录下载
微信登录下载
微信扫一扫登录
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
|
下载须知 | 常见问题汇总
|
LTC2943-具温度,电压和电流测量功能的多节电池电量测量芯片
/'LTC2943 - 具温度、电压和电流测量功能的多节电池电量测量芯片特点· 可测量累积的电池充电和放电电量· 3.6V 至 20V 工作范围可适合多种电池应用· 14 位 ADC 负责测量电池电压、电流和温度· 1% 电压、电流和充电准确度· ±50mV 检测电压范围· 高压侧检测· 适合任何电池化学组成和容量的通用测量· I2C / SMBus 接口· 可配置警报输出 / 充电完成输入· 静态电流小于 120A· 小外形 8 引脚 3mm x 3mm DFN 封装典型应用描述LTC®2943 可测量便携式产品应用中的电池充电状态、电池电压、电池电流及其自身温度。其具有宽输入电压范围,因而可与高达 20V 的多节电池配合使用。一个精准的库仑计量器负责对流经位于电池正端子和负载或充电器之间的一个检测电阻器电流进行积分运算。电池电压、电流和温度利用一个内部 14位无延迟增量累加 (No Latency TM) ADC 来测量。测量结果被存储于可通过内置 I2C / SMBus 接口进行存取的内部寄存器中。LTC2943 具有针对所有 4 种测量物理量的可编程高门限和低门限。如果超过了某个编程门限,则该器件将采用 SMBus 警报协议或通过在内部状态寄存器中设定一个标记来传送警报信号。LTC2943 仅需采用单个低阻值检测电阻器以设定测量电流范围。应用· 电动工具· 电动自行车· 便携式医疗设备· 视频摄像机程序:#include <Arduino.h>#include <stdint.h>#include "Linduino.h"#include "LT_I2C.h"#include "UserInterface.h"#include "QuikEval_EEPROM.h"#include "LTC2943.h"#include <Wire.h>/ Function Declarationvoid print_title(); / Print the title blockvoid print_prompt(); / Print the Promptvoid store_alert_settings(); / Store the alert settings to the EEPROMint8_t restore_alert_settings(); / Read the alert settings from EEPROM#define AUTOMATIC_MODE_DISPLAY_DELAY 1000 /!< The delay between readings in automatic mode#define SCAN_MODE_DISPLAY_DELAY 10000 /!< The delay between readings in scan modeconst float resistor = .100; /!< resistor value on demo board/ Error stringconst char ack_error = "Error: No Acknowledge. Check I2C Address." /!< Error message/ Global variablesstatic int8_t demo_board_connected; /!< Set to 1 if the board is connectedstatic uint8_t alert_code = 0; /!< Value stored or read from ALERT register. Shared between loop() and restore_alert_settings()/! Initialize Linduinovoid setup() char demo_name = "DC1812" /! Demo Board Name stored in QuikEval EEPROM quikeval_I2C_init(); /! Configure the EEPROM I2C port for 100kHz quikeval_I2C_connect(); /! Connects to main I2C port Serial.begin(115200); /! Initialize the serial port to the PC print_title(); demo_board_connected = discover_demo_board(demo_name); if (demo_board_connected) print_prompt(); else demo_board_connected = true;Serial.println("Did not read ID String, attempting to proceed anyway.nPlease ensure I2C lines of Linduino are connected to the LTC device"); /! Repeats Linduino loopvoid loop() int8_t ack = 0; /! I2C acknowledge indicator static uint8_t user_command; /! The user input command static uint8_t mAh_or_Coulombs = 0; static uint8_t celcius_or_kelvin = 0; static uint16_t prescalar_mode = LTC2943_PRESCALAR_M_4096; static uint16_t prescalarValue = 4096; static uint16_t alcc_mode = LTC2943_ALERT_MODE; if (demo_board_connected) /! Do nothing if the demo board is not connected if (Serial.available() /! Do nothing if serial is not available user_command = read_int(); /! Read user input command if (user_command != 'm') Serial.println(user_command); Serial.println(); ack = 0; switch (user_command) /! Prints the appropriate submenu case 1: ack |= menu_1_automatic_mode(mAh_or_Coulombs, celcius_or_kelvin, prescalar_mode, prescalarValue, alcc_mode); /! Automatic Mode break; case 2: ack |= menu_2_scan_mode(mAh_or_Coulombs, celcius_or_kelvin, prescalar_mode, prescalarValue, alcc_mode); /! Scan Mode break; case 3: ack |= menu_3_manual_mode(mAh_or_Coulombs, celcius_or_kelvin, prescalar_mode, prescalarValue, alcc_mode); /! Manual Mode break; case 4: ack |= menu_4_sleep_mode(mAh_or_Coulombs, prescalar_mode, prescalarValue, alcc_mode); /! Sleep Mode break; case 5: ack |= menu_5_shutdown_mode(); /! Shutdown Mode break; case 6: ack |= menu_6_settings(&mAh_or_Coulombs, &celcius_or_kelvin, &prescalar_mode, &prescalarValue, &alcc_mode); /! Settings Mode break; if (ack != 0) /! If ack is not recieved print an error. Serial.println(ack_error); Serial.print(F("*"); print_prompt(); / Function Definitions/! Print the title blockvoid print_title() Serial.println(F("n*"); Serial.print(F("* DC1812A Demonstration Program