My MPCNC made in China

Ok, so now I will have to tackle an other rather complex challenge with the plasma: creating some kind of torch height controller.

From what I’ve seen so far on my tests, the plates will warp quite a bit due to the heat. This is quite a big issue, because the torch will either be too high, thus not cutting anything, or too low, hitting the plate and stalling the motors. Basically, it has to stay between 1 to 2 millimeters from the plate to do a good job.

I originally thought such a system would be rather inexpensive and easy to find, since it is a pretty common problem for plasma cutters… Turns out I was wrong about that, those things are super expensive.

I’ve made a bit of research, and from what I understand so far, what I have to do is to detect the voltage at the torch, send it back to some kind of controller, and then use this controller to dynamically control the Z axis motor to go up or down.

Sensing the voltage seems to be relatively easy, I guess I just have to build a voltage divider out of a few resistors, then filter it using some caps/inductances. I can then use a little Arduino to program different actions based on the voltage inputs.

But what puzzles me then is how can I use this voltage to actually move up or down the torch during cuts? How do I connect this Arduino to the ramps? How do I make both Arduino communicating with each other during the cut?

The Z motor is controlled by the Gcode, and I see no way to dynamically adjust its position during the cut, I guess there is no such function in Marlin, but I’m not entirely sure, since there is some kind of height adjustment on the fly whenever we use the automatic bed leveling function. So, could it be possible to use this function using a voltage value as the main parameter?

Does anyone knows about that?

If I don’t find a way to do this using this method, I thought of an other possibility, which would be to add another Z’ axis to the Z axis. Using a DC motor, I could make slight height adjustments to Z’ while keeping the Z working as usual. Z’ travel would be limited to a few millimeters and I would need to find some nice way to program it so it doesn’t go crazy during travels, whenever the torch is lifted by the Z axis, but I guess this could work. The downside would be that I would need to build some mechanical parts to create this axis, while finding a way to keep it compact and lightweight.

Any thoughts on that would be appreciated, especially from guys who have programming knowledge or good understanding of how Marlin works

For what it’s Worth, I’m currently testing adding an optional feature in Marlin that intercepts the Z stepper commands and transforms them into servo pulses (to be used in lightweight foam cutters). Got first results yesterday. For now it’s buggy as hell, but perhaps that kind of setup could be used to transfer the “Z height” from main arduino to Z controller, which will provide the fine Z adjustement you need.

as I was reading this post I came up with the same solution as you before id read down to it. I guess this is me saying I like your proposed solution cause you cant know ahead of time what the voltage will be at a certain point in the cut, you have to adjust it on the fly. Its the kind of thing that smarter folk than I could do with analog electronics which would be maybe less prone to the EMI.

If you did the Z’ route, the second Arduino would just need to know when you were cutting it not. Similar to a laser, your only want it turning on when it was cutting. That would be a pretty good solution that any CNC would be able to use.

You could edit Marlin to either send out the z position to another Arduino that was actually controlling the z motor. You could also edit Marlin to accept an input from the other Arduino as an offset in z. You just need to be careful because the motor code needs to execute very frequently so it needs to be fast.

You could also make the second Arduino just read the state of the step, direction, and enable pins from the Marlin Arduino. It would pass those onto the stepper driver, but add in a few steps, or flip the direction and pulse a few more to move the motor.

Since you’ve seen so many Gremlins with emi so far, it seems risky. I don’t think analog is less sensitive to emi, it just used more current. More current is generally less sensitive.

2 Likes

My low tech solution would be to use the torch “training wheels” or some other stand off and a spring loaded mount like the pen holder I made.

That were my first ideas too, but I came to the conclusion that these wouldn’t work.

The training wheels would only work during straight lines, they would be unable to turn properly in corners, no matter what wheels configurations I can think of. If slightly offset, they would sometimes fall into already cut spots, either running the torch too low or simply getting stuck, ruining the job.

A spring loaded mount wouldn’t work either, because the torch should not touch the plate and there is no way to put anything to push it up. I was thinking of using tome kind of ball, a few centimeter away from the torch to push the torch at a defined distance from the plate, but that wouldn’t work either because the ball would just fall off of get stuck whenever running on top an an already cut surface.

I wish there were some mechanical solutions to overcome this issue, it would make things vastly simpler. I just don’t think there is one here, unfortunately…

Active electronic correction seems to be the only realistic option here.

