Start Probleme

OK stop the test , Tomorrow i can try to connect my ZS-X12H test driver to the PCB1.03 ,and give you an answer
ok great, i hope i don't cause too much trouble with my problems🙈 i would like to thank you for now and wish you a nice evening. maybe see you tomorrow...
 
Test result confirm what you say .and it did not work also for me.
1.6V on the out of odometry is not suffisant
The solution:
You need to change the resistor R1/R7 and R2/R8 for a bigger value ,but with the same diff R1=2*R7 or near
I have tested with R1=22K and R7=10K and the scope result is OK with 2.8 volt at teensy input.

Also i need to adjust the code to add the support of the reverse Brake level for this driver.
I send you a link to the new code .
 
Test result confirm what you say .and it did not work also for me.
1.6V on the out of odometry is not suffisant
The solution:
You need to change the resistor R1/R7 and R2/R8 for a bigger value ,but with the same diff R1=2*R7 or near
I have tested with R1=22K and R7=10K and the scope result is OK with 2.8 volt at teensy input.

Also i need to adjust the code to add the support of the reverse Brake level for this driver.
I send you a link to the new code .

Hello Bernard, So changing to 22 ohms and 10 ohms is a complete success. Odometry is displayed correctly and the wheel turns exactly one revolution, wonderful. unfortunately they rotate for different lengths of time, that would have to be adjusted. But that is then determined in the firmware made I suspect. well done...
 
unfortunately they rotate for different lengths of time
Are you sure the wiring phase is OK , It's can append when the wiring is good but not perfect and the result is that wheel rotate faster in forward than in reverse .
Or make a video.
 
Are you sure the wiring phase is OK , It's can append when the wiring is good but not perfect and the result is that wheel rotate faster in forward than in reverse .
Or make a video.

I'll check that again. Only when I connect both motors the same way does one rotate forward and the other reverse. which is logical. If I now change the direction of rotation in the firmware, one motor runs slower than the other. that's a bit strange.
 

Attachments

  • 20230507_204335.mp4
    27 MB
  • 20230507_204417.mp4
    11.7 MB
  • Screen_Recording_20230507_204554_ArduRemote.mp4
    1.8 MB
  • Screen_Recording_20230507_204645_ArduRemote.mp4
    3.3 MB
  • 20230507_204453.jpg
    20230507_204453.jpg
    992.2 KB · Views: 8
You need the same wiring in the 2 drive motor:
For example at the top of the picture i see green/yellow/blue for the right motor and at the bottom of picture it's blue/green/yellow.

if one motor is reverse you can adjust into the code mower.cpp line 285 or 286 to have motor rotate correctly.
Code:
#if defined (MOW800)
  name = "MOW800"; //Set the Name of platform
  // ------- wheel motors -----------------------------
  motorRightSwapDir     = false;    // inverse right motor direction?
  motorLeftSwapDir      = true;    // inverse left motor direction?

Always click on OFF between 2 test

If the difference is low you can adjust into setting motor the PWM right Offset at reverse and forward, but normally not needed.

WARNING I DON'T RECOMMEND THIS SMALL DRIVER FOR MOW MOTOR.
Use a X11 version for mow motor or you can burn teensy and esp32 if brake is activate at full mow speed
 
Last edited:
oh holy shit! very good that you mention it!!!!
I didn't know that, ok I'll change it immediately.
I still have a version 11 for the mowing motor. ok and I will adjust the motor cable assignment.
Thanks very much....
 
hello greets you,

so now everything is set up again and successfully transplanted a new brain.
but I still have the problem that one motor runs longer than the other in the odometry test.
it is worse moving forward than moving backwards. but still present.
I can't get rid of it either with the pwm offset selection in the motor menu. for forward or backward movement. already tried everything.
hardly anything changes.
is there already a solution?

Hallo grüßt euch,

so nun wieder alles neu aufgesetzt und erfolgreich ein neues gehirn verpflanzt.
aber ich habe nach wie vor noch das problem das ein Motor länger läuft als der andere beim Odometrie test.
Es ist schlimmer bei der vorwärts bewegung als bei der rückwärts bewegung. Aber immer noch vorhanden. Ich bekomme es auch nicht weg mit dem pwm versatzt auswahl im Motor menü. Für die Vorwärts oder rückwärts bewegung. schon alles durch probiert. Es ändert sich kaum etwas. gibt es da schon einen Lösungsansatz?
 
Mir geht es genau so. Beim Drehen dreht er auch immer zu weit korrigiert dies jedoch beim anfahren. In eine Richtung ist es schlimmer wie in die andere Richtung.
 
Moin,
welcher Motor dreht bei euch länger?
Ich habe das gleiche Problem beim Odometry Test.
Bei mir ist es die rechte Seite, wenn man hinter dem Mower steht. Mal funktioniert der Test und dann auf einmal stoppt der Motor erst viel später oder ich muss ihn manuell stoppen.
Ich habe das bisher auf den motorteiber geschoben.
 
Moin,
welcher Motor dreht bei euch länger?
Ich habe das gleiche Problem beim Odometry Test.
Bei mir ist es die rechte Seite, wenn man hinter dem Mower steht. Mal funktioniert der Test und dann auf einmal stoppt der Motor erst viel später oder ich muss ihn manuell stoppen.
Ich habe das bisher auf den motorteiber geschoben.
Moin,
Der Rechte Motor genau bei mir auch, aber seltsamerweise scheinen die odometry ticks zu stimmen. Also da ist nie viel oder gravierend viel unterschied zwischen rechts und links. Als wenn der eine motor schneller dreht bzw. Langsamer und deshalb länger läuft um auf die gleichen ticks zu kommen☝️🤔
Sieht mann oben auf meinen Videos auch schön👍🫡
 
