Start Probleme

oh I have achieved something, in the Wifi Passerelle the baud rate was 115200 and at Teensy but queried with 19200. Now changed to wifi to 19200 and I have a connection!!! Yay, where could I change the connection to 115200 in Teensy?
 

Attachments

  • Screenshot 2023-04-29 155913.jpg
    Screenshot 2023-04-29 155913.jpg
    261.2 KB · Views: 5
  • Screenshot 2023-04-29 152728.jpg
    Screenshot 2023-04-29 152728.jpg
    164.6 KB · Views: 7
ok then it was wrong in the wifi passerelle at least too high with 115200. i changed it to 19200 now it works with Arduremote!!!
 
for the new motor driver ZS-X12H I can choose the 1 for ZS-x11H in mower.h right? He doesn't talk to you to calibrate!?
 
Do not activate the brake feature
Into setting motor Use Brake .
And define the correct PCB version into mower.h line 30 , i suppose it's PCB v1.03 for you
 
No sorry you need to put 2 different value for watchdog trigger

config.trigger = 100; /* in seconds, 0->128 */
config.timeout = 120; /* in seconds, 0->128 */

test with 100 and 120 or put again the initial value
 
No sorry you need to put 2 different value for watchdog trigger

config.trigger = 100; /* in seconds, 0->128 */
config.timeout = 120; /* in seconds, 0->128 */

test with 100 and 120 or put again the initial value
yes, its better!
 
It's a pity, but the engines don't want !? When I manually turn the potentiometer of the motor drivers, they all run, but they don't want to go over Teensy. Where could there be a mistake?
 

Attachments

  • Screenshot 2023-04-29 170443.jpg
    Screenshot 2023-04-29 170443.jpg
    105 KB · Views: 7
It's a pity, but the engines don't want !? When I manually turn the potentiometer of the motor drivers, they all run, but they don't want to go over Teensy. Where could there be a mistake?
should the break pin also be omitted from the wiring of the X12H?
 
I don't have a mower to test and don't remember but i think for X12H the brake is inverted (HIGH=no brake), so you can try this:
into driver.cpp
Code:
void setZSX11HV1(int pinDir, int pinPWM, int pinBrake, int speed, boolean brake) {
  //setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value, useMotorDriveBrake);
  if (speed < 0) {
    digitalWrite(pinBrake, LOW) ;
    digitalWrite(pinDir, LOW) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed > 0) {
    digitalWrite(pinBrake, LOW) ;
    digitalWrite(pinDir, HIGH) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed == 0) {
    analogWrite(pinPWM, 0);
    digitalWrite(pinDir, HIGH) ;
    if (brake) {
      digitalWrite(pinBrake, HIGH) ; // active the brake function of the motor driver 
    }
    
  }
}


You can try to invert the HIGH and LOW value by this way

Code:
void setZSX11HV1(int pinDir, int pinPWM, int pinBrake, int speed, boolean brake) {
  //setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value, useMotorDriveBrake);
  if (speed < 0) {
    digitalWrite(pinBrake, HIGH) ;
    digitalWrite(pinDir, LOW) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed > 0) {
    digitalWrite(pinBrake, HIGH) ;
    digitalWrite(pinDir, HIGH) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed == 0) {
    analogWrite(pinPWM, 0);
    digitalWrite(pinDir, HIGH) ;
    if (brake) {
      digitalWrite(pinBrake, LOW) ; // active the brake function of the motor driver 
    }
    
  }
}
 
I don't have a mower to test and don't remember but i think for X12H the brake is inverted (HIGH=no brake), so you can try this:
into driver.cpp
Code:
void setZSX11HV1(int pinDir, int pinPWM, int pinBrake, int speed, boolean brake) {
  //setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value, useMotorDriveBrake);
  if (speed < 0) {
    digitalWrite(pinBrake, LOW) ;
    digitalWrite(pinDir, LOW) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed > 0) {
    digitalWrite(pinBrake, LOW) ;
    digitalWrite(pinDir, HIGH) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed == 0) {
    analogWrite(pinPWM, 0);
    digitalWrite(pinDir, HIGH) ;
    if (brake) {
      digitalWrite(pinBrake, HIGH) ; // active the brake function of the motor driver
    }
  
  }
}


You can try to invert the HIGH and LOW value by this way

Code:
void setZSX11HV1(int pinDir, int pinPWM, int pinBrake, int speed, boolean brake) {
  //setZSX11HV1(pinMotorRightDir, pinMotorRightPWM, pinMotorRightEnable, value, useMotorDriveBrake);
  if (speed < 0) {
    digitalWrite(pinBrake, HIGH) ;
    digitalWrite(pinDir, LOW) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed > 0) {
    digitalWrite(pinBrake, HIGH) ;
    digitalWrite(pinDir, HIGH) ;
    analogWrite(pinPWM, ((byte)abs(speed)));
  }
  if (speed == 0) {
    analogWrite(pinPWM, 0);
    digitalWrite(pinDir, HIGH) ;
    if (brake) {
      digitalWrite(pinBrake, LOW) ; // active the brake function of the motor driver
    }
  
  }
}
yes. it works fine. very good!!!!
 
Hallo,

Gestern habe ich erfolgreich erste Fahrversuche machen können. Meine Frage ist, wie geht mann jetzt vor? Gibt es eine Art Leitfaden, was mann der Reihe nach tun sollte?
Imu Kalibrieren?
Motoren Kalibrieren?
Odometrie Kalibrieren?

Was mir aufgefallen ist, das er jetzt zwar Odometriedaten hatt für den Linken und Rechten Motor, aber keine PWM/RPM Daten liefert. Was ich wiederum beim Mähmotor bekomme. Ist das Richtig so oder hab ich da einen Denkfehler!?

Vg

Hello,
Yesterday I was able to successfully make my first driving tests. My question is how do you do it now? Is there some kind of guide on what to do in order?
Calibrate imu?
Calibrate motors?
Calibrate odometry?

What I noticed is that it now has odometry data for the left and right motor, but no PWM/RPM data. Which in turn I get with the mowing motor. Is that correct or am I mistaken?


Greetings
 

Attachments

  • 20230430_133409.mp4
    57.3 MB
Back
Top