bunch of noob questions
i'm building a low cost gantry router with 4th-Axis and I have CL-Steppers from LiChuan. They have Step/Dir-Interface and encoder with 1000 lines/turn. I will setup the drivers for 1/5 Microstep, which results in 5000 Steps/turn. I'd like to test 1/10 Microstep too, but I suspect, that only losses will be increased.
The order of my goals is precision over smoothness and smoothness over speed.
What affordable hardware is recommended to connect the stepper-drivers with pc?
I'd like Ethercat, but I'm quite sure, that it's too expensive. So what is recommended?
Smoothstepper, UC400ETH, Mesacards, others?
I'd like to route the encoder-signals to pc and change the stepper drivers to faster ones (the lichuans are limited to 200kHz interface speed).
Is that possible with linuxcnc?
What is the fastest encoder resolution, that linuxcnc supports?
Which hardware is necessary for that?
I have an evalboard for stm32 with ethernet. I'd like to try that as controller board.
Which parts of linuxcnc do I have to port into firmware to enable the game?
Are there any tutorials, that iluminate the trail?
kind regards
Reinhard
Please Log in or Create an account to join the conversation.
I believe that the Smoothstepper works well, but I have no experience with it, and it doesn't work with LinuxCNC. The ethernet version could probably be made to, with different firmware.What affordable hardware is recommended to connect the stepper-drivers with pc?
I'd like Ethercat, but I'm quite sure, that it's too expensive. So what is recommended?
Smoothstepper, UC400ETH, Mesacards, others?
The UC400ETH looks like it might be able to work with LinuxCNC, but as far as I know there is no driver.
Reading between the lines, it sounds like you want to use an Ethernet connection?
The closest equivalent of the UC400ETH that I can see is the Mesa 7i92 . There are three versions, and I don't know what the differences are.
The 7i92 is likely to need a breakout board, so at that point the Mesa 7i76E might be a more sensible choice as it is Ethernet motion controller and breakout board in-one.
If you have an EPP parallel port available then the Pico USC might be worth a look.
If you have a PCI or PCIe port available then the Mesa 5i25 / 7i76 combo is very popular.
All Mesa cards (that support encoder counting) can count encoders at a few MHz. The Pico USC can count as 250kHz.What is the fastest encoder resolution, that linuxcnc supports?
I have an evalboard for stm32 with ethernet. I'd like to try that as controller board.
Which parts of linuxcnc do I have to port into firmware to enable the game?
if you want a working CNC machine then I suggest buying one of the boards above which has an existing driver and sample configurations.
If you want a project, then the Pluto Stepper driver is a good example of a simple external step generator. it is EPP interfaced, but the principles are the same. The driver is written in the .comp preprocessing language , which makes things rather simpler. (note that much of that file is documentation)
Please Log in or Create an account to join the conversation.
thank you for your attention!
Thanks for that hint. So then SS is no option for me.it (SS) doesn't work with LinuxCNC.
Hm, may be I'm confused. I thought LiChuan is a driver.The UC400ETH looks like it might be able to work with LinuxCNC, but as far as I know there is no driver.
So if UC400ETH works with linuxcnc, what is the job of a driver?
Doesn't the UC400ETH create the step/dir-pulses? - if so, than LiChuan is a driver (a CL-driver with step/dir interface).
No - and I'd like to avoid that option.If you have an EPP parallel port available
Ok, so then Pico USC is out of the game.All Mesa cards (that support encoder counting) can count encoders at a few MHz. The Pico USC can count as 250kHz.
With 1/5 microstepp the max step/dir-frequency is 200kHz so the encoder-signals are at least at that speed.
... and as I'd like to go ahead towards 1/10 microstep, encoder-frequency will be far beyond 250kHz.
I'm at the very beginning of building the router - probabely takes time until end of the year, so I'm interested in a project too. So thanks a lot for that starting point.If you want a project, then the Pluto Stepper driver is a good example of a simple external step generator.
But may be, I buy a mesa-card anyway. Sounds reasonable together with encoder reading.
Is there some more documentation available for the Pluto-use-case?
If I wonna go towards Ethernet, which is the counterpart of the Pluto-Driver?
I guess, the PC will always be the master, so I have to define a ethernet-send/read frequency
Where in the chain is the Pluto located and what is the interface of it?
Is there another sample. that puts pc-interface right after the sequencing logic?
Please Log in or Create an account to join the conversation.
Hm, may be I'm confused. I thought LiChuan is a driver.The UC400ETH looks like it might be able to work with LinuxCNC, but as far as I know there is no driver.
Two different things with the same name...
I was referring to a software driver, the interface between LinuxCNC and the hardware, rather than a motor drive.
Please Log in or Create an account to join the conversation.
Is there some more documentation available for the Pluto-use-case?
We don't actually recommend the Pluto boards any more, they never worked very well. But they are a good example of a simple software driver of the type you will need.
linuxcnc.org/docs/2.7/html/drivers/pluto-p.html is the manual page, but very little of that would be relevant.
LinuxCNC works best with relatively dumb hardware. All the clever stuff like path-blending and acceleration limiting is done in the PC, the external hardware will normally just read a new step-rate every 1mS and write back the steps-made count and possibly the encoder counts.
The LinuxCNC step-generator components take a now position command every 1mS, calculate needed steps, and attempt to make them.
Interestingly it has been found that the Mesa stepgens are more jitter-tolerant in velocity mode, with a PID component in LinuxCNC HAL calculating the required step rate (sent as a linear velocity)
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
- Posts: 19261
- Thank you received: 6450
I just "thank you" Andy twice, as i read the posts and i admire his way of detailed and coherent explanations, something i lack, i tend to skip a lot.
Thanks, again
Tom
Please Log in or Create an account to join the conversation.
Ah - I see!Two different things with the same name...
I was referring to a software driver, the interface between LinuxCNC and the hardware, rather than a motor drive.
So the driver is the firmware, that handles protocol and generates the steps?
Ok, I'm not capable to write a firmware for an UC400ETH - but may be, I could do it for the stm32?
Ok, one command every 1ms is pretty slow. Combined with a decent record size, any interface I know, can handle that speed.The LinuxCNC step-generator components take a now position command every 1mS, calculate needed steps, and attempt to make them.
Does the Pluto work that way? or does it work after step generation?
I guess, with EPP-interface step-generator works at PC-side.
So having step-generator at firmware-side is the way, I'd like to go for.
That could work using USB and should as well work for a slow ethernet-connection.
When the step-generator works in firmware on the controller-side, than I guess, there's no need to bother PC-interface with encoder-signals. The controller could handle it already.
Probabely some extra code will be needed to synchronize gantry-steppers, but should be possible anyway.
OK, I found the Pluto-parts in repository. So the comp-file is the PC-part and the firmware is what it is named.
Have to dive into it.
Please Log in or Create an account to join the conversation.
No, in this case the driver is the LinuxCNC HAL code that takes position updates from axis.0.motor-position-cmd and converts that into the data packets sent to the FPGA or similar external hardware.So the driver is the firmware, that handles protocol and generates the steps?
If you look at the Pluto drive .comp file you will see that it creates HAL pins called (for example) stepgen.0.position-cmd (pin in float stepgen.#.position-cmd[4]
The values passed-in to the code from that HAL pin are converted to stepper counts and output to the EPP port using port read/write commands. (It might not be so clear, the ,comp file uses write16() which is part of pluto_common.h which includes EPP_WRITE (and friends) from rtapi_parport.h
None of this parport stuff matters much to you, but you might be able to use the read/write functions from hm2_eth
That could work using USB and should as well work for a slow ethernet-connection.
USB is unlikely to work. The USB specs allow multiple-mS response latencies.
Please Log in or Create an account to join the conversation.
thanks again! You're much faster in writing, than me with reading
I guess, I found a path. Will have closer look at hm2_eth too.
Please Log in or Create an account to join the conversation.