LTC具溫度電壓和電流測量功能的多節(jié)電池電量測量芯片_第1頁
LTC具溫度電壓和電流測量功能的多節(jié)電池電量測量芯片_第2頁
LTC具溫度電壓和電流測量功能的多節(jié)電池電量測量芯片_第3頁
LTC具溫度電壓和電流測量功能的多節(jié)電池電量測量芯片_第4頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、LTC2943-具溫度、電壓和電流測量功能的多節(jié)電池電量測量芯片特點可測量累積的電池充電和放電電量至 20V工作范圍可適合多種電池應用14 位 ADC 負責測量電池電壓、電流和溫度1% 電壓、電流和充電準確度± 50mV 檢測電壓范圍高壓側檢測適合任何電池化學組成和容量的通用測量2I C / SMBus接口可配置警報輸出/充電完成輸入靜態(tài)電流小于120A小外形 8引腳 3mm x 3mm DFN 封裝典型應用描述LTC? 2943?可測量便攜式產品應用中的電池充電狀態(tài)、電池電壓、電池電流及其自身溫度。其具有寬輸入電壓范圍,因而可與高達?20V?的多節(jié)電池配合使用。一個精準的庫侖計量器

2、負責對流經位于電池正端子和負載或充電器之間的一個檢測電阻器電流進行積分運算。電池電壓、電流和溫度利用一個內部?14 位無延遲增量累加 ?(No LatencyTM) ADC? 來測量。測量結果被存儲于可通過內置?I 2C / SMBus? 接口進行存取的內部寄存器中。LTC2943?具有針對所有?4?種測量物理量的可編程高門限和低門限。如果超過了某個編程門限,則該器件將采用 ?SMBus?警報協(xié)議或通過在內部狀態(tài)寄存器中設定一個標記來傳送警報信號。LTC2943?僅需采用單個低阻值檢測電阻器以設定測量電流范圍。應用電動工具電動自行車便攜式醫(yī)療設備視頻攝像機程序:#include <>

3、;#include <>#include ""#include ""#include ""#include ""#include ""#include <>00;Check I2C Address." Shared between loop()and restore_alert_settings().nPlease ensure I2C lines of Linduino are connected to the LTC device");(ack_e

