wineboyrider
1 MW
Awesome~ Metallover!
gogo said:You should be able to use the flow-chart for 3-phase combos while using a controller at low power?veloman said:Yeah I got my motor and parts the other day. The motor looks really good for a mid-drive setup and is only 5lbs. The only question is which hall wires are which? Will have to open up the motor to find out, and I'm a little hesitant to that right now.
What's the shaft diameter and flat length? The internal threads on the shaft is a nice feature.
ropower86 said:Hey Metallover, how long did it take for the motor on other parts to come in after you made your order? Also, do you think adding a different controller to that motor will increase the RPM?? Very curious and I am intrigued on using this motor for an electric vehicle project.
Metallover said:ropower86 said:Hey Metallover, how long did it take for the motor on other parts to come in after you made your order? Also, do you think adding a different controller to that motor will increase the RPM?? Very curious and I am intrigued on using this motor for an electric vehicle project.
It took 6 weeks for me to get my order. It may have been faster if everything was in stock when I ordered. I see no problems increasing voltage to whatever you like. If you go ahead to use this motor on a build, post a link in this thread.
#define PIN 6 // use arduino digital pin 6 (arbitrary)
#define NUM_PULSES 41
uint16_t pulseLow[NUM_PULSES] = {
400, // one 400us pulse to start
200, // three 200us pulses
200,
200,
100, // fourteen 100us pulses
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
200, // three 200us pulses
200,
200,
100, // five 100us pulses
100,
100,
100,
100,
200, // no distinct pattern
100,
200,
200,
100,
200,
100,
100,
100,
200,
100,
100,
200,
100,
200,
200
}
uint16_t pulseHigh[NUM_PULSES] = {
100, // 24 100us pulses
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
500, // one 500us pulse
100, // 15 100us pulses
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
100,
0, // last pulse is the 190ms pulse, do that separately
}
void setup()
{
// set pin 6 to an output
pinMode(PIN, OUTPUT);
}
void loop()
{
// write the data, takes 10.3ms
for (uint8_t i = 0; i < NUM_PULSES; i++)
{
digitalWrite(PIN, LOW);
delayMicroseconds(pulseLow[i]);
digitalWrite(PIN, HIGH);
delayMicroseconds(pulseHigh[i]);
}
// delay for (200 - 10.3) = 189.7 ms
delayMicroseconds(700]);
delay(189);
}
Metallover said:I got the 80V chainsaw yesterday. Seems like it will work great. I am planning on trying it this weekend, we'll see how it goes. It was heaver than I expected (14lbs with battery).
// written 3/27/2017
// Endless-Sphere
// Metallover
// New 80 volt push mowers
// https://endless-sphere.com/forums/viewtopic.php?f=1&t=79384&start=75
// This is a rudimentary way to get a Greenworks 80V controller to operate without the proprietary Greenworks 80V battery.
// You can use any battery you like. As a note, make sure you manage your own low voltage cutoff now!
// If someone wanted to improve this code, they could:
// Use interrupts or a pwm to generate the signals
// Dig deeper into the Greenworks algorithm to determine what the different signals mean
// - How does the LVC work, would it be worth relaying ours so the mower shuts off?
// - Does anything the battery sends tell the mower to speed up in thick grass? Probably not...
#define PIN 6
void setup()
{
pinMode(PIN, OUTPUT);
}
void loop()
{
digitalWrite(PIN, LOW);
delayMicroseconds(400);
for(uint8_t i = 0; i < 3; i++)
{
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
}
for(uint8_t i = 0; i < 14; i++)
{
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(100);
}
delayMicroseconds(100);
for(uint8_t i = 0; i < 2; i++)
{
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
}
// 5
for(uint8_t i = 0; i < 5; i++)
{
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
}
// 1 500us pulse
digitalWrite(PIN, HIGH);
delayMicroseconds(500);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
// 1 500us high, 200us low
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(100);
// 1 100us pulse
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(100);
// 1 100us pulse, 200us low
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
// 1 100us pulse, 200us low
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
// 1 100us pulse, 100us low
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(100);
// 1 100us pulse, 200us low
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
// 4
for(uint8_t i = 0; i < 4; i++)
{
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(100);
}
delayMicroseconds(100);
// 3
for(uint8_t i = 0; i < 3; i++)
{
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(100);
}
delayMicroseconds(100);
// 1 100us pulse, 100us low
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(100);
// 1 100us pulse, 200us low
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
digitalWrite(PIN, HIGH);
delayMicroseconds(100);
digitalWrite(PIN, LOW);
delayMicroseconds(200);
digitalWrite(PIN, HIGH);
delay(190);
}