application: improve motor not spinning protection

This commit is contained in:
King Kévin 2020-01-10 11:10:58 +01:00
parent a5ba9f0aa5
commit 2bda3be4a0
1 changed files with 6 additions and 3 deletions

View File

@ -15,7 +15,7 @@
/** STM32F1 application example
* @file application.c
* @author King Kévin <kingkevin@cuvoodoo.info>
* @date 2016-2019
* @date 2016-2020
*/
/* standard libraries */
@ -458,6 +458,7 @@ void main(void)
printf("default");
}
bool tacho_safety = false; // if the motor is switched of for safety reasons
uint32_t tacho_activity = rtc_get_counter_val(); // when was the last time we saw the motor spinning
printf("): %u\n", tacho_target);
// setup terminal
@ -487,10 +488,12 @@ void main(void)
} else {
gpio_set(GPIO_PORT(SSR_PIN), GPIO_PIN(SSR_PIN)); // switch SSR off to cut power
}
if (0 == tacho && rtc_get_counter_val() > time_start + 5 * RTC_TICKS) { // the motor does not seem to turn, after 5 s
if (tacho) { // we tachometer indicates the motor is spinning
tacho_activity = rtc_get_counter_val(); // updated the last time we saw it spinning
} else if (rtc_get_counter_val() > tacho_activity + 5 * RTC_TICKS) { // the motor does not seem to turn, after 5 s
tacho_safety = true; // turn safety on
gpio_set(GPIO_PORT(SSR_PIN), GPIO_PIN(SSR_PIN)); // switch SSR off to cut power
printf("tachometer does not indicate the motor is turning\n");
printf("\ntachometer does not indicate the motor is turning\n");
printf("either the tachometer is defective, or the motor is stuck\n");
printf("switching the motor off for safety\n");
printf("reboot to retry\n");