Yes, I think this is the only solution I can realistically do, given my poor skills in electronic and programming. I just need to find a free digital output on the Ramps that I could activate the height control system with a gcode, just like I’m already doing with the relay for firing the torch.

Whenever this signal would be low, the torch control system would be stopped, so that the Z could go up without the Z’ moving down. Then, after the travel move is done, it would send a high signal to make the torch height control work again.

Do you have any suggestion about what pin I could use and what would be the gcode associated with it? I’m currently using the Fan output to control a relay for the torch, so any other pin that this one :slight_smile:

The only issue I see with this method is that I don’t see any way to do height probing before each cut. The best way of cutting would be:

-lower the torch until it hits the plate

-Record the corresponding height

-Offset the torch by 3-4 mm

-Fire the torch

-Lower the torch to 1-2mm height progressively

-Activate the torch height control

-Control the height dynamically during the rest of the cut path

-Dis activate the height control

-Stop the torch,

-Move up

-Travel to the next spot

With my system, I cannot do the probing, which may be an issue. I’m not sure yet if this will be critical, I’ll have to check in real life.

I know how to deal with EMI now, so I guess I could be fine with this aspect of the mod. But I would have no idea on how to modify Marlin, this code is way beyond my understanding and knowledge… So I guess I’ll stick with my little crappy plan and see see how it is coming, if it doesn’t work I’ll seek for other solutions, but it is very likely that I will be unable to do anything better than that unless I learn a great deal of programming stuff.

If I good remember D44 on aux2 is free :slight_smile: on aux2 on top pins you can connect Arduino nano or micro whatever and use that for serial communication with mega. and make some sort of g code sender for probing. I make controller for my mpcnc through that pins.

The best is just to modify marlin in my opinion so before each extrusion(start plasma) check Z position (proximity sensor) or many some laser distans detection:D possibility are endless just try to find the best way.

1 Like

You have some sensor that knows the distance to the plate, and that’s rigidly (enough) mounted to the torch. So all these could be programmed into that slave Arduino. You’d just need Marlin to wait long enough for all that to happen before moving. Marlin thinks, “start spindle… Wait” slave Arduino goes through all those steps.

Any pin will work. Find something that you don’t have something plugged into. You don’t need pwm or analog input. The servo pins, or the endstop pins would work too.

This is going to be very interesting.

2 Likes

Hehe, I had the very same idea as yours for the first probing when I was writing my last post: adding a simple delay in the main gcode file to make a height probing before each path! great minds think alike :slight_smile:

About the height sensor for initial probing, I cannot use the ones you describe, because there is a chance that sometimes, the sensor will arrive on top of an already cut spot. In which case it will not detect anything and just crash miserably the torch.

So, the easy way is to just use the torch itself as a probe, since it is made of conductive copper, and the plate to cut is made of metal which is also conductive. Whenever it hits the material it will close the circuit. Seems easy and very precise to me, kind of the same way the probing works on estlcam already. I’ll just have to find a way to protect it against noise, but I think it shouldn’t be very difficult since it will be activated only when the torch will be off. So I think I can use a relay to activate or close this probe sensor in order to keep all the EMF out of the circuit.

As for the voltage sensing for continuous height leveling, I’ll have to hack my plasma cutter to add a voltage sensor directly inside it. It can be done quite easily by creating a voltage divisor with a few resistors and caps.

Now that I think that every issue is kinda theoretically covered, it is time to get my hands dirty and actually build the thing. I’m not too afraid about the mechanical and electronic part, only the coding worries me because I quite suck at it.

Ok, I’m starting with the easy part: the new mechanical assembly for the Z’ axis.

I’m going for a traditional solution, lead screw plus linear guided bearings. I tried to make it as compact as I could, to avoid losing printable space as much as possible (weight or forces on the gantry are not very relevant with plasma cutting).

This axis plugs right into my current tool support, so I can take it on and off in only a matter of seconds, without any screw needed. Also, the torch can be set in place and removed conveniently, since my previous system was not that practical.

So, here is my first drawing so far:

[attachment file=46202]
[attachment file=46203]
[attachment file=46204]
[attachment file=46205]

Two bearings to guide the threaded rod, one on top, one on the bottom, two ACME flanges, one ACME rod in the middle and two 8mm guides with 4 linear bearings. Nothing really fancy.

Now, I have to chose an appropriate motor, so I would appreciate to get some suggestions from you guys. I think I may use a DC motor with a gearbox, or maybe a remote controlled car servo, if they prove to be powerful enough.But if someone has a better suggestion who could work better I’m all ears. I’ll then be able to make the motor support.

