ZS-X12H Treiber und Sunray

Was sagt der Sunray log
Code:
journalctl -u sunray -e

Oct 01 07:15:13 ardumower start_sunray.sh[18268]: Process::available - not executed
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: FAN POWER STATE 0
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: Process::available - not executed
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: Process::available - not executed
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: WARN: PID unmet cycle time Ta=1.34 TaMax=0.10
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: WARN: PID unmet cycle time Ta=1.34 TaMax=0.10
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: batTemp=-9999 cpuTemp=30
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: GPS time (UTC): dayOfWeek=sun hour=0
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: AUTOSTOP: timetable is disabled
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: AUTOSTART: not defined DOCK_AUTO_START
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: ==> changeOp:ImuCalibration(initiatedByOperator 0)->Idle
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: IMU gyro calibration (robot must be static)... 1
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: MQTT: Attempting connection...
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: client connected fd=18
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: MQTT: connected
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: MQTT: subscribing robot1/cmd
Oct 01 07:15:13 ardumower start_sunray.sh[18268]: 0:0:3 ctlDur=0.00 op=ImuCalibration(initiatedByOperator 0)->Idle mem=3168 bat=0.00,0.000(0.00) chg=0.00,0(0.00) diff=0.000 tg=0.00,0.00 x=5.57 y=-41.09 delta=-1.43 tow=0 lon=0.0>
Oct 01 07:15:14 ardumower start_sunray.sh[18268]: WARN: SerialRobot unmet communication frequency: motorFreq=1/1 summaryFreq=1/1
Oct 01 07:15:14 ardumower start_sunray.sh[18268]: WARN: PID unmet cycle time Ta=1.02 TaMax=0.10
Oct 01 07:15:14 ardumower start_sunray.sh[18268]: WARN: PID unmet cycle time Ta=1.02 TaMax=0.10
Oct 01 07:15:14 ardumower start_sunray.sh[18268]: IMU gyro calibration (robot must be static)... 2
Oct 01 07:15:14 ardumower start_sunray.sh[18268]: BUTTON 1s
Oct 01 07:15:14 ardumower start_sunray.sh[18268]: MCU FIRMWARE: Landrumower RPI Pico 2.5.1,
~

Habe herausgefunden, dass es an den PID Einstellungen gelegen hat.
Wie sieht ein Testaufbau aus, damit ich die PID Einstellungen optimal hinbekomme/messen kann?
Ich habe zwar Bilder von @Silberstreifen und @bernard gesehen, aber nciht, wie der Aufbau vorzunehmen ist.
 
Die klassischen Einstellungen mit Sprunganwort etc. kannst du mit V1 bzw V2 vergessen, das funktioniert nicht, dafür ist die Cycle-Time des Codes zu lang, deswegen habe ich mich damals auch für die Entwicklung des V3 entschieden.

Stell es irgendwie ein, dass es auf deine Joystick Eingaben reagiert und 10 Umdrehungen beim Motor Test abgeschlossen werden, mehr ist nicht drin. Es reicht aber mehr als genug für eine geradeaus Fahrt sowie zum Wenden, alles was man für einen vernünftigen Rasenschnitt braucht
 
Die klassischen Einstellungen mit Sprunganwort etc. kannst du mit V1 bzw V2 vergessen, das funktioniert nicht, dafür ist die Cycle-Time des Codes zu lang, deswegen habe ich mich damals auch für die Entwicklung des V3 entschieden.

Stell es irgendwie ein, dass es auf deine Joystick Eingaben reagiert und 10 Umdrehungen beim Motor Test abgeschlossen werden, mehr ist nicht drin. Es reicht aber mehr als genug für eine geradeaus Fahrt sowie zum Wenden, alles was man für einen vernünftigen Rasenschnitt braucht
So, Motoren laufen mit firmware v2.x (Setup in config.h), aber ich habe Probleme mit der Strommessung über die INAs.
Die zeigen eine falsche Grundlast an.
Am Labornetzteil messe ich ca. 370mA als Grundlast für den Mäher, die auf ca. 600mA steigt, wenn dir Motoren ohne Last laufen.
Bremse ich die Räder mit der Hand, springt sofort der Überlastschutz an, obwohl ich folgendes in der config.h stehen habe:
#define MOTOR_FAULT_CURRENT 2.8
#define MOTOR_OVERLOAD_CURRENT 2.2
.
Der Pico spuckt folgendes im Leerlauf aus:
---
tim=4091246, lps=1473/10s, msgBuf=0, bat=24.0V, chg=24.0V/0.0A, mF=False, imp=654,638,0, curr=0.608, 1.5799999, 0.398, lift=0,0, bump=0,0, rain=(12729, 1), stop=1, rightSp=0, right=0, rightPwm=0, leftSp=0, left=0, leftPwm=0, speedMow=0, mow=0, mowPwm=0
---
Was kann/muss ich tun, damit die Leistungsmessung korrekt durchgeführt wird?
 
