Battery State-of-Charge (SOC) Estimation
Ends soon! Keep adding new skills with 10,000+ programs for $239 (usually $399). Save now.
Battery State-of-Charge (SOC) Estimation
This course is part of Algorithms for Battery Management Systems Specialization
Instructor: Gregory Plett
21,129 already enrolled
Included with
Learn more
Ask Coursera
254 reviews
254 reviews
What you'll learn
How to implement state-of-charge (SOC) estimators for lithium-ion battery cells
Skills you'll gain
Tools you'll learn
Details to know
37 assignments
See how employees at top companies are mastering in-demand skills
Build your subject-matter expertise
- Learn new concepts from industry experts
- Gain a foundational understanding of a subject or tool
- Develop job-relevant skills with hands-on projects
- Earn a shareable career certificate
There are 7 modules in this course
This course can also be taken for academic credit as ECEA 5732, part of CU Boulderβs Master of Science in Electrical Engineering degree.
In this course, you will learn how to implement different state-of-charge estimation methods and to evaluate their relative merits. By the end of the course, you will be able to: - Implement simple voltage-based and current-based state-of-charge estimators and understand their limitations - Explain the purpose of each step in the sequential-probabilistic-inference solution - Execute provided Octave/MATLAB script for a linear Kalman filter and evaluate results - Execute provided Octave/MATLAB script for state-of-charge estimation using an extended Kalman filter on lab-test data and evaluate results - Execute provided Octave/MATLAB script for state-of-charge estimation using a sigma-point Kalman filter on lab-test data and evaluate results - Implement method to detect and discard faulty voltage-sensor measurements
This week, you will learn some rigorous definitions needed when discussing SOC estimation and some simple but poor methods to estimate SOC. As background to learning some better methods, we will review concepts from probability theory that are needed to be able to deal with the impact of uncertain noises on a system's internal state and measurements made by a BMS.
What's included
8 videos17 readings7 assignments1 discussion prompt1 ungraded lab
8 videosβ’Total 120 minutes
- 3.1.1: Welcome to the Course!β’9 minutes
- 3.1.2: What Is the Importance of a Good SOC Estimator?β’8 minutes
- 3.1.3: How Do We Define SOC Carefully?β’17 minutes
- 3.1.4: What Are Some Approaches to Estimating Battery Cell SOC?β’26 minutes
- 3.1.5: Understanding Uncertainty via Mean and Covarianceβ’17 minutes
- 3.1.6: Understanding Joint Uncertainty of Two Unknown Quantitiesβ’16 minutes
- 3.1.7: Understanding Time-Varying Uncertain Quantitiesβ’23 minutes
- 3.1.8: Summary of "The Importance of a Good SOC Estimator" and Next Stepsβ’4 minutes
17 readingsβ’Total 56 minutes
- Course Updates and Accessibility Supportβ’1 minute
- Non-Credit Students: Welcome and Where to Find Helpβ’10 minutes
- Get help and meet other learners in this course. Join your discussion forums!β’2 minutes
- Notes for Lesson 3.1.1β’1 minute
- Frequently asked questionsβ’5 minutes
- Course Resourcesβ’5 minutes
- How to use Discussion Forumsβ’5 minutes
- Earn a course certificateβ’5 minutes
- Are you interested in earning an MSEE degree?β’5 minutes
- Notes for Lesson 3.1.2β’1 minute
- Notes for Lesson 3.1.3β’1 minute
- Notes for Lesson 3.1.4β’1 minute
- Introducing a New Element to the Course!β’10 minutes
- Notes for Lesson 3.1.5β’1 minute
- Notes for Lesson 3.1.6β’1 minute
- Notes for Lesson 3.1.7β’1 minute
- Notes for Lesson 3.1.8β’1 minute
7 assignmentsβ’Total 125 minutes
- Quiz for Week 1 β’40 minutes
- Practice Quiz for Lesson 3.1.2 β’10 minutes
- Practice Quiz for Lesson 3.1.3 β’10 minutes
- Practice quiz for lesson 3.1.4 β’10 minutes
- Practice Quiz for Lesson 3.1.5 β’15 minutes
- Practice Quiz for Lesson 3.1.6β’10 minutes
- Practice Quiz for Lesson 3.1.7β’30 minutes
1 discussion promptβ’Total 10 minutes
- Introduce Yourselfβ’10 minutes
1 ungraded labβ’Total 15 minutes
- Notebook to run before attempting practice quizβ’15 minutes
This week, you will learn how to derive the steps of the Gaussian sequential probabilistic inference solution, which is the basis for all Kalman-filtering style state estimators. While this content is highly theoretical, it is important to have a solid foundational understanding of these topics in practice, since real applications often violate some of the assumptions that are made in the derivation, and we must understand the implication this has on the process. By the end of the week, you will know how to derive the linear Kalman filter.
What's included
6 videos6 readings6 assignments
6 videosβ’Total 97 minutes
- 3.2.1: Predict/correct mechanism of sequential probabilistic inferenceβ’24 minutes
- 3.2.2: The Kalman-filter gain factorβ’24 minutes
- 3.2.3: Summarizing the six steps of generic probabilistic inferenceβ’9 minutes
- 3.2.4: Deriving the three Kalman-filter prediction stepsβ’22 minutes
- 3.2.5: Deriving the three Kalman-filter correction stepsβ’16 minutes
- 3.2.6: Summary of "Introducing the linear KF as a state estimator" and next stepsβ’2 minutes
6 readingsβ’Total 6 minutes
- Notes for lesson 3.2.1β’1 minute
- Notes for lesson 3.2.2β’1 minute
- Notes for lesson 3.2.3β’1 minute
- Notes for lesson 3.2.4β’1 minute
- Notes for lesson 3.2.5β’1 minute
- Notes for lesson 3.2.6β’1 minute
6 assignmentsβ’Total 82 minutes
- Quiz for week 2β’30 minutes
- Practice quiz for lesson 3.2.1β’12 minutes
- Practice quiz for lesson 3.2.2β’10 minutes
- Practice quiz for lesson 3.2.3β’10 minutes
- Practice quiz for lesson 3.2.4β’10 minutes
- Practice quiz for lesson 3.2.5β’10 minutes
The steps of a Kalman filter may appear abstract and mysterious. This week, you will learn different ways to think about and visualize the operation of the linear Kalman filter to give better intuition regarding how it operates. You will also learn how to implement a linear Kalman filter in Octave code, and how to evaluate outputs from the Kalman filter.
What's included
7 videos7 readings7 assignments2 ungraded labs
7 videosβ’Total 86 minutes
- 3.3.1: Visualizing the Kalman filter with a linearized cell modelβ’21 minutes
- 3.3.2: Introducing Octave code to generate correlated random numbersβ’15 minutes
- 3.3.3: Introducing Octave code to implement KF for linearized cell modelβ’10 minutes
- 3.3.4: How do we improve numeric robustness of Kalman filter?β’11 minutes
- 3.3.5: Can we automatically detect bad measurements with a Kalman filter?β’14 minutes
- 3.3.6: How do I initialize and tune a Kalman filter?β’13 minutes
- 3.3.7: Summary of "Coming to understand the linear KF" and next stepsβ’3 minutes
7 readingsβ’Total 7 minutes
- Notes for lesson 3.3.1β’1 minute
- Notes for lesson 3.3.2β’1 minute
- Notes for lesson 3.3.3β’1 minute
- Notes for lesson 3.3.4β’1 minute
- Notes for lesson 3.3.5β’1 minute
- Notes for lesson 3.3.6β’1 minute
- Notes for lesson 3.3.7β’1 minute
7 assignmentsβ’Total 90 minutes
- Quiz for week 3β’30 minutes
- Practice quiz for lesson 3.3.1β’10 minutes
- Practice quiz for lesson 3.3.2β’10 minutes
- Practice quiz for lesson 3.3.3β’10 minutes
- Practice quiz for lesson 3.3.4β’10 minutes
- Practice quiz for lesson 3.3.5β’10 minutes
- Practice quiz for lesson 3.3.6β’10 minutes
2 ungraded labsβ’Total 30 minutes
- Generating correlated random vectorsβ’15 minutes
- Sample code implementing linear Kalman filterβ’15 minutes
A linear Kalman filter can be used to estimate the internal state of a linear system. But, battery cells are nonlinear systems. This week, you will learn how to approximate the steps of the Gaussian sequential probabilistic inference solution for nonlinear systems, resulting in the "extended Kalman filter" (EKF). You will learn how to implement the EKF in Octave code, and how to use the EKF to estimate battery-cell SOC.
What's included
8 videos8 readings7 assignments3 ungraded labs
8 videosβ’Total 101 minutes
- 3.4.1: Introducing nonlinear variations to Kalman filtersβ’11 minutes
- 3.4.2: Deriving the three extended-Kalman-filter prediction stepsβ’15 minutes
- 3.4.3: Deriving the three extended-Kalman-filter correction stepsβ’6 minutes
- 3.4.4: Introducing a simple EKF example, with Octave codeβ’15 minutes
- 3.4.5: Preparing to implement EKF on an ECMβ’20 minutes
- 3.4.6: Introducing Octave code to initialize and control EKF for SOC estimationβ’14 minutes
- 3.4.7: Introducing Octave code to update EKF for SOC estimationβ’17 minutes
- 3.4.8: Summary of "Cell SOC estimation using an EKF" and next stepsβ’3 minutes
8 readingsβ’Total 8 minutes
- Notes for lesson 3.4.1β’1 minute
- Notes for lesson 3.4.2β’1 minute
- Notes for lesson 3.4.3β’1 minute
- Notes for lesson 3.4.4β’1 minute
- Notes for lesson 3.4.5β’1 minute
- Notes for lesson 3.4.6β’1 minute
- Notes for lesson 3.4.7β’1 minute
- Notes for lesson 3.4.8β’1 minute
7 assignmentsβ’Total 90 minutes
- Quiz for week 4β’30 minutes
- Practice quiz for lesson 3.4.1β’10 minutes
- Practice quiz for lesson 3.4.2β’10 minutes
- Practice quiz for lesson 3.4.3β’10 minutes
- Practice quiz for lesson 3.4.4β’10 minutes
- Practice quiz for lesson 3.4.5β’10 minutes
- Practice quiz for lesson 3.4.7β’10 minutes
3 ungraded labsβ’Total 65 minutes
- Simple EKF exampleβ’20 minutes
- Sample workspace for evaluating quiz answersβ’15 minutes
- Octave implementation of EKF to estimate SOCβ’30 minutes
The EKF is the best known and most widely used nonlinear Kalman filter. But, it has some fundamental limitations that limit its performance for "very nonlinear" systems. This week, you will learn how to derive the sigma-point Kalman filter (sometimes called an "unscented Kalman filter") from the Gaussian sequential probabilistic inference steps. You will also learn how to implement this filter in Octave code and how to use it to estimate battery cell SOC.
What's included
7 videos7 readings6 assignments2 ungraded labs
7 videosβ’Total 116 minutes
- 3.5.1: Problems with EKF that are improved with sigma-point methodsβ’12 minutes
- 3.5.2: Approximating uncertain variables using sigma pointsβ’31 minutes
- 3.5.3: Deriving the six sigma-point-Kalman-filter stepsβ’17 minutes
- 3.5.4: Introducing a simple SPKF example with Octave codeβ’20 minutes
- 3.5.5: Introducing Octave code to initialize and control SPKF for SOC estimationβ’10 minutes
- 3.5.6: Introducing Octave code to update SPKF for SOC estimationβ’19 minutes
- 3.5.7: Summary of "Cell SOC estimation using a SPFK" and next stepsβ’7 minutes
7 readingsβ’Total 7 minutes
- Notes for lesson 3.5.1β’1 minute
- Notes for lesson 3.5.2β’1 minute
- Notes for lesson 3.5.3β’1 minute
- Notes for lesson 3.5.4β’1 minute
- Notes for lesson 3.5.5β’1 minute
- Notes for lesson 3.5.6β’1 minute
- Notes for lesson 3.5.7β’1 minute
6 assignmentsβ’Total 100 minutes
- Quiz for week 5β’30 minutes
- Practice quiz for lesson 3.5.1β’10 minutes
- Practice quiz for lesson 3.5.2β’10 minutes
- Practice quiz for lesson 3.5.3β’10 minutes
- Practice quiz for lesson 3.5.4β’30 minutes
- Practice quiz for lesson 3.5.6β’10 minutes
2 ungraded labsβ’Total 50 minutes
- Simple SPKF exampleβ’20 minutes
- Octave implementation of SPKF to estimate SOCβ’30 minutes
Kalman filtering requires that noises have zero mean. What do we do if the current-sensor has a dc bias error, as is often the case? How can we implement Kalman-filter type SOC estimators in a computationally efficient way for a battery pack comprising many cells? This week you will learn how to compensate for current-sensor bias error and how to implement the bar-delta method for computational efficiency. You will also learn about desktop validation as an approach for initial testing and tuning of BMS algorithms.
What's included
5 videos6 readings4 assignments1 ungraded lab
5 videosβ’Total 71 minutes
- 3.6.1: Why do we need to be clever when estimating SOC for battery packs?β’25 minutes
- 3.6.2: Developing a "bar" filter using an ECMβ’7 minutes
- 3.6.3: Developing the "delta" filters using an ECMβ’15 minutes
- 3.6.4: Introducing "desktop validation" as a method for predicting performanceβ’22 minutes
- 3.6.5: Summary of "Improving computational efficiency using the bar-delta method" and next stepsβ’2 minutes
6 readingsβ’Total 15 minutes
- New Coursera policy on Honors badgesβ’10 minutes
- Notes for lesson 3.6.1β’1 minute
- Notes for lesson 3.6.2β’1 minute
- Notes for lesson 3.6.3β’1 minute
- Notes for lesson 3.6.4β’1 minute
- Notes for lesson 3.6.5β’1 minute
4 assignmentsβ’Total 50 minutes
- Quiz for lesson 3.6.1β’15 minutes
- Quiz for lesson 3.6.2β’10 minutes
- Quiz for lesson 3.6.3β’10 minutes
- Quiz for lessons 3.6.4 and 3.6.5β’15 minutes
1 ungraded labβ’Total 30 minutes
- Octave implementation of a bar-delta filterβ’30 minutes
You have already learned that Kalman filters must be "tuned" by adjusting their process-noise, sensor-noise, and initial state-estimate covariance matrices in order to give acceptable performance over a wide range of operating scenarios. This final course module will give you some experience hand-tuning both an EKF and SPKF for SOC estimation.
What's included
2 programming assignments2 ungraded labs
2 programming assignmentsβ’Total 30 minutes
- Part 1: Tuning an EKF for SOC estimationβ’15 minutes
- Part 2: Tuning an SPKF for SOC estimationβ’15 minutes
2 ungraded labsβ’Total 240 minutes
- Jupyter notebook for capstone project, Part 1β’120 minutes
- Jupyter notebook for capstone project, Part 2β’120 minutes
Earn a career certificate
Add this credential to your LinkedIn profile, resume, or CV. Share it on social media and in your performance review.
Build toward a degree
This course is part of the following degree program(s) offered by University of Colorado Boulder. If you are admitted and enroll, your completed coursework may count toward your degree learning and your progress can transfer with you.ΒΉ
Instructor
Explore more from Electrical Engineering
- U
University of Colorado Boulder
Course
Status: Free TrialCategory: Credit offered - U
University of Colorado Boulder
Course
Status: Free TrialCategory: Credit offered - U
University of Colorado Boulder
Course
Status: Free TrialCategory: Credit offered - U
University of Colorado Boulder
Course
Status: Free TrialCategory: Credit offered
Why people choose Coursera for their career
Learner reviews
- 5 stars
79.92%
- 4 stars
16.92%
- 3 stars
1.96%
- 2 stars
0.39%
- 1 star
0.78%
Showing 3 of 254
Reviewed on Nov 28, 2020
Sir Gregory plett is an excellent Professor Ever and thanks to Coursera for such valuable plateform.
Reviewed on Sep 15, 2020
Great course!!! I got hands on experience with all types of kalman filter for battery state estimation.
Reviewed on Feb 23, 2022
Useful to understand Kalman Filters and continue with the Battery Management System specialization.
Frequently asked questions
To access the course materials, assignments and to earn a Certificate, you will need to purchase the Certificate experience when you enroll in a course. You can try a Free Trial instead, or apply for Financial Aid. The course may offer 'Full Course, No Certificate' instead. This option lets you see all course materials, submit required assessments, and get a final grade. This also means that you will not be able to purchase a Certificate experience.
When you enroll in the course, you get access to all of the courses in the Specialization, and you earn a certificate when you complete the work. Your electronic Certificate will be added to your Accomplishments page - from there, you can print your Certificate or add it to your LinkedIn profile.
Yes. In select learning programs, you can apply for financial aid or a scholarship if you canβt afford the enrollment fee. If fin aid or scholarship is available for your learning program selection, youβll find a link to apply on the description page.
More questions
Financial aid available,
