► Added protection on start-up

For safety reasons, the motors are enabled on start-up, only if the input is very small.
This commit is contained in:
EmanuelFeru
2019-06-18 18:06:58 +02:00
parent 60957481b6
commit 8ebf9dc230

View File

@@ -222,7 +222,7 @@ int main(void) {
float board_temp_adc_filtered = (float)adc_buffer.temp; float board_temp_adc_filtered = (float)adc_buffer.temp;
float board_temp_deg_c; float board_temp_deg_c;
enable = 1; // enable motors enable = 0; // initially motors are disabled for SAFETY
while(1) { while(1) {
@@ -263,6 +263,11 @@ int main(void) {
timeout = 0; timeout = 0;
#endif #endif
// ####### MOTOR ENABLING: Only if the initial input is very small (SAFETY) #######
if (enable == 0 && (cmd1 > -50 && cmd1 < 50) && (cmd2 > -50 && cmd2 < 50)){
enable = 1; // enable motors
}
// Bypass - only for testing purposes // Bypass - only for testing purposes
// cmd2 = cmd2-500; // cmd2 = cmd2-500;
// cmd1 = 0; // cmd1 = 0;
@@ -282,7 +287,7 @@ int main(void) {
// ####### SET OUTPUTS (if the target change less than +/- 50) ####### // ####### SET OUTPUTS (if the target change less than +/- 50) #######
if ((speedL < lastSpeedL + 50 && speedL > lastSpeedL - 50) && (speedR < lastSpeedR + 50 && speedR > lastSpeedR - 50) && timeout < TIMEOUT) { if ((speedL > lastSpeedL-50 && speedL < lastSpeedL+50) && (speedR > lastSpeedR-50 && speedR < lastSpeedR+50) && timeout < TIMEOUT) {
#ifdef INVERT_R_DIRECTION #ifdef INVERT_R_DIRECTION
pwmr = speedR; pwmr = speedR;
#else #else