Use of CANopen to control axes servo drives
-
Is there an option to connect CANopen servo drives directly to a Duet 3 by CAN-bus and use them for axes?
-
Not at present, no.
-
Are there any plans for that?
-
I asked for that too, and generally more support for external servo drives.
I feel like steppers are really outdated and should be replaced -
@NitroFreak said in Use of CANopen to control axes servo drives:
I feel like steppers are really outdated and should be replaced
They have their place and will probbly never be outdated but depending on the use case there are better options. Chance of you making a 200$ printer with anything but cheap steppers is IMO 0% and will never be higher IMO.
Now I have to notice some common misconceptions
- odrive is geting very popular and ppl are talking about finally having cheap brushless servo's for decent $$$$. There is a reason why they are decent $$$ those hobby BLDC motors are not intended to be used in cnc operation and while you can have them run a cnc there are many drawbacks, from power consumtion, zero holding torque to motors duying rather quickly. The motors that will run for few years cost arm and a leg, just like regular servo's with regular drivers.
- hybrid "servo's" are just a stepper with encoder, so again, stepper. I plan to be using these in all my future builds (both mill, carve and 3d printing machines). I use leadshine (or actually some Bulgarian copy of the PRC leadshine that's again copy of USA design) now for testing but TBH I'd prefere drivers based on TMC
https://www.trinamic.com/support/eval-kits/details/tmc5130-eval/
https://www.trinamic.com/support/eval-kits/details/tmc5160-eval/
https://www.trinamic.com/support/eval-kits/details/tmc5161-eval/TMC5160 is my favorite, external FET's, encoder input ... I assume it could be a base of a hybrid stepper driver. Having that on a toolboard for duet3 for e.g. Or having that (or similar) on some universal CAN bus that can be operated trough LinuxCNC or any other universal CAN capable CNC controller... But it is a dream ATTM so duet2eth & breakboard + leadshine will probbly have to do. Maybe some hacked duet, I buy some dead ones with blown drivers or make my own board or ...
-
@arhi said in Use of CANopen to control axes servo drives:
I assume it could be a base of a hybrid stepper driver.
Not directly unfortunately:
from the datasheet:
https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC5160A_Datasheet_Rev1.13.pdf -
@kir09Bes We looked at CANOpen when initially evaluating options for the Duet 3 distributed motion control design. At that point it did not offer a sufficient datarate for what we needed for the Duet3 Can-FD bus (as I remember it did not even support CAN-FD, or had just released support).
I see that CAN-FD is now supported so it will be worth a further look at some point. At the same time there are many other industrial control protocols based on CAN,Ethernet or something else that are possibilities to support so I cant give a timeline for when we would look at them.
-
@T3P3Tony well TMC4361 then I'm not picky
You understand where I'm coming from.Now, I have no clue how these leadshine ones work, AFAIK there's a core m4 running @ 200 MHz inside each of them. What I can say is they behave really nice and they are driving motor pretty smoothly and quietly.
-
I currently use a JMC 180W servo for my Y axis (costs around 100โฌ) and Iยดm really happy. Has tons of torque, completely silent and not a single lost step in sight.
-
@NitroFreak so you did use just the step/direction interface? How did you tune the PID controllers?
-
We looked at CanOpen and found it far too slow for sending all the motion commands in a 3D printing application. However, it should be possible in principle to use CanOpen to send configuration commands to a servo drive, then use step and dir to perform the actual motion.
The optimised CanFD protocol we use to send motion commands is designed to support more than 1000 movements per second. This is normally sufficient, however we occasionally come across slicers that generate ridiculously small motion segments, e.g. 10um long. Printing a sequence of those segments at 50mm/sec would demand 5000 movements per second.