A battery management apparatus, comprising: a sensing unit configured to detect a current, a voltage and a temperature of a battery; and a control unit configured to generate a first data set including a first current value indicating the detected current, a first voltage value indicating the detected voltage and a first temperature value indicating the detected temperature, wherein the battery management system is characterised in that the control unit is configured to: generate a second data set including a second current value, a second voltage value and a second temperature value from the first data set using an error generator, determine a first time constant of an equivalent circuit model of an extended Kalman filter based on the first temperature value and a state of charge, SOC, in a previous cycle, determine a second time constant of the equivalent circuit model based on the second temperature value and the SOC in the previous cycle, determine a first candidate value for the SOC of the battery based on the first current value using ampere counting, determine a second candidate value for the SOC based on the first data set, the first time constant and a correction value using the extended Kalman filter, determine a third candidate value for the SOC based on the second data set, the second time constant and the correction value using the extended Kalman filter, determine a first difference value between the first candidate value and the second candidate value, determine a second difference value between the first candidate value and the third candidate value, and update the correction value when the second difference value is smaller than the first difference value, and wherein the updated correction value is larger than a predetermined initial value. a sensing unit configured to detect a current, a voltage and a temperature of a battery; and a control unit configured to generate a first data set including a first current value indicating the detected current, a first voltage value indicating the detected voltage and a first temperature value indicating the detected temperature, wherein the battery management system is characterised in that the control unit is configured to: generate a second data set including a second current value, a second voltage value and a second temperature value from the first data set using an error generator, determine a first time constant of an equivalent circuit model of an extended Kalman filter based on the first temperature value and a state of charge, SOC, in a previous cycle, determine a second time constant of the equivalent circuit model based on the second temperature value and the SOC in the previous cycle, determine a first candidate value for the SOC of the battery based on the first current value using ampere counting, determine a second candidate value for the SOC based on the first data set, the first time constant and a correction value using the extended Kalman filter, determine a third candidate value for the SOC based on the second data set, the second time constant and the correction value using the extended Kalman filter, determine a first difference value between the first candidate value and the second candidate value, determine a second difference value between the first candidate value and the third candidate value, and update the correction value when the second difference value is smaller than the first difference value, and wherein the updated correction value is larger than a predetermined initial value. generate a second data set including a second current value, a second voltage value and a second temperature value from the first data set using an error generator, determine a first time constant of an equivalent circuit model of an extended Kalman filter based on the first temperature value and a state of charge, SOC, in a previous cycle, determine a second time constant of the equivalent circuit model based on the second temperature value and the SOC in the previous cycle, determine a first candidate value for the SOC of the battery based on the first current value using ampere counting, determine a second candidate value for the SOC based on the first data set, the first time constant and a correction value using the extended Kalman filter, determine a third candidate value for the SOC based on the second data set, the second time constant and the correction value using the extended Kalman filter, determine a first difference value between the first candidate value and the second candidate value, determine a second difference value between the first candidate value and the third candidate value, and update the correction value when the second difference value is smaller than the first difference value, and wherein the updated correction value is larger than a predetermined initial value.