Code to run on the charger board (used to charge the car from the mains).

Dependencies:   mbed CUER_CAN

charger.h

Committer:
DasSidG
Date:
2017-09-10
Revision:
10:839e8f984d28
Parent:
7:70cf5bff23f9
Child:
12:77d493b3320b

File content as of revision 10:839e8f984d28:

#ifndef CHARGER_H
#define CHARGER_H

#include "mbed.h"

#define DEBUG 1

#define MAX_PACK_VOLTAGE 138600.0 // 33 * 4.2
#define MAX_CURRENT 10000.0 //limited by charger
#define MAX_CELL_VOLTAGE 4250 
#define CHARGING_FINISHED_THRESHOLD_VOLTAGE 4200
#define DEEP_DISCHARGE_THRESHOLD_VOLTAGE 3000
#define CHARGING_FINISHED_THRESHOLD_CURRENT 800
#define DEEP_DISCHARGE_MAX_CURRENT 2000
#define PACK_CAPACITY 42 //in Ah

#define CHARGER_MSG_TIMEOUT_MS 6000 
#define BMS_MSG_TIMEOUT_MS     2000 

//Macros for charging to avoid confusion and potentioal errors
#define START_CHARGING 0
#define STOP_CHARGING 1

#define CAN_BUFFER_SIZE 255 //Setting this to be quite large, should be equal to max # of ids expected to receive

// CAN pins
#define CAR_CAN_WRITE_PIN p29
#define CAR_CAN_READ_PIN p30
#define CHARGER_CAN_WRITE_PIN p10
#define CHARGER_CAN_READ_PIN p9

extern uint8_t charger_status; //status packet given by charger, see Elcon CAN Specification in google drive
extern bool precharge_status;
extern bool comms_timeout;
extern bool charger_failure;
extern bool charge_finished;
extern bool bms_error;
extern bool charging;

extern float min_cell_voltage; //mV
extern float max_cell_voltage;//mV

extern float charger_current; //mA
extern float charger_voltage; //mV

extern float desired_current; //mA
extern float desired_voltage; //mV

extern uint8_t charger_control;

#endif