@@ -1515,9 +1515,11 @@ void CelestronAUX::resetTracking()
15151515
15161516 m_Controllers[AXIS_AZ ].reset (new PID (getPollingPeriod () / 1000.0 , 10000 , -10000 , Axis1PIDNP[Propotional].getValue (),
15171517 Axis1PIDNP[Derivative].getValue (), Axis1PIDNP[Integral].getValue ()));
1518+ m_Controllers[AXIS_AZ ]->reset ();
15181519 m_Controllers[AXIS_AZ ]->setIntegratorLimits (-10000 , 10000 );
15191520 m_Controllers[AXIS_ALT ].reset (new PID (getPollingPeriod () / 1000.0 , 10000 , -10000 , Axis2PIDNP[Propotional].getValue (),
15201521 Axis2PIDNP[Derivative].getValue (), Axis2PIDNP[Integral].getValue ()));
1522+ m_Controllers[AXIS_ALT ]->reset ();
15211523 m_Controllers[AXIS_ALT ]->setIntegratorLimits (-10000 , 10000 );
15221524
15231525 if (m_az_pid_tuner)
@@ -2211,7 +2213,10 @@ void CelestronAUX::TimerHit()
22112213 m_LastOffset[AXIS_AZ ] = offsetSteps[AXIS_AZ ];
22122214 targetSteps[AXIS_AZ ] = DegreesToEncoders (AzimuthToDegrees (targetMountAxisCoordinates.azimuth ));
22132215 // Track rate: predicted + PID controlled correction based on tracking error: offsetSteps
2214- trackRates[AXIS_AZ ] = predRate[AXIS_AZ ] + m_Controllers[AXIS_AZ ]->calculate (0 , -offsetSteps[AXIS_AZ ]);
2216+ double pidCorrectionAz = 0 ;
2217+ if (m_az_pid_tuner && m_az_pid_tuner->isActivelyTuning ())
2218+ pidCorrectionAz = m_Controllers[AXIS_AZ ]->calculate (0 , -offsetSteps[AXIS_AZ ]);
2219+ trackRates[AXIS_AZ ] = predRate[AXIS_AZ ] + pidCorrectionAz;
22152220
22162221 // Apply minTrackRate logic from Skywatcher
22172222 double minAzTrackRate = predRate[AXIS_AZ ] * MIN_TRACK_RATE_FACTOR ;
@@ -2260,7 +2265,10 @@ void CelestronAUX::TimerHit()
22602265 m_LastOffset[AXIS_ALT ] = offsetSteps[AXIS_ALT ];
22612266 targetSteps[AXIS_ALT ] = DegreesToEncoders (targetMountAxisCoordinates.altitude );
22622267 // Track rate: predicted + PID controlled correction based on tracking error: offsetSteps
2263- trackRates[AXIS_ALT ] = predRate[AXIS_ALT ] + m_Controllers[AXIS_ALT ]->calculate (0 , -offsetSteps[AXIS_ALT ]);
2268+ double pidCorrectionAl = 0 ;
2269+ if (m_al_pid_tuner && m_al_pid_tuner->isActivelyTuning ())
2270+ pidCorrectionAl = m_Controllers[AXIS_ALT ]->calculate (0 , -offsetSteps[AXIS_ALT ]);
2271+ trackRates[AXIS_ALT ] = predRate[AXIS_ALT ] + pidCorrectionAl;
22642272
22652273 // Apply minTrackRate logic from Skywatcher
22662274 double minAlTrackRate = predRate[AXIS_ALT ] * MIN_TRACK_RATE_FACTOR ;
0 commit comments