@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?
6 hours later…
i have worked again with dc motor and L298N i have build a pcb to use 2 dc motors , i know how to use them and with the pwm to control the voltage send to the motor and with this the speed. with the nema i had only worked with linuxcnc so i did not maid other solution
i will continue my tests and program with the tb6560 until the tmc2160 arrives and then i will switch
I want to ask you also do you have any experience with ILI9481 lcd? and touch screen with esp32.
i bought something for this project in order to show the set points of the tension and also to control the program from this but i cound not find the proper way to make it run at all.
i have opened an issue on espo community
but noone seems to know anything
6 hours later…
Quick replies: (1) My ILI9xxx TFT LCD out of date: Rpi3B/Rpi4B ILI9341 / XPT2046 SPI 2.8″ Touch TFT LCD Connection / Driver Problem – 2019may13, Viewed 8k times
(2) l298N is good for newbies to learn
Last msg too old to edit, this is an update: (2) l298N is good for newbies to learn DC Motor Drivers. You can search Rpi SE many of my post on this subject. (3) You can also consider using L298N as the external H-bridge for tmc2160. (4) If you use MicroPython to prototype your projects, I can mirror your experiments in my Rpi Pico MicroPython Thonny
(5) If you ask about ESP32 in this EESE forum, perhaps more users might come to help.
(6) I have 2 esp32 board in hand: (a) D1 LOLIN32 V1.0.0 ESP32 wifi and BT CP2104 – TaoBao
(b) ESP32 WIFI+BT 2 in 1 for IoT app – TaoBao
I use to play with esp8266-12, using LUA, but find it hard to use event driven programming. Now I am using Rpi Pico MicroPython. I know esp32 can also do MicroPython, so can do MicroPython programming with Pico on my side, and MicroProgramming ESP32 on your side, sort of pairing programming/development on your side.
The TaoBao shop selling me esp32 stuff 2 years ago has many up of date goodies. Perhaps I would buy some new ones to update my knowledge and skills: shop468430569.world.taobao.co…
Is your esp32 in that shops’s list of products? Perhaps I can buy that to join your esp32 projects.
I don’t understand what do you mean by “set points of the tension”. Is your project a College/Uni EE final year individual/group project, or just a hobbyist project, like mine?
I have been watching Cornell U Rpi Projects, to learn what those college guys are doing: skovira.ece.cornell.edu/…. Is your project like them?
And this Cornell U’s Robot Car project is what I am interested about: Robot Navigation ECE 5725 A Project By George and Nei-Chun
6 hours later…
Now I am testing tmc2160 another time, using NEMA17 motor (NEMA23 is too heavy, too awkard to handle!). I am using the scope to take a close look of the signal waveforms: PWM (5kHz, 50% duty cycle), motor encoder signal (speed), and motor coil current (total PSU current, using Rsense, current sensing resistor 0.5 Ohm)
The still pics below.