LTC具温度电压和电流测量功能的多节电池电量测量芯片

上传人:z**** 文档编号:108778298 上传时间:2022-06-16 格式:DOC 页数:32 大小:129.50KB
收藏 版权申诉 举报 下载
LTC具温度电压和电流测量功能的多节电池电量测量芯片_第1页
第1页 / 共32页
LTC具温度电压和电流测量功能的多节电池电量测量芯片_第2页
第2页 / 共32页
LTC具温度电压和电流测量功能的多节电池电量测量芯片_第3页
第3页 / 共32页
资源描述:

《LTC具温度电压和电流测量功能的多节电池电量测量芯片》由会员分享,可在线阅读,更多相关《LTC具温度电压和电流测量功能的多节电池电量测量芯片(32页珍藏版)》请在装配图网上搜索。

1、LTC2943-具温度、电压和电流测量功能的多节电池电量测量芯片特点可测量累积的电池充电和放电电量3.6V至20V工作范围可适合多种电池应用14位ADC负责测量电池电压、电流和温度1%电压、电流和充电准确度50mV检测电压范围高压侧检测适合任何电池化学组成和容量的通用测量I2C/SMBus接口可配置警报输出/充电完成输入静态电流小于120卩A小外形8引脚3mmx3mmDFN圭寸装典型应用描述LTC?2943可测量便携式产品应用中的电池充电状态、电池电压、电池电流及其自身温度。其具有宽输入电压范围,因而可与高达20V的多节电池配合使用。一个精准的库仑计量器负责对流经位于电池正端子和负载或充电器之

2、间的一个检测电阻器电流进行积分运算。电池电压、电流和温度利用一个内部14位无延迟增量累加(NoLatency史)ADC来测量。测量结果被存储于可通过内置I2C/SMBus接口进行存取的内部寄存器中。LTC2943具有针对所有4种测量物理量的可编程高门限和低门限。如果超过了某个编程门限,则该器件将采用SMBus警报协议或通过在内部状态寄存器中设定一个标记来传送警报信号。LTC2943仅需采用单个低阻值检测电阻器以设定测量电流范围。应用电动工具电动自行车便携式医疗设备视频摄像机程序:#include#include#includeLinduino.h#includeLT_I2C.h#include

3、UserInterface.h#includeQuikEval_EEPROM.h#includeLTC2943.h#include/FunctionDeclarationvoidprint_title();/Printthetitleblockvoidprint_prompt();/PrintthePromptvoidstore_alert_settings();/StorethealertsettingstotheEEPROMint8_trestore_alert_settings();/ReadthealertsettingsfromEEPROM#defineAUTOMATIC_MODE_

4、DISPLAY_DELAY1000/!Thedelaybetweenreadingsinautomaticmode#defineSCAN_MODE_DISPLAY_DELAY10000/!Thedelaybetweenreadingsinscanmodeconstfloatresistor=.100;/!resistorvalueondemoboard/Errorstringconstcharack_error=Error:NoAcknowledge.CheckI2CAddress.;/!Errormessage/Globalvariablesstaticint8_tdemo_board_co

5、nnected;/!Setto1iftheboardisconnectedstaticuint8_talert_code=0;/!ValuestoredorreadfromALERTregister.Sharedbetweenloop()andrestore_alert_settings()/!InitializeLinduinovoidsetup()chardemo_name=DC1812;/!DemoBoardNamestoredinQuikEvalEEPROMquikeval_I2C_init();/!ConfiguretheEEPROMI2Cportfor100kHzquikeval_

6、I2C_connect();/!ConnectstomainI2CportSerial.begin(115200);/!InitializetheserialporttothePCprint_title();demo_board_connected=discover_demo_board(demo_name);if(demo_board_connected)print_prompt();elsedemo_board_connected=true;Serial.println(DidnotreadIDString,attemptingtoproceedanyway.nPleaseensureI2

7、ClinesofLinduinoareconnectedtotheLTCdevice);/!RepeatsLinduinoloopvoidloop()int8_tack=0;indicator/!I2Cacknowledgestaticuint8_tuser_command;command/!Theuserinputstaticuint8_tmAh_or_Coulombs=0;staticuint8_tcelcius_or_kelvin=0;staticuint16_tprescalar_mode=LTC2943_PRESCALAR_M_4096;staticuint16_tprescalar

