You can now render 2 sided boards in ChiliPeppr's Eagle Brd Import Widget.

You can now render 2 sided boards in ChiliPeppr’s Eagle Brd Import Widget. It’s not functional, as in you’re not going to get gcode output for multi-sided milling, but it’s a good first step, really cool to look at, and helps me visualize my PCB designs in a 3d (not flat!) way.

http://jsfiddle.net/raykholo/3cew8o80/embedded/result/

@sszafran @jlauer

Really nice work Ray! This is awesome progress. Now the question is when can we choose “Bottom” from a pulldown in the widget and have it just generate the Gcode for the bottom side?

@raykholo ​ This looks excellent. I already commented to the previous post before seeing this one. You are awesome!!!

@sszafran That’s just the beginning.

HIGHLY UNTESTED but It works now: http://jsfiddle.net/raykholo/d9mafzyh/4/

That fiddle will render and generate the gcode for the bottom layer of an eagle brd. Open it separately, drag the brd in again if you need to, make sure all the settings are correct, and then copy and paste the gcode it made out and put that into its own file.

Pretty much you’ll mill the top layer the exact way you’re used to, then, without turning the machine’s motors off as you need to maintain the existing coordinate system, load the bottom layer gcode and off you go. If you’re doing anything fancy with drilling you’ll probably want to handle that in the top layer. The top layer will cut the board out. I don’t know if you want that or not, but be aware of it.

The only thing is we haven’t accounted for the 180 degree flip the board goes through when you turn it over. I think the motion should be about the Y axis, as if you are turning a page of a book to the left. We still need to deal with that. It’s not the same thing as mirroring in eagle.

Let us know how it works for you. I’m hoping John has some time over the weekend to walk me through the mirroring bit.

I will give it a test on the weekend.
So far I am using FlatCAM http://flatcam.org/ to prepare my PCB’s cnc files, and then send it to ChiliPeppr for milling. There is a very nice functionality within FlatCAM for double sided PCBs support, where one may choose own coordinating points needed for precise board flip. Maybe we could incorporate similar approach into the widget? This way turning the board 180 degrees is always using predefined coordinates and assure proper alignment. @raykholo ​ Let me know what you think and if I can somehow help.

What’s your favorite technique for the board flip? Perhaps just use some drilled holes at the center line so you can put a paperclip in them into the baseboard so on flip it’s aligned still?

My approach is doing the 180 rotate about the Y axis, which would originally be the left edge of the board. It is now in negative space in the X. To compensate, the board then gets translated by its X length to the right, so it is once again situated in the same space as it was originally.

I have found that you need a special insert in your wasteboard for that to work well so that on the flip on the y axis you add 0 offset to it. I don’t think many people have a wasteboard insert like that.

Understood. Will defer to others for preferred techniques.

Alignment holes would allow to positon board exactly on the right place after flipping to the opposite layer. When using wasteboard the alignment holes do not cause any problems - just drill them in the waste material (e.g. MDF) and use pins to keep the board in place during job. After locking the board with pins autolevel the job (using Chilipeppr widget) before milling a layer.

If we could get a widget following FlatCAM Double PCB tool approach where we input:

  • select which is the bottom layer
  • select mirror axis (X or Y) or at least hardcode one of values
  • axis location (point or box in FlatCAM)
  • point/box coordinates
  • alignment holes coordinates (2 points are needed)
  • drill diameter
    and create g-code according to axis position then it will work just perfect.

I think I am unable to add piictures to comments, so I will add them separately.

@sszafran
@jlauer and I made a substantial amount of progress today on tapping into the board info after it gets parsed. This means there is a json array of every single wire, part, polygon, smd pad, and just about all other elements on your eagle board available, but we’re just interested in the ones I listed. All boards have layers 1-16 defined even if you never made them yourself so our approach for finding “actionable” layers is to loop through every single piece of copper and check off which layers #'s they are on, then push the corresponding layer names into the selection dropdown. From there, whenever you select a layer, that is what gets rendered and gcode generated for it.
I like your ideas regarding the Double PCB tool. I made a new tab in the widget named “Wizard”, it is presently empty, but we can start putting things into it over time.
-I agree that it is beneficial to let the user choose whether they want to flip the board over the x or the y. However, is the axis location specifier necessary? I can leave it in but we will assume the midplanes of the boards as default. Please elaborate on the interest for this.
-Alignment holes and drill sizes. A little more than I can handle at the moment, but let’s add it to the hypothetical development roadmap.
-I’m with John on having vision compensation, especially when a usb endoscope can be had for USD $6. I guess it wouldn’t be a fiducial per say, how could you print a marker on a side that hasn’t been worked on yet? Could still drill the holes from the first milling side and use vision to recognize them when the board is flipped, or could try to recognize the edges of the board, although I forsee some accuracy concerns with that one. Please clarify the intentions/ possibilities here.

Nice work. IMHO the next step maybe are a checkbox or selectbox to render only top/bottom. I try your jsfiddle example with an arduino smd micro and the levels are more confusing :slight_smile: Maybe we can display the oppoisite (Bottom) Side on a Level at -1.6mm (Thick of pcb)?

@Frank_Herrmann That’s what we’ve been working on for the last few days. Try it out:
http://jsfiddle.net/raykholo/oxkcvrn3/23/
@sszafran @jlauer