which is more about positioning if you have a stepper motor of 180degrees movement and you want to set it there. I want to use the stepper to control it with a pid controller to control the tension.
So i understand that in order to make the step motor to go faster or slower i have to change the pwm frequency. I am worried if this could bring problem on motor about heating. From what you said i am worried that you refer to temperature of the chip of the driver but i am worried about the temp of the motor
I assume that my previous test was a little more problematic on the code cause i tried to change the duty and i forgot that this is only for the dc motor. So i may have send more current that i should have done in the motor which means that i have to try again and see.
Thank you for your clarification. (1) I am setting up a test jig to measure the parameters of a motor coil, motor voltage, current, PWM frequency, duty cycle, speed, torque, … (2) This is a manual test version of my software test version which based on Rpi Pico MicroPython, … (3) The end of this video is on DMX540 using the
MKS testing tool (more about this later) youtu.be/jQFnPwpVREQ.
Ah, locking down supper time. See you later.
This tutorial says motor temperature of 80C is not big deal: machinedesign.com/…
I have changed my solution to use probably static frequency using 5000Hz as you proposed. Then i will go in the higher microstep resolution that i can with this driver which will give 200*16=3200steps/revolution. which probably mean that i could use 3200Hz also for the motor.
After this i am thinking of using one other time with doubled the frequency of the motor and sample from the tension module and just change directions or stop.
i just wanted to use pid for this also the the manual experience but if i use 1000-10000Kz then i probably need to put on pid range of -10000 – 10000 and somewho also map values between -1000-> -1 and 1->1000 in order always to use -1000 or 1000 for the frequency
fantastic video setup 🙂
3 hours later…
I still don’t appreciate why you are using PID. Me once used PID because I, say, want to move my robot car to a particular point (one step before falling down the cliff) ASAP without any overshoot. So I accelerate to the max speed, then move to say, 10 feet before falling over, then decellerate while travelling the last mile, and arrive target with zero velocity.
Perhaps you might like to let make me how you are using PID.
I searched my junk bin for the mks stepper motor test board,
and set up the DMX board to test
Ah, locking down bed time. See you tomorrow.
1 hour later…
I want to use pid in order exactly as you described to control the tension lets say smoothly not completely in linear way but i assume it the sampling rate of the tension is 2 or more times bigger than the movement of the motor this should be ok and i will not have any case that motor never meets the target but it is always either more or less than the proper value. Thank you see you tomorrow
12 hours later…
You might like to skim my old post on tmc2209 where I use a stepper motor with speed encoder: raspberrypi.stackexchange.com/….
The stepper motor tester with sig gen is handy to find the optimum frequency.
(1) Controlling a stepper motor through a signal generator 64,143 viewsMay 16, 2015
this chip is very very very interesting and with uart you can get all info? even with uart you can control the frequency?
i tried to read a few things in the datasheet
can it work with bigger motors cause i saw it is up to 2A
though i suppose you propose to use it to find the best frequency using the jig and reading from uart and the put the proper pwm. but what if i want a non static frequency
i mean there is now a limit on min freq i can use before motor goes to stop moving without a stop signal. this does not allow me if i do not do some software mapping function to give the value to a pid controller.
is this chip able to handle it cause from pinout i see the same setup like all others
this module is yours? you are selling it? can i find it in europe?
1 hour later…
@kyrpav Do you mean tmc2209 using uart interface, or tmc2160. max 10A using spi?
@kyrpav I forgot the max current for tmc2209. For 2160, it is 10A.
@kyrpav Well, my current test jig for MX540/TB6560/TB6600 is only for newbies. The MKS OSC stepper motor driver tester uses the stupid 555 timer is not flexible at all. In my other testers, I use XY-LPWM which is very precise, and UART controlled.
@kyrpav Well, the current test jig is manual, push button operation, is stupid, and only for CNC guys who does not know software at all. I am going to try 42VDC motor power, and I worry that I will fry more drivers, so it is sort of safe tester.
@kyrpav Yes, as you all drivers have the basic signals, enable, direction, steps. But for tmc2209/2160, all the driver config and diagonstics are done in software uart or spi.
@kyrpav Yes, all modules on photo are mine, some are lying in the junk bin, collecting dust for years. The tmc2209/2160 are designed by the German guys, manufactured in ShenZhun, not too far away from my city, just across the boarder.
Now let me show you my test results:
The above is the big picture of step pulse, motor encoder output, and current sense resistor output, not all in sync, therefore display messy. I have written Pico Micropython functions to do the signals separately, step pulse, speed function, and current measurement.
2 hours later…
I got my tmc2160 from TaoBao. Perhaps you can find it in Amazon/AliExpress UK/Europe.
Makerbase MKS TMC2160-OC Motor Driver for 3D Printer – ¥77
AliEx got it: aliexpress.com/w/…
BigTreeTech also has a US$20 version with metal case for strong anti EMI.
TMC2160 Stepper Motor Driver for 3d Printer CNC Machine – BigTreeTech US$20
I recommend the MKS tmc2160 version because it has the SPI and DIAG jumper for flexible config and diagnostics.
you almost convinced me. so mks tmc2160 where the same question applies what do you propose to use in order to slow down the speed and not make the motor stall and get heated?
and the diag is in order to put some manual control to the motor? i am not sure how that works i never used it. And that means that this version does not give you serial port isn’t it?
do you know any that gives you. I am not sure what is easier for esp32 to use spi or uart since i am not using arduino interface i am using the esp-idf framework
2 hours later…
Ah, mks2160 video again.
@kyrpav Well, I am thinking of using both uart tmc2219 and spi tmc2160, for my future projects. I started with uart 2209 because I just learned how to use Pico uart and found it easy. But then Pcio has only two uarts, not enough to go around for my many more projects. So I thought perhaps I can then use spi tmc2216 at the same time. Pico can entertain many more spi devices. I found both devices have similar config registers.
So learning one device is actually two devices together, as long as you are comfortable playing with uart and spi.
Another reason for playing with both is that when I searched for tmc2160 and tmc2209, I found almost all question is SE forums are one tmc2130 and tmc2208 which is a bit out of date. As I am just learning, so no harm but actually wise to learn new things.
me either used the DIAG thing. I guess it is for diagnostic or warning over current which means motor should be over heated. About optimum frequency, I just found out that, when playing with the mks motor driver testing tool, that even for a working frequency range, there are unique frequencies that the motor starts to tremble.
I read that there are some thing called “resonant” frequencies that the motor would oscillate. So the mks testier is handy to scan for such trouble making frequencies.
Next step is to use the mks tester to locate the trouble making frequencies and use a scope to check out if there are oscillations in the frequency range. I also need to look at closely the relations between current, voltage, motor current, and frequencies and duty cycles etc. I am a newbie in using “chopping mode” driving, so I need to spend some time building up knowledge in this area.
Ah almost bed time. So see you tomorrow.
7 hours later…
in the modules you send me there is not uart output from what i see, isn’t it?
6 hours later…
Ah, my apologies. Perhaps I missed sending you the relevant chats. They are:
(1) chat.stackexchange.com/rooms/… (started with tb6560)
(2) chat.stackexchange.com/rooms/… (started with drv88091)
(3) chat.stackexchange.com/rooms/… (started with tmc2130)
(4) tmc5160 (can do both SPI and UART)
To summarize, tmc2130/60 can do spi, tmc2208/2209 can do uart, tmc5160 can do both.
(5) TMC5160 V1.2 SPI Stepper Motor Driver S5160 High Power Stepstick Mute Driver For 57 Stepper Motor F6 SKR V1.3 Board VS TMC2130
Or I should not refer you the chats, but the real answers:
(8) Rpi Pico MicroPythpn Controlling TMC2208 / TMC2209 Stepper Motor Driver Problem – Asked 1 month ago, Viewed 466 times
(9) tmc2209 driving stepper motor demo
In Refs 8 and 9, I played with 2209, using pico to generate steps. I could send a number of steps, instead of non stop PWM signals, to move the motor for a specified distance. See ref 9 and relevant demo code for detials.
2 hours later…
Now I have done the following:
1. Replaced the DMX542 driver module by tmc2160 module,
2. Replaced the mks osc stepper motor testing board by the XY-LPWM3 sig gen module. I don’t like the mks tester because (a) it has three oscillators with overlapping ranges of signal frequencies, so it is awkward to switch frequency ranges (b) there is no display of the frequency, and and need to use the scope or a frequency counter. So the XY-LPWM sig gen is handy.
I reconfirmed that 5kHz is a generally good centre frequency to do experiments.
I tested the frequency range from 1kHz to 6kHz. 5kHz is still annoyingly noisy. Below 3k the motor trembles. So I need to do some fine tuning.
So I have manually tested the tmc2160 stepping motor driver board using the following hardware: (1) 12VDC PSU, with current sensing resistor 0.5 Ohm, (2) tmc2160 stepping motor driver module, (3) NEMA17 stepping motor with speed encoder, (4) XY-PWM3 PWM sig gen (to generate the step pulses to input to tmc2160). So far so good.
Now I am coming back to your question, and suggesting an answer.
Let me summarize your question below. Please feel free to comment or make comments, clarification, suggestions to edit/update your question.
How to use ESP32 to talk to the TB6560 stepping motor driver, to control a classic NEMA17 stepper motor, of 1.8 degrees per step, 200 steps per revolution, in microstepping mode of 1/8 resolution.
2 hours later…
From what i see you deep in all these tmc chips
can we some summerize
From what i understood : TMC2209 –>1.2A, or 2A from what i saw
TMC2160–> 4.8A (though you where saing it is 10A but in any board you send i saw 4.8 or something close to 5)
TMC5xxx –> from what i remember is around 3A but it needs external mosfet (i did not get why is needed)
also the majority of these chips gives you possibility to go with spi if you remove the 0ohms resistor somewhere in the chip.
it seems the 2160 is the best choice. but which version and module can you send a link?
For the program there is no clear solution if i understand well if we go in same low or hight frequencies yes first you have resonance issue and then motor stops
so you can not go all the way down with frequencies until you stop the motor.
So what did you do on you robot to move with pid did you use same gate logic in order to stop frequency falling down from some limit?
which i suppose you found the limit with manual tests?
@kyrpav Just a quick reply. TMC2160 datasheet says motor coil current is up to 20A (with external mosfets). I need to check if my module has any ext mosfet.
Just now I checked the product sheet which says only 4.33A: item.taobao.com/…
So I made a big careless mistake. My apologies.
@tlfong01 since i am not so in to this if you can send me picture with this or with where and how to set the mosfet it would have been great. or if there is a module that already has this on.
2 hours later…
No problem. I am a N-channel power MOSFET H-bridge ninja. But there are other alternatives of adding an external bridge. The first thing that come to my mind is using the BTN7971B, you might like to skim the datasheet to get a rough idea how large current it can take.
For my application of Lunar Java Tube Exploration MPV, there is no need to drive fast, so I am thinking of using a bigger 57BYJ stepper, with an additional big gear ratio box, so it can easily pull up any heavy thing accidentally fallen into the Java cave. Let me show you the look of the heavy duty 57BYG stepper with the 2GN3K gear head.
Ah, locking down supper time. See you later.
2 hours later…
I would suggest you to read the following two posts to get a rough idea of the use of DC Motor Driver, and BTN7971B.
(1) How to use motor drivers with H-bridge and PWM input, to control direction and speed of DC motors? – Asked 2020jul16, Viewed 2k times
(2) Motor Driver Fryinbg DC Gear Motor Problem (Appendix D – BTN7971B)- Viewed 200 times
Now something important to clarify.
1. How A full H-bridge DC Motor Drive uses PWM frequency and duty cycle control the speed of a DC motor.
2. Does a step motor driver uses duty cycle (other than frequency) to control the speed of a step motor?
The answer to the second question is NO. Can you explain why?