Nein Ticks passen bei mir, da zählt er fleißig weiter hoch, er bleibt nur nicht bei der passenden Anzahl Ticks stehen, sondern läuft weiter.
 
Die Ticks stimmen bei mir auch in etwa. Nur scheint ein Rad langsamer zu drehen als das andere, wenn auch nur minimal.
Man sieht es am besten beim Lanemowing. Da drehen der Mäher erst 135grad, fährt dann ein kleines Stückchen und dreht dann nochmal 45grad. Die letzte Drehung ist dann viel zu weit!
 
Die Ticks stimmen bei mir auch in etwa. Nur scheint ein Rad langsamer zu drehen als das andere, wenn auch nur minimal.
Man sieht es am besten beim Lanemowing. Da drehen der Mäher erst 135grad, fährt dann ein kleines Stückchen und dreht dann nochmal 45grad. Die letzte Drehung ist dann viel zu weit!
You need to adjust correctly 3 parts into this order
1
Odometry ticks/rev to have the test 1 rev and 5 rev perfects.
OOPS i am going to see that i have remove the pwm offset, i correct this a give you the next code to have the 2 whhel running at same speed , but normally when mower drive it use the IMU to go straight , so not a problem.

2
the ticks per cm
Test result with odo test 3 meter forward OK

3
The wheel base value
Test result with odo test rotate 360 deg OK
@SefanH adjust this value to have the correct roll 135 and 45 deg on flat area.

And after that click on calibrate motor to help firmware to compute the delay to move 1000 ticks for example .
It's used to help on slope if wheel can't reach the movement odo cible in time a timeout go automaticaly to next state and avoid mower to get stuck for long duration.
 
Here the change to have the PWM offset working on right motor.
Into mower.cpp
replace case ACT_MOTOR_RIGHT: by this code :

Code:
case ACT_MOTOR_RIGHT:
      if (RIGHT_MOTOR_DRIVER == 1)  {
        //setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value, useMotorDriveBrake);
        if (value >= 0) {
          setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 + (double)motorRightOffsetFwd / 100), useMotorDriveBrake);
        }
        else {
          setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 - (double)motorRightOffsetRev / 100), useMotorDriveBrake);
        }
      }
      if (RIGHT_MOTOR_DRIVER == 4)  {
        //setZSX12HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value, useMotorDriveBrake);
        if (value >= 0) {
          setZSX12HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 + (double)motorRightOffsetFwd / 100), useMotorDriveBrake);
        }
        else {
          setZSX12HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 - (double)motorRightOffsetRev / 100), useMotorDriveBrake);
        }
        
      }
      if (RIGHT_MOTOR_DRIVER == 2) setL298N(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value);
      if (RIGHT_MOTOR_DRIVER == 3) setBTS7960(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value);
      break;
 
Here the change to have the PWM offset working on right motor.
Into mower.cpp
replace case ACT_MOTOR_RIGHT: by this code :

Code:
case ACT_MOTOR_RIGHT:
      if (RIGHT_MOTOR_DRIVER == 1)  {
        //setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value, useMotorDriveBrake);
        if (value >= 0) {
          setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 + (double)motorRightOffsetFwd / 100), useMotorDriveBrake);
        }
        else {
          setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 - (double)motorRightOffsetRev / 100), useMotorDriveBrake);
        }
      }
      if (RIGHT_MOTOR_DRIVER == 4)  {
        //setZSX12HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value, useMotorDriveBrake);
        if (value >= 0) {
          setZSX12HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 + (double)motorRightOffsetFwd / 100), useMotorDriveBrake);
        }
        else {
          setZSX12HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value * (1 - (double)motorRightOffsetRev / 100), useMotorDriveBrake);
        }
        
      }
      if (RIGHT_MOTOR_DRIVER == 2) setL298N(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value);
      if (RIGHT_MOTOR_DRIVER == 3) setBTS7960(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value);
      break;

Hello
I wanted to change it yesterday and it gives me the error message that setZSX12HV1 is not declared is.
 
@Bernard, wouldn't the left engine then also have to be adapted?
For me, it currently looks like this:

Code:
    case ACT_MOTOR_MOW:
      if (MOW_MOTOR_DRIVER == 1) setZSX11HV1(pinMotorMowDir, pinMotorMowPWM, pinMotorMowBrake, abs(value), useMotorDriveBrake);
      if (MOW_MOTOR_DRIVER == 2) setL298N(pinMotorMowDir, pinMotorMowPWM, pinMotorMowEnable, abs(value));
      if (MOW_MOTOR_DRIVER == 3) setBTS7960(pinMotorMowDir, pinMotorMowPWM, pinMotorMowEnable, abs(value));
      break;

    case ACT_MOTOR_LEFT:
      if (LEFT_MOTOR_DRIVER == 1) {
        setZSX11HV1(pinMotorLeftDir, pinMotorLeftPWM, pinMotorLeftBrake, value, useMotorDriveBrake);
      }
      if (LEFT_MOTOR_DRIVER == 2) setL298N(pinMotorLeftDir, pinMotorLeftPWM, pinMotorLeftEnable, value);
      if (LEFT_MOTOR_DRIVER == 3) setBTS7960(pinMotorLeftDir, pinMotorLeftPWM, pinMotorLeftEnable, value);
      break;

    case ACT_MOTOR_RIGHT:
      if (RIGHT_MOTOR_DRIVER == 1) {
        setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightBrake, value, useMotorDriveBrake);
      }
      if (RIGHT_MOTOR_DRIVER == 2) setL298N(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value);
      if (RIGHT_MOTOR_DRIVER == 3) setBTS7960(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value);
      break;
 
Back
Top