Cheers!

 

3 Likes

I thought I’d just share my last weekend’s project with you guys here, since it was actually pretty interesting and super easy/cheap to do, even if this is not really MPCNC related: a little electric furnace to melt metals!

So, basically, what you need is a bunch of aluminum silicate bricks, a nichrome wire, a crucible and a few iron angles and you will end up having your own aluminum melting furnace for DIY casting.

I think it cost me about 35 buck for the whole thing, super cheap.

[attachment file=47532]

First thing was to find a way to secure the nichrome wire, I just cut some spiral trenches inside the brick, which was super easy because those bricks are super soft. Took, about 30 minutes with a file.

[attachment file=47534]

First test, to see if the nichrome wire worked fine. I was very surprised to see how fast it was to reach the melting point of aluminum, it took less than 30 minutes while using about 1800 Watts of power. I could go way faster just by reducing the lenght of the wire (the more you reduce it’s lenghts, the less resistance = more heat-more power). I think it is fast enough for me, so I’ll probably leave it like this. I’ve used about 14 meters of 0.9mm nichrome wire. I had to coil the wire first, I used my 3d printed lathe for that, it worked great:

[attachment file=47525]

After about 30 minutes, the aluminum was melted enough so I could make the first pour. I used a little graphite ingot mould, but it didn’t fill entirely since I had not enough metal:

[attachment file=47526]

The result is pretty decent, I was quite happy with that. I think it is not bad at all for a first try (I know nothing about casting):

[attachment file=47527]

Finally, I made a door, so that I can open and close the furnace easily:

[attachment file=47529]
[attachment file=47528]

It’s not entirely finished, I still have to add temperature control and finish a few things, but I’m already pretty pleased about how this turned out, after only one afternoon of easy work

[attachment file=47530]

I post this here to maybe give you ideas/inspiration to try this out. It is super easy to build, works way better than I thought and cost nothing. Plus it will keep you warm during the cold days of winter.

 

 

 

IMG_4413.jpg

IMG_4387.jpg

3 Likes

That’s gre are you thinking of doing some lost pla casting?

That’s on my to do list, but I’m not sure if lost PLA actually works nicely.

I think it may work if I print with the less possible perimeters and infill, but I’ll need to experiment.

I don’t know much about casting so far, I only have theorical knowledge after spending quite a bit on time on Youtube, so I guess I’ll have to try and experiment.

Cool! That’s the same type of fire brick my propane forge is made of. I used standard hard fire brick for the floor though, it’s the same brick you’d see in a fire place.

It’s finished for the most part, Yay!

I just need to add the PID system and it will be done.

My welding skills are pretty bad, but it seems to be good enough to hold itself

[attachment file=47692]

After a bit of grinding, looks a bit better
[attachment file=47693]

Painted in mate black:

[attachment file=47694]

And voila:

[attachment file=47695]
[attachment file=47696]

I’m pretty please with how it looks. The handles are convenient and I can move it around easily since it is not very heavy (I guess about 10 kilos).

I’ve ordered a PID, a solid state relay, a thermocouple and a laser thermometer. They should arrive today so I guess the forge will be finished before the end of the week!

I’ve made a bit more research about lost PLA casting, some people manage to get some very nice results, so I think this is gonna be one of the first things I’ll try.

At some point, I want to try doing some MPCNC parts out of metals, just to see the result. Any suggestion about which part you would like to see made out of aluminum?

2 Likes

The flat pieces will be the easiest to start with. Don’t forget the aluminum will shrink when it cools, so the casting needs to be a couple percent larger than the finished part.

1 Like

If you cast your xyz parts, that should make for a solid gantry, that is the first on my list of redesigns if I don’t just try something completely different.

1 Like

Thanks for the reminder, I almost forgot that! I’ll try to keep that in mind whenever I’ll make an attempt.

 

I was thinking about the same thing. Either that or the corners. I don’t really have the need for corner reinforcement on my machine, given the table I’m using, but I’m curious to see how that would turn out.

My only concern about the gantry is that the Z axis bearing holder part needs a bit of flex to adjust the bearing tension. So I’m not sure how I’m gonna deal with that yet. Sure, Aluminum is somewhat flexible, but eliminating flex is kinda the whole point of using aluminum…

All my parts have the same flex feature built in, it was designed for plastic. You would need a redesign and eccentric hardware otherwise.

I still think it will flex just enough, and the bearings even with a huge load should still roller perfectly.