3相インバータで3相PWMを生成するためのライブラリです。ブラシレスDCモータの制御に利用できます。
3PhasePWM.h@1:209637768493, 2018-01-26 (annotated)
- Committer:
- porizou
- Date:
- Fri Jan 26 01:50:53 2018 +0000
- Revision:
- 1:209637768493
- Parent:
- 0:e82b1532eec5
- Child:
- 2:d1e5f63a3568
??????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
porizou | 0:e82b1532eec5 | 1 | #ifndef __3PhasePWM_h |
porizou | 0:e82b1532eec5 | 2 | #define __3PhasePWM_h |
porizou | 0:e82b1532eec5 | 3 | |
porizou | 0:e82b1532eec5 | 4 | #include "mbed.h" |
porizou | 0:e82b1532eec5 | 5 | |
porizou | 0:e82b1532eec5 | 6 | |
porizou | 0:e82b1532eec5 | 7 | /* |
porizou | 0:e82b1532eec5 | 8 | *キャリアの波形の指定 |
porizou | 0:e82b1532eec5 | 9 | *TOOTHWAVEかTRIANGLERWAVEのどちらかを定義 |
porizou | 0:e82b1532eec5 | 10 | */ |
porizou | 1:209637768493 | 11 | //#define TOOTHWAVE //キャリアの波形 ノコギリ波 |
porizou | 1:209637768493 | 12 | #define TRIANGLERWAVE //キャリアの波形 三角波 |
porizou | 0:e82b1532eec5 | 13 | |
porizou | 0:e82b1532eec5 | 14 | #define TMIN 3 //PWM時間幅の最小値 [μs] |
porizou | 0:e82b1532eec5 | 15 | |
porizou | 0:e82b1532eec5 | 16 | |
porizou | 0:e82b1532eec5 | 17 | class ThreePhasePWM { |
porizou | 0:e82b1532eec5 | 18 | |
porizou | 0:e82b1532eec5 | 19 | |
porizou | 0:e82b1532eec5 | 20 | public: |
porizou | 0:e82b1532eec5 | 21 | ThreePhasePWM(PinName upper_U, PinName upper_V, PinName upper_W, |
porizou | 0:e82b1532eec5 | 22 | PinName lower_U, PinName lower_V, PinName lower_W, |
porizou | 0:e82b1532eec5 | 23 | float Frequency, float DeadTime); |
porizou | 0:e82b1532eec5 | 24 | /* |
porizou | 0:e82b1532eec5 | 25 | * upper_U U相上アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 26 | * upper_V V相上アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 27 | * upper_W W相上アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 28 | * lower_U U相下アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 29 | * lower_V V相下アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 30 | * lower_W W相下アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 31 | * Frequency PWMキャリア周波数[Hz] |
porizou | 0:e82b1532eec5 | 32 | * deadtime デッドタイムの時間幅[μs] |
porizou | 0:e82b1532eec5 | 33 | */ |
porizou | 0:e82b1532eec5 | 34 | |
porizou | 0:e82b1532eec5 | 35 | void startPWM(void); //PWM開始 |
porizou | 0:e82b1532eec5 | 36 | void stopPWM(void); //PWM停止 |
porizou | 0:e82b1532eec5 | 37 | |
porizou | 0:e82b1532eec5 | 38 | |
porizou | 0:e82b1532eec5 | 39 | void setU(float duty_u); //U相Duty比を設定 |
porizou | 0:e82b1532eec5 | 40 | void setV(float duty_v); //V相Duty比を設定 |
porizou | 0:e82b1532eec5 | 41 | void setW(float duty_w); //W相Duty比を設定 |
porizou | 0:e82b1532eec5 | 42 | void setUVW(float duty_u, float duty_v , float duty_w); //3相Duty比を設定 |
porizou | 0:e82b1532eec5 | 43 | |
porizou | 0:e82b1532eec5 | 44 | |
porizou | 0:e82b1532eec5 | 45 | private: |
porizou | 0:e82b1532eec5 | 46 | |
porizou | 0:e82b1532eec5 | 47 | void PwmUout(void); //U相PWM出力関数 |
porizou | 0:e82b1532eec5 | 48 | void PwmVout(void); //V相PWM出力関数 |
porizou | 0:e82b1532eec5 | 49 | void PwmWout(void); //W相PWM出力関数 |
porizou | 0:e82b1532eec5 | 50 | |
porizou | 0:e82b1532eec5 | 51 | DigitalOut pwm_upper_U; //U相上アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 52 | DigitalOut pwm_upper_V; //V相上アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 53 | DigitalOut pwm_upper_W; //W相上アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 54 | DigitalOut pwm_lower_U; //U相下アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 55 | DigitalOut pwm_lower_V; //V相下アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 56 | DigitalOut pwm_lower_W; //W相下アームディジタル出力ポート |
porizou | 0:e82b1532eec5 | 57 | |
porizou | 0:e82b1532eec5 | 58 | Timeout pwm[3]; //タイムアウト関数の宣言 |
porizou | 0:e82b1532eec5 | 59 | |
porizou | 0:e82b1532eec5 | 60 | float Frequency_; //PWMキャリア周波数 F[Hz] |
porizou | 0:e82b1532eec5 | 61 | float DeadTime_; //デットタイム Tdt [μs] |
porizou | 0:e82b1532eec5 | 62 | |
porizou | 0:e82b1532eec5 | 63 | typedef struct struct_PWM_param{ |
porizou | 0:e82b1532eec5 | 64 | float duty; // 0.0-1.0, PWMデューティ比 |
porizou | 0:e82b1532eec5 | 65 | unsigned char mode; // チョッピングのON,OFFを決定するモード |
porizou | 0:e82b1532eec5 | 66 | long upper_us; // 上側アームをONにする時間幅[μs] |
porizou | 0:e82b1532eec5 | 67 | long lower_us; // 下側アームをONにする時間幅[μs] |
porizou | 0:e82b1532eec5 | 68 | }PWMparam; |
porizou | 0:e82b1532eec5 | 69 | |
porizou | 0:e82b1532eec5 | 70 | PWMparam uvw[3]; |
porizou | 0:e82b1532eec5 | 71 | }; |
porizou | 0:e82b1532eec5 | 72 | |
porizou | 0:e82b1532eec5 | 73 | #endif |
porizou | 0:e82b1532eec5 | 74 | //3PhasePWM_H |