Code to assist in measuring a battery's Chemical ID.
New releases of this code have moved to GitHub: https://github.com/USCRPL/BQ34Z100G1-Utils
ChemIDMeasurer.h@1:485ac3d4918b, 2021-02-07 (annotated)
- Committer:
- Jamie Smith
- Date:
- Sun Feb 07 21:41:33 2021 -0800
- Revision:
- 1:485ac3d4918b
- Parent:
- 0:246ef70a9e6e
Add config.txt
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jamie Smith |
0:246ef70a9e6e | 1 | // |
Jamie Smith |
0:246ef70a9e6e | 2 | // Class to collect data needed for measuring the Chem ID of a battery |
Jamie Smith |
0:246ef70a9e6e | 3 | // |
Jamie Smith |
0:246ef70a9e6e | 4 | |
Jamie Smith |
0:246ef70a9e6e | 5 | #ifndef PLZDONTEXPLODE_CHEMIDMEASURER_H |
Jamie Smith |
0:246ef70a9e6e | 6 | #define PLZDONTEXPLODE_CHEMIDMEASURER_H |
Jamie Smith |
0:246ef70a9e6e | 7 | |
Jamie Smith |
0:246ef70a9e6e | 8 | #include <BQ34Z100.h> |
Jamie Smith |
0:246ef70a9e6e | 9 | |
Jamie Smith |
0:246ef70a9e6e | 10 | class ChemIDMeasurer |
Jamie Smith |
0:246ef70a9e6e | 11 | { |
Jamie Smith |
0:246ef70a9e6e | 12 | BQ34Z100 soc; |
Jamie Smith |
0:246ef70a9e6e | 13 | |
Jamie Smith |
0:246ef70a9e6e | 14 | Timer totalTimer; |
Jamie Smith |
0:246ef70a9e6e | 15 | Timer stateTimer; |
Jamie Smith |
0:246ef70a9e6e | 16 | |
Jamie Smith |
0:246ef70a9e6e | 17 | enum class State |
Jamie Smith |
0:246ef70a9e6e | 18 | { |
Jamie Smith |
0:246ef70a9e6e | 19 | INIT, // Initial state. |
Jamie Smith |
0:246ef70a9e6e | 20 | CHARGE, // First, charge to full power until charge current <= C/100. |
Jamie Smith |
0:246ef70a9e6e | 21 | RELAX_CHARGED, // Relax for two hours to reach open circuit voltage |
Jamie Smith |
0:246ef70a9e6e | 22 | DISCHARGE, // Discharge at C/10 until the term voltage is reached |
Jamie Smith |
0:246ef70a9e6e | 23 | RELAX_DISCHARGED, // Relax for five hours to reach open circuit voltage |
Jamie Smith |
0:246ef70a9e6e | 24 | DONE // Measurement finished |
Jamie Smith |
0:246ef70a9e6e | 25 | }; |
Jamie Smith |
0:246ef70a9e6e | 26 | State state = State::INIT; |
Jamie Smith |
0:246ef70a9e6e | 27 | |
Jamie Smith |
0:246ef70a9e6e | 28 | // Turn the charger on |
Jamie Smith |
0:246ef70a9e6e | 29 | void activateCharger(); |
Jamie Smith |
0:246ef70a9e6e | 30 | |
Jamie Smith |
0:246ef70a9e6e | 31 | // Turn the charger off. |
Jamie Smith |
0:246ef70a9e6e | 32 | void deactivateCharger(); |
Jamie Smith |
0:246ef70a9e6e | 33 | |
Jamie Smith |
0:246ef70a9e6e | 34 | void activateLoad(); |
Jamie Smith |
0:246ef70a9e6e | 35 | |
Jamie Smith |
0:246ef70a9e6e | 36 | void deactivateLoad(); |
Jamie Smith |
0:246ef70a9e6e | 37 | |
Jamie Smith |
0:246ef70a9e6e | 38 | // Change current state. |
Jamie Smith |
0:246ef70a9e6e | 39 | void setState(State newState); |
Jamie Smith |
0:246ef70a9e6e | 40 | |
Jamie Smith |
0:246ef70a9e6e | 41 | public: |
Jamie Smith |
0:246ef70a9e6e | 42 | ChemIDMeasurer(); |
Jamie Smith |
0:246ef70a9e6e | 43 | |
Jamie Smith |
0:246ef70a9e6e | 44 | /** |
Jamie Smith |
0:246ef70a9e6e | 45 | * Loop to run the ID measurement |
Jamie Smith |
0:246ef70a9e6e | 46 | */ |
Jamie Smith |
0:246ef70a9e6e | 47 | void runMeasurement(); |
Jamie Smith |
0:246ef70a9e6e | 48 | }; |
Jamie Smith |
0:246ef70a9e6e | 49 | |
Jamie Smith |
0:246ef70a9e6e | 50 | |
Jamie Smith |
0:246ef70a9e6e | 51 | #endif //PLZDONTEXPLODE_CHEMIDMEASURER_H |