The video from teknik shows using pins that are not designated the same as arduino config.h but with no explanation for a config.
But it tells you what the I/O pins are. The others are not required for CNC operation- just STP/DIR/ENA/GND. Exactly like a stepper driver. To hook one up to grbl, you just use grbl's standard pinout on the Arduino instead of Teknic's sample program. There's nothing I see to need to change or be unsure about, like Metalguru said. Just ignore the pins you don't need?
Don't want to be dense, so as I understand it input A will be a positive and input B will be a ground and the others just not connected at all. except the green black white and blue.
Nope. Input A and B are software-defined. Read all of page 48 of the manual. If it doesn't make sense... Read it several more times. (I'm very familiar with being on the 15th reading of one paragraph of a driver manual, you're not alone here)
HLFB is a digital output from the motor, not a control input. It can be programmed for several different functions. You can safely ignore it. The manual clearly explains its various uses. The control inputs (Pulse, Direction, and Enable) have both the positive and negative leads brought out to pins. They are identical to the inputs on any of the standard stepper driver modules like the TB6600 or the DM542. They are simply the diode half of an optocoupler with a built in current limiting circuit. You do, however, have to program the motor using the supplied software to make the A, B, inputs into step and direction inputs. The Enable input is fixed function. If you are using a common positive system with sinking drivers, you would connect all the + leads to 5v. If you are using a common negative system with sourcing drivers, you would tie all the - pins to ground. If you have a driver capable of sourcing or sinking like an Arduino, you can just wire the - pins to common ground and set the arduino to Active High outputs. Hopefully, you have the SDK series motors and not the other models as these are designed for step and direction inputs like you would get from an arduino. If you got the wrong type of motor it won't work with an Arduino. Wiring is clearly shown on Page 49 of the SDK manual. MG
Yes I have the sdk series motors. Looks like the blue is enable + and the HLFB is ignored and the input A and B positives are direction and pulse, with the orange going to ground. I did not see anything in the MSP program for the SDK motors to assign input A and B to step and direction but I will read more. ok page 48 says the SDK models will change automatically so I guess that covers everything. I will try it out in the next day or so. (recovering from my booster shot so I am taking it easy moving around.) Thanks for all the help and I will give an update when I get done. Maybe a small spread sheet to show which wire goes to which pin on arduino for cnc
My best advice: RTFM. Everything you need to know is there. It is possible that the SDK motors are pre configured for Step and Direction inputs on A and B. I haven't read the whole thing either, especially the section on MSP. MG
I do believe you are correct, I just have to think a little longer. ha ha I am sure glad there are people like you guys to help us out.
Well it still doesn't work. page 48 says that the Input A+ and B+ are both automatically configured internally. I connected enable + and - to their respective pins and groundsk, and A+ and B+ to step and direction. Page 156 gives info on the timing of the signal. I will call teknik tomorrow as it is late. If I don't get any good fixes I will have 2 choices. Get a different controller or go back to steppers. This industry sure is tight on the info they are willing to let out. If you look at the various teknik videos etc it seems that they are more inclined to support movements thru the use of C++ than g code. Their literature and videos never mention g code.
All of the ground pins for A-, B-, and Enable- must be connected together to your circuit ground. All 3 inputs are isolated, they have no common connection internally, you must provide it externally. Depending on the mode set in the MSP software, you need to make sure your mode setting is correct and A and B inputs are enabled. Also, make sure your drive signal polarity is correct, and the voltage is sufficient to drive the required input current. You can monitor things with the MSP software while you are commanding the motor to move using the Arduino. Make sure your GRBL settings are correct for polarity and pulse width on the step and direction outputs. MG
the sdk series has only 1 mode and all the negatives are externally soldered together and then connected to ground. I don't think you can connect msp and arduino at the same time but I will try it tomorrow. The polarity is the same callout as the arduino pinout and is correct. and the enable pin is connected to the wire identified by teknik as the enable wire. The same is true for the A and B wires. I just need to find a person that has successfully connected sdk motors to arduino running grbl to see what config changes they may have made and any $ codes they have insight on. hopefully when I call teknik they will answer the phone and have someone there that can answer as I heard their tech guy quit.
The MSP software communicates by USB, and is completely separate from the motor control inputs. It is certainly possible to monitor the motor with MSP and move it at the same time. MG
ok a little more news, I called teknik & talked to Mark. I had reversed A+ and B+ as step and dir. That bit of info is in the fine print on page 154 of the manual. I tried that and it still doesn't work. I did try the MSP and it does show up when also hooked up to arduino. I changed the homing setting in auto tune to home on enable and then restarted everything. That worked but the motor went to hold immediately after homing and retraction was finished. I had previously unhooked all the limit switches and set homing in grbl $21 and $22 to 0. I set $0 to 1 instead of 10 from the steppers because I read that the servos have a 750ns minimum step pulse and 25 ns minimum time between dir and step input changes. I was worried that removing the limit switches was the problem so I will change $5 from 0 to 1 to see if that was the problem. otherwise I will call Mark again on Monday as it is too late in the day now.
ok I tried changing $5 to 1 and that didn't work so I changed it back. here is my $ settings. The $0 I changed from 10 because of faster read time on the servo and 3 is the minimum accepted number. It disables at 10ms, $0 = 3 (step pulse micro seconds) $1= 25 (25 step idle delay milliseconds ) $2= 0 (step port invert, mask) $3= 0 (direction port invert,mask) $4= 0 (step enable invert, boolean) $5 = 0 ( limit pins invert, boolean) $6= 0 (probe pin invert, boolean) $10= 0 (status report, mask) $11= 0.010 (junction deviation, mm) $12= 0.002 (arc tolerance,mm) $13 = 0 ( report inches, boolean) $20 = 0 (soft limits, boolean) $21= 0 (hard limits, boolean) $22 = 0 (homing cycle, boolean) $23 = 0 (homing dir invert, mask) $24= 100.000 (homing feed, mm/min) $25 = 500.000 (homing seek, mm/min) $26= 250 (homing debounce, milliseconds ) $27 = 10.000 (homing pull-off,mm) $30 = 25000 ( max spindle speed, rpm) $31 = 8000 (min spindle speed,rpm) $32= 0 (laser mode, boolean) $100= 160.000 (x steps/mm) $101 =160.000 (y steps/mm) $102= 160.000 (z steps/mm) $110= 1000 (x max rate,mm/min) $111 = 1000 (y max rate, mm/min) $112 = 1000 (z max rate,mm/min) $120= 10.000 (x acceleration,mm/sec^2) $121= 10.000 (y acceleration,mm/sec^2) $122= 10.000 (z acceleration,mm/sec^2) $130= 1280 (x max travel,mm) $131 = 1280 (y max travel,mm) $132 = 540 (z max travel,mm)
$0 should be left at 10uS. I don't think the Arduino is capable of much shorter pulses than this. $2 may have to be changed to give the correct polarity on the steps, see CP manual $3 is for changing motor direction $4 should be checked, it is currently set for the enable line to go low to enable the motors, this may be incorrect. Check the manual. If this is set incorrectly, the motors will not work. $5-$23 should all be zeros as you said you have no homing or limit switches. $24-$27 are then irrelevant None of the Homing/limits settings have anything to do with your problems $100-$103 seem really low for a Clearpath motor. Should be several thousand. It may be possible that the motors are just turning too slow to see movement. $110-$112 should be more like 5000, you will have to experiment. This is your Max speed, G0 Rapid move $120-$122 should be more like 150 with steppers, probably more like 300 with CP motors See: Grbl v1.1 Configuration ยท gnea/grbl Wiki for an explanation of GRBL settings. Note that changing some GRBL settings may require power cycling or a soft reset of the Arduino before they take effect. MG
ok I got movement. I am real busy with caregiving for the wife right now, but I was able to get the one motor I was testing to work. I will finish wiring the remaining motors and give you a complete update in the next few days. Thanks for all the help. Patience is not my strongest suit. You guys gave me ideas that had to be researched out and then tried. Thanks and I will give a comprehensive list of things to do in order to get the results. Hopefully it can be a one location wiring and parameter list.
Here is the update that I hope will help out those that are trying to use the clearpath SDK servos on Arduino using grbl for g code. I took out the limit switches because the servos recommend hard stops and it sure decreases the amount of wiring and limit switch issues. Seems to be more accurate also. The setup for the homing is all done in MSP. The wiring: Input A+ is Direction and connects to pin 5,6,7 for a 3 axis. (see page 154 of manual fine print.) Input B+ is Step and connects to pin 2,3,4 for a 3 axis. All enable + connects to pin 8 . All A- and B- and enable- connect to ground. All HLFB are ignored and not connected. $4 must be set to 1 because the enable must be set hi to enable the clearpath (steppers are lo to enable). See p152 of manual in the box. I set $5, $20, $21, $22, $23, all to zero because I am not using limit switches. The other settings will depend on your machine and your preferences. Hope this helps. I am still tweaking my machine.
This is my final settings as a whole. I am very happy that I switched to clearpath servos. I think the steppers were ok for starters but if you are going to do anything that requires more power and allows faster cuts then the extra cost is a very worthwhile investment. I can be a lot more aggressive in my cuts now without worrying about lost steps on the stepper motors. Confidence is a very worthwhile result. Remember time is a valuable resource. And I do want to thank Metalguru and others that posted replies to my questions. Many times I was getting close to the end of my rope trying to find out how to make this work. Hope this info helps anyone else that is considering clearpath servos. $0 10 step pulse micro seconds $1 255 25 step idle delay milliseconds $2 0 step port invert, mask $3 1 direction port invert,mask $4 1 step enable invert, boolean $5 0 limit pins invert, boolean $6 0 probe pin invert, boolean $10 0 status report, mask $11 0.010 junction deviation, mm $12 0.002 arc tolerance,mm $13 0 report inches, boolean $20 0 soft limits, boolean $21 0 hard limits, boolean $22 0 homing cycle, boolean $23 0 homing dir invert, mask $24 NA homing feed, mm/min $25 NA homing seek, mm/min $26 NA homing debounce, milliseconds $27 NA homing pull-off,mm $30 25000 max spindle speed, rpm $31 8000 min spindle speed,rpm $32 0 laser mode, boolean $100 160.000 x steps/mm $101 160.000 y steps/mm $102 200.000 z steps/mm $110 4000.000 x max rate,mm/min $111 4000.000 y max rate, mm/min $112 2000.000 z max rate,mm/min $120 150.000 x acceleration,mm/sec^2 $121 150.000 y acceleration,mm/sec^2 $122 150.000 z acceleration,mm/sec^2 $130 1280 x max travel,mm $131 1280 y max travel,mm $132 540 z max travel,mm