1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- /*********************************************************************
- *
- * BMS UI Measure File
- *
- *********************************************************************
- * FileName: BMS_UI_Measure.c
- * Processor: PIC18F25K80
- * Compiler: Microchip C18 v3.41
- * Company: KIT - CN - IPE
- *
- * Author Date Comment
- *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Ott W. 08.02.2016 Release
- *********************************************************************/
- /*********************************************************************
- *
- * Include Files
- *
- ********************************************************************/
- #include "BMS_UI_Main.h"
- /*+++++++ Measure BMS_UI +++++++++++++++++++++++++++++++++++++++++++*/
- uint16_t Measure( void )
- {
- uint16_t i = 0;
- uint32_t VoltageOverS = 0;
- int32_t CurrentOverS = 0;
- int16_t past_Current = 0;
- past_Current = gCurrent;
- for(i=0; i<64; i++)
- {
- VoltageOverS += ADCread_12Bit();
- CurrentOverS += ADCread_16Bit();
- }
- CurrentOverS = CurrentOverS >> 6; //Divide 2^6 = 64
- CurrentOverS = CurrentOverS * 10; //Multiply with 10
- CurrentOverS = CurrentOverS >> 7; //FirstShift;
- CurrentOverS = CurrentOverS * 48059; //IMulpli;
- CurrentOverS = CurrentOverS >> 11; //ILastShift;
- CurrentOverS = CurrentOverS - 60075;
- CurrentOverS = CurrentOverS / 10;
- CurrentOverS = CurrentOverS - gOffsetCurrent;
- if(gCurrent == 0)
- {
- gCurrent = CurrentOverS;
- }
- else
- {
- gCurrent = CurrentOverS;
- gCurrent = (gCurrent + past_Current) / 2; // Divide by 2 to calculate the mean current
- }
- VoltageOverS = VoltageOverS >> 6; //Divide 2^6 = 64
- VoltageOverS = VoltageOverS * 10;
- VoltageOverS = VoltageOverS >> 2; //FirstShift;
- VoltageOverS = VoltageOverS * 2555; //UMulpli;
- VoltageOverS = VoltageOverS >> 8; //ULastShift;
- VoltageOverS = VoltageOverS / 10;
- //VoltageOverS = VoltageOverS - gOffsetVoltage;
- gVoltage = VoltageOverS;
-
- return 0;
- }
|