Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
HbMotor.h
- Committer:
- MasashiNomura
- Date:
- 2018-12-15
- Revision:
- 28:fdb3b144e342
- Parent:
- 27:ff63c23bc689
- Child:
- 29:eb3d72dd94aa
File content as of revision 28:fdb3b144e342:
#ifndef __HBMOTOR_H__ #define __HBMOTOR_H__ ///////////////////////////////////////////////////////////////////// #include "typedef.h" #include "globalFlags.h" class HbMotor{ private: UCHAR id ;//識別ID INT16 ofs;//オフセットスロットル INT16 limitH;// INT16 limitL;// INT16 curVal; public: HbMotor(UCHAR iID);//コンストラクタ void setValue(INT16 iVal); void setOfs(INT16 iVal); INT16 getOfs(); void setLimit(INT16 low, INT16 hi); INT16 getCurrentValue(); void setValueDirect(INT16 iVal); void setValueFPGA(UCHAR iID, INT16 iVal);//iIDは 0 or 1 }; class HbMotCtrl{ private: std::bitset<4> ready; //bool ready; eMotPos pos; // 位置 INT16 typ; // 流入側or出力側 INT16 val; // INT16 ofs; // オフセットスロットル INT16 pwmMin; // INT16 pwmMax; // INT16 rpmMin; // INT16 rpmMax; // float coefA; // PWMとRPMの関係の曲線の係数A float coefB; // PWMとRPMの関係の曲線の係数B float coefC; // PWMとRPMの関係の曲線の係数C INT16 curPwmVal; // 計算してセットした値 INT16 curRpmVal; // 指定された現在のRPM //INT16 tblVal[100]; // %->PWMの変換テーブル public: /**/ HbMotCtrl(eMotPos Pos, INT16 Type);//コンストラクタ ~HbMotCtrl();//デストラクタ bool isReady();//使用できるようにパラメータがセットされたかどうか(今は使わないかなぁ) void setPwmLimt(INT16 Min, INT16 Max); void setRpmLimt(INT16 Min, INT16 Max); void setMotCoef(float a, float b, float c); //void makeTable(); // 変換テーブル作成 パラメータセット後呼ぶ INT16 calcPwm(INT16 percent); void setValue(float value); // パーセンテージ0~50 void setOfs(float value); // パーセンテージ0~50 float getValue(); // パーセンテージ0~50 float getOfs(); // パーセンテージ0~50 }; class HbSubProp{ private: // 今回のモーターと電装ではこうなるが、変更があれば適宜変更かクラス構成の見直しが必要 #define PWN_MAX 4000 #define RPM_IN_MAX 8500 #define RPM_OUT_MAX 7500 #define RPM_MIN 1500 eMotPos pos ;//識別ID HbMotCtrl *motCtrl[2]; float curVal; // 現在のパーセンテージ float tarVal; // 目標パーセンテージ public: HbSubProp(eMotPos Pos);//コンストラクタ ~HbSubProp();//デストラクタ void setRpmLimIn(INT16 min, INT16 max); void setRpmLimOut(INT16 min, INT16 max); void setPwmLimit(INT16 min, INT16 max); void setCoef(eMotType type, float a, float b, float c); //void makeTbl(); void setValue(float val); // パーセンテージ0~50 void setOfs(float val); // パーセンテージ0~50 float getValue(); // パーセンテージ0~50 float getOfs(); // パーセンテージ0~50 // あとで実装したい関数たち //void addValue(float val); //void onePush(float val);// パーセンテージ //void setValueEMG(float val); // オフセット分も含めて指定可能 }; ///////////////////////////////////////////////////////////////////// #endif