A public repository for BMS algorithms for a NUCLEO BOARD.

Dependencies:   mbed

Hi Everyone!

Welcome to this repository from Howey's Research Group at the University of Oxford.

The code published here incorporates BMS algorithms for diagnosis functions such as SOC, SOH and Power estimation on a Kokam 53Ah Li-ion battery. This code was designed to work with a NUCLEO F401-RE board and to be tested with a dSPACE HIL Simulator. A short guide on how the set up works is available at https://bitbucket.org/ff95/bms .

The code is made up of three key parts. "Headers" and "Source" folders and the "main.cpp" file. As the code was generated by converting a Simulink model ( available on the BitBucket page), the headers and source code files generated by the conversion are in the corresponding "Headers" and "Source" folders. The "main.cpp" file sets up the ADC, the USB data transmission and starts the estimation (once a character "y" has been received by the computer it is connected to). It also transmits the data from the estimation via USB. Explanation on how to set up the communication with the board is available at BitBucket webpage, from where a MATLAB file can be downloaded which allows real time communication.

For any questions you can contact the author at federicomariaferrari@gmail.com .

The Simulink and Matlab files, together with a short guide, are all available at: https://bitbucket.org/ff95/bms.

Thanks for trying this out!

Federico

Committer:
fmferrari
Date:
Thu Dec 08 18:46:51 2016 +0000
Revision:
8:339dd9885af3
Child:
13:831eab218c33
First Successfully compiled of the EKF

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fmferrari 8:339dd9885af3 1 //
fmferrari 8:339dd9885af3 2 // Academic License - for use in teaching, academic research, and meeting
fmferrari 8:339dd9885af3 3 // course requirements at degree granting institutions only. Not for
fmferrari 8:339dd9885af3 4 // government, commercial, or other organizational use.
fmferrari 8:339dd9885af3 5 //
fmferrari 8:339dd9885af3 6 // File: rt_nonfinite.h
fmferrari 8:339dd9885af3 7 //
fmferrari 8:339dd9885af3 8 // Code generated for Simulink model 'EKF'.
fmferrari 8:339dd9885af3 9 //
fmferrari 8:339dd9885af3 10 // Model version : 1.6
fmferrari 8:339dd9885af3 11 // Simulink Coder version : 8.11 (R2016b) 25-Aug-2016
fmferrari 8:339dd9885af3 12 // C/C++ source code generated on : Thu Dec 8 19:03:07 2016
fmferrari 8:339dd9885af3 13 //
fmferrari 8:339dd9885af3 14 // Target selection: ert.tlc
fmferrari 8:339dd9885af3 15 // Embedded hardware selection: STMicroelectronics->ST10/Super10
fmferrari 8:339dd9885af3 16 // Code generation objectives: Unspecified
fmferrari 8:339dd9885af3 17 // Validation result: Not run
fmferrari 8:339dd9885af3 18 //
fmferrari 8:339dd9885af3 19
fmferrari 8:339dd9885af3 20 #ifndef RTW_HEADER_rt_nonfinite_h_
fmferrari 8:339dd9885af3 21 #define RTW_HEADER_rt_nonfinite_h_
fmferrari 8:339dd9885af3 22 #include <stddef.h>
fmferrari 8:339dd9885af3 23 #include "rtwtypes.h"
fmferrari 8:339dd9885af3 24 #ifdef __cplusplus
fmferrari 8:339dd9885af3 25
fmferrari 8:339dd9885af3 26 extern "C" {
fmferrari 8:339dd9885af3 27
fmferrari 8:339dd9885af3 28 #endif
fmferrari 8:339dd9885af3 29
fmferrari 8:339dd9885af3 30 extern real_T rtInf;
fmferrari 8:339dd9885af3 31 extern real_T rtMinusInf;
fmferrari 8:339dd9885af3 32 extern real_T rtNaN;
fmferrari 8:339dd9885af3 33 extern real32_T rtInfF;
fmferrari 8:339dd9885af3 34 extern real32_T rtMinusInfF;
fmferrari 8:339dd9885af3 35 extern real32_T rtNaNF;
fmferrari 8:339dd9885af3 36 extern void rt_InitInfAndNaN(size_t realSize);
fmferrari 8:339dd9885af3 37 extern boolean_T rtIsInf(real_T value);
fmferrari 8:339dd9885af3 38 extern boolean_T rtIsInfF(real32_T value);
fmferrari 8:339dd9885af3 39 extern boolean_T rtIsNaN(real_T value);
fmferrari 8:339dd9885af3 40 extern boolean_T rtIsNaNF(real32_T value);
fmferrari 8:339dd9885af3 41 typedef struct {
fmferrari 8:339dd9885af3 42 struct {
fmferrari 8:339dd9885af3 43 uint32_T wordH;
fmferrari 8:339dd9885af3 44 uint32_T wordL;
fmferrari 8:339dd9885af3 45 } words;
fmferrari 8:339dd9885af3 46 } BigEndianIEEEDouble;
fmferrari 8:339dd9885af3 47
fmferrari 8:339dd9885af3 48 typedef struct {
fmferrari 8:339dd9885af3 49 struct {
fmferrari 8:339dd9885af3 50 uint32_T wordL;
fmferrari 8:339dd9885af3 51 uint32_T wordH;
fmferrari 8:339dd9885af3 52 } words;
fmferrari 8:339dd9885af3 53 } LittleEndianIEEEDouble;
fmferrari 8:339dd9885af3 54
fmferrari 8:339dd9885af3 55 typedef struct {
fmferrari 8:339dd9885af3 56 union {
fmferrari 8:339dd9885af3 57 real32_T wordLreal;
fmferrari 8:339dd9885af3 58 uint32_T wordLuint;
fmferrari 8:339dd9885af3 59 } wordL;
fmferrari 8:339dd9885af3 60 } IEEESingle;
fmferrari 8:339dd9885af3 61
fmferrari 8:339dd9885af3 62 #ifdef __cplusplus
fmferrari 8:339dd9885af3 63
fmferrari 8:339dd9885af3 64 } // extern "C"
fmferrari 8:339dd9885af3 65 #endif
fmferrari 8:339dd9885af3 66 #endif // RTW_HEADER_rt_nonfinite_h_
fmferrari 8:339dd9885af3 67
fmferrari 8:339dd9885af3 68 //
fmferrari 8:339dd9885af3 69 // File trailer for generated code.
fmferrari 8:339dd9885af3 70 //
fmferrari 8:339dd9885af3 71 // [EOF]
fmferrari 8:339dd9885af3 72 //