4、rror);(F("*");print_prompt();*n");(F("* Set the baud rate to 115200 and select the newline terminator.*n");(F("* *n"); (F("*n");int8_t menu_1_automatic_mode(int8_t mAh_or_Coulombs, int8_tcelcius_or_kelvin ,uint16_t prescalar_mode, uint16_t prescalarValue,

5、 uint16_t alcc_mode)0=acknowledge, 1=no 8_t LTC2943_mode;int8_t ack = 0;LTC2943_mode = LTC2943_AUTOMATIC_MODE|prescalar_mode|alcc_mode ;();ack |= LTC2943_write(LTC2943_I2C_ADDRESS, LTC2943_CONTROL_REG, LTC2943_mode); ("Coulombs: ");(charge, 4);(F(" Cn");elsecharge

6、= LTC2943_code_to_mAh(charge_code, resistor, prescalarValue); ("mAh: ");(charge, 4);(F(" mAhn");current = LTC2943_code_to_current(current_code, resistor);If an Alert has been set, print out appropriate message in the Serial Prompt.(F("m-Main Menunn");();delay(AUTOMATIC_

7、MODE_DISPLAY_DELAY); read_int(); 0=acknowledge, 1=no acknowledgeint8_t LTC2943_mode;int8_t ack = 0;LTC2943_mode = LTC2943_SCAN_MODE|prescalar_mode|alcc_mode ;();ack |= LTC2943_write(LTC2943_I2C_ADDRESS, LTC2943_CONTROL_REG, LTC2943_mode); ("Coulombs: ");(charge, 4);(F(" Cn");else

8、charge = LTC2943_code_to_mAh(charge_code, resistor, prescalarValue); ("mAh: ");(charge, 4);(F(" mAhn");current = LTC2943_code_to_current(current_code, resistor); (F("Temperature ");(temperature, 4);(F(" Kn");elsetemperature = LTC2943_code_to_celcius_temperatur

9、e(temperature_code); (F("Temperature ");(temperature, 4);(F(" Cn");checkAlerts(status_code);If an Alert has been set, print out appropriate message in the Serial Prompt (F("m-Main Menunn");();delay(SCAN_MODE_DISPLAY_DELAY);while () = false | (ack);read_int(); 0=acknowle

10、dge, 1=no acknowledgeint8_t LTC2943_mode;int8_t ack = 0;LTC2943_mode = LTC2943_MANUAL_MODE|prescalar_mode|alcc_mode ;();ack |= LTC2943_write(LTC2943_I2C_ADDRESS, LTC2943_CONTROL_REG, LTC2943_mode); When set to 1 it indicates that stale data is being read from the voltage,current and temperature regi

11、sters.do(F("*nn");uint8_t status_code;uint16_t charge_code, current_code, voltage_code, temperature_code;ack |= LTC2943_read_16_bits(LTC2943_I2C_ADDRESS, LTC2943_ACCUM_CHARGE_MSB_REG, &charge_code);("Coulombs: ");(charge, 4);(F(" Cn");elsecharge = LTC2943_code_to_mA

12、h(charge_code, resistor, prescalarValue); ("mAh: ");(charge, 4);(F(" mAhn");current = LTC2943_code_to_current(current_code, resistor); else ("");(F("Voltage ");(voltage, 4);(F(" V");if(staleData) (F("* Stale Data *n");else ("");if

13、(celcius_or_kelvin)temperature = LTC2943_code_to_kelvin_temperature(temperature_code); (F("Temperature ");(temperature, 4);(F(" K");elsetemperature = LTC2943_code_to_celcius_temperature(temperature_code); (F("Temperature ");(temperature, 4);(F(" C");if(staleDa

14、ta) (F("* Stale Data *n");else ("");checkAlerts(status_code);If an Alert has been set, print out appropriate message in the Serial Prompt (F("m-Main Menunn");staleData = 1;();delay(AUTOMATIC_MODE_DISPLAY_DELAY);while () = false | (ack);read_int(); 0=acknowledge, 1=no ac

15、knowledgeint8_t LTC2943_mode;int8_t ack = 0;LTC2943_mode = LTC2943_SLEEP_MODE|prescalar_mode|alcc_mode ; ();ack |= LTC2943_write(LTC2943_I2C_ADDRESS, LTC2943_CONTROL_REG, LTC2943_mode); ("Coulombs: ");(charge, 4);(F(" Cn");elsecharge = LTC2943_code_to_mAh(charge_code, resistor, p

16、rescalarValue); ("mAh: ");(charge, 4);(F(" mAhn");(F("Current ");(F("ADC Sleep.n");(F("Voltage ");(F("ADC Sleep.n");(F("Temperature ");(F(" ADC Sleep.n");(F("m-Main Menunn");checkAlerts(status_code);();delay(AU

17、TOMATIC_MODE_DISPLAY_DELAY);while () = false | (ack);read_int(); 0=acknowledge, 1=no acknowledgeint8_t ack = 0;ack |= LTC2943_write(LTC2943_I2C_ADDRESS, LTC2943_CONTROL_REG,LTC2943_SHUTDOWN_MODE);0=acknowledge, 1=no acknowledgeint8_t ack = 0;int8_t user_command;do(F("*nn");(F("1-Set A

18、lert Thresholdsn");(F("2-Set Prescalar Valuen");(F("3-Set AL#/CC# Pin Staten");(F("4-Set Unitsn");(F("m-Main Menunn");(F("Enter a command: ");user_command = read_int();if (user_command = 'm')("m");else(user_command);();switch (

19、user_command)case 1:ack |= menu_6_settings_menu_1_set_alert_thresholds(); 0=acknowledge, 1=no acknowledgeint8_t ack = 0;int8_t user_command;do(F("*nn");(F("1-Set Charge Thresholdsn");(F("2-Set Voltage Thresholdsn");(F("3-Set Current Thresholdsn");(F("4-Se

20、t Temperature Thresholdsn");(F("m-Main Menunn");(F("Enter a command: ");user_command = read_int();if (user_command = 'm')("m");else(user_command);();switch (user_command)case 1:ack |= menu_6_alert_menu_1_set_charge_thresholds();The ACR charge lsb size chang

21、es with respect to the prescalar and sense resistor value. Due to this variability, for the purpose of this demo enter values in hexadecimal.break;case 2:ack |= menu_6_alert_menu_2_set_voltage_thresholds(); Enter Values in Voltsbreak;case 3:ack |= menu_6_alert_menu_3_set_current_thresholds(); Enter

22、Values in Amperes.break;case 4:ack |= menu_6_alert_menu_4_set_temperature_thresholds(); Enter Values in Celcius.break;default:if (user_command != 'm')("Incorrect Option");break;while (!(user_command = 'm') | (ack);return(ack);0=acknowledge, 1=no acknowledgeint8_t ack = 0;(F

23、("Enter RAW Max Charge Threshold:");uint16_t max_charge_threshold;max_charge_threshold = read_int();0=acknowledge, 1=no acknowledgeint8_t ack = 0;(F("Enter Max Voltage Threshold:");float max_voltage_threshold;max_voltage_threshold = read_float();ack |= LTC2943_write_16_bits(LTC29

24、43_I2C_ADDRESS,LTC2943_VOLTAGE_THRESH_HIGH_MSB_REG, max_voltage_threshold_code);ack |= LTC2943_write_16_bits(LTC2943_I2C_ADDRESS,LTC2943_VOLTAGE_THRESH_LOW_MSB_REG, min_voltage_threshold_code);0=acknowledge, 1=no acknowledgeint8_t ack = 0;(F("Enter Max Current Threshold:");float max_curren

25、t_threshold;max_current_threshold = read_float();ack |= LTC2943_write_16_bits(LTC2943_I2C_ADDRESS,LTC2943_CURRENT_THRESH_HIGH_MSB_REG, max_current_threshold_code);ack |=LTC2943_write_16_bits(LTC2943_I2C_ADDRESS, LTC2943_CURRENT_THRESH_LOW_MSB_REG, min_current_threshold_code); 0=acknowledge, 1=no ack

26、nowledgeint8_t ack = 0;(F("Enter Max Temperature Threshold in Celcius:");float max_temperature_threshold;max_temperature_threshold = read_float();ack |= LTC2943_write_16_bits(LTC2943_I2C_ADDRESS,LTC2943_TEMPERATURE_THRESH_HIGH_REG, max_temperature_threshold_code);ack|= LTC2943_write_16_bit

27、s(LTC2943_I2C_ADDRESS,LTC2943_TEMPERATURE_THRESH_LOW_REG, min_temperature_threshold_code);0=acknowledge, 1=no acknowledgeint8_t ack = 0;int8_t user_command;do(F("*nn");(F("1-Set Prescalar M = 1n");(F("2-Set Prescalar M = 4n");(F("3-Set Prescalar M = 16n");(F(&

28、quot;4-Set Prescalar M = 64n");(F("5-Set Prescalar M = 256n");(F("6-Set Prescalar M = 1024n");(F("7-Set Prescalar M = 4096n");(F("m-Main Menunn");(F("Enter a command: ");user_command = read_int();if (user_command = 'm')("m");el

29、se(user_command);();switch (user_command)case 1:*prescalar_mode = LTC2943_PRESCALAR_M_1; 0=acknowledge, 1=no acknowledgeint8_t ack = 0;int8_t user_command;do(F("*nn");(F("1-Enable Alert Moden");(F("2-Enable Charge Complete Moden");(F("3-Disable AL#/CC# Pinn");

30、(F("m-Main Menunn");(F("Enter a command: ");user_command = read_int();if (user_command = 'm')("m");else(user_command);();switch (user_command)case 1:*alcc_mode = LTC2943_ALERT_MODE;(F("nAL#/CC# Pin Disabledn");break;default:if (user_command != 'm&#

31、39;)("Incorrect Option");break;while (!(user_command = 'm') | (ack);return(ack);0=acknowledge, 1=no acknowledgeint8_t ack = 0;int8_t user_command;do(F("*nn");(F("1-Set Charge Units to mAhn");(F("2-Set Charge Units to Coulombsn");(F("3-Set Temperat

32、ure Units to Celciusn");(F("4-Set Temperature Units to Kelvinn");(F("m-Main Menunn");(F("Enter a command: ");user_command = read_int();if (user_command = 'm')("m");else(user_command);();switch (user_command)case 1:*mAh_or_Coulombs = 0;(F("nCh

33、arge Units Set to mAhn");break;case 2:*mAh_or_Coulombs = 1;(F("nCharge Units Set to Coulombsn");break;case 3:*celcius_or_kelvin = 0;(F("nTemperature Units Set to Celciusn");break;case 4:*celcius_or_kelvin = 1;(F("nTemperature Units Set to Kelvinn");break;default:if (user_command != 'm')("Incorrect Option");break;while (!(user_command =

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論