martinbudden / BabyCube

BabyCube: small linear rails coreXY 3D printer
Other
49 stars 4 forks source link

troube viewing .scad files #5

Open daduke opened 3 months ago

daduke commented 3 months ago

Hi Martin,

I just stumbled upon the BabyCube and I think we all know I'll have to build one. I'm still trying to get a good picture of all parts involved (for example, where can I find the cork spacers for the NEMAs), so I tried to open the OpenSCAD files. I installed NopSCADlib, checked out the repo and then tried opening various .scad files, only to be greeted by multiple errors and failed assertions. In the closed issues I found a hint to create the target.scad file, but even with this in place I get assertion errors. The only files I could render were the bed variants. I noticed that you're currently reworking .scad files, so maybe that's expected, but I'd be very grateful for some hints on how to get the model opened. MainRB and SB (what's the difference?) do open, but only show one lonely triangle. OpenSCAD 2021.01 on Fedora 40.

thanks a lot, -Christian

engkon6 commented 3 months ago

Hi Christian,

For me it's easier just to convert all the STL files to STEP file & create the mockup from there to visualize it. I follow below tutorial to import and edit the STL files in FreeCAD. https://youtu.be/dr1qtaURrvI

For the cork spacers, it's installed between the motor & printed frame to insulate the heat from the motor. image

I could be wrong, but based from the commit description I assume MainRB is for Reversed belt Build and MainSB is for Staged Build.

I hope this can help.

daduke commented 3 months ago

thanks for your suggestions! I'll look into the STL -> STEP conversion, but I still think it would be nice if the OpenSCAD part were usable...

I realized what the cork spacers are for, but so far I haven't been able to locate a step/stl/dxf/whatever file for them...

thanks again, -Christian

daduke commented 3 months ago

ok by increasing the rendering limit in the OpenSCAD settings and commenting out assert(_useReversedBelts==true || test==true); in assemblies/MainAssemblyRB.scad I got the model to render!

martinbudden commented 3 months ago

Hi Christian,

sorry the late reply.

I'd hold on a little while if you want to build the BabyCube. It's currently undergoing a fairly major change: I'm changing the belt orientation. The current version is "SB" Standard Belts, the new version is "RB", reversed belts. In the reversed belts version the non-toothed side of the belts passes over (most) of the pulleys, see the illustration below. corexy

I've also now pretty well completed the Carbon Fiber version - I plan to build this myself very soon. explodedview

The new versions have a slightly increased build volume, and also feature exchangable toolheads - I'm planning to support E3DV6, E3D Revo, and DropEffectXG hotends.

martinbudden commented 3 months ago

And to address your original question, the BabyCube is built using the NopSCAD library build system - it does take a while to runt the build though. One thing you can do to get a feel for things, is to look at the files in the test directory, or indeed build the tests.

I plan to upload the build instructions for the new variants in about two weeks, so if you can hold on to then, things will be clearer.

daduke commented 3 months ago

Dear Martin,

thanks for the good news. I'll definitely wait for the new version then. It's a long-term project and I haven't ordered a single part yet. I'll be happy to test the new design and provide feedback. Do you have any pros/cons for the CF version? We have a workshop on campus that could waterjet the parts for me...

thanks! -Christian

martinbudden commented 3 months ago

The main disadvantages of the CF version are cost and accessibility. Anyone with an Ender 3, Prusa i3, or Bambu Labs (or similar sized printer) can build the original BabyCube reasonably cheaply. Most people, however, don't have access to a CNC or waterjet.

One other possible downside to CF is radio frequency transparency - I'm intending the CF version to be Klipper based and am not sure if the CF will block the WiFi from the internal Raspberry Pi. I think FR4/G10 (the fiberglass used for making PCBs) is probably a better choice of material - it's fire resistant, cheaper and doesn't block RF. However it doesn't look as cool. On the other hand it is available in a variety of colours.

