Code to assist in measuring a battery's Chemical ID.

Dependencies:   BQ34Z100G1

New releases of this code have moved to GitHub: https://github.com/USCRPL/BQ34Z100G1-Utils

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?

UserRevisionLine numberNew 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