Der pico sendet schon 0.6A 1.5A und 0.4A Richtung Sunray. Irgendwas passt schon bei deinem Aufbau nicht, dass alle 3 INAs defekt sind, schließe ich schon mal aus. Schau mal in der Main.py den Wert von CURRENTFACTOR an, evtl muss er zurück auf 1
 
Der pico sendet schon 0.6A 1.5A und 0.4A Richtung Sunray. Irgendwas passt schon bei deinem Aufbau nicht, dass alle 3 INAs defekt sind, schließe ich schon mal aus. Schau mal in der Main.py den Wert von CURRENTFACTOR an, evtl muss er zurück auf 1
Danke. Hatte ich in der main.py vergessen zu kontrollieren - das war´s.
 
@EinEinfach
Hi Alexander,
kann es sein, dass in der firmware 2.x in Zeile 149 sich ein Fehler eingeschlichen hat?
Bei mir steht hier:
self.pinMotorRightPwm.freq(FREQ)
self.pinMotorRightBrake.freq(FREQ)
self.pinMotorLeftPwm.freq(FREQ)
self.pinMotorLeftBrake.freq(FREQ)
self.pinMotorMowPwm.freq(FREQ_MOW)
-> self.pinMotorRightBrake.freq(FREQ_MOW)
In der letzten Zeile (146) soll es doch sicher wie folgt heißen:
self.pinMotorMowBrake.freq(FREQ_MOW)

Dann habe ich noch eine Frage:
Wie bekomme ich es hin, dass der MowMotor PWM/RPM gesteuert werden kann, also mit den Angaben in der config.h zum MowMotor?
Bei mir läuft der momentan leider auf 100% an (das ist wie ein Düsentriebwerk - viel zu schnell und zu laut) und geht dann in Fehler und geht aus:
"ERROR: mow motor, average rpm too low: pwm=189.34 pwmLP=100.70 rpmLP=0.00 (NOTE: choose ENABLE_RPM_FAULT_DETECTION=false in config.h, if your mowing motor has no rpm sensor!)"

Ich nutze für Left, Right und Mow jeweils einen ZS-X11H v2.
Alle sind identisch angeschlossen inkl. Motor-Impuls-Ausgang am Driver.
 
Wie bekomme ich es hin, dass der MowMotor PWM/RPM gesteuert werden kann, also mit den Angaben in der config.h zum MowMotor?
MAX_MOW_PWM in der config.h funktioniert nicht?
ERROR: mow motor, average rpm too low: pwm=189.34 pwmLP=100.70 rpmLP=0.00 (NOTE: choose ENABLE_RPM_FAULT_DETECTION=false in config.h, if your mowing motor has no rpm sensor!)"
Es kommen gar keine Ticks an (rpmLP = 0) Deswegen der Fehler. Entweder hat dein Motor keine Hall-Sensoren oder es stimmt etwas bei deinem Aufbau nicht
 
OK. Wenn der MowMotor läuft:
tim=2970058, lps=1136/10s, msgBuf=0, bat=24.69V, chg=24.69V/0.0A, mF=False, imp=0,0,4148, curr=0.0093, 0.0285, 0.8192, lift=0,0, bump=0,0, rain=(48126, 0), stop=1, rightSp=0, right=0, rightPwm=0, leftSp=0, left=0, leftPwm=0, speedMow=255, mow=803, mowPwm=0

config.h steht auf:
MAX_MOW_PWM 100
MAX_MOW_RPM 600

Aber es spielt keine Rolle was ich einstelle.
Der MowMotor läuft immer auf vollen Touren.
 
speedMow = 255 heißt dass er auf Maximum läuft.

Setze mal in main.py DEBUG = True, den Code neuaufspielen und die Ausgabe noch mal hier posten
 
Hier ist sie:

Received command: AT+M,0,0,255,0x8d

leftPwm=0, rightPwm=0, mow=255, leftSpeed=0.0mm/s, rightSpeed=0.0mm/s
Answer: M,0,0,339,26.18,0,0,1
Response: M,0,0,339,26.18,0,0,1,0x10
 
Hier ist sie:

Received command: AT+M,0,0,255,0x8d

leftPwm=0, rightPwm=0, mow=255, leftSpeed=0.0mm/s, rightSpeed=0.0mm/s
Answer: M,0,0,339,26.18,0,0,1
Response: M,0,0,339,26.18,0,0,1,0x10
Maybe you can first test with sunray app , and when everything is OK you can use Cassandra.
 
Oben