Author Topic: Greenworks 60v battery Ohm terminal  (Read 74768 times)

0 Members and 19 Guests are viewing this topic.

Offline q9104

  • Contributor
  • Posts: 13
  • Country: cn
Re: Greenworks 60v battery Ohm terminal
« Reply #100 on: April 23, 2025, 08:21:49 am »
I want to learn more about battery timing pulses, I downloaded the file of the Greenworks60v battery in the post to convert it into bit signal, I don't have an oscilloscope and can't open this file, can someone help me convert it into an image or bit signal?
 

Offline q9104

  • Contributor
  • Posts: 13
  • Country: cn
Re: Greenworks 60v battery Ohm terminal
« Reply #101 on: April 23, 2025, 08:37:07 am »
These days, I replaced the bit signal in the Arduino code with the timing pulses I detected, connected the nano through a DC-DC step-down module, connected the positive and negative poles to the battery socket positive and negative poles, connected pin 2 to the ohm signal position, connected the power supply to the battery socket positive and negative poles, and my tool worked normally. When using the Arduino code, the tool's ohm signal can only be connected to the nano signal
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #102 on: April 23, 2025, 10:59:51 am »
This might help with your file:
https://github.com/MorganAskins/tektronix_wfmreader
https://github.com/vongostev/tekwfm2

My progress in the past days...

I wrote an arduino code to simulate my battery signal. Then I connected arduino (ESP32) pin to IRLZ44N (with a few resistors) to pull the signal of COM line down.
I works but when arduino releases the line the signal goes back to 5V too slowly. This is probably due to wrong mosfet choice on my part:



I have now ordered:
2N7000
2N7002K
BSS138
BS170
PMBT5551

When I get the components I will continue testing for the best option.
« Last Edit: April 23, 2025, 11:03:05 am by frenky »
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #103 on: April 24, 2025, 06:01:24 pm »
I have received 2N7002 and results are great. I used 50ohm between ESP32 and gate and 15Kohm between gate and ground.
Drain is connected to Arduino nano with its pin set to "pinMode(3, INPUT_PULLUP)" to simulate COM line of the lawnmover.

Circuit:


Photos:



Signal is now nice and square:

 

Offline q9104

  • Contributor
  • Posts: 13
  • Country: cn
