A very profound analysis of practical side of things, but it would be really nice to have an RPM scale and figures for those of us who aren't familiar with voron's rps to mm/sec ratios and I think RPM is a more universal platform independent term anyway
best presentation of the year on technological and practical side...very interesting. Quit complex but if you just follow the video along, it all makes more and more sense. Coffee well deserved, thank you for making this video!
Is it common for the various stepper controller chips to shut off the drive completely, like that at video time 20:20 at scope time 0.30 ms, at the zero-current step ? I don't see anything about that in my A4988 datasheet. I could use that feature in measurement scheme I'm looking into.
I don't understand why why rely on Nema 17 and tiny drivers. For a pellet extruder we need torque (10Nm) and current so that tiny drivers are no go? Or we can generate that torque with Nema 17+ 1:10 using external drivers and high current +water cooling? 1:15 and 1:20 would limit the output. Robot joint motors (BLDC+reducer) can generate 10Nm having much smaller weight?
That’s a great question! With 3d printers, NEMA17 motors actually have plenty of torque, we are rarely using more than 10-20Ncm (I believe-I’d have to refer back to the calculator). You can see the application of this by realizing that with existing motors and drivers some people are able to do travels with 80000mm/s acceleration or even higher-most people stay well below 10000, as the rest of the system/stiffness apart from the motors themselves are the limiting factors
Good explanation One additional factor when running fast is the jitter that is getting enoyand when using software puls generation. That gives U earlier stalls In higher quality cnc control U use therefore fpga as puls generators. In higher speeds you can even hear the more equal generation Looking forward to more of your videos
Thanks for the comment! I'm having fun playing around with driver settings and am looking forward to getting a video out about it once I understand the settings a bit better.
i have a question the nema 23 stepper current at 3A-48v also has the same phenomena as you when reaching 800mm/s(saw tooth-y current) my only explaination is because the motor coil is missing the rotor at lower Voltage and start to catch up at high voltage? also i am using full step setup,and fast decay behavior cannot be seen from the chart anymore,do anybody knows why,please give me some material regarding this? anything else?enlighten me please?
That's a great question! I believe the larger stepper drivers are large not due to voltage requirements as much as due to current requirements. NEMA23+ motors require a LOT of current and that current drives larger components/heat.
@@eddietheengineer Cool thanks for the reply however I think it might just be down to market separation and disconnect of knowledge. It seems that it might just be because nema17 is being marketed for 3d printers, TMC marketed the TMC2209 to 3d printers however 3d printer people are moving to higher requirements and using the TMC5160 because of the higher operating voltages. Nema 23+ motors are targeted to CNC machines (mills, lathes). This market has been using the black box style like the DM556T for years and it is baked in. This market is use to dip switches and pulse input. The software for CNC machines like Mach4 interfacing with serial breakouts that connect to the pulse on the DM556T rather then the UART on TMC's. I've come to this reasoning because TMC5160's can handle a Nema34 motor as they have a peak operating voltage of 60V and 20A(external mosfet) while the DM556T can handle 50V, 5.6A. So by the looks of it the TMC5160 might actually be able to handle a higher operating wattage. Maybe some of the drivers like the DM556T are using TMC but for some reason I doubt that. I think it would actually be a sick video if someone did a larger stepper motor running with TMC vs DM556T or similar. My guess is that some 3d printing guys will move onto the Nema23+ to get insane speeds in the near future.
Thanks, verry interesting! Would it be a correct conclusion that 24v I holding back our stepper motors speeds? Did you notice any increase in how hot the motors became at higher voltage?
Yes and no! You can go faster with 48V, but often times 24V is already fast enough 😄 like in the example in the video, not many people are printing faster than 1000mm/s, so 24V is probably plenty for the motor shown! But other motors may still benefit from 48V (like 0.9 degree steppers). For motor temperatures, they definitely are higher at 48V! A component of that I believe is due to the voltage itself, but a significant part is just because the motor can go faster and the driver can push more current at those higher speeds! So the total power at higher speeds increase substantially
Awesome video man! So much good information 💪🏻 So from what I understood the microsteps value has no affect on max current/torque the stepper can supply?
Some users told me that high-quality motors are magnetically charged after assembly, and once the motor is disassembled, the magnetic force will be lost. I don't know if this is correct
I've heard similar things to "don't ever disassemble a stepper motor" which is why I picked an old stepper motor I knew I would never use again to disassemble for the video!
Not really! That's why the simulation showed that the blue line (vector) was a circle--even with microstepping the magnitude of the vector was constant. However--that does not mean that microstepping will always be more accurate or precise than full stepping. At peak torque load, both full stepping and microstepping will have a deflection of 1 full step, regardless of the microstep setting.
Hi Eddie-truly-the-Engineer, thanks for a great video😀. I have a couple of questions. 1. How does the fast decay help? Since the current continues to decay even further in the second slow decay phase? 2. Can the driver put out a higher max voltage than the voltage it is being supplied? I heard someone saying that the drivers have a boost converter, and will determine the output voltage based on the current needed. In your analysis, I see the driver using a constant voltage and simply chopping the duration.
1. That’s a great question! I think fast decay helps if the current needs to decrease faster than it would naturally-but you’re right! Theoretically the fast decay phase could be selectively used only during the 2nd and 4th full step where the current is decreasing towards 0. 2. That would be interesting! So far I’ve only seen stepper drivers like the one I have here, which just passes through the input voltage to the stepper driver.
@@eddietheengineer Thanks for your replies, Eddie. I too have not seen any drivers with a boost converter, but the person who said that wrote with great confidence 😆, and I know for certain that I don't know everything about stepper drivers. Appreciate the content!
TMC drivers also support slow-decay-only mode, called 'Classic Constant Off Time Chopper' in their docs. However, this mode requires rather precise tuning. This is because during slow decay phase the current does not flow through R_SENSE, and so the driver cannot measure the current through the winding and does not know when to turn back on. You need to configure that off time correctly. For spreadcycle you are still expected to provide some reasonable hysteresis parameters, but since the driver can measure the current during fast decay phase, it is a lot less sensitive to precise tuning as it can do adjustments itself. Then, fast decay phase reduces the total length of ON->SD->FD->SD control cycle (since slow decay phases are shortened), thus allowing faster step rates and less noise (basically, the frequency of that control cycle can be pushed into 30+kHz, inaudible by human ear).
I might have a bit of a dumb question, but I'm using a TMC2208 which gets its signal from an Arduino Nano and I just want the motor to rotate in a constant speed, however, even at 3000 pulses per second it's still rotating super slowly, even at just 1/2 steps. Increasing the steps per second doesn't seem to increase the rotation speed , it's like it's reaching some sort of limit. So is it that the Arduino can't send pulse any faster? Or is there a better way to tell the TMC2208 to keep the stepper motor rotating? I'm at a loss, input would be much appreciated guys!
It should work; what is the circuit and motor drive voltage ? Is the current set ? I got my Arduino to run a NEMA17 "3d printer motor" at 8000 steps/sec using an A4988 which was on a cheap ~$2 carrier board from Amazon. I used 12V 1/2 amp at the motor.
@@agnichatian I have further troubleshot this issue and must confess that I didn't provide enough context. I'm using an RC controller that provides an SBUS signal to the Arduino which in turn translates that signal to stepper motor rotation speed. The issue isn't the stepper motors, drivers, or pulse speed because individually those components can rotate well faster than my desired speed, the problem was the SBUS interpretation. I just couldn't get that part right. Cheers!
@Chretze cool. I've had similar speed-related issues with rs232 and other Arduino library code. I fixed it by writing my own math, serial, print, timer, servo, stepper etc code over time. It was fun but I could just use a more modern chip next time.
Can the lack of current when increasing microstepping at high speeds also affect speed/feed rate or is only torque as mentioned in this video I ran into a weird issue on Marlin Firmware where the speed/feed rate decreases when I increase the microsteps from 16 to 32, 64, or even 128 (Steps/mm also to match) The bed dimension ie min and max are still respected, but the speed/feed rate has been decreasing phenomenally, almost at the same factor/ratio that I'm increasing the microstepping by
Thanks for the comment! For Marlin firmware (at least the last time I used it! it's been a while), you need to update the steps per mm every time you change the micro step setting. Effectively--the steps per mm is "micro steps per mm" so if you change microsteps from 16 to 32, your M92 steps per mm will have to double! Klipper used to be this way as well, until it switched to "Rotation Distance" as a more general level of abstraction. It handles the micro step change internally so that no matter if you are using full stepping, half stepping, or 128 micro steps, the distance traveled will remain the same.
Thanks great video about stepper motor!
A very profound analysis of practical side of things, but it would be really nice to have an RPM scale and figures for those of us who aren't familiar with voron's rps to mm/sec ratios and I think RPM is a more universal platform independent term anyway
Yes or at least let us know what your rotation to mm ratio is :)
best presentation of the year on technological and practical side...very interesting. Quit complex but if you just follow the video along, it all makes more and more sense. Coffee well deserved, thank you for making this video!
This video is amazing. I had a rough understanding of how steppers work, but this makes it so clear and easy.
My mind is blown, i had no clue the steppers were this complex. Thats wild! Great video, Thank you 👍
This is a love letter to stepper motors and understanding in general.
Great investigation Eddie. Thanks for the clear instruction about very basic and important topic.
Elegantly explained, as always. Thanks for your content Eddie :)
Great video. Loved the explanation on both voltage and current. The scope captures were the cherry on top. Thank you.
Very interesting. Thank you for explaining this.
Excellent work Eddie!
Thanks so much. Discovered the channel via Vez and the VzBot Discord. Very clear explanation. Looking forward to the next one!
Nice! Keep up great work as always!
Is it common for the various stepper controller chips to shut off the drive completely, like that at video time 20:20 at scope time 0.30 ms, at the zero-current step ? I don't see anything about that in my A4988 datasheet. I could use that feature in measurement scheme I'm looking into.
I don't understand why why rely on Nema 17 and tiny drivers. For a pellet extruder we need torque (10Nm) and current so that tiny drivers are no go? Or we can generate that torque with Nema 17+ 1:10 using external drivers and high current +water cooling? 1:15 and 1:20 would limit the output. Robot joint motors (BLDC+reducer) can generate 10Nm having much smaller weight?
That’s a great question! With 3d printers, NEMA17 motors actually have plenty of torque, we are rarely using more than 10-20Ncm (I believe-I’d have to refer back to the calculator). You can see the application of this by realizing that with existing motors and drivers some people are able to do travels with 80000mm/s acceleration or even higher-most people stay well below 10000, as the rest of the system/stiffness apart from the motors themselves are the limiting factors
Good explanation
One additional factor when running fast is the jitter that is getting enoyand when using software puls generation.
That gives U earlier stalls
In higher quality cnc control U use therefore fpga as puls generators.
In higher speeds you can even hear the more equal generation
Looking forward to more of your videos
That’s a really interesting thought! Thanks for sharing-maybe I need to probe the step pin to see how consistent the stepping signal is
Thanks you for sharing your knowledge! Looking forward for future videos, especially klipper config tuning.
Thanks for the comment! I'm having fun playing around with driver settings and am looking forward to getting a video out about it once I understand the settings a bit better.
i have a question
the nema 23 stepper current at 3A-48v also has the same phenomena as you when reaching 800mm/s(saw tooth-y current)
my only explaination is because the motor coil is missing the rotor at lower Voltage and start to catch up at high voltage?
also i am using full step setup,and fast decay behavior cannot be seen from the chart anymore,do anybody knows why,please give me some material regarding this?
anything else?enlighten me please?
Great video and explanations!
I'm wondering why a tiny tmc5160 can power a 48v stepper motor when large stepper motors are normally sold with those big box styled stepper drivers
That's a great question! I believe the larger stepper drivers are large not due to voltage requirements as much as due to current requirements. NEMA23+ motors require a LOT of current and that current drives larger components/heat.
@@eddietheengineer
Cool thanks for the reply however I think it might just be down to market separation and disconnect of knowledge.
It seems that it might just be because nema17 is being marketed for 3d printers, TMC marketed the TMC2209 to 3d printers however 3d printer people are moving to higher requirements and using the TMC5160 because of the higher operating voltages.
Nema 23+ motors are targeted to CNC machines (mills, lathes). This market has been using the black box style like the DM556T for years and it is baked in. This market is use to dip switches and pulse input. The software for CNC machines like Mach4 interfacing with serial breakouts that connect to the pulse on the DM556T rather then the UART on TMC's.
I've come to this reasoning because TMC5160's can handle a Nema34 motor as they have a peak operating voltage of 60V and 20A(external mosfet) while the DM556T can handle 50V, 5.6A. So by the looks of it the TMC5160 might actually be able to handle a higher operating wattage.
Maybe some of the drivers like the DM556T are using TMC but for some reason I doubt that.
I think it would actually be a sick video if someone did a larger stepper motor running with TMC vs DM556T or similar. My guess is that some 3d printing guys will move onto the Nema23+ to get insane speeds in the near future.
Thanks, verry interesting!
Would it be a correct conclusion that 24v I holding back our stepper motors speeds? Did you notice any increase in how hot the motors became at higher voltage?
Yes and no! You can go faster with 48V, but often times 24V is already fast enough 😄 like in the example in the video, not many people are printing faster than 1000mm/s, so 24V is probably plenty for the motor shown! But other motors may still benefit from 48V (like 0.9 degree steppers).
For motor temperatures, they definitely are higher at 48V! A component of that I believe is due to the voltage itself, but a significant part is just because the motor can go faster and the driver can push more current at those higher speeds! So the total power at higher speeds increase substantially
@@eddietheengineer You need some nice motors or big pulleys to do 1000 mm/s with 24V...
Thanks for great answer, very interesting, love your content!
Awesome video man! So much good information 💪🏻
So from what I understood the microsteps value has no affect on max current/torque the stepper can supply?
Some users told me that high-quality motors are magnetically charged after assembly, and once the motor is disassembled, the magnetic force will be lost. I don't know if this is correct
I've heard similar things to "don't ever disassemble a stepper motor" which is why I picked an old stepper motor I knew I would never use again to disassemble for the video!
stepbro motor
Great video.
You must be a PowerPoint wizard xD
I wish! Haha. Most of the animations were hacked with python
Excellent
Very helpful!
Thanks for your expertise, I'm curious if microstep reduces motor torque?
Not really! That's why the simulation showed that the blue line (vector) was a circle--even with microstepping the magnitude of the vector was constant. However--that does not mean that microstepping will always be more accurate or precise than full stepping. At peak torque load, both full stepping and microstepping will have a deflection of 1 full step, regardless of the microstep setting.
Hi Eddie-truly-the-Engineer, thanks for a great video😀. I have a couple of questions.
1. How does the fast decay help? Since the current continues to decay even further in the second slow decay phase?
2. Can the driver put out a higher max voltage than the voltage it is being supplied? I heard someone saying that the drivers have a boost converter, and will determine the output voltage based on the current needed. In your analysis, I see the driver using a constant voltage and simply chopping the duration.
1. That’s a great question! I think fast decay helps if the current needs to decrease faster than it would naturally-but you’re right! Theoretically the fast decay phase could be selectively used only during the 2nd and 4th full step where the current is decreasing towards 0.
2. That would be interesting! So far I’ve only seen stepper drivers like the one I have here, which just passes through the input voltage to the stepper driver.
@@eddietheengineer Thanks for your replies, Eddie. I too have not seen any drivers with a boost converter, but the person who said that wrote with great confidence 😆, and I know for certain that I don't know everything about stepper drivers.
Appreciate the content!
TMC drivers also support slow-decay-only mode, called 'Classic Constant Off Time Chopper' in their docs. However, this mode requires rather precise tuning. This is because during slow decay phase the current does not flow through R_SENSE, and so the driver cannot measure the current through the winding and does not know when to turn back on. You need to configure that off time correctly. For spreadcycle you are still expected to provide some reasonable hysteresis parameters, but since the driver can measure the current during fast decay phase, it is a lot less sensitive to precise tuning as it can do adjustments itself. Then, fast decay phase reduces the total length of ON->SD->FD->SD control cycle (since slow decay phases are shortened), thus allowing faster step rates and less noise (basically, the frequency of that control cycle can be pushed into 30+kHz, inaudible by human ear).
@@dmitrybutyugin3857 thanks for that context! That’s really interesting
@@dmitrybutyugin3857 Thanks so much for the explanation. Very helpful.
I might have a bit of a dumb question, but I'm using a TMC2208 which gets its signal from an Arduino Nano and I just want the motor to rotate in a constant speed, however, even at 3000 pulses per second it's still rotating super slowly, even at just 1/2 steps. Increasing the steps per second doesn't seem to increase the rotation speed , it's like it's reaching some sort of limit.
So is it that the Arduino can't send pulse any faster? Or is there a better way to tell the TMC2208 to keep the stepper motor rotating?
I'm at a loss, input would be much appreciated guys!
It should work; what is the circuit and motor drive voltage ? Is the current set ? I got my Arduino to run a NEMA17 "3d printer motor" at 8000 steps/sec using an A4988 which was on a cheap ~$2 carrier board from Amazon. I used 12V 1/2 amp at the motor.
@@agnichatian I have further troubleshot this issue and must confess that I didn't provide enough context.
I'm using an RC controller that provides an SBUS signal to the Arduino which in turn translates that signal to stepper motor rotation speed. The issue isn't the stepper motors, drivers, or pulse speed because individually those components can rotate well faster than my desired speed, the problem was the SBUS interpretation. I just couldn't get that part right.
Cheers!
@Chretze cool. I've had similar speed-related issues with rs232 and other Arduino library code. I fixed it by writing my own math, serial, print, timer, servo, stepper etc code over time. It was fun but I could just use a more modern chip next time.
Can the lack of current when increasing microstepping at high speeds also affect speed/feed rate or is only torque as mentioned in this video
I ran into a weird issue on Marlin Firmware where the speed/feed rate decreases when I increase the microsteps from 16 to 32, 64, or even 128 (Steps/mm also to match)
The bed dimension ie min and max are still respected, but the speed/feed rate has been decreasing phenomenally, almost at the same factor/ratio that I'm increasing the microstepping by
Oh, also, I forgot to mention. I'm using TMC2209 drivers
Thanks for the comment! For Marlin firmware (at least the last time I used it! it's been a while), you need to update the steps per mm every time you change the micro step setting. Effectively--the steps per mm is "micro steps per mm" so if you change microsteps from 16 to 32, your M92 steps per mm will have to double!
Klipper used to be this way as well, until it switched to "Rotation Distance" as a more general level of abstraction. It handles the micro step change internally so that no matter if you are using full stepping, half stepping, or 128 micro steps, the distance traveled will remain the same.
Great content as always, but you made a minor mistake:
16:14 & 16:46 - You said "a hundred mm/s" when you actually intended to say "a thousand mm/s"
Thanks for catching that!