Three phase bridge control
Dependents: BLDC_control BLDC_RPM_meter
ThreePhaseBridge.h@1:ba7889accd61, 2014-07-08 (annotated)
- Committer:
- acracan
- Date:
- Tue Jul 08 17:37:12 2014 +0000
- Revision:
- 1:ba7889accd61
- Parent:
- 0:a129854eb4b6
Update.
Who changed what in which revision?
User | Revision | Line number | New 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_ */ |