2014 sift / Mbed 2 deprecated TVDctrller2017_brdRev1_PandA

Dependencies:   mbed

Fork of TVDctrller2017_brdRev1_ver6 by 2014 sift

Committer:
sift
Date:
Mon Jul 25 07:12:49 2016 +0000
Revision:
5:a5462959b3ab
Parent:
3:821e2f07a260
Child:
6:26fa8c78500e
??????????????????????????????0??????????; 12000rpm??????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sift 0:276c1dab2d62 1 #ifndef TVDCTRL_H
sift 0:276c1dab2d62 2 #define TVDCTRL_H
sift 0:276c1dab2d62 3 #include "mbed.h"
sift 0:276c1dab2d62 4
sift 1:4d86ec2fe4b1 5 //受け入れるパルス時間,これより長い時間は停止とみなす
sift 1:4d86ec2fe4b1 6 #define MAX_PULSETIME 100
sift 1:4d86ec2fe4b1 7 //モーターパルスを車速[m/s]に変換する.indexが時間[ms]に対応.0[ms]は無効(0)とする
sift 2:9d69f27a3d3b 8 const float convPToV_533[MAX_PULSETIME+1]= {
sift 2:9d69f27a3d3b 9 0.000,167.447,83.723,55.816,41.862,33.489,27.908,23.921,20.931,18.605,16.745,15.222,13.954,12.881,11.960,11.163,10.465,9.850,9.303,8.813,
sift 2:9d69f27a3d3b 10 8.372,7.974,7.611,7.280,6.977,6.698,6.440,6.202,5.980,5.774,5.582,5.402,5.233,5.074,4.925,4.784,4.651,4.526,4.406,4.294,
sift 2:9d69f27a3d3b 11 4.186,4.084,3.987,3.894,3.806,3.721,3.640,3.563,3.488,3.417,3.349,3.283,3.220,3.159,3.101,3.044,2.990,2.938,2.887,2.838,
sift 2:9d69f27a3d3b 12 2.791,2.745,2.701,2.658,2.616,2.576,2.537,2.499,2.462,2.427,2.392,2.358,2.326,2.294,2.263,2.233,2.203,2.175,2.147,2.120,
sift 2:9d69f27a3d3b 13 2.093,2.067,2.042,2.017,1.993,1.970,1.947,1.925,1.903,1.881,1.861,1.840,1.820,1.801,1.781,1.763,1.744,1.726,1.709,1.691,
sift 2:9d69f27a3d3b 14 1.674
sift 2:9d69f27a3d3b 15 };
sift 2:9d69f27a3d3b 16
sift 2:9d69f27a3d3b 17 //10rpm刻みでその回転数での最大出力トルクを返す(3000rpm~)
sift 2:9d69f27a3d3b 18 //[0] :3000
sift 2:9d69f27a3d3b 19 //[+1] :+10rpm
sift 2:9d69f27a3d3b 20 const float calcMaxTorque[801] = {
sift 2:9d69f27a3d3b 21 45.00000,44.96063,44.92125,44.88188,44.84250,44.80313,44.76375,44.72438,44.68500,44.64563,44.60625,44.56688,44.52750,44.48813,44.44875,44.40938,44.37000,44.33063,44.29125,44.25188,44.21250,44.17313,44.13375,44.09438,44.05500,44.01563,43.97625,43.93688,43.89750,43.85813,43.81875,43.77938,43.74000,43.70063,43.66125,43.62188,43.58250,43.54313,43.50375,43.46438,43.42500,43.38563,43.34625,43.30688,43.26750,43.22813,43.18875,43.14938,43.11000,43.07063,43.03125,42.99188,42.95250,42.91313,42.87375,42.83438,42.79500,42.75563,42.71625,42.67688,42.63750,42.59813,42.55875,42.51938,42.48000,42.44063,42.40125,42.36188,42.32250,42.28313,42.24375,42.20438,42.16500,42.12563,42.08625,42.04688,42.00750,41.96813,41.92875,41.88938,41.85000,41.81063,41.77125,41.73188,41.69250,41.65313,41.61375,41.57438,41.53500,41.49563,41.45625,41.41688,41.37750,41.33813,41.29875,41.25938,41.22000,41.18063,41.14125,41.10188
sift 2:9d69f27a3d3b 22 ,41.06250,41.02313,40.98375,40.94438,40.90500,40.86563,40.82625,40.78688,40.74750,40.70813,40.66875,40.62938,40.59000,40.55063,40.51125,40.47188,40.43250,40.39313,40.35375,40.31438,40.27500,40.23563,40.19625,40.15688,40.11750,40.07813,40.03875,39.99938,39.96000,39.92063,39.88125,39.84188,39.80250,39.76313,39.72375,39.68438,39.64500,39.60563,39.56625,39.52688,39.48750,39.44813,39.40875,39.36938,39.33000,39.29063,39.25125,39.21188,39.17250,39.13313,39.09375,39.05438,39.01500,38.97563,38.93625,38.89688,38.85750,38.81813,38.77875,38.73938,38.70000,38.66063,38.62125,38.58188,38.54250,38.50313,38.46375,38.42438,38.38500,38.34563,38.30625,38.26688,38.22750,38.18813,38.14875,38.10938,38.07000,38.03063,37.99125,37.95188,37.91250,37.87313,37.83375,37.79438,37.75500,37.71563,37.67625,37.63688,37.59750,37.55813,37.51875,37.47938,37.44000,37.40063,37.36125,37.32188,37.28250,37.24313,37.20375,37.16438
sift 2:9d69f27a3d3b 23 ,37.12500,37.08563,37.04625,37.00688,36.96750,36.92813,36.88875,36.84938,36.81000,36.77063,36.73125,36.69188,36.65250,36.61313,36.57375,36.53438,36.49500,36.45563,36.41625,36.37688,36.33750,36.29813,36.25875,36.21938,36.18000,36.14063,36.10125,36.06188,36.02250,35.98313,35.94375,35.90438,35.86500,35.82563,35.78625,35.74688,35.70750,35.66813,35.62875,35.58938,35.55000,35.51063,35.47125,35.43188,35.39250,35.35313,35.31375,35.27438,35.23500,35.19563,35.15625,35.11688,35.07750,35.03813,34.99875,34.95938,34.92000,34.88063,34.84125,34.80188,34.76250,34.72313,34.68375,34.64438,34.60500,34.56563,34.52625,34.48688,34.44750,34.40813,34.36875,34.32938,34.29000,34.25063,34.21125,34.17188,34.13250,34.09313,34.05375,34.01438,33.97500,33.93563,33.89625,33.85688,33.81750,33.77813,33.73875,33.69938,33.66000,33.62063,33.58125,33.54188,33.50250,33.46313,33.42375,33.38438,33.34500,33.30563,33.26625,33.22688
sift 2:9d69f27a3d3b 24 ,33.18750,33.14813,33.10875,33.06938,33.03000,32.99063,32.95125,32.91188,32.87250,32.83313,32.79375,32.75438,32.71500,32.67563,32.63625,32.59688,32.55750,32.51813,32.47875,32.43938,32.40000,32.36063,32.32125,32.28188,32.24250,32.20313,32.16375,32.12438,32.08500,32.04563,32.00625,31.96688,31.92750,31.88813,31.84875,31.80938,31.77000,31.73063,31.69125,31.65188,31.61250,31.57313,31.53375,31.49438,31.45500,31.41563,31.37625,31.33688,31.29750,31.25813,31.21875,31.17938,31.14000,31.10063,31.06125,31.02188,30.98250,30.94313,30.90375,30.86438,30.82500,30.78563,30.74625,30.70688,30.66750,30.62813,30.58875,30.54938,30.51000,30.47063,30.43125,30.39188,30.35250,30.31313,30.27375,30.23438,30.19500,30.15563,30.11625,30.07688,30.03750,29.99813,29.95875,29.91938,29.88000,29.84063,29.80125,29.76188,29.72250,29.68313,29.64375,29.60438,29.56500,29.52563,29.48625,29.44688,29.40750,29.36813,29.32875,29.28938
sift 2:9d69f27a3d3b 25 ,29.25000,29.21063,29.17125,29.13188,29.09250,29.05313,29.01375,28.97438,28.93500,28.89563,28.85625,28.81688,28.77750,28.73813,28.69875,28.65938,28.62000,28.58063,28.54125,28.50188,28.46250,28.42313,28.38375,28.34438,28.30500,28.26563,28.22625,28.18688,28.14750,28.10813,28.06875,28.02938,27.99000,27.95063,27.91125,27.87188,27.83250,27.79313,27.75375,27.71438,27.67500,27.63563,27.59625,27.55688,27.51750,27.47813,27.43875,27.39938,27.36000,27.32063,27.28125,27.24188,27.20250,27.16313,27.12375,27.08438,27.04500,27.00563,26.96625,26.92688,26.88750,26.84813,26.80875,26.76938,26.73000,26.69063,26.65125,26.61188,26.57250,26.53313,26.49375,26.45438,26.41500,26.37563,26.33625,26.29688,26.25750,26.21813,26.17875,26.13938,26.10000,26.06063,26.02125,25.98188,25.94250,25.90313,25.86375,25.82438,25.78500,25.74563,25.70625,25.66688,25.62750,25.58813,25.54875,25.50938,25.47000,25.43063,25.39125,25.35188
sift 2:9d69f27a3d3b 26 ,25.31250,25.27313,25.23375,25.19438,25.15500,25.11563,25.07625,25.03688,24.99750,24.95813,24.91875,24.87938,24.84000,24.80063,24.76125,24.72188,24.68250,24.64313,24.60375,24.56438,24.52500,24.48563,24.44625,24.40688,24.36750,24.32813,24.28875,24.24938,24.21000,24.17063,24.13125,24.09188,24.05250,24.01313,23.97375,23.93438,23.89500,23.85563,23.81625,23.77688,23.73750,23.69813,23.65875,23.61938,23.58000,23.54063,23.50125,23.46188,23.42250,23.38313,23.34375,23.30438,23.26500,23.22563,23.18625,23.14688,23.10750,23.06813,23.02875,22.98938,22.95000,22.91063,22.87125,22.83188,22.79250,22.75313,22.71375,22.67438,22.63500,22.59563,22.55625,22.51688,22.47750,22.43813,22.39875,22.35938,22.32000,22.28063,22.24125,22.20188,22.16250,22.12313,22.08375,22.04438,22.00500,21.96563,21.92625,21.88688,21.84750,21.80813,21.76875,21.72938,21.69000,21.65063,21.61125,21.57188,21.53250,21.49313,21.45375,21.41438
sift 2:9d69f27a3d3b 27 ,21.37500,21.33563,21.29625,21.25688,21.21750,21.17813,21.13875,21.09938,21.06000,21.02063,20.98125,20.94188,20.90250,20.86313,20.82375,20.78438,20.74500,20.70563,20.66625,20.62688,20.58750,20.54813,20.50875,20.46938,20.43000,20.39063,20.35125,20.31188,20.27250,20.23313,20.19375,20.15438,20.11500,20.07563,20.03625,19.99688,19.95750,19.91813,19.87875,19.83938,19.80000,19.76063,19.72125,19.68188,19.64250,19.60313,19.56375,19.52438,19.48500,19.44563,19.40625,19.36688,19.32750,19.28813,19.24875,19.20938,19.17000,19.13063,19.09125,19.05188,19.01250,18.97313,18.93375,18.89438,18.85500,18.81563,18.77625,18.73688,18.69750,18.65813,18.61875,18.57938,18.54000,18.50063,18.46125,18.42188,18.38250,18.34313,18.30375,18.26438,18.22500,18.18563,18.14625,18.10688,18.06750,18.02813,17.98875,17.94938,17.91000,17.87063,17.83125,17.79188,17.75250,17.71313,17.67375,17.63438,17.59500,17.55563,17.51625,17.47688
sift 2:9d69f27a3d3b 28 ,17.43750,17.39813,17.35875,17.31938,17.28000,17.24063,17.20125,17.16188,17.12250,17.08313,17.04375,17.00438,16.96500,16.92563,16.88625,16.84688,16.80750,16.76813,16.72875,16.68938,16.65000,16.61063,16.57125,16.53188,16.49250,16.45313,16.41375,16.37438,16.33500,16.29563,16.25625,16.21688,16.17750,16.13813,16.09875,16.05938,16.02000,15.98063,15.94125,15.90188,15.86250,15.82313,15.78375,15.74438,15.70500,15.66563,15.62625,15.58688,15.54750,15.50813,15.46875,15.42938,15.39000,15.35063,15.31125,15.27188,15.23250,15.19313,15.15375,15.11438,15.07500,15.03563,14.99625,14.95688,14.91750,14.87813,14.83875,14.79938,14.76000,14.72063,14.68125,14.64188,14.60250,14.56313,14.52375,14.48438,14.44500,14.40563,14.36625,14.32688,14.28750,14.24813,14.20875,14.16938,14.13000,14.09063,14.05125,14.01188,13.97250,13.93313,13.89375,13.85438,13.81500,13.77563,13.73625,13.69688,13.65750,13.61813,13.57875,13.53938
sift 2:9d69f27a3d3b 29 ,13.50000
sift 2:9d69f27a3d3b 30 };
sift 2:9d69f27a3d3b 31
sift 2:9d69f27a3d3b 32 struct errCounter_t {
sift 2:9d69f27a3d3b 33 int apsUnderVolt; //aps電圧不足
sift 2:9d69f27a3d3b 34 int apsExceedVolt; //aps電圧超過
sift 2:9d69f27a3d3b 35 int apsErrorTolerance; //aps偏差超過
sift 2:9d69f27a3d3b 36 int apsStick; //aps固着
sift 2:9d69f27a3d3b 37 int brakeUnderVolt; //brake電圧不足
sift 2:9d69f27a3d3b 38 int brakeExceedVolt; //brake電圧超過
sift 2:9d69f27a3d3b 39 int brakeFuzzyVolt; //brake曖昧な電圧(ONでもOFFでもない)
sift 2:9d69f27a3d3b 40 int brakeOverRide; //accel-brake同時踏み
sift 0:276c1dab2d62 41 };
sift 0:276c1dab2d62 42
sift 3:821e2f07a260 43 #define ratioLPF 0.456f //CutOff:10Hz
sift 5:a5462959b3ab 44 #define ratioLPF_V 0.061f //CutOff:10Hz(sampling:10ms)
sift 2:9d69f27a3d3b 45 #define M_PI 3.1415f //[-]
sift 2:9d69f27a3d3b 46 #define TVD_GEAR_RATIO 10.0f //[-]
sift 2:9d69f27a3d3b 47 #define TIRE_DIAMETER 0.533f //[m]
sift 2:9d69f27a3d3b 48 #define WHEEL_BASE 1.760f //[m]
sift 2:9d69f27a3d3b 49 #define STABIRITY_FACTOR 0.01f //[-]
sift 2:9d69f27a3d3b 50 #define TREAD 1.3f //[m]
sift 2:9d69f27a3d3b 51
sift 2:9d69f27a3d3b 52 enum {
sift 2:9d69f27a3d3b 53 APS_PRIMARY=0,
sift 2:9d69f27a3d3b 54 APS_SECONDARY,
sift 2:9d69f27a3d3b 55 BRAKE
sift 0:276c1dab2d62 56 };
sift 2:9d69f27a3d3b 57
sift 2:9d69f27a3d3b 58 enum SelectMotor {
sift 2:9d69f27a3d3b 59 RIGHT_MOTOR=0,
sift 2:9d69f27a3d3b 60 LEFT_MOTOR
sift 0:276c1dab2d62 61 };
sift 0:276c1dab2d62 62
sift 5:a5462959b3ab 63 const int MAX_MOTOR_TORQUE = 0xFFFF; //LSB : 45/65535 = 0.686655[mNm]
sift 5:a5462959b3ab 64 const int MAX_OUTPUT_TORQUE = (int)(MAX_MOTOR_TORQUE * 0.7); //出力最大値
sift 2:9d69f27a3d3b 65 const float MAX_DISTRIBUTION_TORQUE = (MAX_OUTPUT_TORQUE*0.8);
sift 5:a5462959b3ab 66 const float MAX_STEER_ANGLE = (float)(M_PI/180.0 * 25.0); //[-]
sift 2:9d69f27a3d3b 67
sift 2:9d69f27a3d3b 68 const int APS_MIN_POSITION =(int)(0xFFFF/3.3 * 1.0); //"正常時"最小入力電圧
sift 2:9d69f27a3d3b 69 const int APS_MAX_POSITION =(int)(0xFFFF/3.3 * 2.0); //"正常時"最大入力電圧
sift 2:9d69f27a3d3b 70 const int APS_DEADBAND =(int)((APS_MAX_POSITION - APS_MIN_POSITION) * 0.2); //APS信号不感帯
sift 2:9d69f27a3d3b 71 const int APS_VALID_RANGE =(APS_MAX_POSITION - APS_MIN_POSITION) - APS_DEADBAND; //APS信号有効範囲
sift 2:9d69f27a3d3b 72 const int APS_DEVIATION_TOLERANCE =(int)((APS_MAX_POSITION - APS_MIN_POSITION) * 0.1); //10%偏差許容値
sift 2:9d69f27a3d3b 73 const int APS_OVERRIDE =(int)(APS_VALID_RANGE * 0.25); //ブレーキオーバーライドの閾値
sift 1:4d86ec2fe4b1 74
sift 2:9d69f27a3d3b 75 const int BRK_ON_VOLTAGE =(int)(0xFFFF/3.3 * 1.65); //ブレーキON時電圧
sift 2:9d69f27a3d3b 76 const int BRK_OFF_VOLTAGE =(int)(0xFFFF/3.3 * 2.20); //ブレーキOFF時電圧
sift 2:9d69f27a3d3b 77
sift 2:9d69f27a3d3b 78 const int ERROR_TOLERANCE =(int)(0xFFFF * 0.05); //センサ値誤差許容値
sift 2:9d69f27a3d3b 79
sift 2:9d69f27a3d3b 80 //DACは12bit仕様だが一旦16bitに統一してから12bitに変換する
sift 2:9d69f27a3d3b 81 const int DACOUTPUT_MIN =(int)(0xFFFF/3.3 * 0.49); //MCの最低入力電圧
sift 2:9d69f27a3d3b 82 const int DACOUTPUT_MAX =(int)(0xFFFF/3.3 * 2.50); //MCの最大入力電圧
sift 2:9d69f27a3d3b 83 const int DACOUTPUT_VALID_RANGE =DACOUTPUT_MAX - DACOUTPUT_MIN; //実質有効電圧範囲
sift 2:9d69f27a3d3b 84
sift 2:9d69f27a3d3b 85 const int LINEAR_REGION_TORQUE =(int)(MAX_MOTOR_TORQUE/45.0 * 2.5); //トルクに回転数が影響しない領域の境界値(トルク値)
sift 2:9d69f27a3d3b 86 const int LINEAR_REGION_VOLTAGE =(int)(0xFFFF/3.3 * 1.0) - DACOUTPUT_MIN; //トルクに回転数が影響しない領域の境界値(出力電圧値)
sift 2:9d69f27a3d3b 87 const int MAX_REVOLUTION_TORQUE =(int)(MAX_MOTOR_TORQUE/45.0 * 13.5); //最高回転数における最大出力トルク
sift 2:9d69f27a3d3b 88
sift 2:9d69f27a3d3b 89 const float FIX_DACOUTFORM =(float)((0xFFF/3.3 * 2.5)/0xFFFF);
sift 1:4d86ec2fe4b1 90
sift 5:a5462959b3ab 91 const int MAX_PULSE_TIME =5000; //12000rpmが最高回転数
sift 5:a5462959b3ab 92
sift 1:4d86ec2fe4b1 93 void loadSensorsLPF(void);
sift 1:4d86ec2fe4b1 94 int checkSensorPlausibility(void);
sift 1:4d86ec2fe4b1 95
sift 1:4d86ec2fe4b1 96 void initTVD(void);
sift 2:9d69f27a3d3b 97 void driveTVD(void);
sift 1:4d86ec2fe4b1 98
sift 5:a5462959b3ab 99 int getPulseTime(SelectMotor rl);
sift 2:9d69f27a3d3b 100 float getVelocity(void);
sift 2:9d69f27a3d3b 101 int loadCurrentSensor(int sensor);
sift 2:9d69f27a3d3b 102 int loadRawSensor(int sensor);
sift 2:9d69f27a3d3b 103 void getCurrentErrCount(struct errCounter_t *ptr);
sift 2:9d69f27a3d3b 104 int calcRequestTorque(void);
sift 2:9d69f27a3d3b 105
sift 0:276c1dab2d62 106
sift 0:276c1dab2d62 107 #endif