Kalibrieren

It's important to see the real time value when mower is running.
Can you take a snapshot when mower is running on flat ground to see if setting is OK
Odometry setting is also good to see.
01.png
 
So today I tried around again with different settings. but unfortunately overload again and again!? and turns in circles!?
First of all, Sefan's values again...
 

Attachments

and secondly, Bernard's values from his videos from above... unfortunately there's nothing usable there yet. sometimes he finds the wire and follows it but that seems more like gambling. strange!?
 

Attachments

Screenshot_2024-05-21-19-37-13-020-edit_com.android.chrome.jpg

Is it possible that the odometry runs in the wrong direction? Or the motor turns in the wrong direction?
Or is this ok?
 
Sollte doch beim brushless Motor egal sein wierum er läuft oder!?

Meine Motoren sind so angeschlossen... grün blau gelb!

Oder sollte mann sich an solchen Bildern orientieren wegen der fasen (MA MB MC)
 

Attachments

  • 20240520_191841.jpg
    20240520_191841.jpg
    697.3 KB · Views: 5
  • Screenshot_20240521_203916_eBay.jpg
    Screenshot_20240521_203916_eBay.jpg
    555.9 KB · Views: 6
Last edited:
Ich kann morgen mal genau nachsehen und Fotos machen, aber soweit ich weiß hatte ich bei den Fahrmotoren links, sowie rechts ABC = gelb, grün, blau angeschlossen. Bei den Hallsensoren habe ich blau und grün vertauscht. Also ABC = gelb, blau, grün.
Der Mähmotor hat andere Kabelfarben.
Vielleicht schaffe ich es ja jetzt gleich noch ein paar Fotos zu machen?!?
 
View attachment 1483

Is it possible that the odometry runs in the wrong direction? Or the motor turns in the wrong direction?
Or is this ok?
This kind of issue occur when the main loop is not OK.
Message is : firmware send a pwm = 85 (Forward) and the last PWM send was -29 (reverse), so it's not possible or can destroy the motor .
Odometry don't know the dir rotation of motor , only the PWM + or - send signal to pinDir of the motor driver, so it's not Odometry issue.
 
Sollte doch beim brushless Motor egal sein wierum er läuft oder!?

Meine Motoren sind so angeschlossen... grün blau gelb!

Oder sollte mann sich an solchen Bildern orientieren wegen der fasen (MA MB MC)
If motor is not correctly wired the test ODO, maual drive ETC ... don't work well.
 
Bernard's explanation makes sense!
Since I just unscrewed the mower outside, I'll still tell you the cable colors ;)

Mowmotor:
Motor: white, blue, green
Hallsensor: white, blue, green

Drivemotors:
Motor: yellow, green, blue
Hallsensor: yellow, blue, green

The error must lie somewhere. It must be due to overload. But where does it come from?
 
@Richtel
You can test this new function of code (into robot.cpp) replace the actual one by this.
Code:
void Robot::writeOnSD(String message) {

  StartReadAt = millis();
  if (sdCardReady) {
    //filename is reset into :loadSaveRobotStats
    File dataFile = SD.open(historyFilenameChar, FILE_WRITE);
    if (dataFile) {
      dataFile.print(message);
      dataFile.close();
    }
    totalLineOnFile = totalLineOnFile + 1;
    if (totalLineOnFile >= 1000) { // create a new log file if too long
      totalLineOnFile = 0;
      sprintf(historyFilenameChar, "%02u%02u%02u%02u%02u.txt", datetime.date.year - 2000, datetime.date.month, datetime.date.day, datetime.time.hour, datetime.time.minute);
    }
  }
  EndReadAt = millis();
  ReadDuration = EndReadAt - StartReadAt;
  if ( ReadDuration > 100) {
    ShowMessage("Warning SD card Write duration > 100 ms : ");
    ShowMessageln(ReadDuration);
    ShowMessageln("SD card is desactivate");
    sdCardReady = false;
  }
}

void Robot::writeOnSDln(String message) {
  StartReadAt = millis();
  if (sdCardReady) {
    //filename is reset into :loadSaveRobotStats
    File dataFile = SD.open(historyFilenameChar, FILE_WRITE);
    if (dataFile) {
      dataFile.println(message);
      dataFile.close();
    }
    totalLineOnFile = totalLineOnFile + 1;
    if (totalLineOnFile >= 1000) { // create a new log file if too long
      totalLineOnFile = 0;
      sprintf(historyFilenameChar, "%02u%02u%02u%02u%02u.txt", datetime.date.year - 2000, datetime.date.month, datetime.date.day, datetime.time.hour, datetime.time.minute);
    }
  }
  EndReadAt = millis();
  ReadDuration = EndReadAt - StartReadAt;
  if ( ReadDuration > 100) {
    ShowMessage("Warning SD card Write duration > 100 ms : ");
    ShowMessageln(ReadDuration);
    ShowMessageln("SD card is desactivate");
    sdCardReady = false;
  }
}
 
@Richtel
You can test this new function of code (into robot.cpp) replace the actual one by this.
Code:
void Robot::writeOnSD(String message) {

  StartReadAt = millis();
  if (sdCardReady) {
    //filename is reset into :loadSaveRobotStats
    File dataFile = SD.open(historyFilenameChar, FILE_WRITE);
    if (dataFile) {
      dataFile.print(message);
      dataFile.close();
    }
    totalLineOnFile = totalLineOnFile + 1;
    if (totalLineOnFile >= 1000) { // create a new log file if too long
      totalLineOnFile = 0;
      sprintf(historyFilenameChar, "%02u%02u%02u%02u%02u.txt", datetime.date.year - 2000, datetime.date.month, datetime.date.day, datetime.time.hour, datetime.time.minute);
    }
  }
  EndReadAt = millis();
  ReadDuration = EndReadAt - StartReadAt;
  if ( ReadDuration > 100) {
    ShowMessage("Warning SD card Write duration > 100 ms : ");
    ShowMessageln(ReadDuration);
    ShowMessageln("SD card is desactivate");
    sdCardReady = false;
  }
}

void Robot::writeOnSDln(String message) {
  StartReadAt = millis();
  if (sdCardReady) {
    //filename is reset into :loadSaveRobotStats
    File dataFile = SD.open(historyFilenameChar, FILE_WRITE);
    if (dataFile) {
      dataFile.println(message);
      dataFile.close();
    }
    totalLineOnFile = totalLineOnFile + 1;
    if (totalLineOnFile >= 1000) { // create a new log file if too long
      totalLineOnFile = 0;
      sprintf(historyFilenameChar, "%02u%02u%02u%02u%02u.txt", datetime.date.year - 2000, datetime.date.month, datetime.date.day, datetime.time.hour, datetime.time.minute);
    }
  }
  EndReadAt = millis();
  ReadDuration = EndReadAt - StartReadAt;
  if ( ReadDuration > 100) {
    ShowMessage("Warning SD card Write duration > 100 ms : ");
    ShowMessageln(ReadDuration);
    ShowMessageln("SD card is desactivate");
    sdCardReady = false;
  }
}


I'll try everything and report back, thank you very much...
 
Back
Top