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