JYQD-Treiber und Sunray

AlexanderG

Lawn robot freak and project co-founder
Teammitglied
Hier werde ich bald dokumentieren wie ich meinen JYQD-Treiber mit Sunray ans Laufen gebracht habe ... (Zunächst nur Mähmotor)

1654808885829.pngIMG_20220609_231934.jpg

1. Die Verdrahtung für JYQD ist wie folgt:
JYQD CON4 (Steuer-Pins):
JYQD 5V (OUT) verbinden mit JYQD CON5: 5V (OUT)
JYQD EL (IN) verbinden mit Brushless Adapter En (OUT)
JYQD Signal (OUT) verbinden mit Brushless Adapter Odom. (IN)
JYQD Z/F (IN) verbinden mit Brushless Adapter Dir (OUT)
JYQD VR (IN) verbinden mit Brushless Adapter PWM (OUT)
JYQD GND verbinden mit Brushless Adapter GND

JYQD CON5 (Hall-Sensorik):
JYQD 5V (OUT) verbinden mit Motor Hall 5V (IN)
JYQD Ha (IN) verbinden mit Motor Hall U (OUT)
JYQD Hb (IN) verbinden mit Motor Hall V (OUT)
JYQD Hc (IN) verbinden mit Motor Hall W (OUT)
JYQD GND verbinden mit Motor Hall GND

JYQD OUT (Power-Pins):
JYQD P+ (IN) verbinden mit Ardumower-PCB motor power+ (OUT)
JYQD P- (IN) verbinden mit Ardumower-PCB motor power- (OUT)
JYQD MA (OUT) verbinden mit Motor Phase U (IN)
JYQD MB (OUT) verbinden mit Motor Phase V (IN)
JYQD MC (OUT) verbinden mit Motor Phase W (IN)

Schaltbilder und Tipps zum JYQD gibt es hier: http://grauonline.de/wordpress/?page_id=3122

2. JYQD-Treiber mit Spannung versorgen: es ist empfehlenswert für den ersten Test ein Labornetzteil mit Strombegrenzung (z.B. 1A) zu verwenden (damit der JYQD-Treiber nicht beschädigt wird beim Testen), hierfür JYQD P+ vom Ardumower-PCB trennen und anstelle das Netzteil an P+ und P- anschliessen (gemeinsame Masse über P- kann bestehen bleiben).

3. An "An Ha, Hb, Hc" messen, ob beim manuellen Drehen des Motors die Hall-Ausgänge von 5V auf 0V gehen. Falls dies beim betroffenen Motor nicht passiert müssen ggf. bereits vorhandene Hall-Pullups auf dem JYQD-Treiber entfernt werden (siehe obigen Link zum Schaltbild)