Generally speaking the CF version is superior (well, hopefuly - I haven't yet built one). It's easier to build and manages to eke out a few extra millimeters of build volume in the X and Y directions.

One refinement that I'd like to make in the future is to have CNC'ed aluminium motor mounts - but that can wait until I've actually built my first version.

It would be great to have someone to test/prototype the new design. It would be especially good to have someone provide feedback on the CF version.

I'm unfamiliar with waterjets. The CF design requires cuts with a 1.5mm radius - for 3mm sized bolt holes, and also for dogbones with 1.5mm radius ends. Can a waterjet achieve that resolution?

I've also removed target.scad from .gitignore. I had it there because it changes every time I swap between build variants, but I hadn't considered that it is required by other people viewing the .scad files.

Finally, I'm busy over the next week, and so probably won't be able to answer any further questions on here for about a week, but will make any replies after that.

daduke commented 3 months ago

great news. I'm not too concerned re: RF blocking - you can always route a thin U.FL coax cable and slap the antenna to the outside. what thickness of CF plates are you aiming for? I could then use the time to talk to our workshop specialists to see what's feasible.

let's do this!

thanks, -Christian

martinbudden commented 3 months ago

3mm thick CF.

I've slightly increased the size, so current planned sizes are:

Front, back, left and right sides: 220x210x3mm Top: 220x220x3mm

Additionally aluminium base, 220x220x3mm. The only cutting required is drilling holes for mounting the PSU and PCBs, but you might want to investigate having this cut as well.

I'm hoping to increase the build volume from 90x80x60mm (for the original BabyCube) to 99x99x84mm for the CF version., although this varies a bit depending on which hotend used.

martinbudden commented 3 months ago

One thing you could ask your workshop specialist is about kerf - is there any kerf when cutting with a waterjet? If so, do the .dxf files have to account for this, or does the waterjet control software offset the kerf?

The config files have a parameter for tolerance, currently this is set to 0.05mm for CNC (giving a total tolerance of 0.1mm for fitting the pieces together), but I can adjust this and produce a configuration specifically for waterjet.

Also, does the waterjet treat edge cuts and drilling holes differently - will I also need to adjust the diameter of the boltholes for cutting by waterjet? I haven't coded in the ability to do this, but it should be a relatively straightforward change,

daduke commented 3 months ago

ok I talked to our workshop chief. There is a waterjet cutter at our university, but not in our department (they hope to get one next year), which makes access a bit harder than it could have been. Kerf should be compensated in software, for him the bigger issue was drilling holes - they need to be pre-drilled on a CNC to avoid delamination, and he doesn't like CF in his CNCs since the carbon dust kills his rails. Looking at the many holes on the top plate to hold the linear rails, that might be an issue. He gave me the contact for a local waterjet specialist shop he had worked with in the past, but this being Switzerland, I'm somewhat hesitant to ask for a quote 🤑 I also tried to find other commercial waterjet services, but at least the usual suspects (JLCPCB, PCBWAY) don't seem to offer it. How were you going to have your CF cut?

martinbudden commented 3 months ago

Hi again. Thanks for looking into the waterjet cutting. It looks like it's not really a good option - if you need to use a CNC to drill the holes, then you might as well do the whole thing by CNC. All the faces of the BabyCube have holes drilled, for various purposes, fans, motors, rails and of course to attach the faces to each other.

I'm now at the stage where I can start getting the faces machined. My first step will be to send off a test piece to get check the tolerances for a good fit between the faces.

I've started looking at quotes. There are a couple of small UK CNC workshops that do one-offs and small quantities, so I'll try and get a quote from them this week.

I've also been looking at JLCPCB and PCBWAY. Both do CNC machining, and PCBWAY also does laser cutting. JLCPCB are cheaper, but unfortunately they only do aluminium, polycarbonate and green FR4. PCBWAY do those and also black FR4 and carbon fiber.

I got quotes for cutting out the back face, it's probably fairly representative. All the faces are near enough the same size, but require different amounts of machining. Here are the costs I've got, all for doing the back face (220x210x3mm):

PCBWAY

CNC machining

Material Cost
Aluminium $41.82
Black FR4 $40.08
Carbon Fiber $85.84
PolyCarbonate $39.58

Laser Cut

Material Cost
Aluminium $33.86
Carbon Fiber $69.15

JLCPCB

CNC machining

Material Cost
Aluminium $30.78
FR4 (green) $35.15
Polycarbonate $31.05

So it's not cheap, but it's not outrageous either. So with and aluminium base and black FR4 sides it will be about $240 plus tax and shipping. More if you want carbon fiber rather than black FR4. I've also been toying with the idea of making the back out of aluminium, that way if I at some point upgrade the motor mounts to aluminium, the whole back face would act as a big heat sink for the motors.

As I say, I'll check some UK suppliers, but I doubt their prices would be substantially different.

I'm a little surprised your university has a waterjet but not a CNC machine.

So my next step is to get a test piece sent off to check tolerances.

daduke commented 3 months ago

Hi Martin,

Hi again. Thanks for looking into the waterjet cutting. It looks like it's not really a good option - if you need to use a CNC to drill the holes, then you might as well do the whole thing by CNC. All the faces of the BabyCube have holes drilled, for various purposes, fans, motors, rails and of course to attach the faces to each other.

well, you need a CNC to PRE-drill tiny holes, so that the waterjet can start cutting the real holes sideways instead of delaminating the CF when trying to punch through. But yes, the amount of extra work is the same. My understanding from reading teh intarwebs was that WJ cutting produces far better cuts in CF compared to milling or laser cutting.

[..]

So it's not cheap, but it's not outrageous either. So with and aluminium base and black FR4 sides it will be about $240 plus tax and shipping. More if you want carbon fiber rather than black FR4. I've also been toying with the idea of making the back out of aluminium, that way if I at some point upgrade the motor mounts to aluminium, the whole back face would act as a big heat sink for the motors.

compared to just printing the panels that's quite the premium.. I wonder if CF or FR4 really is that much better than ABS sheets (also taking into account the far greater flexibility of printed parts). I'll have to read some more.

I'm a little surprised your university has a waterjet but not a CNC machine.

oh they have plenty of CNCs, but he told me that CF dust kills their rails, so he avoids cutting/milling this material.

cheers, -Christian

martinbudden commented 3 months ago

I wonder if CF or FR4 really is that much better than ABS sheets (also taking into account the far greater flexibility of printed parts).

I don't think CF or FR4 is that much better. I'm more considering it for the "bling" factor. My BabyCube is 3D printed in PETG and it performs very well. I've had it several years, and it is my "go to" printer - I only use one of my other printers if the part is too big for the BabyCube (that's one of the motivations for this work, to support a bigger print size)

