CoreXY 3D printer build

465 views
Skip to first unread message

Ryan Press

unread,
Feb 9, 2015, 9:43:23 AM2/9/15
to machi...@googlegroups.com
Hi guys,

First off thanks to everyone for their hard work.  I know there are a lot of options out there for machine control and it really seems to me that Machinekit/LinuxCNC is the best foundation for a very capable machine.

I'm building a new CoreXY 3D printer, with the BBB and BeBoPr++.  I expect some challenges and I'm not afraid to get my hands dirty in the code.  I've found the corexy_kins source code and I've had no problems getting that working but I'd like to expand on a few points and get some feedback from you guys on the best way forward.

The first thing is that although I can set movement limits for the individual motors (the [AXIS_x] in the ini), there are no soft limits on the combination (kinematics) to keep from crashing the stage.  Should I implement these limits in the corexy_kins module?  How would I return an out of bounds error code?

Second is with the jogging.  I'm also playing with the QtQuickVcp Machineface and this is awesome.  Unfortunately the jogging with this is always in joint mode.  How would I modify this to use world mode for jogging?

There are still some other things I need to figure out, like the homing will be a bit of an adventure I think.  Sounds like fun to me though!

Thanks guys,
Ryan

Ryan Press

unread,
Feb 16, 2015, 12:27:10 AM2/16/15
to machi...@googlegroups.com
It's kinda disappointing that nobody could take a couple minutes to reply, but I know you guys are busy.  I could post to the LinuxCNC list but I imagine they're not too excited about supporting this fork.

Anyway I have solved my problems in a different way.  Rather than do the CoreXY calculation in the kinematics, I have done it in the HAL chain.  In this way everything works as a normal XY stage and there is nothing funny with the jogging or the limits.  This also has the advantage of not needing anything outside of trunk.

Here's a snip of my HAL file:

# ################
# CoreXY [0,1] Axes
# ################

# axis enable chain
newsig emcmot.00.01.enable bit
sets emcmot.00.01.enable FALSE

net emcmot.00.enable <= axis.0.amp-enable-out
net emcmot.01.enable <= axis.1.amp-enable-out
net emcmot.00.enable => and2.0.in0
net emcmot.01.enable => and2.0.in1
net emcmot.00.01.enable and2.0.out => [PRUCONF](DRIVER).stepgen.00.enable [PRUCONF](DRIVER).stepgen.01.enable

# position command and feedback
net axis.0.pos-cmd <= axis.0.motor-pos-cmd
net axis.1.pos-cmd <= axis.1.motor-pos-cmd
net motor.0.pos-fb <= [PRUCONF](DRIVER).stepgen.00.position-fb
net motor.1.pos-fb <= [PRUCONF](DRIVER).stepgen.01.position-fb

# A motor position A = X + Y
net axis.0.pos-cmd => sum2.0.in0
net axis.1.pos-cmd => sum2.0.in1
net motor.0.pos-cmd sum2.0.out => [PRUCONF](DRIVER).stepgen.00.position-cmd

# B motor position B = X - Y
setp sum2.1.gain1 -1
net axis.0.pos-cmd => sum2.1.in0
net axis.1.pos-cmd => sum2.1.in1
net motor.1.pos-cmd sum2.1.out => [PRUCONF](DRIVER).stepgen.01.position-cmd

# X axis feedback X = (A + B) / 2
setp sum2.2.gain0 0.5
setp sum2.2.gain1 0.5
net motor.0.pos-fb => sum2.2.in0
net motor.1.pos-fb => sum2.2.in1
net axis.0.pos-fb sum2.2.out => axis.0.motor-pos-fb

# Y axis feedback Y = (A - B) / 2
setp sum2.3.gain0 0.5
setp sum2.3.gain1 -0.5
net motor.0.pos-fb => sum2.3.in0
net motor.1.pos-fb => sum2.3.in1
net axis.1.pos-fb sum2.3.out => axis.1.motor-pos-fb


Ryan

Michael Haberler

unread,
Feb 16, 2015, 12:53:35 AM2/16/15
to Ryan Press, machi...@googlegroups.com

> Am 09.02.2015 um 15:43 schrieb Ryan Press <ry...@presslab.us>:
>
...
>
> Second is with the jogging. I'm also playing with the QtQuickVcp Machineface and this is awesome. Unfortunately the jogging with this is always in joint mode. How would I modify this to use world mode for jogging?

this is contingent on this work item, i.e. not yet: https://github.com/machinekit/machinekit/issues/438

-m

>
> There are still some other things I need to figure out, like the homing will be a bit of an adventure I think. Sounds like fun to me though!
>
> Thanks guys,
> Ryan
>
>
> --
> website: http://www.machinekit.io blog: http://blog.machinekit.io github: https://github.com/machinekit
> ---
> You received this message because you are subscribed to the Google Groups "Machinekit" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to machinekit+...@googlegroups.com.
> Visit this group at http://groups.google.com/group/machinekit.
> For more options, visit https://groups.google.com/d/optout.

