Arduino Uno, GRBL and TB6600

I'm currently running a Shapeoko 2 with the typical Arduino Uno and GRBL v0.9 with gShield. I'm building another machine from scratch that will have NEMA23's and I'd like to run those using my Arduino Uno and GRBL. Does anyone have a pin out or diagram of how to connect the Uno to the TB6600 and any configuration changes I'd need to make?

Or, maybe there's a better driver to use that will supply the current to the NEMA 23.

Thanks,

How much current does your stepper motor require? Post a link to the motor datasheet. Nema 23 only means the front is 2.3 inches across.

You need a stepper driver that can comfortably provide the current required by the motor.

If the TB6600 is suitable post a link to its datasheet.

...R
Stepper Motor Basics

Here's a link to the datasheet. The steppers are 2.8A...thanks!!

http://us.stepperonline.com/download/pdf/23HS30-2804S.pdf

I meant hooking up the Uno to something like this...

http://www.ebay.com/itm/CNC-Single-Axis-TB6600-0-2-5A-Two-Phase-Hybrid-Stepper-Motor-Driver-Controlle-OY-/281681756844?hash=item41958a82ac:g:cosAAOSwBahU-Vuf

I found this tutorial that seems to explain what I was asking...

http://wiki.zentoolworks.com/index.php/Arduino_Stepper_Motor_Control

I wasn't sure what to do with the -PUL and -DIR pins but they're all connected to the Uno GND. Seems pretty straight forward from there.

  • and - pairs of pins drive an opto coupler input (ie an IR LED bascically). Hence +PUL, -PUL
    (pulse, ie step), +DIR, -DIR (direction) which connect to the LED (often with a series resistor too).

You first check to see if a series resistor is needed (depends on the drive, they usually provide
one good for 3.3 and 5V), but basically you either connect the - pins to GND and drive the + ones,
or connect + pins to Vcc and drive the - ones inverted.

Thanks Mark!!

I just picked up a similar driver from e-bay. Once I got the on off pulse timing ironed out on the arduino uno, everything has been pretty good.

We're pushing a nema 42 around at ~2.5 amps with reasonable speed and good torque.

Still testing the limits of the driver, but for under $10 US I am surprised that it works at all.

Sounds like you have a good setup for experimenting with.

Good luck.

NEMA42 ? That's a monster - surely it takes 6A or so though?

Sorry about that, it's not a Nema 42, its a Nema 23, bit of a difference there.

(StepSyn 103H 3.35A)

Yea, I'm a idiot :confused:

However the driver is still holding up and we're having fun playing with the pulse length.

I can't get this guy's speed, but he can't have any useable torque can he?

morrisonandboyd:
Sorry about that, it's not a Nema 42, its a Nema 23, bit of a difference there.

(StepSyn 103H 3.35A)

Yea, I'm a idiot :confused:

However the driver is still holding up and we're having fun playing with the pulse length.

I can't get this guy's speed, but he can't have any useable torque can he?

https://www.youtube.com/watch?v=p5zHZv1-eNE

For (machining) CNC you want speed for rapids, when not cutting, and torque for cutting
(low speed, lots of force if using ballscrews). So the typical stepper torque/speed profile
isn't a bad match. Of course a decent servo motor will stomp all over any stepper for
performance, but that requires encoders and more expensive electronics.

I've got a NEMA17 stepper to 3600rpm at 24V, though it was 2.5A rated (very low impedance).

I'm getting about 250 RPM at 12V with the generic Chinese driver.

code

int j = 5000;
int d = 5000;
void setup()
{
pinMode (13, OUTPUT);
pinMode (8, OUTPUT); // dir pin
pinMode (9, OUTPUT); // step pin
digitalWrite(8, LOW);
digitalWrite(9, LOW);
digitalWrite(13,LOW);

}

void loop()
{

do {
j=j-2;
digitalWrite(9,HIGH);
digitalWrite(13,HIGH);
delayMicroseconds (j);
digitalWrite(9, LOW);
digitalWrite(13,LOW);
delayMicroseconds (j);
} while (j > 600);
do {
d = d-1;
digitalWrite(9,HIGH);
digitalWrite(13,HIGH);
delayMicroseconds (j);
digitalWrite(9, LOW);
digitalWrite(13,LOW);
delayMicroseconds (j);
} while (d>10);
digitalWrite(13,LOW);
digitalWrite(9, LOW);
delay (5000);
// blink led 5 seconds
digitalWrite(13,HIGH);
delay (5000);
j = 5000;
d = 5000;
}

motor gets flakey below 600 microseconds of delay.
I have a 24V power supply that might bring up the speed a little haven't tried it yet.

What are you using for a driver at 3600 RPM?

I do lots of CNC work for my day job. Currently trying to get funding approved for a servo controlled, mix on demand system for production. Bad news is system needs to move 20-30 gallons per min minimum.
Good news, I get to play experiment with a lot of hardware.

morrisonandboyd:
I have a 24V power supply that might bring up the speed a little haven't tried it yet.

What are you using for a driver at 3600 RPM?

24V is twice the speed of 12V system typically.

I've my own board design using DRV8711 and discrete MOSFETs good to 5A. You can get
a DRV8711-BOOST board commercially I believe which is basically the same thing.

The 3600rpm is no-load of course...

Thanks, the 24 volt power supply allowed me to knock down the delay from 600 micros to 400 micros.

I might be able to get more, but current 24v supply is only good to 4 amps.