Requests for help: Gcode cam follower/ tangential knife control.
-
-
Your M584 command that creates the U axis must come before the M574 command that refers to U. Also the M584 command should re-define the extruder drivers, otherwise driver 4 will be both an axis and an extruder.
-
No.
-
At the same time.
-
No. The F parameter determines the speed of the move as a whole. If there is any XYZ movement, then it is the speed of the XYZ component of the move.
-
-
Having read all above (but quite quickly to be honest), were I to attempt this, I would lean heavily on the G-Code concept that a G1 move does internal calculations to ensure that all axis specified on that move arrive at the same point at the same time when the move ends.
Also, A is normally the first rotational axis. Given RepRap flexibility, you could call it A or U... but I'm going to call it A below, as this is more normal CNC nomenclature.
Assuming A is defined as a rotational axis:
G1 Xnnn Ynnn Annn will smoothly rotate the A axis "in coordination with" the XY move. A series of these should do what you want.
Homing on A should be setup mechanically so that A can continuously rotate, and that "home" is triggered for a fraction of a degree of that rotation.
Relative vs. absolute? Doesn't really matter, when you realize an NIST standard rotational axis can be moved an infinite amount, limited only by the number of digits that the G-Code parser will accept.
That is, as you wind a coil, A might move through 0, many tiny increments, past 360, and just keep going. Far along in a coil, moving from 394857.2 to 394857.24 is perfectly legitimate.
Anyway, I'd build everything on those assumptions. You MAY already be doing that... but I wanted to make a pretty strong recommendation to NOT treat a rotational axis as an extruder, or anything else. Treat it as a rotational axis. G-Code standards will give you a big jump on what you are trying to accomplish.
-
DC42, does RepRap support rotational axis move coordination on G2?
Russ, if it does, that would make the G-Code much simpler. You could have a single line of G-code that does each "circle" of the coil. If it does, I'll post some examples.
By the way, for coil winding, you may wish to generate the G-Code with a simple script. PERL, Python, Java, etc.
-
@danal said in Requests for help: Gcode cam follower/ tangential knife control.:
DC42, does RepRap support rotational axis move coordination on G2?
RRF does not currently distinguish between linear and rotational axes.
G2 and G3 moves can specify movement along additional axes, which will be done linearly and coordinated with the XY motion.
-
Yes, this was also a question I had.
David,
If it was you trying to make what im trying to make, How would you set up and control a rotanial axis?
You deeply know the limitations of the firmware.
In the end it might not be possible to make fluid movements like im trying to do.
So what ever the best options i have ill stick with those. I want others to be able to use there Duet controler to use a tool end as im making.
At the moment My current limitation is that I want to position the tool in the direction I want to go and in order to do this the tool has to stop every time it has to turn. I'm not sure if there's any way to work around this problem?
If I use arcs instead of point to point then is it possible to command the tool to follow the Ark. In any fashion?
From what I can tell so far I'm going to have to stop every time I want to turn the tool
Thanks for your feedback I'll do whatever I can with what options I have and eventually may have to try a completely different platform and order to achieve this, but even if it's slow it will still allow people to make knife cutters and other things so it's still worth pursuing.
~Russ
-
I will be upgrading my firmware and testing the homing here in a couple of hours so will find out and make sure everything is good on that part.
~Russ
-
ok, firmware up to date.
FIRMWARE_NAME: RepRapFirmware for Duet 2 WiFi/Ethernet FIRMWARE_VERSION: 2.02RC2(RTOS) ELECTRONICS: Duet WiFi 1.0 or 1.01 FIRMWARE_DATE: 2018-09-07b2
now, i see its homing but i cant move it at all once its homed or even before its homed?
But now i get an error if its not homed and try to move it. where before it just moved only if it was not home yet.
now I'm stuck, i cant move it. U is rendered useless. ? strange because it dose home
did i miss end stop liniments or something?
I also updated my config.g
these now should be correct. I redefined the extruder drives correctly yes? and moved M574 after M584
; Axis and motor configuration
M569 P0 S1 ; Drive 0 goes forwards
M569 P1 S1 ; Drive 1 goes forwards
M569 P2 S1 ; Drive 2 goes forwards
M569 P3 S1 ; Drive 3 goes forwards
M569 P4 S0 ; Drive 4 goes backwards
M569 P5 S0 ; Drive 5 goes backwards
M584 U4 E3:5
M574 X2 Y2 Z2 U2 S0when I run a file with U commands, it completely ignores the U commands?.
not sure what to check next, please let me know what to look for. Thanks!!!!
~Russ
-
also something to note, U dose not show up here? E0 andE1 do? but the current is correct for E0 for U ?
is this normal?
~Russ
-
@russ-gries said in Requests for help: Gcode cam follower/ tangential knife control.:
also something to note, U dose not show up here? E0 andE1 do? but the current is correct for E0 for U ?
~Russ
At one point, the Web interface had problems if the printer itself was configured for axis that were not in sequence. Be sure you are on the very latest web interface, and/or that bug may still exist.
-
Russ,
Given David's answer that RepRap does not distinguish axis, and given that G-Code (and RepRap) ensure that all axis in a given single move reach their individual endpoints in sync, this all adds up to doing EXACTLY what you want for a coil winder.
That is, if the current XYZ position of the "control point" is somwhere around a coil, ready to make the next coil, and the U axis is "pointed aft" to correctly lay the wire, then a G2 arc move that specifies a next XY 1/4 of the way around the coil, and a U that specifies 90 degrees from where U starts (in the correct positive or negative direction)... that move will smoothly rotate U as XY accelerate, move, deccelerate.
Personally, I'd do 1/4 arcs while debugging so that you can "see" what is happening better.... but once you've confirmed how this all should work, and "good" g-code, then G2 moves that do full circles, one entire coil per G2 line, should be easy.
This is all very hard to put into words... does it make sense?
p.s. I'd still recommend you define your rotational axis as A (not U). This is a widespread standard for extra axis in CNC. It also MIGHT make the Web interface display it better.
-
@russ-gries said in Requests for help: Gcode cam follower/ tangential knife control.:
I redefined the extruder drives correctly yes?
You are using:
M584 U4 E3:5
Is E3:5 valid? if you don't have a Due5x or Due2x then you only have 5 drivers total and the first one is 0.
-
@danal said in Requests for help: Gcode cam follower/ tangential knife control.:
Russ,
Given David's answer that RepRap does not distinguish axis, and given that G-Code (and RepRap) ensure that all axis in a given single move reach their individual endpoints in sync, this all adds up to doing EXACTLY what you want for a coil winder.
That is, if the current XYZ position of the "control point" is somwhere around a coil, ready to make the next coil, and the U axis is "pointed aft" to correctly lay the wire, then a G2 arc move that specifies a next XY 1/4 of the way around the coil, and a U that specifies 90 degrees from where U starts (in the correct positive or negative direction)... that move will smoothly rotate U as XY accelerate, move, deccelerate.
Personally, I'd do 1/4 arcs while debugging so that you can "see" what is happening better.... but once you've confirmed how this all should work, and "good" g-code, then G2 moves that do full circles, one entire coil per G2 line, should be easy.
This is all very hard to put into words... does it make sense?
p.s. I'd still recommend you define your rotational axis as A (not U). This is a widespread standard for extra axis in CNC. It also MIGHT make the Web interface display it better.
Hi Danal,
Thanks for all your feed back,
what your saying makes sense. but let me get something correct.
If i send "G2 X90.6 Y13.8 I5 J10 U45"
David is saying that as the arc move is happening, The U will slowly move around the arc. and the motion will be fluid on the U along the direction of the arc?
however, doing it point to point i will need to add the U on the line before the move so i know its going in the right direction. correct?
i just want to be sure i understand... clearly...
Also, are you able to make a simple script program that has an in interface for such a G code generator?
if yes and your willing to give it a go let me know. ill need to make a list of parameters that i would need. just thought I would through it out there.
Thanks for the help and feed back!
~Russ
-
@adavidm said in Requests for help: Gcode cam follower/ tangential knife control.:
@russ-gries said in Requests for help: Gcode cam follower/ tangential knife control.:
I redefined the extruder drives correctly yes?
You are using:
M584 U4 E3:5
Is E3:5 valid? if you don't have a Due5x or Due2x then you only have 5 drivers total and the first one is 0.
yeah i think so, even tho nothing will happen with E5... but i can remove it and see if anything changes.
nope, same thing.
~Russ
-
ok, good news, i needed to set up my M208 correctly, now i can move my axis to the limits. and homing works.
now, whats a workaround to disable the limits? I dont want any limits on the rotational axis?
A have to have them in place or i cant move the axis at all... but i really dont want them at all because it can spin in one direction forever... so is there a way to disable the software limits for one axis?
and yes i know i can set them to some crazy high / low number... but that seems a bit odd. so i thought i would ask if they can be disabled in any way?
Thanks!
~Russ -
@russ-gries Perhaps with this: https://duet3d.dozuki.com/Wiki/GCode#Section_M564_Limit_axes
M564: Limit axes ¶
ParametersHnnn H1 = forbid movement of axes that have not been homed, H0 = allow movement of axes that have not been homed (firmware 1.21 and later)
Snnn S1 = limit movement within axis boundaries, S0 = allow movement outside boundaries
ExampleM564 S0 H0
Allow moves outside the print volume and before homing, or not. If the S parameter is 0, then you can send G codes to drive the RepRap outside its normal working volume, and it will attempt to do so. Likewise if the H parameter is zero you can move the head or bed along axes that have not been homed. The default behaviour is S1 H1. On some types of printer (e.g. Delta and SCARA), movement before homing may be prohibited regardless of the H parameter.However, I believe that disables limits for all axis. And may not even apply to you as you use a Delta. Perhaps @dc42 can provide more details.
-
it seems that G2 and G3 commands work well, nice and smooth.
can you pose some simple arc commands to test? a circle or something.
The U ( will change it to A later) is set up so that i can send it 0-360 as a full circle....
I tried to match the steps/mm to = 360 deg rotation. as genghisnico13 was saying would be a good idea.
so in the code just put the proper deg angle with the arc.
and ill run some tests and see how it reacts. so far it looks good playing with it but i done have a proper way to generate the G code with arc commands ATM.
and my hand coding of those commands is not working well
Thanks,
~Russ -
@russ-gries You have a nice idea. I am following it with great interest!
Your construction could support such ideas like PCB motor and PCB actuator.
https://hackaday.io/project/158017-linear-pcb-motor
https://reprap.org/forum/read.php?160,813817,page=1
or Venture Tape for heat bed
https://www.henschke-geraetebau.de/dr/heizbett.html -
Have you reached out to @Kulitorum to find out how he setup and coded the tangential blade in the 3d print huset printer:
https://3dprinthuset.dk/the-bod/
The video linked form there shows it printing.(edit: I saw you have done, I will email him in case he is not monitoring the forum)
-
Yes, i asked him for an example of the gcode,
He did not respond.
I also asked him if he could shate the script. He said he could not share it. Due to restrictions with the company im sure.
This is ok.
We current have built a simple Gcode script that adds the values in for U acording to the vectors. For point to point. My friend Matt has been helping me with that.
However it seems that using arcs and sright lines is going to be the best option.
We will need to require that the U move is done already before the sright line is executed.
This is all fine and from what i can tell he is doing this on his concrete printer. As well as arc moves so it all looks smoth until it gets to a cornner.
But yes. If you can get a sample of his code that would be great. That would help us understand if he is using G2 &G3 commands. I think he is.
Thanks for the input and help everyone!
~Russ
-
@russ-gries Yeah i asked him as well and the post processing is proprietary which is understandable.
That said it sounds like you are on the right track. For straightlines it is simple as you say, take the two end points, calculate the tangent of the vector and then move the U axis accordingly. For a true arc (G2,G3) its more of a pain, probably break it down into segments?