System Management code

Dependencies:   mbed CANBuffer Watchdog MODSERIAL mbed-rtos xbeeRelay IAP

Fork of SystemManagement by Martin Deng

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers DC_DC.h Source File

DC_DC.h

00001 #ifndef _FILE_DC_DC_H
00002 #define _FILE_DC_DC_H
00003 
00004 #include "mbed.h"
00005 #include "FanPump.h"
00006 
00007 enum Channel_T {
00008     FAN1            = 0,
00009     FAN2            = 1,
00010     PUMP1           = 2,
00011     PUMP2           = 3,  
00012 };
00013 
00014 enum Status_Bits_T {  
00015     CONV_ON         = 1<<0,
00016     SET_ON          = 1<<1,
00017     POWER_UP        = 1<<2,
00018     POWER_DOWN      = 1<<3,
00019     OVER_CURRENT    = 1<<4,
00020     SENSOR_FAULT    = 1<<5,
00021 };
00022 
00023 class DC_DC{
00024 public:
00025     DC_DC(PinName _dcdcPin, PinName _dcdcCurrent, PinName _fan1, PinName _fan2, PinName _pump1, PinName _pump2, float period, float slew, unsigned int size=50);
00026     void setup(float* onThreshold, float* overCurrent, float* startDelay, float* stopDelay);
00027     bool size(unsigned int size);
00028     float getCurrent() { return current; }
00029     void set(bool on); 
00030     void setPwm(enum Channel_T chan, float duty);
00031     float readPwm(enum Channel_T chan);
00032     /*
00033         char status =
00034         bit0 - 1 = DC-DC converter is actually on
00035         bit1 - 1 = DC-DC converter is set to on
00036         bit2 - 1 = DC-DC Startup, its use is currently blocked until ready
00037         bit3 - 1 = DC-DC Power-down, its use is currently blocked until ready
00038         bit4 - 1 = DC-DC over current (drawing more current than allowed according to sensor)
00039         bit5 - 1 = DC-DC current sensor out of range (broken)
00040     */
00041     char getStatus() { return status; }
00042     bool hasCritError() { return critError; }         // An error exists according to status above
00043     void sample();                   // Attach this function in a 10ms RTOS timer
00044 
00045 private:
00046     
00047     Timer startTimer;
00048     Timer stopTimer;
00049     volatile bool isControlPinOn;
00050     DigitalOut dcdcControl;
00051     AnalogIn dcdcCurrent;
00052     
00053     float currentOffset;
00054     float* filterBuff;
00055     int buffTracker;
00056     unsigned int _size;
00057     
00058     void updateCurrent();
00059     volatile float current;
00060     volatile char status;
00061     volatile bool critError;
00062     
00063     FanPump fan1;
00064     FanPump fan2;
00065     FanPump pump1;
00066     FanPump pump2;
00067     
00068     float* onThreshold;
00069     float* overCurrent;
00070     float* startDelay;
00071     float* stopDelay;
00072 };
00073 
00074 #endif