Skip to content
Snippets Groups Projects
Commit 58e7eb24 authored by Carl Philipp Klemm's avatar Carl Philipp Klemm
Browse files

Randomize temperature charge is preformed

parent 5c428f2e
No related branches found
No related tags found
No related merge requests found
...@@ -34,6 +34,16 @@ bool CoinCell::measureOcv(float& ocv) ...@@ -34,6 +34,16 @@ bool CoinCell::measureOcv(float& ocv)
return ret; return ret;
} }
void CoinCell::setLastKnownCapacity(double cap)
{
lastKnownCap = cap;
}
double CoinCell::getLastKnownCapacity()
{
return lastKnownCap;
}
bool CoinCell::getTemperature(float& temperature) bool CoinCell::getTemperature(float& temperature)
{ {
bool ret = heaters->getTemperature(heaterId, temperature); bool ret = heaters->getTemperature(heaterId, temperature);
......
...@@ -16,6 +16,7 @@ private: ...@@ -16,6 +16,7 @@ private:
int multiplexerCh; int multiplexerCh;
Heaters* heaters; Heaters* heaters;
Multiplexers* multiplexers; Multiplexers* multiplexers;
double lastKnownCap = -1;
static BioControl biocontrol; static BioControl biocontrol;
...@@ -34,6 +35,8 @@ public: ...@@ -34,6 +35,8 @@ public:
bool isShorted(bool& detected); bool isShorted(bool& detected);
bool measureEis(std::filesystem::path path, std::string userStr = ""); bool measureEis(std::filesystem::path path, std::string userStr = "");
bool setEnabled(bool enable); bool setEnabled(bool enable);
double getLastKnownCapacity();
void setLastKnownCapacity(double cap);
static void setBiocontrol(const BioControl& biocontrol); static void setBiocontrol(const BioControl& biocontrol);
}; };
#include "expirament.h" #include "expirament.h"
#include <memory> #include <memory>
#include <algorithm>
#include "randomgen.h"
bool Expirament::step(size_t startsubstep) bool Expirament::step(size_t startsubstep)
{ {
...@@ -11,6 +14,8 @@ bool Expirament::step(size_t startsubstep) ...@@ -11,6 +14,8 @@ bool Expirament::step(size_t startsubstep)
saveStep(startsubstep); saveStep(startsubstep);
std::vector<double> steps = createStepSequence(3, 2, 0, 1); std::vector<double> steps = createStepSequence(3, 2, 0, 1);
std::vector<double> chargeThermalSteps(5);
std::for_each(chargeThermalSteps.begin(), chargeThermalSteps.end(), [](double& in){in = rd::rand(1, 0);});
bool ret = true; bool ret = true;
switch(globalstep % STEP_COUNT) switch(globalstep % STEP_COUNT)
...@@ -19,36 +24,71 @@ bool Expirament::step(size_t startsubstep) ...@@ -19,36 +24,71 @@ bool Expirament::step(size_t startsubstep)
ret = thermalCycle(CYCLES_PER_STEP, startsubstep); ret = thermalCycle(CYCLES_PER_STEP, startsubstep);
break; break;
case 1: case 1:
Log(Log::INFO)<<"Charing for globalstep "<<globalstep<<" will be executed at "<<chargeThermalSteps[0]<<" temperature";
setTemperatures(chargeThermalSteps[0]);
ret = heaters->allReady();
if(!ret)
{
Log(Log::ERROR)<<"Not all heaters moved to ready state in globalstep"<<globalstep;
break;
}
ret = charge(steps[0]); ret = charge(steps[0]);
ret &= takeMesurements();
break; break;
case 2: case 2:
ret = thermalCycle(CYCLES_PER_STEP, startsubstep); ret = thermalCycle(CYCLES_PER_STEP, startsubstep);
break; break;
case 3: case 3:
Log(Log::INFO)<<"Charing for globalstep "<<globalstep<<" will be executed at "<<chargeThermalSteps[0]<<" temperature";
setTemperatures(chargeThermalSteps[1]);
ret = heaters->allReady();
if(!ret)
{
Log(Log::ERROR)<<"Not all heaters moved to ready state in globalstep"<<globalstep;
break;
}
ret = charge(steps[1]); ret = charge(steps[1]);
ret &= takeMesurements();
break; break;
case 4: case 4:
ret = thermalCycle(CYCLES_PER_STEP, startsubstep); ret = thermalCycle(CYCLES_PER_STEP, startsubstep);
break; break;
case 5: case 5:
Log(Log::INFO)<<"Charing for globalstep "<<globalstep<<" will be executed at "<<chargeThermalSteps[0]<<" temperature";
setTemperatures(chargeThermalSteps[2]);
ret = heaters->allReady();
if(!ret)
{
Log(Log::ERROR)<<"Not all heaters moved to ready state in globalstep"<<globalstep;
break;
}
ret = charge(steps[2]); ret = charge(steps[2]);
ret &= takeMesurements();
break; break;
case 6: case 6:
ret = thermalCycle(CYCLES_PER_STEP); ret = thermalCycle(CYCLES_PER_STEP, startsubstep);
break; break;
case 7: case 7:
Log(Log::INFO)<<"Charing for globalstep "<<globalstep<<" will be executed at "<<chargeThermalSteps[0]<<" temperature";
setTemperatures(chargeThermalSteps[3]);
ret = heaters->allReady();
if(!ret)
{
Log(Log::ERROR)<<"Not all heaters moved to ready state in globalstep"<<globalstep;
break;
}
ret = charge(steps[3]); ret = charge(steps[3]);
ret &= takeMesurements();
break; break;
case 8: case 8:
ret = thermalCycle(CYCLES_PER_STEP, startsubstep); ret = thermalCycle(CYCLES_PER_STEP, startsubstep);
break; break;
case 9: case 9:
Log(Log::INFO)<<"Charing for globalstep "<<globalstep<<" will be executed at "<<chargeThermalSteps[0]<<" temperature";
setTemperatures(chargeThermalSteps[4]);
ret = heaters->allReady();
if(!ret)
{
Log(Log::ERROR)<<"Not all heaters moved to ready state in globalstep"<<globalstep;
break;
}
ret = charge(steps[4]); ret = charge(steps[4]);
ret &= takeMesurements();
break; break;
case 10: case 10:
ret = thermalCycle(CYCLES_PER_STEP, startsubstep); ret = thermalCycle(CYCLES_PER_STEP, startsubstep);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment