all bms comunicating with nucleo board and balancing
Fork of Can_sniffer_BMS_GER by
Diff: main.cpp
- Revision:
- 32:977a1b5728e4
- Parent:
- 31:6427569cadbe
- Child:
- 33:74db6193bc6b
--- a/main.cpp Tue Oct 25 17:28:55 2016 +0000 +++ b/main.cpp Thu Oct 27 20:55:13 2016 +0000 @@ -39,27 +39,29 @@ /*************Zivan NG3-G7MICB Charger(Input 230VAC-19A;Output 96 VDC-25A)***** -FLuxograma do processo de carregamento: -(1) Primeira parte do precharge -(2) Conectar baterias -(3) Segunda parte do precharge (inicio de carga) -(4) Mensagens periodicas 0x6C1 (modulação da corrente) -(4) Carregar a 25A atepremeira celula chegar aos 4.1V =>10A -(5) Parar carregamento quando tensao de todas as celulas= 4.1V ou de uma das celulas for 4.2V -(6) Desligar carregador e desconectar bateria ???(ver manual) +Processo de carregamento: +(1) Desconectar carregador da rede AC +(2) Conectar carregador as baterias +(3) Conectar carregador da rede AC(talves mais pratico ter botao?) +(4) Carga iniciase automaticamente(?) até uma tensao maxima de 4*27=108V +(5) Para desligar carregador desconectar da rede AC Tarefas: +-ver celulas em que o balanceamento nao esta a funcionar +-ver porque as tensões nao se estão a actualizar (por a fazer display da soma das tenções) +-ver porque o charger nao responde as mensagens CAN + -acabar de formatar o codigo do BMS encurtando interrupts, programando todas as BMS's e aumentando fiabilidade, etc -ligar carregador e ver que tensoes de CAN e de saida manda cá para fora+ ver que mensagens --experimentar leer valores programados no charger com SDO messages (ver o que é um lsb) --experimentar fazer um procedimento de precharge + +Atenção: +-obrigatorio conectar e desconectar as baterias do carregador quando este esta desconectado da rede AC +-em caso de algum problema desligar primeiro ficha da redeAC do carregador e depois desconectar ficha das baterias Mensagens: (charger CAN node is 11 by default. So the Id of the message will be 0x60B in hexadecimal) -"node id" [1;20]*4. ex. if node=1then 0x280+1*4=0x284 - Charger->BMS (normally reserved id's) 0x380+node_id (period: 1,000S): actual output current, voltage and Ah 0x280+node_id (period: 4,000S): alarms flags, hardware start/stop status @@ -67,7 +69,6 @@ 0x580+node_id: answer to 0x600 SDO message BMS->Charger -0x6C1: current output modulation(simplest implmentation) 0x776: (broadcast; from BMS to chargers): current and voltage setpoints, battery detection setpoint 0x6C1: (broadcast message; from BMS to charger): only mandatory message BMS need to implement (4s timeout) 0x600+node_id: SDO messages @@ -83,7 +84,7 @@ 0x580+node_id ...remote display default node is 21... -Precharge: +Precharge(not used): (ID|Message) To charger:(0x600+node_id | 22-60-60-01-V_HI-V_LO-0-0) From charger:(0x580+node_id | 60-60-60-01-0-0-0-0) @@ -93,6 +94,21 @@ From charger:(0x580+node_id | 60-60-60-02-0-0-0-0) From charger:(0x580+node_id | 80-60-60-02-XX-XX-XX-XX) + +testar:------------------------------------ + +-ver se BMS esta realmente a actualizar tensoes comparando tensoes a ser ou nao carregadas + +test3:---------------------------- +-checkar que o balanceamento de todas as celulas estao a funcionar +-ajustar bms para carga final e amostra da soma total das tensoes + +test4:----------------------------- +-carregamento final + +test5:----------------------------- +-descarregamento ate metade da tensão p testar aquecimento do balanceamento + ******************************************************************************/ @@ -152,10 +168,18 @@ void cvprint(){ int n; + float soma=0; for(n=35; n>=0; n--){ //printf("cellsv0: %f cvprint\r\n", cellsv[0]); printf("cell: %d voltage: %f \r\n", n+1,cellsv[n]); - } + + if(cellsv[n]>=0.1) + { + soma=cellsv[n]+soma; + } + } + + printf("Total battery voltage: %f \r\n", soma); printf("\r\n""""""""""""""""""""""""""""""""""""""""""""""""\r\n"); }