BMS從機(jī)開(kāi)發(fā)板 /凌力爾特LTC6804/6811開(kāi)發(fā)板BMS從機(jī)電池管理評(píng)估板/儲(chǔ)能BMS從機(jī)采集板
采集板帶電源隔離/SPI隔離通信方案
最重要的事說(shuō)三遍!!!
免費(fèi)提供技術(shù)支持!!!
免費(fèi)提供技術(shù)支持!!!
免費(fèi)提供技術(shù)支持!!!
程序移植,調(diào)試,測(cè)試均可以。
程序采用STM32F103 用SPI驅(qū)動(dòng)
如只需要資料可私信樓主
提供技術(shù)支持,樓主是搞技術(shù)的所以互相學(xué)習(xí)互相進(jìn)步
功能:SPI/菊花鏈通信
1、電壓采集功能(精度1mv以?xún)?nèi),高精度四位半萬(wàn)用表測(cè)試結(jié)果)
2、GPIO1~5電壓采集功能(INA282雙向高精度電流采集,精度10ma)
3、輔助測(cè)量功能(總壓,內(nèi)部溫度,內(nèi)部基準(zhǔn)電壓等等)
4、斷線(xiàn)自檢功能(判斷哪一節(jié)電池?cái)嗑€(xiàn)并輸出故障電池節(jié)號(hào))
5、電流采集功能(高精度雙向電流采集芯片,軟件集成卡爾曼濾波,中值濾波等濾波算法)
6、IIC(GPIO4-GPIO5)通信功能(使用LTC6804讀寫(xiě)EEPROM----24C02,無(wú)需主控編程即可存儲(chǔ)數(shù)據(jù))可以用來(lái)保存采集板的配置信息。該方案網(wǎng)上資料無(wú),獨(dú)此一家開(kāi)源
7、被動(dòng)均衡功能(設(shè)置壓差閾值并找出最高電壓開(kāi)啟均衡)可設(shè)置0~1000mv任意值均衡
8、溫度采集功能(精度0 .1°C)
9、有上位機(jī),顯示檢測(cè)的數(shù)據(jù),如圖5(有通信協(xié)議說(shuō)明)可以開(kāi)源上位機(jī);
10、可以增加無(wú)線(xiàn)通信,將數(shù)據(jù)通過(guò)無(wú)限模塊上傳到上位機(jī);
11、可聯(lián)系樓主配置一套充放電控制套裝(增加充電器,充放電控制板,電子負(fù)載儀,若干線(xiàn))
持續(xù)更新:20231223
資料:測(cè)試上位機(jī),采集源碼(主控STM32F103 SPI通信),原理圖,BOM,源碼解析,電量soc算法代碼及解析,斷線(xiàn)檢測(cè)代碼及解析等等
服務(wù):作者熱心詳細(xì)解答技術(shù)問(wèn)題
注:學(xué)習(xí)技術(shù)交流使用,個(gè)人版權(quán),未經(jīng)授權(quán)不允許商用!
部分main程序 以及注解
int main(void) { float temp[2] = {0}; u16 adcx; float adc_v; HSE_SetSysClock(RCC_PLLMul_9); //則設(shè)置系統(tǒng)時(shí)鐘為:8MHZ * 9 = 72MHZ delay_init(); //延時(shí)函數(shù)初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置NVIC中斷分組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí) LED_Init(); //LED端口初始化 KEY_Init(); //按鍵IO初始化 IO_CTRL_Config(); //系統(tǒng)的一些IO口設(shè)置; Adc_Init(); //ADC初始化 uart_init(115200); //串口初始化為115200 CAN_Mode_Init(CAN_SJW_1tq,CAN_BS2_8tq,CAN_BS1_9tq,4,CAN_Mode_Normal);//CAN初始化環(huán)回模式,波特率500Kbps LTC6804_initialize();//LTC6804初始化配置 標(biāo)準(zhǔn)模式 不允許放電 電壓所有單元 GPIO所有通道 //SPI2_Init(); //硬件SPI Simulated_SPI_IoInit(); //軟件SPI while(1) { LTC6804_adcv(); //Starts cell voltage conversion 開(kāi)始電池電壓轉(zhuǎn)換 LTC6804_rdcv(0,cell_zu,cell_codes); //6804獲取12節(jié)電池電壓 LTC6804_adax(); //Start an GPIO Conversion 啟動(dòng)GPIO轉(zhuǎn)換 LTC6804_rdaux(0,cell_zu,aux_codes); //獲取GPIO1-5的數(shù)據(jù)+VREF2 0 讀回所有輔助寄存器 LTC6804_ADSTAT(); //啟動(dòng)狀態(tài)組ADC轉(zhuǎn)換,濾波模式 LTC6804_rdstat(0,cell_zu,stat_codes); //測(cè)量?jī)?nèi)部器件參數(shù) (ADSTAT 命令) Get_Cell_Voltage(); //獲取電池電壓四位整數(shù) mv Get_Cell_Voltage_Max_Min(); //最大電壓、最小電壓 Get_Update_ALL_Data(); //各項(xiàng)相加求總壓 / 寄存器讀取 Get_SOC(); //目前根據(jù)電壓取SOC 后面根據(jù)電流積分法 Get_BQ_Current(); //電流檢測(cè) adow_test() ; //斷線(xiàn)檢測(cè) BMS_STA(); //充放電狀態(tài)檢測(cè) //***************溫度*********************** temp[0] = Get_Tempture(aux_codes[0][1]); temp[1] = Get_Tempture(aux_codes[0][2]); shang[38]=temp[0]; can_buf7[2]=(char)shang[38]; Balance_task(300); //計(jì)算電池電壓MAX 的標(biāo)號(hào)并開(kāi)啟均衡 200mv 均衡開(kāi)啟閾值 charge_management(); //按鍵充放電,并檢測(cè)過(guò)沖過(guò)放 RECEICE_DATA_DEAL(); //串口1接收上位機(jī)數(shù)據(jù)處理 Usart_Send_Array(USART1, shang,50); //TTL上傳數(shù)據(jù) CAN_SEND(); // adcx=Get_Adc_Average(ADC_Channel_5,10); // printf(" ADC:%drn",adcx); //打印ADC的值 // adc_v=(float)adcx*(3.3/4096); // printf(" 電壓值:%f Vrn",adc_v); //打印電壓值 LED0 = ~ LED0; //printf("**************作者:小高霸氣********************** rn"); delay_ms(100); } } ``` 審核編輯 黃宇
-
電池管理
+關(guān)注
關(guān)注
27文章
551瀏覽量
42940 -
bms
+關(guān)注
關(guān)注
106文章
980瀏覽量
65760
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論