8、Value=4096;staticuint16_talcc_mode=LTC2943_ALERT_MODE;if(demo_board_connected)thedemoboardisnotconnected/!Donothingifif(Serial.available()serialisnotavailable/!Donothingifuser_command=read_int();command/!Readuserinputif(user_command!=m)Serial.println(user_command);Serial.println();ack=0;switch(user_

9、command)appropriatesubmenu/!Printsthecase1:ack|=menu_1_automatic_mode(mAh_or_Coulombs,celcius_or_kelvin,prescalar_mode,prescalarValue,alcc_mode);/!AutomaticModebreak;case2:ack|=menu_2_scan_mode(mAh_or_Coulombs,celcius_or_kelvin,prescalar_mode,prescalarValue,alcc_mode);/!ScanModebreak;case3:ack|=menu

10、_3_manual_mode(mAh_or_Coulombs,celcius_or_kelvin,prescalar_mode,prescalarValue,alcc_mode);/!ManualModebreak;case4:ack|=menu_4_sleep_mode(mAh_or_Coulombs,prescalar_mode,prescalarValue,alcc_mode);/!SleepModebreak;case5:ack|=menu_5_shutdown_mode();/!ShutdownModebreak;case6:ack|=menu_6_settings(&mAh_or_

11、Coulombs,&celcius_or_kelvin,&prescalar_mode,&prescalarValue,&alcc_mode);/!SettingsModebreak;if(ack!=0)/!Ifackisnotrecievedprintanerror.Serial.println(ack_error);Serial.print(F(*print_prompt();/FunctionDefinitions/!Printthetitleblockvoidprint_title()Serial.println(F(n*);Serial.print(F(*DC1812ADemonst

12、rationProgram*n);Serial.print(F(*n);Serial.print(F(*ThisprogramcommunicateswiththeLTC2943MulticellCoulomb*n);Serial.print(F(*CounterfoundontheDC1812Ademoboard.*n);Serial.print(F(*Setthebaudrateto115200andselectthenewlineterminator.*n);Serial.print(F(*n);Serial.print(F(*rH/!PrintthePromptvoidprint_pr

13、ompt()Serial.print(F(n1-AutomaticModen);Serial.print(F(2-ScanModen);Serial.print(F(3-ManualModen);Serial.print(F(4-SleepModen);Serial.print(F(5-ShutdownModen);Serial.print(F(6-Settingsn);Serial.print(F(Enteracommand:);/!AutomaticMode.int8_tmenu_1_automatic_mode(int8_tmAh_or_Coulombs,int8_tcelcius_or

14、_kelvin,uint16_tprescalar_mode,uint16_tprescalarValue,uint16_talcc_mode)/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddresswrite.0=acknowledge,1=noacknowledge.int8_tLTC2943_mode;int8_tack=0;LTC2943_mode=LTC2943_AUTOMATIC_MODE|prescalar_mode|alcc_mode;/!SetthecontrolregisteroftheLTC2943toaut

15、omaticmodeaswellassetprescalarandAL#/CC#pinvalues.Serial.println();ack|=LTC2943_write(LTC2943_I2C_ADDRESS,LTC2943_CONTROL_REG,LTC2943_mode);/!WritesthesetmodetotheLTC2943controlregisterdoSerial.print(F(*nn);uint8_tstatus_code,hightemp_code,lowtemp_code;uint16_tcharge_code,current_code,voltage_code,t

16、emperature_code;ack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_ACCUM_CHARGE_MSB_REG,&charge_code);/!ReadMSBandLSBAccumulatedChargeRegistersfor16bitchargecodeack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_VOLTAGE_MSB_REG,&voltage_code);/!ReadMSBandLSBVoltageRegistersfor16bitvoltagecodea

17、ck|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_CURRENT_MSB_REG,¤t_code);/!ReadMSBandLSBCurrentRegistersfor16bitcurrentcodeack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_TEMPERATURE_MSB_REG,&temperature_code);/!ReadMSBandLSBTemperatureRegistersfor16bittemperaturecodeack|=LTC2943_re

18、ad(LTC2943_I2C_ADDRESS,LTC2943_STATUS_REG,&status_code);/!ReadStatusRegisterfor8bitstatuscodefloatcharge,current,voltage,temperature;if(mAh_or_Coulombs)charge=LTC2943_code_to_coulombs(charge_code,resistor,prescalarValue);/!ConvertchargecodetoCoulombsifCoulombunitsaredesired.Serial.print(Coulombs:);S

19、erial.print(charge,4);Serial.print(F(Cn);elsecharge=LTC2943_code_to_mAh(charge_code,resistor,prescalarValue);/!ConvertchargecodetomAhifmAhunitsaredesired.Serial.print(mAh:);Serial.print(charge,4);Serial.print(F(mAhn);current=LTC2943_code_to_current(current_code,resistor);/!ConvertcurrentcodetoAmpere

20、svoltage=LTC2943_code_to_voltage(voltage_code);/!ConvertvoltagecodetoVoltsSerial.print(F(Current);Serial.print(current,4);Serial.print(F(An);Serial.print(F(Voltage);Serial.print(voltage,4);Serial.print(F(Vn);if(celcius_or_kelvin)temperature=LTC2943_code_to_kelvin_temperature(temperature_code);/!Conv

21、erttemperaturecodetokelvinSerial.print(F(Temperature);Serial.print(temperature,4);Serial.print(F(Kn);elsetemperature=LTC2943_code_to_celcius_temperature(temperature_code);/!ConverttemperaturecodetocelciusSerial.print(F(Temperature);Serial.print(temperature,4);Serial.print(F(Cn);checkAlerts(status_co

22、de);/!CheckstatuscodeforAlerts.IfanAlerthasbeenset,printoutappropriatemessageintheSerialPrompt.Serial.print(F(m-MainMenunn);Serial.flush();delay(AUTOMATIC_MODE_DISPLAY_DELAY);/!Delayfor1sbeforenextpollingwhile(Serial.available()=false|(ack);/!ifSerialisnotavailableandanNACKhasnotbeenrecieved,keeppol

23、lingtheregisters.read_int();/clearstheSerial.availablereturn(ack);/!ScanModeint8_tmenu_2_scan_mode(int8_tmAh_or_Coulombs,int8_tcelcius_or_kelvin,uint16_tprescalar_mode,uint16_tprescalarValue,uint16_talcc_mode)/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddresswrite.0=acknowledge,1=noacknowl

24、edgeint8_tLTC2943_mode;int8_tack=0;LTC2943_mode=LTC2943_SCAN_MODE|prescalar_mode|alcc_mode;/!SetthecontrolmodeoftheLTC2943toscanmodeaswellassetprescalarandAL#/CC#pinvalues.Serial.println();ack|=LTC2943_write(LTC2943_I2C_ADDRESS,LTC2943_CONTROL_REG,LTC2943_mode);/!WritesthesetmodetotheLTC2943controlr

25、egisterdoSerial.print(F(*nn);uint8_tstatus_code;uint16_tcharge_code,current_code,voltage_code,temperature_code;ack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_ACCUM_CHARGE_MSB_REG,&charge_code);/!ReadMSBandLSBAccumulatedChargeRegistersfor16bitchargecodeack|=LTC2943_read_16_bits(LTC2943_I2C_ADD

26、RESS,LTC2943_VOLTAGE_MSB_REG,&voltage_code);/!ReadMSBandLSBVoltageRegistersfor16bitvoltagecodeack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_CURRENT_MSB_REG,¤t_code);/!ReadMSBandLSBCurrentRegistersfor16bitcurrentcodeack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_TEMPERATURE_MSB_R

27、EG,&temperature_code);/!ReadMSBandLSBTemperatureRegistersfor16bittemperaturecodeack|=LTC2943_read(LTC2943_I2C_ADDRESS,LTC2943_STATUS_REG,&status_code);/!ReadStatusRegistersfor8bitstatuscodefloatcharge,current,voltage,temperature;if(mAh_or_Coulombs)charge=LTC2943_code_to_coulombs(charge_code,resistor

28、,prescalarValue);/!ConvertchargecodetoCoulombsifCoulombunitsaredesired.Serial.print(Coulombs:);Serial.print(charge,4);Serial.print(F(Cn);elsecharge=LTC2943_code_to_mAh(charge_code,resistor,prescalarValue);/!ConvertchargecodetomAhifmAhunitsaredesired.Serial.print(mAh:);Serial.print(charge,4);Serial.p

29、rint(F(mAhn);current=LTC2943_code_to_current(current_code,resistor);/!ConvertcurrentcodetoAmperesvoltage=LTC2943_code_to_voltage(voltage_code);/!ConvertvoltagecodetoVoltsSerial.print(F(Current);Serial.print(current,4);Serial.print(F(An);Serial.print(F(Voltage);Serial.print(voltage,4);Serial.print(F(

30、Vn);if(celcius_or_kelvin)temperature=LTC2943_code_to_kelvin_temperature(temperature_code);/!ConverttemperaturecodetoKelvinifKelvinunitsaredesired.Serial.print(F(Temperature);Serial.print(temperature,4);Serial.print(F(Kn);elsetemperature=LTC2943_code_to_celcius_temperature(temperature_code);/!Convert

31、temperaturecodetoCelciusifCelciusunitsaredesired.Serial.print(F(Temperature);Serial.print(temperature,4);Serial.print(F(Cn);checkAlerts(status_code);/!CheckstatuscodeforAlerts.IfanAlerthasbeenset,printoutappropriatemessageintheSerialPromptSerial.print(F(m-MainMenunn);Serial.flush();delay(SCAN_MODE_D

32、ISPLAY_DELAY);while(Serial.available()=false|(ack);read_int();/clearstheSerial.availablereturn(ack);/!ManualModeint8_tmenu_3_manual_mode(int8_tmAh_or_Coulombs,int8_tcelcius_or_kelvin,uint16_tprescalar_mode,uint16_tprescalarValue,uint16_talcc_mode)/!returnReturnsthestateoftheacknowledgebitaftertheI2C

33、addresswrite.0=acknowledge,1=noacknowledgeint8_tLTC2943_mode;int8_tack=0;LTC2943_mode=LTC2943_MANUAL_MODE|prescalar_mode|alcc_mode;/!SetthecontrolmodeoftheLTC2943tomanualmodeaswellassetprescalarandAL#/CC#pinvalues.Serial.println();ack|=LTC2943_write(LTC2943_I2C_ADDRESS,LTC2943_CONTROL_REG,LTC2943_mo

34、de);/!WritesthesetmodetotheLTC2943controlregisterintstaleData=0;/!StaleDataCheckvariable.Whensetto1itindicatesthatstaledataisbeingreadfromthevoltage,currentandtemperatureregisters.doSerial.print(F(*nn);uint8_tstatus_code;uint16_tcharge_code,current_code,voltage_code,temperature_code;ack|=LTC2943_rea

35、d_16_bits(LTC2943_I2C_ADDRESS,LTC2943_ACCUM_CHARGE_MSB_REG,&charge_code);/!ReadMSBandLSBAccumulatedChargeRegistersfor16bitchargecodeack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_VOLTAGE_MSB_REG,&voltage_code);/!ReadMSBandLSBVoltageRegistersfor16bitvoltagecodeack|=LTC2943_read_16_bits(LTC2943

36、_I2C_ADDRESS,LTC2943_CURRENT_MSB_REG,¤t_code);/!ReadMSBandLSBCurrentRegistersfor16bitcurrentcodeack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_TEMPERATURE_MSB_REG,&temperature_code);/!ReadMSBandLSBTemperatureRegistersfor16bittemperaturecodeack|=LTC2943_read(LTC2943_I2C_ADDRESS,LTC2943_S

37、TATUS_REG,&status_code);/!ReadStatusRegistersfor8bitstatuscodefloatcharge,current,voltage,temperature;if(mAh_or_Coulombs)charge=LTC2943_code_to_coulombs(charge_code,resistor,prescalarValue);/!ConvertchargecodetoCoulombsifCoulombunitsaredesired.Serial.print(Coulombs:);Serial.print(charge,4);Serial.pr

38、int(F(Cn);elsecharge=LTC2943_code_to_mAh(charge_code,resistor,prescalarValue);/!ConvertchargecodetomAhifmAhunitsaredesired.Serial.print(mAh:);Serial.print(charge,4);Serial.print(F(mAhn);current=LTC2943_code_to_current(current_code,resistor);/!ConvertcurrentcodetoAmperesvoltage=LTC2943_code_to_voltag

39、e(voltage_code);/!ConvertvoltagecodetoVoltsSerial.print(F(Current);Serial.print(current,4);Serial.print(F(A);if(staleData)Serial.print(F(*StaleData*n);/!IfStaledataisinsidetheregisterafterinitialsnapshot,PrintStaleDatamessage.elseSerial.println();Serial.print(F(Voltage);Serial.print(voltage,4);Seria

40、l.print(F(V);if(staleData)Serial.print(F(*StaleData*n);/!IfStaledataisinsidetheregisterafterinitialsnapshot,PrintStaleDatamessage.elseSerial.println();if(celcius_or_kelvin)temperature=LTC2943_code_to_kelvin_temperature(temperature_code);/!ConverttemperaturecodetoKelvinifKelvinunitsaredesired.Serial.

41、print(F(Temperature);Serial.print(temperature,4);elsetemperature=LTC2943_code_to_celcius_temperature(temperature_code);/!ConverttemperaturecodetoCelciusifCelciusunitsaredesired.Serial.print(F(Temperature);Serial.print(temperature,4);Serial.print(F(C);if(staleData)Serial.print(F(*StaleData*n);elseSer

42、ial.println();checkAlerts(status_code);/!CheckstatuscodeforAlerts.IfanAlerthasbeenset,printoutappropriatemessageintheSerialPromptSerial.print(F(m-MainMenunn);staleData=1;Serial.flush();delay(AUTOMATIC_MODE_DISPLAY_DELAY);while(Serial.available()=false|(ack);read_int();/clearstheSerial.availableretur

43、n(ack);/!SleepModeint8_tmenu_4_sleep_mode(int8_tmAh_or_Coulombs,uint16_tprescalar_mode,uint16_tprescalarValue,uint16_talcc_mode)/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddresswrite.0=acknowledge,1=noacknowledgeint8_tLTC2943_mode;int8_tack=0;LTC2943_mode=LTC2943_SLEEP_MODE|prescalar_mode

44、|alcc_mode;/!SetthecontrolmodeoftheLTC2943tosleepmodeaswellassetprescalarandAL#/CC#pinvalues.Serial.println();ack|=LTC2943_write(LTC2943_I2C_ADDRESS,LTC2943_CONTROL_REG,LTC2943_mode);/!WritesthesetmodetotheLTC2943controlregisterdoSerial.print(F(*nn);delay(100);uint8_tstatus_code;uint16_tcharge_code;

45、ack|=LTC2943_read_16_bits(LTC2943_I2C_ADDRESS,LTC2943_ACCUM_CHARGE_MSB_REG,&charge_code);/!ReadMSBandLSBAccumulatedChargeRegistersfor16bitchargecodeack|=LTC2943_read(LTC2943_I2C_ADDRESS,LTC2943_STATUS_REG,&status_code);/!ReadStatusRegistersfor8bitstatuscodefloatcharge;if(mAh_or_Coulombs)charge=LTC29

46、43_code_to_coulombs(charge_code,resistor,prescalarValue);/!ConvertchargecodetoCoulombsifCoulombunitsaredesired.Serial.print(charge,4);Serial.print(F(Cn);elsecharge=LTC2943_code_to_mAh(charge_code,resistor,prescalarValue);/!ConvertchargecodetomAhifmAhunitsaredesired.Serial.print(mAh:);Serial.print(ch

47、arge,4);Serial.print(F(mAhn);Serial.print(F(Current);Serial.print(F(ADCSleep.n);Serial.print(F(Voltage);Serial.print(F(ADCSleep.n);Serial.print(F(Temperature);Serial.print(F(ADCSleep.n);Serial.print(F(m-MainMenunn);checkAlerts(status_code);Serial.flush();delay(AUTOMATIC_MODE_DISPLAY_DELAY);while(Ser

48、ial.available()=false|(ack);read_int();/clearstheSerial.availablereturn(ack);/!ShutdownModeint8_tmenu_5_shutdown_mode()/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddresswrite.0=acknowledge,1=noacknowledgeint8_tack=0;ack|=LTC2943_write(LTC2943_I2C_ADDRESS,LTC2943_CONTROL_REG,LTC2943_SHUTDOW

49、N_MODE);/!SetstheLTC2943intoshutdownmodeSerial.print(LTC2943HasBeenShutDownn);return(ack);/!SettingsMenuint8_tmenu_6_settings(uint8_t*mAh_or_Coulombs,uint8_t*celcius_or_kelvin,uint16_t*prescalar_mode,uint16_t*prescalarValue,uint16_t*alcc_mode)/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddr

50、esswrite.0=acknowledge,1=noacknowledgeint8_tack=0;int8_tuser_command;doSerial.print(F(*nn);Serial.print(F(1-SetAlertThresholdsn);Serial.print(F(2-SetPrescalarValuen);Serial.print(F(3-SetAL#/CC#PinStaten);Serial.print(F(4-SetUnitsn);Serial.print(F(m-MainMenunn);Serial.print(F(Enteracommand:);user_com

51、mand=read_int();if(user_command=m)Serial.println(m);elseSerial.println(user_command);Serial.println();switch(user_command)case1:ack|=menu_6_settings_menu_1_set_alert_thresholds();/!SettingsMenutosetAlertThresholdsbreak;case2:ack|=menu_6_settings_menu_2_set_prescalar_values(prescalar_mode,prescalarVa

52、lue);/!SettingsMenutosetPrescalarValuesbreak;case3:ack|=menu_6_alert_menu_3_set_allcc_state(alcc_mode);/!SettingsMenutosetAL#/CC#modebreak;case4:ack|=menu_6_alert_menu_4_set_units(mAh_or_Coulombs,celcius_or_kelvin);/!SettingsMenutosetTemperatureandChargeUnitsbreak;default:if(user_command!=m)Serial.p

53、rintln(IncorrectOption);break;while(!(user_command=m)|(ack);return(ack);/!AlertThresholdMenuint8_tmenu_6_settings_menu_1_set_alert_thresholds()/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddresswrite.0=acknowledge,1=noacknowledgeint8_tack=0;int8_tuser_command;doSerial.print(F(*nn);Serial.pr

54、int(F(1-SetChargeThresholdsn);Serial.print(F(2-SetVoltageThresholdsn);Serial.print(F(3-SetCurrentThresholdsn);Serial.print(F(4-SetTemperatureThresholdsn);Serial.print(F(m-MainMenunn);Serial.print(F(Enteracommand:);user_command=read_int();if(user_command=m)Serial.println(m);elseSerial.println(user_co

55、mmand);Serial.println();switch(user_command)case1:ack|=menu_6_alert_menu_1_set_charge_thresholds();/!SetMaxandMinChargeThresholds.TheACRchargelsbsizechangeswithrespecttotheprescalarandsenseresistorvalue.Duetothisvariability,forthepurposeofthisdemoentervaluesinhexadecimal.break;case2:ack|=menu_6_aler

56、t_menu_2_set_voltage_thresholds();/!SetMaxandMinVoltageThresholds.EnterValuesinVoltsbreak;case3:ack|=menu_6_alert_menu_3_set_current_thresholds();/!SetMaxandMinCurrentThresholds.EnterValuesinAmperes.break;case4:ack|=menu_6_alert_menu_4_set_temperature_thresholds();/!SetMaxandMinTemperatureThresholds

57、.EnterValuesinCelcius.break;default:if(user_command!=m)Serial.println(IncorrectOption);break;while(!(user_command=m)|(ack);return(ack);/!SetChargeThresholdFunctionint8_tmenu_6_alert_menu_1_set_charge_thresholds()/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddresswrite.0=acknowledge,1=noackn

58、owledgeint8_tack=0;Serial.print(F(EnterRAWMaxChargeThreshold:);uint16_tmax_charge_threshold;max_charge_threshold=read_int();/!ReaduserenteredvalueSerial.println(max_charge_threshold);/!ack|=LTC2943_write_16_bits(LTC2943_I2C_ADDRESS,LTC2943_CHARGE_THRESH_HIGH_MSB_REG,max_charge_threshold);writeuseren

59、teredvaluetoHIGHthresholdregisterSerial.print(F(EnterRAWMinChargeThreshold:);floatmin_charge_threshold;min_charge_threshold=read_int();/!ReaduserenteredvalueSerial.println(min_charge_threshold);ack|=LTC2943_write_16_bits(LTC2943_I2C_ADDRESS,LTC2943_CHARGE_THRESH_LOW_MSB_REG,min_charge_threshold);/!w

60、riteuserenteredvaluetoHIGHthresholdregisterreturn(ack);/!SetVoltageThresholdsint8_tmenu_6_alert_menu_2_set_voltage_thresholds()/!returnReturnsthestateoftheacknowledgebitaftertheI2Caddresswrite.0=acknowledge,1=noacknowledgeint8_tack=0;Serial.print(F(EnterMaxVoltageThreshold:);floatmax_voltage_thresho

61、ld;max_voltage_threshold=read_float();/!ReaduserenteredvalueSerial.print(max_voltage_threshold,3);Serial.println(V);uint16_tmax_voltage_threshold_code=max_voltage_threshold*(0xFFFF)/(LTC2943_FULLSCALE_VOLTAGE);/!Convertuserenteredvoltageintoadccode.ack|=LTC2943_write_16_bits(LTC2943_I2C_ADDRESS,LTC2943_VOLTAGE_THRESH_HIGH

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!