So I think using ABS sheets is a good option.

daduke commented 3 months ago

bling is all fine and dandy, but unless I find a somewhat cheaper way to source FR4 or CF for a printer I need about as bad as a hole in the head, I might just stick with ABS... so I guess I'll try to set up the NopSCAD workflow next in order to be able to use OpenSCAD.

thanks!

martinbudden commented 3 months ago

OK, I'll presume you will be using ABS, and cutting with a waterjet.

We need to cut a calibration piece.

Can you clarify about kerf. You said:

Kerf should be compensated in software,

Does that mean that the waterjet control software compensates for kerf, or does it mean the CAD software should compensate for kerf?

Also, does your workshop prefer .step or .dxf files?

Calibration piece will be something like this: dogbonetolerance

to check hole diameters and that the dogbones fit snugly.

daduke commented 3 months ago

OK, I'll presume you will be using ABS, and cutting with a waterjet.

uhm actually I was talking about ABS printed panels :) if going the waterjet route (which isn't easy with the waterjet in a different department), I might as well go FR4 or CF, so my first shot would have been just printing the panels.

Kerf should be compensated in software,

Does that mean that the waterjet control software compensates for kerf, or does it mean the CAD software should compensate for kerf?

my guy doesn't operate the WJ cutter, but he told me that basically all those machines take the desired dimensions and then make sure that they themselves compensate for all these machine details.

Also, does your workshop prefer .step or .dxf files?

no idea and again, right now I'm not sure I'll be using their services at all...

martinbudden commented 3 months ago

OK, I've just uploaded the BC220 build instructions, see https://github.com/martinbudden/BabyCube/tree/main/BC220

This is not the final version, there are a couple of minor changes I want to make to the Left and Right Faces, and to the pulleys, but it is fairly close to the final version. It's certainly enough for you to look at and familiarise youself with the assembly process and the parts required.

If any of the instructions aren't clear, let me know and I'll try and correct them.

daduke commented 3 months ago

I did some more research. With the 3018 CNC I recently bought it should be possible to mill CF sheets, and those who tried got pretty decent results. So I ordered a 3mm CF panel for testing. Size will be an issue as my work area is 280 x 180 mm, but I guess I can flip it around or something. I'll check your instructions now.

daduke commented 3 months ago

in Left_Face assembly, what does 4. Attach the wires to the switch and bolt the Switch_Shroud to the left face. mean? What switch?

martinbudden commented 3 months ago

That's left over from the original version of the BabyCube which had the on/off switch on the Left_Face. I'll correct it.

martinbudden commented 3 months ago

With the 3018 CNC I recently bought it should be possible to mill CF sheets, and those who tried got pretty decent results. So I ordered a 3mm CF panel for testing. Size will be an issue as my work area is 280 x 180 mm, but I guess I can flip it around or something.

I don't think flipping over will work, the tolerances are quite tight and I think it would be difficult to get the cuts to align. However Genmitsu produce a 3018 Y-axis Extension Kit for £40 - this lengthens the Y-axis to 40cm. https://www.amazon.co.uk/Genmitsu-Extension-Accessories-Compatible-Machines/dp/B08RYGQ28W/ref=sr_1_1_sspa It says it is compatible with most 3018 CNCs.

daduke commented 3 months ago

I'll have to experiment - I'm still very new to all this CAM stuff. The Y extender is plan B

daduke commented 3 months ago

plan B it is. EUR 40 is not worth flipping anything

martinbudden commented 2 months ago

I've created a calibration piece at https://github.com/martinbudden/BabyCube/blob/main/cadquery/calibration/DogboneTolerance_CNC.step

The dogbones have different tolerances on the top, bottom, left, and right sides. The idea is to CNC two of them and see which side gives the best fit when the two pieces are fitted together.

daduke commented 2 months ago

I've created a calibration piece at https://github.com/martinbudden/BabyCube/blob/main/cadquery/calibration/DogboneTolerance_CNC.step

The dogbones have different tolerances on the top, bottom, left, and right sides. The idea is to CNC two of them and see which side gives the best fit when the two pieces are fitted together.

IMHO you should generate accurate parts and leave material and process specific corrections to the user in CAM/slicer - or is your tolerance setting parametric and can be set at compile time?

my CF test sheet has arrived - looks gorgeous. After my vacation I'll give milling a try.

martinbudden commented 2 months ago

The purpose of the calibration is not to compensate for the CNC process, but rather to ensure the pieces fit well together, ie not too loose and not too tight. So for example a 3.00mm dogbone will be too tight to fit in a 3.00mm slot. What is needed is something like a 2.95mm dogbone and a 3.05mm slot. But that might be too tight and (say) a 2.90mm dogbone and a 3.10mm slot might be what is required. The purpose of the calibration piece is to ascertain what this tolerance is. I think 0.05mm is correct, but I can't be sure until it is tested.

my CF test sheet has arrived - looks gorgeous. After my vacation I'll give milling a try.

That will be fun. May I suggest you do your first attempts on something cheaper though - 3mm plywood can be got very cheaply.

daduke commented 2 months ago

ok back from vacation. I cut two calibration parts from plywood and checked tolerances. The best fit is the following:

dogbones

slides in nicely and has virtually no play.

martinbudden commented 2 months ago

Hope you had a good holiday.

That fit is bottom side to bottom side of the test piece. I've just check the code, and the bottom side has a tolerance of 0.05mm. That was what I thought it should be, but it's good to have it confirmed.

By the way, what size bit are you using? The dogbone ends have a diameter of 3.5mm, which means you can use either a 3mm bit or a 1/8 inch bit (or smaller). The advantage of 1/8 inch bits is they seem to be more widely available and often cheaper.

daduke commented 2 months ago

Hope you had a good holiday.

I did indeed! thanks.

That fit is bottom side to bottom side of the test piece. I've just check the code, and the bottom side has a tolerance of 0.05mm. That was what I thought it should be, but it's good to have it confirmed.

:+1:

By the way, what size bit are you using? The dogbone ends have a diameter of 3.5mm, which means you can use either a 3mm bit or a 1/8 inch bit (or smaller). The advantage of 1/8 inch bits is they seem to be more widely available and often cheaper.

I used a 2 mm end mill. I only do metric :smile:

in the next few days I'll try to build an immersion bath so I can mill CF without dying of it.

daduke commented 2 months ago

first test piece. I am officially thrilled. Dimensional accuracy is ~ 0.02 mm. 20240928_140451

martinbudden commented 2 months ago

Looks really nice!

daduke commented 2 months ago

what kinds of changes do you still see on BC220CF? I've started ordering parts - should I start printing yet?

thanks!

martinbudden commented 1 month ago

The BC220CF design is pretty stable now, with no major changes planned. I'll go through it today and double check that and make sure the latest version is up on github.

The only significant change is that I intend to make a version of the printbed in 1515 aluminium extrusion, but that is something that can be retrofitted in future if you wish.

I think you can start printing now.

Can you redo the tolerance test, this time with carbon fiber? Just to confirm that the same tolerances are required. CF does not have the same "give" as plywood, so it might need a slightly higher tolerance. Once you have done that I'll regenerate the carbon fiber pieces with the new tolerance if required.

Note that BabyCube supports interchangeable hotends. I've specified it with the DropEffect XG hotend, since that is one of the most compact available, and a smaller hotend equates to a larger print area. We are talking millimeters here, but in a small printer millimeters count. I am planning to also support the E3D Revo hotend, so if you already have one of those you don't need to order the DropEffect XG. I'll proably also add support for the E3D V6 hotend, but I don't really like that hotend (one of the issues is it has no strain relief on the cables, another is that it is a pain to change the nozzle).

One minor change I'm thinking of adding is support for a Dewalt Battery Adapptor 61PGjWoKekL _AC_SX679_, so the BabyCube can be powered by Dewalt batteries. But just means adding boltholes and cable holes on the left side, so that should not effect anything you do.

daduke commented 1 month ago

thanks for the update!

The BC220CF design is pretty stable now, with no major changes planned. I'll go through it today and double check that and make sure the latest version is up on github.

great, thanks.

Can you redo the tolerance test, this time with carbon fiber? Just to confirm that the same tolerances are required. CF does not have the same "give" as plywood, so it might need a slightly higher tolerance. Once you have done that I'll regenerate the carbon fiber pieces with the new tolerance if required.

I don't have enough CF sheet on hand right now, and I also noticed that the milled sidewalls have a slight skew, probably from the multiple passes, so I think the requited tolerances will be different for everyone anyway.

I have ordered a couple of 3 mm G10 sheers (I plan to make the 'bottom' out of G10) which should have similar CNC properties, so I guess I can check tolerances with those.

Note that BabyCube supports interchangeable hotends. I've specified it with the DropEffect XG hotend, since that is one of the most compact available, and a smaller hotend equates to a larger print area. We are talking millimeters here, but in a small printer millimeters count. I am planning to also support the E3D Revo hotend, so if you already have one of those you don't need to order the DropEffect XG. I'll proably also add support for the E3D V6 hotend, but I don't really like that hotend (one of the issues is it has no strain relief on the cables, another is that it is a pain to change the nozzle).

I'll ponder the hotend question when everything else is ready since I'd really like to fit a direct drive extruder (I have a spare Aquarius). A Mini Stealburner mockup doesn't seem to be much bigger than your hotend combo, but we'll see.

I'll also go with a spare Mellow Fly Gemini, but it's tiny enough that this shouldn't cause any issues.

all parts (sans extruder/hotend) should be arriving within the next 10 days. yay!

thanks, -Christian

martinbudden commented 1 month ago

plan to make the 'bottom' out of G10

I really think you should make the bottom out of aluminium. You can buy sheets of 3mm aluminum quite cheaply and cut to size. So the only work you have to do is to drill the holes. The reason for using aluminium is that it acts as a heatsink - both for the power supply and also the mainboard, if you attach it as indicated in the build instructions.

I'd really like to fit a direct drive extruder

Yes, I think there should be room to do this.

daduke commented 1 month ago

back in FR4. So far everything fits amazingly well. Very nice design! back-fr4

martinbudden commented 4 weeks ago

Looks really good.

daduke commented 2 weeks ago

Clipped_image_20241117_110641

ain't she a beauty