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:
- 2019-02-24
- Revision:
- 48:71aec693a7dc
- Parent:
- 46:5074781a28dd
File content as of revision 48:71aec693a7dc:
#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; // 流入(IN)側or出力(OUT)側 INT16 val; // User入力値 INT16 attval; // 姿勢制御の入力値 INT16 ofs; // オフセットスロットル値 INT16 pwmMin; // INT16 pwmMax; // INT16 rpmMin; // INT16 rpmMax; // INT16 rpmOfs; // 調整用オフセット float rpmGain; // 調整用ゲイン float coefA; // PWMとRPMの関係の曲線の係数A float coefB; // PWMとRPMの関係の曲線の係数B float coefC; // PWMとRPMの関係の曲線の係数C INT16 fpgaval; // FPGAにセットされた0~4095の値 public: HbMotCtrl(eMotPos Pos, INT16 Type);//コンストラクタ ~HbMotCtrl();//デストラクタ void setPwmLimt(INT16 Min, INT16 Max); void setRpmLimt(INT16 Min, INT16 Max); void setRpmOffset(INT16 ofs); void setRpmGain(float gain); void setMotCoef(float a, float b, float c); INT16 calcPwm(INT16 rpm); void setRpmValue(eMotInType type, INT16 value); // 値セット void setRpmValue(); //!< セットしたRPMの合計でFPGAに値をセット INT16 getRpmValue(eMotInType type); // Rpm void setValFpga(INT16 value); INT16 getValFpga(); }; class HbSubProp{ private: // 今回のモーターと電装ではこうなるが、変更があれば適宜変更かクラス構成の見直しが必要 #define PWN_MAX 4095 #define RPM_IN_MAX 9000 #define RPM_OUT_MAX 9000 #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 setRpmGain(eMotType type, float gain);// 個体差吸収用ゲイン void setRpmOffset(eMotType type, INT16 ofs);// 個体差吸収用オフセット void setCoef(eMotType type, float a, float b, float c); void setValue(eMotInType type, INT16 val); // rpm void setValue();//!< セットしたRPMの合計でFPGAに値をセット INT16 getValue(eMotInType type); // rpm // Debug用 void setValueFpgaMot(eMotType type, INT16 val); INT16 getValueFpgaMot(eMotType type); // あとで実装したい関数たち //void addValue(float val); //void onePush(float val);// パーセンテージ //void setValueEMG(float val); // オフセット分も含めて指定可能 }; ///////////////////////////////////////////////////////////////////// #endif