浏览代码

转把车速限制

Ye Jin 1 年之前
父节点
当前提交
70410944df

+ 3 - 2
User project/3.BasicFunction/Include/AssistCurve.h

@@ -33,10 +33,11 @@ extern "C" {
 #define BIKE_MECH_RATION              35
 #define BIKE_SPEED_IQLIMIT_THRESHOLD1 25                                // Km/h
 #define BIKE_SPEED_IQLIMIT_THRESHOLD2 (BIKE_SPEED_IQLIMIT_THRESHOLD1 + 2) // Km/h
-#define BIKE_SPEED_THROTTLE_MAX       6                                 // Km/h
+#define BIKE_SPEED_THROTTLE_MAX       34                                 // Km/h
+#define BIKE_SPEED_WALK_MAX            6                                 // Km/h
 #define BIKE_FRONTTEETH_NMB          38                                 // number
 #define BIKE_BACKTEETH_NMB            11                                 // number
-#define BIKE_BACKLIGHT_MODE           1      //mode 1-6
+#define BIKE_BACKLIGHT_MODE           2      //mode 1-6
 #define BIKE_BACKLIGHT_VOLTAGE        6     //6 or 12V
 #define BIKE_FORWARDLEDLIGHT_VOLTAGE  6     //6 or 12V
 #define BIKE_LIGHT_PARA               ((BIKE_BACKLIGHT_MODE<<12)|(BIKE_BACKLIGHT_VOLTAGE<<8)|BIKE_FORWARDLEDLIGHT_VOLTAGE)     

+ 6 - 0
User project/3.BasicFunction/Include/bikespeed.h

@@ -143,6 +143,12 @@ typedef struct
     UWORD  uwKiPu;
 }BIKESPDPI_COF;
 
+typedef struct
+{
+    UWORD uwBikeSpdThresHold1; // Q15 the start bike speed to limit iqref
+    UWORD uwBikeSpdThresHold2; // Q15 the end bike speed to limit iqref
+    ULONG ulBikeSpdDeltInv;    // Q14
+} BIKESPDLIMIT_COEF;
 /****************************************
  *
  *           Exported variable

+ 2 - 2
User project/3.BasicFunction/Include/i2c_master.h

@@ -185,11 +185,11 @@
     }
 #define I2CuwAssistMaxSpdKmH                               \
     {                                                      \
-        ((UWORD)BIKE_SPEED_IQLIMIT_THRESHOLD1), 0, 0, 0, 0 \
+        ((UWORD)BIKE_SPEED_THROTTLE_MAX), 0, 0, 0, 0 \
     }
 #define I2CuwThrottleMaxSpdKmH                       \
     {                                                \
-        ((UWORD)BIKE_SPEED_THROTTLE_MAX), 0, 0, 0, 0 \
+        ((UWORD)BIKE_SPEED_WALK_MAX), 0, 0, 0, 0 \
     }
 #define I2CuwNmFrontChainring \
     {                         \

+ 2 - 2
User project/3.BasicFunction/Source/AssistCurve.c

@@ -198,8 +198,8 @@ void ass_voAssitEEInit(void)
     ass_stParaCong.uwCadPulsePerCirc = CADENCE_PULSES_PER_CIRC;
     ass_stParaCong.uwMechRationMotor = 35; //   Q0
 
-    ass_stParaCong.uwAssistMaxSpdKmH = BIKE_SPEED_IQLIMIT_THRESHOLD1;
-    ass_stParaCong.uwThrottleMaxSpdKmH = BIKE_SPEED_THROTTLE_MAX;
+    ass_stParaCong.uwAssistMaxSpdKmH = BIKE_SPEED_THROTTLE_MAX;
+    ass_stParaCong.uwThrottleMaxSpdKmH = BIKE_SPEED_WALK_MAX;
     ass_stParaCong.uwNmFrontChainring = BIKE_FRONTTEETH_NMB;    // front gear
     ass_stParaCong.uwNmBackChainring = BIKE_BACKTEETH_NMB;     // min number of back gear
     ass_stParaCong.uwAssistSelect1 = BIKE_ASSIST_MODE1;

+ 13 - 0
User project/3.BasicFunction/Source/bikelight.c

@@ -389,6 +389,19 @@ void bikelight_voBikeLightControl(UWORD switchAction, BOOL Brate_Sta,UWORD uwLig
               break;
         }
     default:
+        {
+              if(switchAction==1)
+              {
+                  //IO_BACKLED_ON();
+                  BikeLedGloFun.blBike_BackLedSta=TRUE;
+              }
+              else
+              {
+                  // IO_BACKLED_OFF();
+                  BikeLedGloFun.blBike_BackLedSta=FALSE;
+              }
+              break;
+        }
              break;
 
     }

+ 8 - 3
User project/3.BasicFunction/Source/bikespeed.c

@@ -32,6 +32,7 @@ BIKESPDPI_IN bikespeed_stPIIn;
 static BIKESPDPI_COF  bikespeed_stPICof;
 BIKESPDPI_OUT bikespeed_stPIOut;
 LPF_OUT bike_pvt_stCurLpf;
+BIKESPDLIMIT_COEF bikespeed_stSpdLimCoef;
 
 static ULONG bikespeed_pvt_FreqPu = 0;
 /***************************************************************
@@ -63,6 +64,10 @@ void bikespeed_voBikeSpeedCof(void)
     bikespeed_stFreGetCof.uwBikespeedPwrErrorVoltagePuUp = ((ULONG)BIKESPEED_POWER_ERROR_VOLTAGE_UP << 14) / VBASE;
     bikespeed_stFreGetCof.uwWheelPerimeter = 600;
     bikespeed_stFreGetCof.uwMinTriptoUpdate = 100; // 100m
+    
+    bikespeed_stSpdLimCoef.uwBikeSpdThresHold1 = (ass_stParaCong.uwAssistMaxSpdKmH-2)*BIKESPEED_KMPERH2FREQPU;
+    bikespeed_stSpdLimCoef.uwBikeSpdThresHold2 = ass_stParaCong.uwAssistMaxSpdKmH*BIKESPEED_KMPERH2FREQPU;
+    bikespeed_stSpdLimCoef.ulBikeSpdDeltInv = ((SQWORD)1 << 20) / (bikespeed_stSpdLimCoef.uwBikeSpdThresHold2 - bikespeed_stSpdLimCoef.uwBikeSpdThresHold1); // Q20;
 }
 
 /***************************************************************
@@ -498,16 +503,16 @@ void bikespeed_voPI(const BIKESPDPI_IN *in, BIKESPDPI_OUT *out)
         out->slIqRefPu = (SLONG)sqIqRefPu;
     }
     
-    if (in->slSpdFdkPu <= 33*BIKESPEED_KMPERH2FREQPU)
+    if (in->slSpdFdkPu <= bikespeed_stSpdLimCoef.uwBikeSpdThresHold1)
     {
         uwBikeSpeedGain = Q12_1; // Q12
         
     }
-    else if (in->slSpdFdkPu > 33*BIKESPEED_KMPERH2FREQPU && in->slSpdFdkPu <= 37*BIKESPEED_KMPERH2FREQPU)
+    else if (in->slSpdFdkPu > bikespeed_stSpdLimCoef.uwBikeSpdThresHold1 && in->slSpdFdkPu <= bikespeed_stSpdLimCoef.uwBikeSpdThresHold2)
     {
         uwBikeSpeedGain  =
             Q12_1 -
-            ((((SQWORD)in->slSpdFdkPu - (SQWORD)33*BIKESPEED_KMPERH2FREQPU ) * (SQWORD)ass_stCurLimCoef.ulBikeSpdDeltInv) >> 9); // Q12
+            ((((SQWORD)in->slSpdFdkPu - (SQWORD)bikespeed_stSpdLimCoef.uwBikeSpdThresHold1 ) * (SQWORD)ass_stCurLimCoef.ulBikeSpdDeltInv) >> 8); // Q12
     }
     else
     {