|
@@ -200,10 +200,14 @@ void torsensor_voTorADC(void) // need to match ADC_StartConversion(ADC1);
|
|
if (torsensor_stTorSensorOut.blTorqueErrorFlg == TRUE)
|
|
if (torsensor_stTorSensorOut.blTorqueErrorFlg == TRUE)
|
|
{
|
|
{
|
|
torsensor_stTorSensorOut.uwTorquePu = 0;
|
|
torsensor_stTorSensorOut.uwTorquePu = 0;
|
|
|
|
+ #ifdef TORSENSOR3NUM
|
|
if( ((TORQUEVOLREG1() < 4000) && (TORQUEVOLREG1() > 10)) &&
|
|
if( ((TORQUEVOLREG1() < 4000) && (TORQUEVOLREG1() > 10)) &&
|
|
((TORQUEVOLREG2() < 4000) && (TORQUEVOLREG2() > 10)) &&
|
|
((TORQUEVOLREG2() < 4000) && (TORQUEVOLREG2() > 10)) &&
|
|
((TORQUEVOLREG3() < 4000) && (TORQUEVOLREG3() > 10))
|
|
((TORQUEVOLREG3() < 4000) && (TORQUEVOLREG3() > 10))
|
|
)
|
|
)
|
|
|
|
+ #else
|
|
|
|
+ if((TORQUEVOLREG1() < 4000) && (TORQUEVOLREG1() > 10))
|
|
|
|
+ #endif
|
|
{
|
|
{
|
|
torsensor_stTorSensorOut.uwTorqueErrorCnt++;
|
|
torsensor_stTorSensorOut.uwTorqueErrorCnt++;
|
|
if (torsensor_stTorSensorOut.uwTorqueErrorCnt > 1000)
|
|
if (torsensor_stTorSensorOut.uwTorqueErrorCnt > 1000)
|
|
@@ -259,10 +263,14 @@ void torsensor_voTorADC(void) // need to match ADC_StartConversion(ADC1);
|
|
torsensor_stTorSensorOut.uwTorquePu = torsensor_stTorSensorCof.uwBikeTorStep4NmPu;
|
|
torsensor_stTorSensorOut.uwTorquePu = torsensor_stTorSensorCof.uwBikeTorStep4NmPu;
|
|
}
|
|
}
|
|
#elif (TORSENSOR_USEMOL == TORSENSOR_USEAUTOZERO)
|
|
#elif (TORSENSOR_USEMOL == TORSENSOR_USEAUTOZERO)
|
|
|
|
+ #ifdef TORSENSOR3NUM
|
|
torsensor_stTorSensorOut.uwTorqueReg = abs( (SWORD)(TORQUEVOLREG1() - torsensor_stTorSensorCof.uwTorqueOffsetNow1) +
|
|
torsensor_stTorSensorOut.uwTorqueReg = abs( (SWORD)(TORQUEVOLREG1() - torsensor_stTorSensorCof.uwTorqueOffsetNow1) +
|
|
(SWORD)(TORQUEVOLREG2() - torsensor_stTorSensorCof.uwTorqueOffsetNow2) +
|
|
(SWORD)(TORQUEVOLREG2() - torsensor_stTorSensorCof.uwTorqueOffsetNow2) +
|
|
(SWORD)(TORQUEVOLREG3() - torsensor_stTorSensorCof.uwTorqueOffsetNow3)
|
|
(SWORD)(TORQUEVOLREG3() - torsensor_stTorSensorCof.uwTorqueOffsetNow3)
|
|
) / 3;
|
|
) / 3;
|
|
|
|
+ #else
|
|
|
|
+ torsensor_stTorSensorOut.uwTorqueReg = abs( (SWORD)(TORQUEVOLREG1() - torsensor_stTorSensorCof.uwTorqueOffsetNow1));
|
|
|
|
+ #endif
|
|
if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwTorqueOffset)
|
|
if (torsensor_stTorSensorOut.uwTorqueReg <= torsensor_stTorSensorCof.uwTorqueOffset)
|
|
{
|
|
{
|
|
torsensor_stTorSensorOut.uwTorquePu = 0;
|
|
torsensor_stTorSensorOut.uwTorquePu = 0;
|
|
@@ -302,11 +310,14 @@ void torsensor_voTorADC(void) // need to match ADC_StartConversion(ADC1);
|
|
torsensor_stTorSensorOut.uwTorquePercent =
|
|
torsensor_stTorSensorOut.uwTorquePercent =
|
|
(((ULONG)torsensor_stTorSensorOut.uwTorqueLPFPu) << 14) /
|
|
(((ULONG)torsensor_stTorSensorOut.uwTorqueLPFPu) << 14) /
|
|
(torsensor_stTorSensorCof.uwMaxSensorTorquePu - torsensor_stTorSensorCof.uwMinSensorTorquePu); // Q15
|
|
(torsensor_stTorSensorCof.uwMaxSensorTorquePu - torsensor_stTorSensorCof.uwMinSensorTorquePu); // Q15
|
|
-
|
|
|
|
|
|
+ #ifdef TORSENSOR3NUM
|
|
if(((TORQUEVOLREG1() > 4000) || (TORQUEVOLREG1() < 10)) ||
|
|
if(((TORQUEVOLREG1() > 4000) || (TORQUEVOLREG1() < 10)) ||
|
|
((TORQUEVOLREG2() > 4000) || (TORQUEVOLREG2() < 10)) ||
|
|
((TORQUEVOLREG2() > 4000) || (TORQUEVOLREG2() < 10)) ||
|
|
((TORQUEVOLREG3() > 4000) || (TORQUEVOLREG3() < 10))
|
|
((TORQUEVOLREG3() > 4000) || (TORQUEVOLREG3() < 10))
|
|
)
|
|
)
|
|
|
|
+ #else
|
|
|
|
+ if((TORQUEVOLREG1() > 4000) || (TORQUEVOLREG1() < 10))
|
|
|
|
+ #endif
|
|
{
|
|
{
|
|
torsensor_stTorSensorOut.uwTorqueErrorCnt++;
|
|
torsensor_stTorSensorOut.uwTorqueErrorCnt++;
|
|
if (torsensor_stTorSensorOut.uwTorqueErrorCnt > 5000)
|
|
if (torsensor_stTorSensorOut.uwTorqueErrorCnt > 5000)
|
|
@@ -326,6 +337,7 @@ void torsensor_voTorADC(void) // need to match ADC_StartConversion(ADC1);
|
|
|
|
|
|
void TorqueSensorRegFltCal(void)
|
|
void TorqueSensorRegFltCal(void)
|
|
{
|
|
{
|
|
|
|
+ #ifdef TORSENSOR3NUM
|
|
TorqueSensorRegFlt.SensorPer1 = TORQUEVOLREG1();
|
|
TorqueSensorRegFlt.SensorPer1 = TORQUEVOLREG1();
|
|
TorqueSensorRegFlt.SensorPer2 = TORQUEVOLREG2();
|
|
TorqueSensorRegFlt.SensorPer2 = TORQUEVOLREG2();
|
|
TorqueSensorRegFlt.SensorPer3 = TORQUEVOLREG3();
|
|
TorqueSensorRegFlt.SensorPer3 = TORQUEVOLREG3();
|
|
@@ -335,24 +347,33 @@ void TorqueSensorRegFltCal(void)
|
|
TorqueSensorRegFlt.SensorFlt2 = TorqueSensorRegFlt.SensorFltSum2 >> 10;
|
|
TorqueSensorRegFlt.SensorFlt2 = TorqueSensorRegFlt.SensorFltSum2 >> 10;
|
|
TorqueSensorRegFlt.SensorFltSum3 += ((TorqueSensorRegFlt.SensorPer3 << 10) - TorqueSensorRegFlt.SensorFltSum3) >> 8;
|
|
TorqueSensorRegFlt.SensorFltSum3 += ((TorqueSensorRegFlt.SensorPer3 << 10) - TorqueSensorRegFlt.SensorFltSum3) >> 8;
|
|
TorqueSensorRegFlt.SensorFlt3 = TorqueSensorRegFlt.SensorFltSum3 >> 10;
|
|
TorqueSensorRegFlt.SensorFlt3 = TorqueSensorRegFlt.SensorFltSum3 >> 10;
|
|
|
|
+ #else
|
|
|
|
+ TorqueSensorRegFlt.SensorPer1 = TORQUEVOLREG1();
|
|
|
|
+ TorqueSensorRegFlt.SensorFltSum1 += ((TorqueSensorRegFlt.SensorPer1 << 10) - TorqueSensorRegFlt.SensorFltSum1) >> 8;
|
|
|
|
+ TorqueSensorRegFlt.SensorFlt1 = TorqueSensorRegFlt.SensorFltSum1 >> 10;
|
|
|
|
+ #endif
|
|
}
|
|
}
|
|
|
|
|
|
//零点更新
|
|
//零点更新
|
|
void TorqueSensorOffSetAuto()
|
|
void TorqueSensorOffSetAuto()
|
|
{
|
|
{
|
|
- SLONG SumTemp = 0;
|
|
|
|
static UBYTE SetFlag = 0;
|
|
static UBYTE SetFlag = 0;
|
|
static BOOL OffSet_RefreshFlag = FALSE;
|
|
static BOOL OffSet_RefreshFlag = FALSE;
|
|
- if(SetFlag == 0)
|
|
|
|
|
|
+ if(SetFlag == 0) //开机后执行一次获取初始值
|
|
{
|
|
{
|
|
|
|
+ #ifdef TORSENSOR3NUM
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TORQUEVOLREG1();
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TORQUEVOLREG1();
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow2 = TORQUEVOLREG2();
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow2 = TORQUEVOLREG2();
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow3 = TORQUEVOLREG3();
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow3 = TORQUEVOLREG3();
|
|
|
|
+ #else
|
|
|
|
+ torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TORQUEVOLREG1();
|
|
|
|
+ #endif
|
|
SetFlag = 1;
|
|
SetFlag = 1;
|
|
OffSet_RefreshFlag = TRUE;
|
|
OffSet_RefreshFlag = TRUE;
|
|
}
|
|
}
|
|
- else
|
|
|
|
|
|
+ else //更新为较小值
|
|
{
|
|
{
|
|
|
|
+ #ifdef TORSENSOR3NUM
|
|
if(TorqueSensorRegFlt.SensorFlt1 < torsensor_stTorSensorCof.uwTorqueOffsetNow1)
|
|
if(TorqueSensorRegFlt.SensorFlt1 < torsensor_stTorSensorCof.uwTorqueOffsetNow1)
|
|
{
|
|
{
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TorqueSensorRegFlt.SensorFlt1;
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TorqueSensorRegFlt.SensorFlt1;
|
|
@@ -368,20 +389,18 @@ void TorqueSensorOffSetAuto()
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow3 = TorqueSensorRegFlt.SensorFlt3;
|
|
torsensor_stTorSensorCof.uwTorqueOffsetNow3 = TorqueSensorRegFlt.SensorFlt3;
|
|
OffSet_RefreshFlag = TRUE;
|
|
OffSet_RefreshFlag = TRUE;
|
|
}
|
|
}
|
|
|
|
+ #else
|
|
|
|
+ if(TorqueSensorRegFlt.SensorFlt1 < torsensor_stTorSensorCof.uwTorqueOffsetNow1)
|
|
|
|
+ {
|
|
|
|
+ torsensor_stTorSensorCof.uwTorqueOffsetNow1 = TorqueSensorRegFlt.SensorFlt1;
|
|
|
|
+ OffSet_RefreshFlag = TRUE;
|
|
|
|
+ }
|
|
|
|
+ #endif
|
|
}
|
|
}
|
|
if(OffSet_RefreshFlag == TRUE)
|
|
if(OffSet_RefreshFlag == TRUE)
|
|
{
|
|
{
|
|
- if(SumTemp <= 0)
|
|
|
|
- {
|
|
|
|
- torsensor_stTorSensorCof.uwTorqueOffset = 0;
|
|
|
|
- torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- else
|
|
|
|
- {
|
|
|
|
- torsensor_stTorSensorCof.uwTorqueOffset = SumTemp / 3;
|
|
|
|
- torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
|
|
|
|
- }
|
|
|
|
|
|
+ torsensor_stTorSensorCof.uwTorqueOffset = 0;
|
|
|
|
+ torsensor_stTorSensorCof.uwTorqueOffsetPowerUp = torsensor_stTorSensorCof.uwTorqueOffset;
|
|
OffSet_RefreshFlag = FALSE;
|
|
OffSet_RefreshFlag = FALSE;
|
|
}
|
|
}
|
|
}
|
|
}
|