Re: Greenworks 60v battery Ohm terminal
« Reply #104 on: April 25, 2025, 12:53:25 pm »
I designed a voltage regulator module for nano, with a maximum voltage of 85V, which can prevent the back electromotive force when the motor stops, because I found that the voltage regulator modules purchased online will break the IC and damage the nano when the motor stops, as I am not very proficient in circuit components, I will upload a PDF, if you understand this aspect of knowledge, please help me correct it, thank you
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #105 on: April 25, 2025, 04:56:32 pm »
It's beyond my knowledge to tell if your circuit is good or not because I'm backend developer by profession (C#, .net, sql).

My plan is to use this board:
https://vi.aliexpress.com/item/1005005978350087.html

When I receive it I will see if it's based on: LM5164
https://www.ti.com/lit/ds/symlink/lm5164.pdf

I haven't received it yet so I don't know how it will handle any back emf from the motor...

I'm using mosfet to send signal on COM line instead of directly connecting arduino.
If there was a voltage spike on COM line then it might fry the arduino if it was connected directly to its pin.

EDIT:
This is also interesting for DIY option:
https://www.electronics-lab.com/project/65v-input-12vdc-output-1a-synchronous-buck-dc-dc-converter-using-lm5164/

EDIT after EDIT:  :palm:
Now I see that you circuit is also based on LM5164...
« Last Edit: April 25, 2025, 06:24:20 pm by frenky »
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #106 on: May 04, 2025, 06:19:25 pm »
I  have received DCDC board. It's not based on LM5164 but I can't see the markings because chip surface was erased with laser...

Anyway I had some time and reverse engineered the power part of aliexpress Greenworks 80V board:



« Last Edit: May 05, 2025, 08:29:53 am by frenky »
 

Offline mrsmith01

  • Newbie
  • Posts: 2
  • Country: ru
Re: Greenworks 60v battery Ohm terminal
« Reply #107 on: May 15, 2025, 01:10:43 pm »
Hi! Can I ask you to help me with the 24V battery?

I bought an engraver from greenworks and I want to do the same as you, I took logs at a high frequency, which would be as accurate as possible.

I took 1 full frame and with the help of ESP32 I feed this frame back, but the engraver turned off without omega after 3 seconds, and now it turns off.
0 - low V, 1 - high V


google_sheets_logs - https://docs.google.com/spreadsheets/d/1JRUqmaS5qRQXyNFS1esLLFqJaWT3tnUNBabYrqyiWI4/edit?usp=sharing
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #108 on: May 16, 2025, 07:44:20 am »
Do you want me to create arduino code for your or what is the question?
If you have connected ESP32 directly to COM line you should instead try by doing it with mosfet which is pulling line down...
 

Offline mrsmith01

  • Newbie
  • Posts: 2
  • Country: ru
Re: Greenworks 60v battery Ohm terminal
« Reply #109 on: May 16, 2025, 12:45:59 pm »
No, I would like to understand the topic, to understand how it works.  I'd really appreciate it if you'd give me a answer.

I connected the oscilloscope to the instrument and the battery. cf1 to the omega of the battery and the negative contact of the battery, and cf2 to the omega of the instrument and the ground to the negative contact of the instrument.

If the omegas of the battery and the tool are not connected, then I see that after turning on the tool, it transmits 1 long low and after that, as I understand it, the battery is waiting for a response, but since the omegas are not connected, it does not receive a response and turns off. At the same time, although the battery is under load, it does not transmit anything. I assume that he is just waiting for this low from the instrument.

Then I connected the omega of the accumulator and the omega of the instrument and did the same, then I get the signal that I sent in the Google tables.

Then I copied the signal that comes after the first long low and sent it through esp32, but it was unsuccessful.

As I understand it, the battery continues to communicate with the instrument. But since the omegas are connected by a jumper (so that the instrument would work and capture the signal over a long period of time) I see the same thing on both channels. Therefore, the question arises, how do I understand what the toolkit is transmitting from this log, and what the battery is responding to?


Sorry if the questions are stupid, I'm just learning. I'm trying to Google, but I don't understand how to formulate the query correctly. thank you in advance! |O
« Last Edit: May 19, 2025, 09:48:52 am by mrsmith01 »
 

Offline q9104

  • Contributor
  • Posts: 13
  • Country: cn
Re: Greenworks 60v battery Ohm terminal
« Reply #110 on: May 17, 2025, 01:19:55 am »
Do you have a comparison between the signals sent by the ESP32 and the signals you captured? I think the error might be caused by the interval of the signals sent by the ESP32 increasing
 

Offline Emilhse

  • Newbie
  • Posts: 2
  • Country: ca
Re: Greenworks 60v battery Ohm terminal
« Reply #111 on: June 29, 2025, 08:01:42 pm »
Did you get the BMS board (80V) from aliexpress? did it work?
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #112 on: August 04, 2025, 07:54:44 pm »
Progress report...

I have designed LM5164 board to convert 80V to 5V but it was overheating like crazy... I might redo it in the future...

So to go around that problem I just used a ESP32 board with battery circuit included Lolin32.

I have written arduino sketch which senses on the GPIO12 for 5V on COM line. When 5V  is present it starts transmitting signal on GPIO13 to pull down COM line with data.

The trimmer is working perfectly with my simulated signal.

The circuit:


The test bench:


COM line -> My signal from ESP32 and response from trimmer:


I'll post arduino code and schematics on github in the following days so anybody can replicate it.
« Last Edit: August 04, 2025, 08:13:24 pm by frenky »
 
The following users thanked this post: voltsandjolts

Offline Log8

  • Newbie
  • Posts: 1
  • Country: us
Re: Greenworks 60v battery Ohm terminal
« Reply #113 on: August 11, 2025, 02:18:36 am »
Just getting into this. Any chance you could share the .stl file for that adapter?
 

Offline jh15

  • Frequent Contributor
  • **
  • Posts: 622
  • Country: us
Re: Greenworks 60v battery Ohm terminal
« Reply #114 on: August 11, 2025, 02:29:02 am »
Interested here, i have 2 greenworks 40v tools and 1 battery. Keeping it between full and discharged.
Tek 575 curve trcr top shape, Tek 535, Tek 465. Tek 545 Hickok clone, Tesla Model S,  Ohio Scientific c24P SBC, c-64's from club days, Giant electric bicycle, Rigol stuff, Heathkit AR-15's. Heathkit ET- 3400a trainer&interface. Starlink pizza.
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #115 on: August 11, 2025, 12:53:31 pm »
Just getting into this. Any chance you could share the .stl file for that adapter?
Not sure if your request was meant for me? Would you like to print a motor holder that I used for testing?
 

Offline Emilhse

  • Newbie
  • Posts: 2
  • Country: ca
Re: Greenworks 60v battery Ohm terminal
« Reply #116 on: August 15, 2025, 05:54:49 pm »
When are you planning to post the code on github?
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #117 on: August 17, 2025, 04:28:11 pm »
I would like to make the repository all nice and clean so it might take some time.

Attached is the code that works for my lawnmower...
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #118 on: August 17, 2025, 04:32:33 pm »
And the latest schematics using only trough-hole components:
 
 

Offline frenky

  • Supporter
  • ****
  • Posts: 1031
  • Country: si
    • Frenki.net
Re: Greenworks 60v battery Ohm terminal
« Reply #119 on: August 17, 2025, 04:36:55 pm »
I have also found new 100V to 5V dc-dc converter on aliexpress. https://www.aliexpress.com/item/1005006381432341.html
I have ordered two and when I get it I'll post if it works without overheating.
If it works I'll make a pcb with headers for ESP32-C3 + DCDC converter + terminals for Greenworks tool so that anybody can easily replicate it.
« Last Edit: August 17, 2025, 05:19:03 pm by frenky »
 

Offline CesiumSalami

  • Newbie
  • Posts: 1
  • Country: us
Re: Greenworks 60v battery Ohm terminal
« Reply #120 on: November 23, 2025, 10:54:15 pm »
Okay, let me continue observations. I've  captured full exchange sequence from the beginning. My tool is 40V snow thrower (2600607), batt is 5ah (2927207)
Battery starts transmitting when a tool is rising Ohm line up, initially it passes 5 different signals in 100ms interval, then starts transmitting one sequence until a tool release the line. Not sure how long it will cycle this, may be it will periodically retransmit whole greeting sequence (say, for older devices).

Initial sync pulse length: 397us (marked as S below)
Long pulse length: 198us (marked as 1 below)
Short pulse length: 94us (marked as 0 below)
Inter-pulse pause: 100ms.

Initial sequence

Q means query from battery side
R means tool response


1. Nearly +700ms from the moment when line is up
  Q: S 0 x 24
  R:   0 x 15

2. +800 ms 
  Q S 0 x 24
  R   1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1

3. +900 ms
  Q S 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 0
  R   1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1

4. +1000 ms
  Q S 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0
  R   1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1

5. +1100 ms
  Q S 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0
  R   1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1

Note: Surprisingly, first response is really only 15 bits. All further are 16 bits length

Continuous mode

6. +1300ms
  Q S 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0
  R   1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1

7. +1500ms
  Q S 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 1 1 0 0 0
  R   1 0 1 1 0 1 0 0 0 1 0 0 1 0 1 1

... etc

Here is a arduino code, which works for me (chineese nano works perfectly). Didn't check yet for long load time, but at least it successfully starts.
Code: [Select]
const int LINE_PIN = 2;

const int S_PREAMBLE = 412;
const int S_SHORT = 105;
const int S_LONG = 205;
const int S_PAUSE = 100;

const int MSG_PAUSE = 1000;

#define MESSAGE_LENGTH 25
const int INITIAL[4][MESSAGE_LENGTH] = {
  {'S', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {'S', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
  {'S', 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0},
  {'S', 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0} 
};

const int PERIODIC[MESSAGE_LENGTH] =   {'S', 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0};

typedef enum {
  LINE_LOW,
  LINE_FLOAT
} line_state_t;

void set_line(line_state_t state) {
  switch (state) {
    case LINE_LOW:
      pinMode(LINE_PIN, OUTPUT);
      digitalWrite(LINE_PIN, LOW);
      break;
    case LINE_FLOAT:
      pinMode(LINE_PIN, INPUT);
      break;
  }
}

void send_pulse(int pulse) {
  set_line(LINE_LOW);
  switch (pulse) {
    case 'S':
      delayMicroseconds(S_PREAMBLE);
      break;
    case 0:
      delayMicroseconds(S_SHORT);
      break;
    case 1:
      delayMicroseconds(S_LONG);
      break;
  }
  set_line(LINE_FLOAT);
}

void send_message(const int m[MESSAGE_LENGTH]) {
  for (int idx = 0; idx < MESSAGE_LENGTH; idx++) {
    send_pulse(m[idx]);
    delayMicroseconds(S_PAUSE);
  }
}
 
void setup() {
  set_line(LINE_FLOAT);
}

int state = 0;

void loop() {
  int line = digitalRead(LINE_PIN);
  if (line == 0) {
    state = 0;
    return;
  }

  if (line == 1 && state == 0) {
    delay(700);
  }

  if (state < 4) {
    send_message(INITIAL[state]);
    state ++;
    delay(100);
  } else {
    send_message(PERIODIC);
    delay(200);
  }
}

tl;dr
OmegaFaker didn't work on my 40V greenworks lawnmower and this did! Thank you!

I tried a lot of the OmegaFaker options across 3 different Arduino Nano's but couldn't get anything to work on my greenworks 40v LMF318 lawnmower. I purchased this second hand (for $10) and it came with a knock off battery. The knock off battery is honestly somewhat terrifying. In addition to it having already melted itself down internally, it's unfused and filled with stray solder (not from splatted when it killed itself). Anyways, I was just noodling around with it thinking maybe I'd rebuild the pack (not possible with the knockoff PCB) or maybe set this up to run off Ryobi's and this is SUPER helpful.
« Last Edit: November 24, 2025, 03:04:00 am by CesiumSalami »
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf