Would it be possible to design a circuit to detect when a stepper motor coil is saturated and use that in a stepper driver or at least for setting the voltage?
I think this might be relevant.
What’s the use case here? Some boards have moved over to a digipot to set vref
If your motor coil can saturate (hit peak V=IR current) then you screwed up your motor selection pretty bad. That hasn’t really been a problem in 5+ years since everybody figured out that we need low-inductance motors.
I thought the chop drivers were meant to help get max current via higher voltage but chopped and that the max current saturates the coils. Am I misunderstanding things or just saying it wrong or what? I was thinking it might be possible to detect when the stepper motor coils reach the optimal voltage/current/charge/flux or however you want to say it so that we do not need to guess/calculate the proper vref. I thought since a stepper has a coil around a core like a transformer does that we could tell when it is at the level the same way we would for a transformer or inductor coil like in mentioned in the discussion that I linked to.
@NathanielStenzel Ok, so…
Stepper motor coil current is set according to heat production – you give it the maximum current you can without getting hotter than you want the motor to go. If you give the motor its RATED CURRENT, it will heat up to right around its maximum safe temp. However most people run motors much cooler / lower currents than is required for the motor’s sake, because they want to protect plastic mounting brackets or want the motors less hot to the touch.
Hybrid stepper motors are designed to reach magnetic saturation in the stator/rotor a little over the rated motor current. That’s optimal motor design – both major physical motor limits are reached around the same point.
Magnetic saturation is more gradual than abrupt and would be really hard to measure via driver electronics – it would only show up as a gradual change in coil inductance as the motor current is run through 100% to 150% of rated current. Rotor position also affects inductance so it’s hard to measure. Most people run their motors at 70-80% and the motor will overheat at ~105% so it would require a special bench test setup to “scan” currents up to identify the max.
So yeah, you COULD probably rig up something to find the magnetic saturation point, but the effort : payoff ratio would be like… why? Why not just check the motor datasheet?
To be clear, the purpose of the chopping drivers is to allow you to apply a crapload of voltage (to change the coil current faster) but also limit the coil current to a safe level (to prevent overheating).
I was thinking the maximum could be determined while holding position and then any power settings for in-between positions would be a lower power setting.
@NathanielStenzel you would do that by measuring motor temp with the motor stopped. In theory a control board with digipot motor vref control (Smoothieboard, Duet, Mightyboard, some others) could measure motor temp with a thermistor and adjust current until the desired temp is reached. Very doable if somebody wanted to write the code to do it. Would take a while though, you need like 30 minutes for motor temp to settle out.
Luckily, it would only be done once and then the results could be stored in EEPROM. After that, it would just be something to trigger an alert. That is assuming it was actually part of the driver circuit and not a testing rig where many motors could be plugged in and tested and the results recorded and any discrepencies between supposedly identical motors red flagged as possible defect detections.
If it is a part of the driver then I think the same added section of circuit could also detect skipped steps and bucking (where it kicks back a step when it can’t push filament, for example).
I guess this line of discussion might be related to what is inside of a TMC driver. I need to read up on them to know if it is related or not.