Charles Steinkuehler

unread,
Feb 16, 2015, 1:26:07 AM2/16/15
to machi...@googlegroups.com
On 2/15/2015 11:27 PM, Ryan Press wrote:
>
> It's kinda disappointing that nobody could take a couple minutes to reply,
> but I know you guys are busy. I could post to the LinuxCNC list but I
> imagine they're not too excited about supporting this fork.

I'm following along, it's just been crazy here lately and I wasn't sure
about the answer to some of your issues w/o actually testing on real
hardware.

...also, I don't think the LinuxCNC folks really care much about
non-trivial kinematics, or joints-axis would have been merged a few
years ago. :-/

> Anyway I have solved my problems in a different way. Rather than do the
> CoreXY calculation in the kinematics, I have done it in the HAL chain. In
> this way everything works as a normal XY stage and there is nothing funny
> with the jogging or the limits. This also has the advantage of not needing
> anything outside of trunk.

Very cool idea!

I just got back from laser-cutting parts for a CoreXZ machine (the
Nicholas Seward design), so I may 'borrow' your idea and do the
kinematics in HAL.

Keep us posted on your progress!

--
Charles Steinkuehler
cha...@steinkuehler.net

signature.asc

andy pugh

unread,
Feb 16, 2015, 7:38:57 AM2/16/15
to Ryan Press, machi...@googlegroups.com

On 16 February 2015 at 05:27, Ryan Press <ry...@presslab.us> wrote:
It's kinda disappointing that nobody could take a couple minutes to reply, but I know you guys are busy.  I could post to the LinuxCNC list but I imagine they're not too excited about supporting this fork.

It is becoming increasingly difficult for those of us who are only running LinuxCNC to support Machinekit as it diverges further. I think that most folk who answer questions at all are happy to answer on either forum for either platform where they know the answer. 

I don't think that you _can_ properly drive the soft limits from inside the kins module or from HAL. The point of soft limits is that the system will refuse to hit the soft limits by "knowing" where they are. All you can do in HAL _or_ Kinematics is to set a pin saying "soft limit hit" and pausing the motion at that instant. 

I think that the joints_axes branch has separate limits in the INI file for joints and for coordinates. This hints that the plan is to have both sets of soft limits. 

I was actually expecting JA to be merged for 2.6, or maybe 2.7 and wrote the config conversion script to make this more seamless. But it still hasn't happened in either project. 

--
atp
If you can't fix it, you don't own it.
http://www.ifixit.com/Manifesto

Viesturs Lācis

unread,
Feb 16, 2015, 8:59:03 AM2/16/15
to machi...@googlegroups.com


On Monday, February 16, 2015 at 7:27:10 AM UTC+2, Ryan Press wrote:

It's kinda disappointing that nobody could take a couple minutes to reply, but I know you guys are busy.  I could post to the LinuxCNC list but I imagine they're not too excited about supporting this fork.

It is kinda disappointing that there are so few corexy style machines, driven by Machinekit/LinuxCNC and so the number of users actually having any experience with that is not bigger :) 
For example, my corexy build 2 ago finally reached "linear guides, belts and motors are assembled" stage, I have no idea about further progress with electronics as there are more urgent projects, so regarding your questions, I have not yet tried anything to drive corexy with Machinekits, so I have no suggestions yet, how to solve these things. 
What I am trying to say is that lack of answers should not be taken personally. it might be that you are one of first users that encounter such things _and_ wants to correct them instead of just ignoring due to lack of ability to solve (speaking for myself here with regards to ignoring inadequate soft limits due to strange kinematics of machine).
 
Anyway I have solved my problems in a different way.  Rather than do the CoreXY calculation in the kinematics, I have done it in the HAL chain.  In this way everything works as a normal XY stage and there is nothing funny with the jogging or the limits.  This also has the advantage of not needing anything outside of trunk.

Thank you for sharing!

Viesturs

Marry Jeyn

unread,
Jan 31, 2025, 9:14:48 AMJan 31
to Machinekit
Hi! I recently encountered a similar problem and found a great option. 3D Printers from epitum3d.com are ideal for working with engineering plastics. They have high-quality assembly, and the models provide accurate printing of even complex parts. The peculiarity is that the finished products are obtained with a very smooth surface, so there is practically no need for finishing. Plus, the price is quite adequate for this level of capabilities.

понедельник, 16 февраля 2015 г. в 15:59:03 UTC+2, viestur...@gmail.com:
Reply all
Reply to author
Forward
Message has been deleted
0 new messages