Hiroki Mori / 3PhasePWM
Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers 3PhasePWM.h Source File

3PhasePWM.h

00001 #ifndef __3PhasePWM_h
00002 #define __3PhasePWM_h
00003 
00004 #include "mbed.h"
00005 
00006 
00007 /* 
00008  *キャリアの波形の指定
00009  *TOOTHWAVEかTRIANGLERWAVEのどちらかを定義
00010 */
00011 #define TOOTHWAVE  //キャリアの波形 ノコギリ波
00012 //#define TRIANGLERWAVE //キャリアの波形 三角波
00013 
00014 #define TMIN 3 //PWM時間幅の最小値 [μs]
00015 
00016 
00017 class ThreePhasePWM {
00018 
00019 
00020 public:
00021     ThreePhasePWM(PinName upper_U, PinName upper_V, PinName upper_W,
00022               PinName lower_U, PinName lower_V, PinName lower_W,
00023               float Frequency, float DeadTime);
00024     /*
00025      * upper_U U相上アームディジタル出力ポート
00026      * upper_V V相上アームディジタル出力ポート
00027      * upper_W W相上アームディジタル出力ポート
00028      * lower_U U相下アームディジタル出力ポート
00029      * lower_V V相下アームディジタル出力ポート
00030      * lower_W W相下アームディジタル出力ポート
00031      * Frequency PWMキャリア周波数[Hz]
00032      * deadtime  デッドタイムの時間幅[μs]
00033      */
00034 
00035     void startPWM(void); //PWM開始
00036     void stopPWM(void);  //PWM停止
00037 
00038 
00039     void setU(float duty_u); //U相Duty比を設定
00040     void setV(float duty_v); //V相Duty比を設定
00041     void setW(float duty_w); //W相Duty比を設定
00042     void setUVW(float duty_u, float duty_v , float duty_w); //3相Duty比を設定
00043 
00044 
00045 private:
00046 
00047     void PwmUout(void); //U相PWM出力関数
00048     void PwmVout(void); //V相PWM出力関数
00049     void PwmWout(void); //W相PWM出力関数
00050 
00051     DigitalOut pwm_upper_U; //U相上アームディジタル出力ポート
00052     DigitalOut pwm_upper_V; //V相上アームディジタル出力ポート
00053     DigitalOut pwm_upper_W; //W相上アームディジタル出力ポート
00054     DigitalOut pwm_lower_U; //U相下アームディジタル出力ポート
00055     DigitalOut pwm_lower_V; //V相下アームディジタル出力ポート
00056     DigitalOut pwm_lower_W; //W相下アームディジタル出力ポート
00057 
00058     Timeout pwm[3]; //タイムアウト関数の宣言
00059 
00060     float Frequency_; //PWMキャリア周波数 F[Hz]
00061     float DeadTime_;     //デットタイム Tdt [μs]
00062 
00063     typedef struct struct_PWM_param{
00064         float duty;         // 0.0-1.0, PWMデューティ比
00065         unsigned char mode; // チョッピングのON,OFFを決定するモード
00066         long  upper_us;     // 上側アームをONにする時間幅[μs]
00067         long  lower_us;     // 下側アームをONにする時間幅[μs]
00068     }PWMparam;
00069     
00070     PWMparam uvw[3];
00071 };
00072 
00073 #endif 
00074 //3PhasePWM_H