Three phase bridge control

Dependents:   BLDC_control BLDC_RPM_meter

Committer:
acracan
Date:
Tue Jul 08 17:37:12 2014 +0000
Revision:
1:ba7889accd61
Parent:
0:a129854eb4b6
Update.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
acracan 0:a129854eb4b6 1 #ifndef _THREEPHASEBRIDGE_H_
acracan 0:a129854eb4b6 2 #define _THREEPHASEBRIDGE_H_
acracan 0:a129854eb4b6 3
acracan 0:a129854eb4b6 4 #include "mbed.h"
acracan 1:ba7889accd61 5 #include "CenteredPwmOut.h"
acracan 0:a129854eb4b6 6 #include <stdint.h>
acracan 0:a129854eb4b6 7
acracan 0:a129854eb4b6 8 class ThreePhaseBridge
acracan 0:a129854eb4b6 9 {
acracan 0:a129854eb4b6 10 public:
acracan 1:ba7889accd61 11 enum ActiveState {ActiveLow, ActiveHigh};
acracan 1:ba7889accd61 12 enum SwitchState {Off, On};
acracan 0:a129854eb4b6 13 enum Switches {SW2 = 1, SW4 = 2, SW6 = 4, SW1 = 8, SW3 = 16, SW5 = 32};
acracan 0:a129854eb4b6 14 enum SpinDirection {CW = 1, CCW = -1};
acracan 0:a129854eb4b6 15 ThreePhaseBridge(PinName sw1PinName, PinName sw2PinName, PinName sw3PinName,
acracan 0:a129854eb4b6 16 PinName sw4PinName, PinName sw5PinName, PinName sw6PinName,
acracan 1:ba7889accd61 17 ActiveState activeState = ActiveLow);
acracan 1:ba7889accd61 18 void period(double seconds);
acracan 1:ba7889accd61 19 void pulsewidth(double seconds);
acracan 1:ba7889accd61 20 inline int8_t state() { return m_state; };
acracan 0:a129854eb4b6 21 void setState(int8_t state);
acracan 0:a129854eb4b6 22 void spin(SpinDirection dir);
acracan 1:ba7889accd61 23 void stop();
acracan 0:a129854eb4b6 24 void setHighSideSwitchState(int8_t sw, SwitchState state);
acracan 0:a129854eb4b6 25 void setLowSideSwitchState(int8_t sw, SwitchState state);
acracan 1:ba7889accd61 26 void overflow(void (*fptr)(void));
acracan 0:a129854eb4b6 27
acracan 0:a129854eb4b6 28 private:
acracan 0:a129854eb4b6 29 static int8_t stateOrder[];
acracan 0:a129854eb4b6 30 inline void setSwitchesState(uint8_t newState);
acracan 1:ba7889accd61 31 CenteredPwmOut sw1, sw3, sw5;
acracan 0:a129854eb4b6 32 DigitalOut sw2, sw4, sw6;
acracan 1:ba7889accd61 33 CenteredPwmOut *highSide[3];
acracan 0:a129854eb4b6 34 DigitalOut *lowSide[3];
acracan 0:a129854eb4b6 35 ActiveState activeState;
acracan 1:ba7889accd61 36 double pwmPeriod, pwmPulseWidth, pwmPulseWidthOff;
acracan 0:a129854eb4b6 37 uint8_t switchesState;
acracan 1:ba7889accd61 38 int8_t m_state, stateIndex;
acracan 0:a129854eb4b6 39 };
acracan 0:a129854eb4b6 40
acracan 0:a129854eb4b6 41 #endif /* _THREEPHASEBRIDGE_H_ */