Brother TC-225 / TC-229 adventure!

More
6 years 4 months ago #172373 by ihavenofish
Just thought of a few more safety z cases.
We need the thing to error if the spindle is spinning or not oriented in the atc zone.

This would be the case that prevents the machine from traveling into atc zone during a program.

I think again are Arduino can intercept here.

so, this would be the full method:

- Arduino monitors atc "zone" switch. This may need to be a new switch on the machine to be more convenient. it is a few mm above the z "home", and is always on through the whole atc range, up the the atc "position" switch, and then the Z hard limit at the top.

- Arduino monitors a new output from the control that says "tool change"

- if the machine tries to move into the atc zone when "tool change" is not high, then we error.

So, that's safety failsafe 1, from bad g code programming / jogging

- we request a tool change
- Arduino receives "tool change" input and allows z travel
- Arduino checks carousel orientation (on tc229), if not on a station, error.
- Arduino receives carousel motion input
- Arduino checks atc 'position" switch, if not ok, then error
- Arduino receives decal carousel brake input
- Arduino checks carousel position
- Arduino sees atc "position" go low, and checks carousel position and motion inputs, if not ok, then error.
- Arduino sees atc zone go low.

Now that we are adding in a new switch for atc "zone", I wonder if we need the Arduino here. maybe linuxcnc can manage these things instead. The issue before was swapping limits on the fly, which we cant (easily) do, but this is all just readying switching and responding to them.

Are there easy provisions for a set of "if input X = 1, do or don't allow Y to happen" ?

Please Log in or Create an account to join the conversation.

More
6 years 4 months ago #172374 by ihavenofish
Oh, I thought of one other little hack (at least I think I did, maybe it was mentioned on page 23345661425 :)), that would just electrically swap limits. Just add a switching relay. When low, the lower Z limit is uses, when M6 is called, it turns on the relay, and then the upper ATC home is used. The hard Z limit is still used at the top and bottom for e stop.

We still need the other safety provisions above for spinning the turret, but, this would automatically detect bad g-code as it should.

The last thing I guess was orienting. I never got to that. In my idea world, the machine would see the m6 command, move up to Z home WHILE stopping the spindle at orientation position (commanding the spindle like an axis). THEN in a smooth motion keep going up to ATC home. so, pretending the spline was A here:

G64
G1 Z17.0, A0 F1181 (full speed)
G1 Z21.0 F400 (slower motion to release tool)
G0 X? Y? (move to next lines XY position while waiting for tool to carousel to move)
G1 Z17 F400 (grab new tool)
G1 Z? F1181 (rapid to next Z position
M3 S6000 (start spindle)
G61
Continue G code

This requires a swap to use the spindle as a servo, something I couldn't figure out how to do.

Thoughts?

Please Log in or Create an account to join the conversation.

More
6 years 4 months ago #172378 by IceBear
HI!
Actually I solve this task (safe atc space) pretty simple. Idea is limit Z travel after < home Z> as (0 to -200).... for toolchange extend soflimits as (+150 to -200) and after toolchange swith it back to 0 -200.
You can see a red dash line (wich show softlimits ) extend and then back.

1. I use use atc-range as z home:
# ---setup home / limit switch signals---
net atc-range => joint.2.home-sw-in
net min-z => joint.2.neg-lim-sw-in
net max-z => joint.2.pos-lim-sw-in
2. I use MUX2 to manipulate soft limits:
loadrt mux2 names=z-limit-mux
addf z-limit-mux servo-thread

# switch z-axis soft limits
setp z-limit-mux.in0 [JOINT_2]MAX_LIMIT
setp z-limit-mux.in1 [JOINT_2]MAX_LIMIT_ATC
net z-limit-out <= z-limit-mux.out

# ini.2.max_limit is connectedd in custom_postgui.hal:
net z-limit-out => ini.2.max_limit
net z-limit-out => ini.z.max_limit

3. mux input accept commands from gcode:
net z-limit-select motion.digital-out-01 => z-limit-mux.sel

4. In gcode toolchange (substiyute m6) I use:
to extend z limit up to +150 needed for toolchange:
;
MOVE ATC
(unlock z-travel for ATC range. send true to z-limit-mux.sel--> z-limit-max is set to z-limit-maz-atc)
m64 p1
(debug,Extend z_max_limit = #<_hal[ini.2.max_limit]>)

to limit Z for normal safe operation after toolchange:
(lock z-travel again)
m65 p1
The following user(s) said Thank You: jefsaro

Please Log in or Create an account to join the conversation.

More
6 years 4 months ago - 6 years 4 months ago #172380 by IceBear

IceBear wrote: HI!
Actually I solve this task (safe atc space) pretty simple. Idea is limit Z travel after < home Z> as (0 to -200).... for toolchange extend soflimits as (+150 to -200) and after toolchange swith it back to 0 -200.
You can see a red dash line (wich show softlimits ) extend and then back.

1. I use use atc-range as z home:
# ---setup home / limit switch signals---
net atc-range => joint.2.home-sw-in
net min-z => joint.2.neg-lim-sw-in
net max-z => joint.2.pos-lim-sw-in
2. I use MUX2 to manipulate soft limits:
loadrt mux2 names=z-limit-mux
addf z-limit-mux servo-thread

# switch z-axis soft limits
setp z-limit-mux.in0 [JOINT_2]MAX_LIMIT
setp z-limit-mux.in1 [JOINT_2]MAX_LIMIT_ATC
net z-limit-out <= z-limit-mux.out

# ini.2.max_limit is connectedd in custom_postgui.hal:
net z-limit-out => ini.2.max_limit
net z-limit-out => ini.z.max_limit

3. mux input accept commands from gcode:
net z-limit-select motion.digital-out-01 => z-limit-mux.sel

4. In gcode toolchange (substiyute m6) I use:
to extend z limit up to +150 needed for toolchange:
;


MOVE ATC
(unlock z-travel for ATC range. send true to z-limit-mux.sel--> z-limit-max is set to z-limit-maz-atc)
m64 p1
(debug,Extend z_max_limit = #<_hal[ini.2.max_limit]>)

to limit Z for normal safe operation after toolchange:
(lock z-travel again)
m65 p1


This work absolutly safe more then 1 month..... The only note.....if you don't execure home z ..... manualy you can move spindle to atc range area :(
Last edit: 6 years 4 months ago by IceBear.

Please Log in or Create an account to join the conversation.

More
6 years 4 months ago #172382 by ihavenofish
wow, thanks! I guess that's sorta the equivalent of my physical switch swapping.

the manually moving thing is kinda the same on every axis. its kinda necessary for manual maintenance as well, so just remember to home on start up.

I'm trying to remember the M64/65/66 stuff. I'm using that to read the encoder, and to enable the carousel to spin, to switch its direction, and to brake it.

We'll tuck this away for later then :)


How did you deal with orienting?

Please Log in or Create an account to join the conversation.

More
6 years 4 months ago - 6 years 4 months ago #172397 by ihavenofish
More questions. Since I now have pulse and direction drives, but an analogue servo spindle, which mesa card should I use.

I have a 7i76, but it seems to me that this does not support a servo spindle, just a vfd. Is this right?

If so, which board should I be using, or do I need an add on?
Last edit: 6 years 4 months ago by ihavenofish.

Please Log in or Create an account to join the conversation.

Time to create page: 0.253 seconds
Powered by Kunena Forum