4. Aktuelle Sunray-Firmware (Master) verwenden (https://github.com/Ardumower/Sunray) und in config.h den JYQD-Treiber für den Mähmotor aktivieren:
Screenshot from 2022-06-09 23-05-43.png

5. In der App Mähmotor mit "MOW IS ON" aktivieren und mit Oszilloskop (oder zur Not Voltmeter) messen ob ENABLE und PWM über die App geschaltet werden können (ENABLE muss dabei auf 5V gehen). Falls dies nicht gelingt fehlen vermutl. die Pullups für ENABLE und PWM am Brushless-Adapter (siehe auch: https://wiki.ardumower.de/index.php?title=Brushless_Adapter). Ich habe sie bei mir am JYQD-Treiber angelötet:
1K zwischen JYQD EL und JYQD 5V
1K zwischen JYQD PWM und JYQD 5V

6. Falls der Motor Geräusche macht aber nicht anläuft, ggf. Motor Phase (U, V, W)-Paare tauschen.
Leider sind mir beim Testen die JYQD-Mosfets kaputt gegangen (hatte zunächst ohne Labornetzteil getestet) und ich muss diese zunächst erneuern (NCE6990 gegen BUZ11A oder IRF9540N tauschen)... to be continued...
 
Zuletzt bearbeitet:
So, der JYQD Treiber läuft jetzt auch mit der 1.0.274. Enable muss in der Datei AmRobotDriver.cpp auf LOW eingestellt werden.

// JYQD brushless driver
JYQD.driverName = "JYQD"; // just a name for your driver
JYQD.forwardPwmInvert = false; // invert PWM signal for forward? (false or true)
JYQD.forwardDirLevel = LOW; // logic level for forward (LOW or HIGH)
JYQD.reversePwmInvert = false; // invert PWM signal for reverse? (false or true)
JYQD.reverseDirLevel = HIGH; // logic level for reverse (LOW or HIGH)
JYQD.usePwmRamp = false; // use a ramp to get to PWM value?
JYQD.faultActive = LOW; // fault active level (LOW or HIGH)
JYQD.resetFaultByToggleEnable = true; // reset a fault by toggling enable?
JYQD.enableActive = LOW; // enable active level (LOW or HIGH)
JYQD.disableAtPwmZeroSpeed = false; // disable driver at PWM zero speed? (brake function)
JYQD.keepPwmZeroSpeed = false; // keep PWM zero value (disregard minPwmSpeed at zero speed)?
JYQD.minPwmSpeed = 0; // minimum PWM speed your driver can operate
JYQD.pwmFreq = PWM_FREQ_3900; // choose between PWM_FREQ_3900 and PWM_FREQ_29300 here
JYQD.adcVoltToAmpOfs = -1.65; // ADC voltage to amps (offset) // brushless-adapter: 0A=1.65V, resolution 132mV/A
JYQD.adcVoltToAmpScale = 7.57; // ADC voltage to amps (scale)
JYQD.adcVoltToAmpPow = 1.0; // ADC voltage to amps (power of number)
 
Kommentar zu den Volt Amp Werten:

JYQD.adcVoltToAmpOfs = -1.65; // ADC voltage to amps (offset) // brushless-adapter: 0A=1.65V, resolution 132mV/A

!! habe hier die Erfahrung gemacht !! bleibe im positiven Bereich, also lieber etwas weniger offset als das theoretische Optimum.
Bin hier bei -1.62 gelandet.


JYQD.adcVoltToAmpScale = 7.57; // ADC voltage to amps (scale)

theoretisch wäre 13.2 der richtige Wert siehe im Kommentar zum Offset "resolution 132mV/A", praktisch bin ich mit "10.0" bei 400mA und 800mA Last nur 50mA drüber.

JYQD.adcVoltToAmpPow = 1.0; // ADC voltage to amps (power of number)
Die manipulation des pow Werts ergab bei meinen Tests oft "nan" oft aber auch erst im Resultat des LowPass Filters.

zum Testen hatte ich mir in der Terminal Ausgabe noch:

folgendes in den Statistik Output gepackt;
CONSOLE.println();
CONSOLE.print("INFO current =left:");
CONSOLE.print(motor.motorLeftSense);
CONSOLE.print(",right:");
CONSOLE.print(motor.motorRightSense);
CONSOLE.print(",mow:");
CONSOLE.println(motor.motorMowSense);
CONSOLE.print("INFO currentLP=left:");
CONSOLE.print(motor.motorLeftSenseLP);
CONSOLE.print(",right:");
CONSOLE.print(motor.motorRightSenseLP);
CONSOLE.print(",mow:");
CONSOLE.println(motor.motorMowSenseLP);
CONSOLE.println();

Gruß - Mark
 
Zur Info.

!! habe mir gerade 2 der JYQD Treiber beim Einstellen des Spannungsfehlers geschossen !!
( https://forum.ardumower.de/threads/battery-voltage-reading-error-with-sunray.23842/post-54414 )

Diese sind mit Geektech gelabelt und kamen über Amazon. Der 3. V73E3 gelabelte am Mähmotor hat es überlebt.

Ich hatte die Spannung von 16 bis 31Volt in 1Volt Schritten hochgedreht um die Spannungen am Multimeter sowie im Terminal zu vergleichen.

Der erste ging bei 30 VDC hoch und der zweite bei knapp unter 31VDC.

Die nächsten bekommen ihren BurnIn außerhalb des Roboters. ( hab da noch genügend )

Gruß Mark
 
hat jemand schon brauchbare PID und Stanley Werte?

....ich kann rumprobieren was ich will, sobald es ans Mähen geht fährt mein Mower wie ein Suchhund im Schneckentempo.
Schon etliche Varianten durch...am "schönsten" ist er mit der Handsteuerung bei
#define MOTOR_PID_KP 2.7
#define MOTOR_PID_KI 0.03
#define MOTOR_PID_KD 0.03
gefahren, aber wie gesagt sobald es ans Mähen geht...Glaube mittlerweile das die JYQD nur für den Mähmotor zu gebrauchen sind :cry:
 
In the latest of Sunray (1.0.276), the line the correction in amRobotDriver.cpp was reverted again.
I had to redo the change locally to get my mow motor running:

`JYQD.enableActive = LOW; // enable active level (LOW or HIGH)`

It was changed to the (for me at least) correct value in https://github.com/Ardumower/Sunray/commit/23ed0e007372f46a2d7b11a0365b50da0b195df3
But was changed back to the (for me) incorrect value in https://github.com/Ardumower/Sunray/commit/f05bf9076691c75867eb2131fbca0e8f966ad148

Cool that I can start mowing again!
Thanks to all involved.
 
It seems the JYQD VR controls the rpm by Vavg and not PWM. I have tested three setups:

1. 2185 Ohm pull-up on JYQD 5V
2. 723 Ohm pull-up on JYQD 5V
3. 825 Ohm pull-up on BLDC Adapter Board 5V (as in Wiki).

Setup 3 gives the best ODO values when running AT+Q.

In all test I see that the pull-up does not bring Vtop to 5V until the PWM is high. The attached film shows setup 1 and 2 at the same time. The graph shows all three setups when running AT+Q.

Does anyone know if the JYQD can be made using pwm only, or is there a better way to get a better PWM signal (constant 5V Vtop).

Will the non-linearity between PWM and ODO be a problem in steering?

(Connecting JYQD 5V (OUT) with JYQD CON5: 5V (OUT) made no difference)

PCB 1.4. Adaperboard 1.0. I am testing larger motors for a larger mower. Ca 100W driving motors and three mowing motors ca 70W. For the mowing motors only one JYQD driver has SPEED connected to the adapter board, the other two are connected in parallell with the flat cable MOW. I have produced an item to connect Husqvarnas cutting plate. Saves ca 20-30% energy in compare to the ardumower standard. I am thinking of using 8015A instead to be able to connect FAULT for all three mowing motors.

Best,
Anton
 

Anhänge

  • B4DF466C-256C-4260-BE12-BE4E2432FB8D.MOV
    42 MB
  • E9A811D9-6FAD-45CF-92C5-4088C6C1FC2B.jpeg
    E9A811D9-6FAD-45CF-92C5-4088C6C1FC2B.jpeg
    1,4 MB · Aufrufe: 29
  • 6168EC84-8FBD-4E1C-AF6D-AD3FC8CB0A45.jpeg
    6168EC84-8FBD-4E1C-AF6D-AD3FC8CB0A45.jpeg
    1,7 MB · Aufrufe: 36
  • B12107CF-2FF3-4B04-9038-72286E25A08F.png
    B12107CF-2FF3-4B04-9038-72286E25A08F.png
    330,6 KB · Aufrufe: 26
  • EF579175-D5D5-4771-986E-4109D3CC2FDF.jpeg
    EF579175-D5D5-4771-986E-4109D3CC2FDF.jpeg
    902,6 KB · Aufrufe: 24
  • 843E819A-9F47-4CED-8D37-F10D33BF069C.MOV
    6,4 MB
  • EF1D8E2B-F056-4BC3-A8A6-2FB13302AAA1.jpeg
    EF1D8E2B-F056-4BC3-A8A6-2FB13302AAA1.jpeg
    1,4 MB · Aufrufe: 27
Zuletzt bearbeitet:
One more test, this time with ACT Motors 8015A. Did not connect FAULT, but had to add a pull-up resistor on SPEED to get a ODO signal. Used 2.2 kOhm. Sunray Master.

This time, there is no loss in voltage (Vtop) on the PWM signal and the driver acts properly.

Two films, one of the PWM signal and the other SPEED on 8015A. Also the shape of the SPEED/ODO signal with 2.2kOhm pull-up. AT+Q chart attached.

I am quite knew to electronics. Anyone knows why the Voltage (Vtop) on the PWM signal drops with the JYQD driver, but not with the 8015A driver?

Manual:

Best,
Anton
 

Anhänge

  • 35CF5859-05C0-4EBB-9621-0918F3ABAABA.png
    35CF5859-05C0-4EBB-9621-0918F3ABAABA.png
    239,1 KB · Aufrufe: 12
  • 9CAED79D-FFF9-4810-8CD7-61673D1D8C15.MOV
    10,7 MB
  • D7BD6E72-DEA5-4EEB-A3BA-9E978E51FE7D.MOV
    40,5 MB
  • CBF19C9C-E691-4EAC-A13C-5FC73E9A798D.jpeg
    CBF19C9C-E691-4EAC-A13C-5FC73E9A798D.jpeg
    3,4 MB · Aufrufe: 12
Zuletzt bearbeitet:
Oben