summaryrefslogtreecommitdiff
path: root/battery.h
blob: c1b7a86b0198fe2fc517be8be44c744e15165576 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef BATTERY_H
#define BATTERY_H

#include <QObject>

typedef struct batteryData {
    QString name;
    double nominalVoltage;
    double specificEnergy; // Wh/Kg
    float cellDischargeRate;
    float cellChargeRate;
}batteryData_t;

static const batteryData_t batteries[]
{
    {.name = "Li-ion Phosphate", .nominalVoltage = 3.3, .specificEnergy = 105.0, .cellDischargeRate = 30, .cellChargeRate = 10},
    {.name = "Li-ion Manganese", .nominalVoltage = 3.7, .specificEnergy = 125.0, .cellDischargeRate = 30, .cellChargeRate = 10},
    {.name = "Li-ion Cobalt", .nominalVoltage = 3.6, .specificEnergy = 200.0, .cellDischargeRate = 2, .cellChargeRate = 1},
    {.name = "NiMH", .nominalVoltage = 1.2, .specificEnergy = 90.0, .cellDischargeRate = 5, .cellChargeRate = 0.5},
    {.name = "NiCd", .nominalVoltage = 1.2, .specificEnergy = 60.0, .cellDischargeRate = 20, .cellChargeRate = 1},
};
enum batteryNames
{
    LiionPhosphate = 0,
    LiionManganese,
    LiionCobalt,
    NiMH,
    NICd,
};

class Battery : public QObject
{
    Q_OBJECT
public:
    Battery();
private:
    void changeBatteryChemistry(int name);

    batteryData_t activeBattery;
    int seriesCells;
    int parallelCells;
    float packDischargeRate;
    float packChargeRate;
    float packWeight;
    float packEnergy;
signals:

};

#endif // BATTERY_H