Hellmut1956
Member
High. I have recently purchased a Creality Ender 5 Plus 3D printer, build it and checked it works. Having dealt with stepper motors that I plan to use as winches in my sailboat model about 8 years ago, I started to wonder that the NEMA17 stepper motors used in my printer had no shield containing information about the nominal voltage and nominal current. Further, I did a study in YouTube videos about many of the elements of which a 3D printer consists, finding that the Kersley Fabrications channel had valuable information and performed the analyses of the impact when upgrading components in a very professional way. In the context of this thread, I am opening here the analysis of controller board options available for upgrading a 3D printer.
It became evident to me in my opinion, that 3D printing quality and speed was on 1 side dependent on the material used, I will limit myself for the foreseeable future to PLA filaments and otherwise a "dance" of mutually impacting parameters. Due to my background, I wanted to address the topic related to the speed of printing. One of the things I took from studying the Kersey Fabrications YouTube videos was that the ability of the controller board to process the G-Code fast enough whereas a result comes to the ability to process the G-Code fast enough for the step frequency desired. So what processing power the microcontroller being used in the controller board and the frequency at which it runs, is one limiting factor to increasing speed without deteriorating print quality. I want to emphasize this: It is just one parameter. So I decided to buy the BTT-SKR-Pro V1.2 controller board for upgrading my printer. It has an ARM Cortex M4 controller running at 168 MHz.
Another parameter for accelerating the printing speed without deteriorating the print quality is the performance of the stepper motor involved. When the stepper motor is unable to execute its steps at the frequency the stepper motor driver is wishing it to do, are a loss of steps and acoustically perceivable behavior. I started to investigate what torque the stepper motor being used might have, as no plate or other source of information from the supplier is available. When you go to eBay and to Amazon you will find that the NEMA 17 stepper motors you can find there very often do not include that kind of information. So I went to the websites of manufacturers of stepper motors and to inform me what were the nominal values for voltage and current their NEMA 17 stepper motors had and what holding torque those stepper motors have. Soon I found that the difference in holding torque of their NEMA 17 stepper motors showed a factor of 3x to 4x.
Now a short paragraph about stepper motor technical topics I consider relevant in this context. The torque a stepper motor can offer is directly related to the amount of current its coils do tolerate, and only to the amount of current. So when you have the choice between stepper motors with the same torque, choose the one that has the lowest nominal voltage value. Why? Because this means its coils do allow a higher amount of current. I was aggressively and personally attacked by community members of 3D forums that faded away as soon as I presented the section from the company Trinamic that makes the stepper motor driver ICs that spoke that stepper motors were usually get supplied voltages of up to 20x the nominal voltage value. For my sailboat model stepper motors used as winches, I build a battery pack consisting of 12 LiFePO4 batteries connected in series. This pack when fully charged supplies a voltage of about 40 VDC and when so much emptied that a recharge is required 24 VDC are being supplied.
So, if only the amount of current is relevant for the torque a stepper motor can offer and that amount of current is specified as the nominal current value of a specific stepper motor, what do we gain by supplying voltages much higher than the nominal voltage value. The stepper motors I use as winches to control the position of the sails have a nominal voltage value of 3.6 VDC and I am applying between 40 VDC and 24 VDC depending on the charge of the batteries cells in my battery pack. The answer is related to why the torque being specified for a stepper motor is the "position holding torque" value.
For a stepper motor to do a step, and here I am limiting myself exclusively to bipolar stepper motors, the voltage pattern applied to the i.e. 4 cables of the stepper motor changes according to rules that can be followed easily in modern stepper motor drivers. So what changes is the value of the applied voltage to the coils in the stepper motor whenever it makes a step. The higher the frequency of steps is the higher is the absolute value of the induced voltage in the coils of the stepper motor:
Veffective = Vapplied + (-Vinduced)
So when the stepper motor is holding its position, that the value of the induced voltage is ZERO. The result is that Veefective = V applied. So if the stepper motor is holding its position the torque is the one the motor makes available when the nominal voltage value is applied. But what happens if the stepper motor is increasing the frequency at which it does steps? The absolute value of the induced voltages gets closer and closer to the value of the applied voltage and as the equation above shows, the effective voltage gets closer and closer to ZERO and as a consequence, the current value gets closer to ZERO and as a consequence, the available torque gets down to ZERO. What stepper motor driver ICs do, is that they use a PWM and control the amount of current flowing gets limited to the nominal current value by adapting its duty cycle. So, the higher the value of the applied voltage is, the higher the step frequency can be and the induced voltage will require higher step frequencies before the torque drops sp far that it limits the available torque.
So, in the dance of mutually impacting parameters, if the applied voltage is high enough and the nominal current value is as high as possible, that the stepper performance will not be limiting the performance of the 3D printer. But, be aware of, also CNC machines, like those CNC milling machines use G-Code to control the job of milling. But CNC milling machines and 3D printers share many o the same functionality and use the same G-Code instructions, other functionality is specific for 3D printing and CNC machines.
One result of my investigation is that I am planning to do experiments and use a 3D printing controller board to get a better understanding of where the G-Code has the same functionality and where it is different and how this difference is. The Marlin operating system available for any 3D printing controller board, as of today version 2.0.7.2 claims to support both 3D printing and CNC systems but I have yet not found a source of information as to how Marlin has to be set up and which G_Code instructions are required in those applications. Marlin is an operating system that is for me in an unusual degree customizable by setting the parameters in the 2 files responsible within the code. This is due to 3D printers as nearly every printer is somehow different from another.
Another thing that has been created thanks to the need for 3D printing is the so-called "SilentStepSticks". These are boards that were developed as OpenSource projects as the result of the cooperation between Trinamic and Watterott, 2 German companies. Now you have Chinese companies like BTT offering their own makings of those boards. As of today, the most common boards are the SilentStepSticksTMC2208 and SilentStepSticksTMC2208 which use the stepper motor driver controllers TMC2208 and TMC2209 from Trinamic. As I have already written, my goal is to develop knowledge and implementations which try to influence the parameters related to the operation of stepper motors so, that they are not the limiting factor. Using the BTT-SKR-PRO V1.2 board with the Cortex ARM M4 controller running at 168MHz the Marlin OS running on that controller board will be able to support higher frequency steps by offering a higher G-Code execution performance. As stepper motor driver boards I have purchased the SilentStepSticksTMC5160hv from Watterott which as of 2021 will use the TMC516i driver ICs. The TMC5160hv is characterized to allow a current flow of up to 20A and a voltage of 60 VDC. I have purchased a Meanwell 600W 48 VDC power supply so as to be able to operate those boards and the connected stepper motors with a supply voltage of 48 VDC. The amperage of those NEMA17 stepper motors is well below 2 A. Once I get to experiment with this setup a still do be build a DIY CNC milling machine, I plan to use NEMA 34 or NEMA 42 stepper motors for the CNC milling machine. These stepper motors do need less than 4 A to 5 A, so the SilentStepsStickTMC5161 will have no problem driving these stepper motors.
Another set of functions available to control stepper motors and made available with the Trinamic stepper motor drivers would have to be presented in another contribution. If you go to my YouTube channel "Hellmut Kohlsdorf" which I used to make available videos of my experiments you can watch the video where I tried to identify up to what frequency the stepper motors that will be used as winches in my model sailboat is relatively long as I did not expect that I would be able to achieve such a high step frequency. You can see on the setup of the experiments 2 multimeters, one showing the voltage and one the amperage as I keep accelerating the stepper motor. The recording, I am an awful speaker, was done using the Spanish language, so please excuse me. One selling effect, the low noise level possible using either of the stepper motor driver boards, is extensively used by marketing in the 3D printer market. But in this video, you can see that there are step frequencies with very different levels of noise at any speed. But also functions like s-Shape for acceleration and deceleration, have important impacts that benefit 3D printing at higher speeds. As of today, the controller used on the controller cards is still pretty low processing power so that this kind of function is disabled in the setup of Marlin.
One question I will investigate at a later stage is if Marlin 2.0.x is built upon CIMSIS API. This API hides the specifics of a specific controller so that porting software from one version of an ARM Cortex M controller to another device of the same kind. If this would be the case much faster ARM Cortex M devices could be used and i.e. dual-core versions of it. The experiments of Kersey Fabrications on YouTube show that when the controller has to deal with a graphics interface the additional computing power would break the controller's ability to serve a higher step frequency. Dividing the pure G-Code processing on an M4 core and the peripheral processing to the second Arm Cortex m0+ core would fix that problem a bit.
It became evident to me in my opinion, that 3D printing quality and speed was on 1 side dependent on the material used, I will limit myself for the foreseeable future to PLA filaments and otherwise a "dance" of mutually impacting parameters. Due to my background, I wanted to address the topic related to the speed of printing. One of the things I took from studying the Kersey Fabrications YouTube videos was that the ability of the controller board to process the G-Code fast enough whereas a result comes to the ability to process the G-Code fast enough for the step frequency desired. So what processing power the microcontroller being used in the controller board and the frequency at which it runs, is one limiting factor to increasing speed without deteriorating print quality. I want to emphasize this: It is just one parameter. So I decided to buy the BTT-SKR-Pro V1.2 controller board for upgrading my printer. It has an ARM Cortex M4 controller running at 168 MHz.
Another parameter for accelerating the printing speed without deteriorating the print quality is the performance of the stepper motor involved. When the stepper motor is unable to execute its steps at the frequency the stepper motor driver is wishing it to do, are a loss of steps and acoustically perceivable behavior. I started to investigate what torque the stepper motor being used might have, as no plate or other source of information from the supplier is available. When you go to eBay and to Amazon you will find that the NEMA 17 stepper motors you can find there very often do not include that kind of information. So I went to the websites of manufacturers of stepper motors and to inform me what were the nominal values for voltage and current their NEMA 17 stepper motors had and what holding torque those stepper motors have. Soon I found that the difference in holding torque of their NEMA 17 stepper motors showed a factor of 3x to 4x.
Now a short paragraph about stepper motor technical topics I consider relevant in this context. The torque a stepper motor can offer is directly related to the amount of current its coils do tolerate, and only to the amount of current. So when you have the choice between stepper motors with the same torque, choose the one that has the lowest nominal voltage value. Why? Because this means its coils do allow a higher amount of current. I was aggressively and personally attacked by community members of 3D forums that faded away as soon as I presented the section from the company Trinamic that makes the stepper motor driver ICs that spoke that stepper motors were usually get supplied voltages of up to 20x the nominal voltage value. For my sailboat model stepper motors used as winches, I build a battery pack consisting of 12 LiFePO4 batteries connected in series. This pack when fully charged supplies a voltage of about 40 VDC and when so much emptied that a recharge is required 24 VDC are being supplied.
So, if only the amount of current is relevant for the torque a stepper motor can offer and that amount of current is specified as the nominal current value of a specific stepper motor, what do we gain by supplying voltages much higher than the nominal voltage value. The stepper motors I use as winches to control the position of the sails have a nominal voltage value of 3.6 VDC and I am applying between 40 VDC and 24 VDC depending on the charge of the batteries cells in my battery pack. The answer is related to why the torque being specified for a stepper motor is the "position holding torque" value.
For a stepper motor to do a step, and here I am limiting myself exclusively to bipolar stepper motors, the voltage pattern applied to the i.e. 4 cables of the stepper motor changes according to rules that can be followed easily in modern stepper motor drivers. So what changes is the value of the applied voltage to the coils in the stepper motor whenever it makes a step. The higher the frequency of steps is the higher is the absolute value of the induced voltage in the coils of the stepper motor:
Veffective = Vapplied + (-Vinduced)
So when the stepper motor is holding its position, that the value of the induced voltage is ZERO. The result is that Veefective = V applied. So if the stepper motor is holding its position the torque is the one the motor makes available when the nominal voltage value is applied. But what happens if the stepper motor is increasing the frequency at which it does steps? The absolute value of the induced voltages gets closer and closer to the value of the applied voltage and as the equation above shows, the effective voltage gets closer and closer to ZERO and as a consequence, the current value gets closer to ZERO and as a consequence, the available torque gets down to ZERO. What stepper motor driver ICs do, is that they use a PWM and control the amount of current flowing gets limited to the nominal current value by adapting its duty cycle. So, the higher the value of the applied voltage is, the higher the step frequency can be and the induced voltage will require higher step frequencies before the torque drops sp far that it limits the available torque.
So, in the dance of mutually impacting parameters, if the applied voltage is high enough and the nominal current value is as high as possible, that the stepper performance will not be limiting the performance of the 3D printer. But, be aware of, also CNC machines, like those CNC milling machines use G-Code to control the job of milling. But CNC milling machines and 3D printers share many o the same functionality and use the same G-Code instructions, other functionality is specific for 3D printing and CNC machines.
One result of my investigation is that I am planning to do experiments and use a 3D printing controller board to get a better understanding of where the G-Code has the same functionality and where it is different and how this difference is. The Marlin operating system available for any 3D printing controller board, as of today version 2.0.7.2 claims to support both 3D printing and CNC systems but I have yet not found a source of information as to how Marlin has to be set up and which G_Code instructions are required in those applications. Marlin is an operating system that is for me in an unusual degree customizable by setting the parameters in the 2 files responsible within the code. This is due to 3D printers as nearly every printer is somehow different from another.
Another thing that has been created thanks to the need for 3D printing is the so-called "SilentStepSticks". These are boards that were developed as OpenSource projects as the result of the cooperation between Trinamic and Watterott, 2 German companies. Now you have Chinese companies like BTT offering their own makings of those boards. As of today, the most common boards are the SilentStepSticksTMC2208 and SilentStepSticksTMC2208 which use the stepper motor driver controllers TMC2208 and TMC2209 from Trinamic. As I have already written, my goal is to develop knowledge and implementations which try to influence the parameters related to the operation of stepper motors so, that they are not the limiting factor. Using the BTT-SKR-PRO V1.2 board with the Cortex ARM M4 controller running at 168MHz the Marlin OS running on that controller board will be able to support higher frequency steps by offering a higher G-Code execution performance. As stepper motor driver boards I have purchased the SilentStepSticksTMC5160hv from Watterott which as of 2021 will use the TMC516i driver ICs. The TMC5160hv is characterized to allow a current flow of up to 20A and a voltage of 60 VDC. I have purchased a Meanwell 600W 48 VDC power supply so as to be able to operate those boards and the connected stepper motors with a supply voltage of 48 VDC. The amperage of those NEMA17 stepper motors is well below 2 A. Once I get to experiment with this setup a still do be build a DIY CNC milling machine, I plan to use NEMA 34 or NEMA 42 stepper motors for the CNC milling machine. These stepper motors do need less than 4 A to 5 A, so the SilentStepsStickTMC5161 will have no problem driving these stepper motors.
Another set of functions available to control stepper motors and made available with the Trinamic stepper motor drivers would have to be presented in another contribution. If you go to my YouTube channel "Hellmut Kohlsdorf" which I used to make available videos of my experiments you can watch the video where I tried to identify up to what frequency the stepper motors that will be used as winches in my model sailboat is relatively long as I did not expect that I would be able to achieve such a high step frequency. You can see on the setup of the experiments 2 multimeters, one showing the voltage and one the amperage as I keep accelerating the stepper motor. The recording, I am an awful speaker, was done using the Spanish language, so please excuse me. One selling effect, the low noise level possible using either of the stepper motor driver boards, is extensively used by marketing in the 3D printer market. But in this video, you can see that there are step frequencies with very different levels of noise at any speed. But also functions like s-Shape for acceleration and deceleration, have important impacts that benefit 3D printing at higher speeds. As of today, the controller used on the controller cards is still pretty low processing power so that this kind of function is disabled in the setup of Marlin.
One question I will investigate at a later stage is if Marlin 2.0.x is built upon CIMSIS API. This API hides the specifics of a specific controller so that porting software from one version of an ARM Cortex M controller to another device of the same kind. If this would be the case much faster ARM Cortex M devices could be used and i.e. dual-core versions of it. The experiments of Kersey Fabrications on YouTube show that when the controller has to deal with a graphics interface the additional computing power would break the controller's ability to serve a higher step frequency. Dividing the pure G-Code processing on an M4 core and the peripheral processing to the second Arm Cortex m0+ core would fix that problem a bit.