Follow along as I build a stepper motor dyno!
If you're following my YouTube channel, I have content on figuring out which stepper motor is best for you (with a theoretical model):
With the theoretical model accessible here:
In addition, I have a video where I start to look at how much power stepper motors consume, which is helpful for choosing a power supply.
The next logical step is to create a stepper motor dyno, where I can directly measure the stepper motor performance while iterating through a large variety of parameters. This setup needs to be automated! For an example of how many points I plan on measuring for a single motor:
Inputs:
Stepper Motor Model: (ie, 17HS19-2004S1)
Stepper Driver (TMC5160, etc)
Stepper Driver Voltage (12, 24, 36, 48V)
Stepper Driver Microstepping: (2, 4, 8, 16, 32, 64, 128)
Stepper Driver Interpolation/Stealthchop: (Off/Off, On/Off, On/On)
Stepper Driver Current Target: (0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4)
Torque Load (0-100% of theoretical max, 10% increments)
Speed (20-1400mm/s, in 20mm/s increment)
Combining these variables, we have approximately 1 * 1 * 4 * 7 * 3 * 10 * 11 * 70 = 646800 tests per motor
Of course--we can't do this many tests realistically, since at 5 seconds per test, that would be 37 days of tests! Fortunately, we won't have 70 speeds per test since some won't be able to run (ie, 12V at 1400mm/s likely won't run!) so we can skip tests above those thresholds.
What do we want to know from each test?
Outputs:
1. Driver Input (Volts, Amps, Watts)
2. Stepper Motor Input (Volts, Amps, V_rms, A_rms, Oscilloscope Waveform)
3. Stepper Motor Output (RPM, Torque, Power)
4. Stepper Motor Resonances (dBa, FFT Hz of peak)
First of, by knowing what the driver input characteristics are, we can properly spec power supplies across a wide range of operating conditions! Knowing the stepper motor input, we can understand how effectively the stepper driver is controlling the stepper motor--how the backemf from the stepper motor causes the actually supplied current to fall off with increasing speed. Knowing the stepper motor output, we can plot the actual torque and power from the stepper motor! As well, with enough encoder resolution, we can see if there's any issues with stepper motor accuracy as speed increases. Finally, (hopefully), with a microphone, we can identify what settings cause increased noise, and also what stepper motors are quietest!
Current Status:
Completed:
-Python code to iterate through Input Voltage, Driver Current, Speed
-Oscilloscope logging (Voltage/Current) at each point
-Python Plot of oscilloscope trace for 4 full steps
-CSV file logging
In Progress:
-Load Cell integration
-Mechanical assembly
-BLDC motor (stepper motor resistance) control
-Update oscilloscope logging from BitScope Micro to Siglent model
Here's a sample!
If you're following my YouTube channel, I have content on figuring out which stepper motor is best for you (with a theoretical model):
With the theoretical model accessible here:
documentation/stepper_motor/data at master · eddietheengineer/documentation
Contribute to eddietheengineer/documentation development by creating an account on GitHub.
github.com
In addition, I have a video where I start to look at how much power stepper motors consume, which is helpful for choosing a power supply.
The next logical step is to create a stepper motor dyno, where I can directly measure the stepper motor performance while iterating through a large variety of parameters. This setup needs to be automated! For an example of how many points I plan on measuring for a single motor:
Inputs:
Stepper Motor Model: (ie, 17HS19-2004S1)
Stepper Driver (TMC5160, etc)
Stepper Driver Voltage (12, 24, 36, 48V)
Stepper Driver Microstepping: (2, 4, 8, 16, 32, 64, 128)
Stepper Driver Interpolation/Stealthchop: (Off/Off, On/Off, On/On)
Stepper Driver Current Target: (0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4)
Torque Load (0-100% of theoretical max, 10% increments)
Speed (20-1400mm/s, in 20mm/s increment)
Combining these variables, we have approximately 1 * 1 * 4 * 7 * 3 * 10 * 11 * 70 = 646800 tests per motor
Of course--we can't do this many tests realistically, since at 5 seconds per test, that would be 37 days of tests! Fortunately, we won't have 70 speeds per test since some won't be able to run (ie, 12V at 1400mm/s likely won't run!) so we can skip tests above those thresholds.
What do we want to know from each test?
Outputs:
1. Driver Input (Volts, Amps, Watts)
2. Stepper Motor Input (Volts, Amps, V_rms, A_rms, Oscilloscope Waveform)
3. Stepper Motor Output (RPM, Torque, Power)
4. Stepper Motor Resonances (dBa, FFT Hz of peak)
First of, by knowing what the driver input characteristics are, we can properly spec power supplies across a wide range of operating conditions! Knowing the stepper motor input, we can understand how effectively the stepper driver is controlling the stepper motor--how the backemf from the stepper motor causes the actually supplied current to fall off with increasing speed. Knowing the stepper motor output, we can plot the actual torque and power from the stepper motor! As well, with enough encoder resolution, we can see if there's any issues with stepper motor accuracy as speed increases. Finally, (hopefully), with a microphone, we can identify what settings cause increased noise, and also what stepper motors are quietest!
Current Status:
Completed:
-Python code to iterate through Input Voltage, Driver Current, Speed
-Oscilloscope logging (Voltage/Current) at each point
-Python Plot of oscilloscope trace for 4 full steps
-CSV file logging
In Progress:
-Load Cell integration
-Mechanical assembly
-BLDC motor (stepper motor resistance) control
-Update oscilloscope logging from BitScope Micro to Siglent model
Here's a sample!
Last edited: