Azurit und Motorfault

redtop

Member
Hallo ,

mit Software bin ich nicht so fit, würde aber gerne eine Änderung bei meinem Mower vornehmen.

Ich möchte, wenn der Strom an einem Rad Motor, den normalen Wert übersteigt, nicht einen Fehler Ausgeben, sondern
Ihn Anhalten und Rückwertsfahren lassen, so als ob ein Bumper oder Sonar ausgelöst wurde.

Wo kann ich da ansetzen ?

Stefan
 
Wenn ich das richtig verstehe. Wird genau das was ich möchte in der robot.cpp ab Zeile 2332



Code:
if (motorLeftSense >=motorPowerMax){  
    // left wheel motor overpowered    
    if (     ((stateCurr == STATE_FORWARD) || (stateCurr == STATE_PERI_FIND)  || (stateCurr == STATE_PERI_TRACK)) 
          && (millis() > stateStartTime + motorPowerIgnoreTime)){    				  
      //beep(1);
      motorLeftSenseCounter++;
      setMotorPWM( 0, 0, false );  
      reverseOrBidir(RIGHT);
    } else if    ((stateCurr == STATE_REVERSE) && (millis() > stateStartTime + motorPowerIgnoreTime)){
      motorLeftSenseCounter++;
      setMotorPWM( 0, 0, false );  
      //   reverseOrBidir(RIGHT);
      setNextState(STATE_ROLL,RIGHT);				          
    } else if ((stateCurr == STATE_ROLL) && (millis() > stateStartTime + motorPowerIgnoreTime)){
      motorLeftSenseCounter++;
      setMotorPWM( 0, 0, false );  
      setNextState(STATE_FORWARD, 0);
    }    
  }
  else if (motorRightSense >= motorPowerMax){       
     // right wheel motor overpowered
     if ( ((stateCurr == STATE_FORWARD) || (stateCurr == STATE_PERI_FIND)) && (millis() > stateStartTime + motorPowerIgnoreTime)){    				  
       //beep(1);
       motorRightSenseCounter++;
       setMotorPWM( 0, 0, false );  
       reverseOrBidir(RIGHT);
     } else if ((stateCurr == STATE_REVERSE) && (millis() > stateStartTime + motorPowerIgnoreTime)){
       motorRightSenseCounter++;
       setMotorPWM( 0, 0, false );  
       setNextState(STATE_ROLL,LEFT);				          
     } else if ((stateCurr == STATE_ROLL) && (millis() > stateStartTime + motorPowerIgnoreTime)){
       motorRightSenseCounter++;
       setMotorPWM( 0, 0, false );  
       setNextState(STATE_FORWARD, 0);
    }
  }
}


gemacht bzw sollte gemacht werden. Geht bei mir aber nicht ?

Bei meinem Whiper wurde, wenn man das Setup ausgeführt hat, der Strom vom Leerlaufenden Motor gemessen un der Strom vom Blockierten bzw gebremsten Rad und ausgewertet.
Was ja schom im Motormenü erfolgt. Dieser Wert könnte dann doch gleich in die Einstellung, mit einem Aufschlag von 10% oder 15% übernommen werden ?
 
Geht bei mir nicht, da ich vom Currentsensor A0 / A1 keine Werte erhalte.

Durchgang ist da.

Die Spannung am Eingang steigt bis auf 1V an, 40 mV im Leerlauf aber der Sensor gibt nichts aus auch wenn ich
die Ausgabe mit "v" Umschalte.

Ich habe zusätzlich mir noch eine Anzeige für den Current Eingebaut:

Streamprint(s, "Motor %4d %4d ", motorLeftSenseCurrent, motorRightSenseCurrent);


testing right motor (forward) half speed...
t 39 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 98 0 97 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 40 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 97 0 97 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 41 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 97 0 97 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 42 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 97 0 97 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 43 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 94 0 97 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
testing right motor (reverse) full speed...
t 45 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 94 0 97 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 46 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 94 0 237 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 47 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 98 0 237 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 48 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 98 0 237 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower
t 49 l3711 v1 OFF spd 0 0 0 sen 0 0 0 Motor 0 -64 bum 0 0 dro 0 0 son 98 0 99 yaw 151 pit 2 rol -1 per 0 bat 28.2 chg 0.0 0.0 imu 0 adc 0 Ardumower

Hat jemand einen TIP ?

Stefan
 
Oben