#1 2020-09-13 10:10:26

From: Poland, Bialystok
Registered: 2020-09-13
Posts: 1

The next step is getting it out of OpenSCAD and into EAGLE

Author Archives: bryanduxbury.
Older posts.
Since I last wrote  about  my Painbox project (, ), progress has been very lumpy.
Here’s a bunch of short updates on various aspects of the project.
Replacing the clunky “copper tubes th rough  a 2×4″ test grill was high on my list of priorities, so I tackled that first.
I considered a number of different options, but settled on making a custom one- piece  grill out of a 1/2″ HDPE cutting board.
Essentially, it’s like a two-sided PCB, except instead of copper traces and plated vias, I milled width-wise grooves into the top and length-wise grooves into the bottom with th rough -and-through holes connecting the two sides.
The result is a sort of channel that snakes across the top, th rough  to the bottom, over the neighboring groove, then back to the top.
To make it capable of moving water, I capped the grooves with  piece s of 0.025” aluminum sheet, also cut out on the Shapeoko 2.
The first and last hole of each path are threaded to accept a hose barb.
This entry was posted in  and tagged  on  by.
This entry was posted in  on  by.
The bottom shelf is a  piece  of 1/2″ MDF, but the top of the bench is more exotic.
It’s a 24″x48x4″  made from 1/2″ MDF, including the skins.
Inside, there’s a grid of ribs on 6″ centers.
The ribs fit together with half-lap joints as well, which I cut on my table saw’s crosscut sled with an improvised indexing jig to get reliable spacing.
All together, this work top is probably the single sturdiest thing I’ve ever built, and it is not absurdly heavy.
It’s exactly what I want to serve as the basis for my CNC.  The torsion box is attached to the frame with a few brackets and  screw s.
Put together, the cart has a very solid feel to it.
Finally, there’s a set of locking casters on the bottom of the corner posts to make it mobile.
The final touch was the debris collection system.
I saw a   about us ing  to make a nice debris collector that hangs out near the toolhead and decided this was the approach for me.
The only part I didn’t like was how the collector moved with the toolhead.
This configuration makes it hard to  position the  collector nozzle close to the work piece without eventually crashing into it.
Instead, I decided to mount the Loc-Line in a fixed configuration that didn’t move in the Z-axis.
To do this, I whipped up a mounting plate that bolts onto the back of the X-carriage and provides a hole pattern to mount the Loc-Line adapter.
It also provides a vertical slot mount the X drag chain horizontally.
The other end of the drag chain connects to a vertical “mast” with another long slot; the whole thing bolts to the “accessory rail” I added behind the X Makerslide.
This worked great, especially if you ignore the ungainly stack of spacers and washers I needed to make the bend of the drag chain work out.

The PVC pipe tee on the X-carriage connects to a piece of

which connects to a tall piece of pipe bracketed to the side of the cart.
That goes all the way down to the foot of the cart and to an adapter that my shop-vac’s hose can plug right into.
It works great.
The only thing I would change would be to use larger diameter PVC pipe – the shop vac sounds like it’s struggling a bit due to the constriction of the current setup.
This entry was posted in  and tagged  on  by.
In my , I introduced my painbox project and talked about the prototype I’d assembled so far.
The basic functionality was there, but the performance was subpar.
The device itself was also a giant mess, making it hard to iterate on.
Time to make some improvements.
I decided to try to improve performance by upgrading the underperforming components.
The most important performance aspect is the “cold” side temperature – you’ll recall from the last post that it never really got that cold at all.
There are two reasons for the poor performance: the TEC wasn’t pumping much heat, and the passive heatsink on the hot side of the TEC couldn’t bring it close enough to ambient.
Luckily, both of these problems were easily solved with a little money.
I found a  and a CPU cooling  to go with it.
Specifically, the heatsink has a dissipation rating that matches that of the TEC, which should hopefully allow ideal performance.
This entry was posted in  on  by.
I’m a big fan of the Dune series, so when  about the  popped up in my feed reader, I was immediately hooked.
For those of you who are not acquainted with the Dune franchise, the “pain box” – which is never actually named in the series – is a device which causes an excruciating burning sensation without actually producing any injury.
Given that I’m going for compactness and simplicity, the most obvious source for both heating and cooling is a device called a , sometimes called a Peltier.
The basic concept is that it’s a solid state heat pump, where heat is pumped from the cold side to the hot side.
The colder you make the hot side, the colder the cold side will get.
Flip the direction of the current, and the device reverses the flow of heat.

Immediately after I decided to use TECs for my hot/cold source

I bought  from Amazon.
(I was surprised by how cheap they were, but it turns out that might not have been a good thing.
More on that later.) The next question is how to distribute the hot and cold.
I’ve got a fair amount of experience making printed circuit boards on my CNC.

And I know that lots of people make PCB heater boards (commonly seen on 3D printers

for instance).
If a PCB could transmit heat, why not cold as well.
Experiment with a  unit to see if the performance is better.
We’re only talking like $12 each here, so not a deal breaker.
Replace the janky heatsink/fan combo on the cold loop with.
This entry was posted in  on  by.
Initially, I was planning to design a bench out of plywood that would tab-and-slot-and-screw together.
I got as far as initial sketches in OpenSCAD before I decided it was just going to be too much work to design the bench I’d want to have.
My search for alternatives took me , which looked awesome, but was far too expensive.
Luckily, that page lead me , which introduced me to the world of galvanized steel fence posts.
I found this great calculator called  that helps you compute how much a surface of varying thickness will bow given how it’s supported, etc.
This was really helpful in estimating eventual performance and influencing part placement.
This entry was posted in  on  by.

OpenSCAD has an  which allows you to create models that can mutate relative to time

While it’s primitive, it lets you slap a time-based rotate around your top-level object to get a nice 360 spin view.
Then, when you select Animate from the View menu, the display will animate.
Once all the images are on disk, converting them into an animated GIF is surprisingly simple if you have.
Here’s the command I use to convert a bunch of frames into an animated GIF:                                                                   convert  -set delay 1x24 animated.gif                                                                hosted with ❤ by                               This entry was posted in  on  by.
I’m a big fan of DIY capacitive touch sensors.

Without any custom parts or special fabrication techniques (beyond regular PCB creation)

you can create really impressive interfaces.
I first used this on the  (Getting ready to ship.
!), and ever since I’ve been looking for great places to apply the technique.
The page for the  sent me looking for the , which contains a handy schematic for a scroll wheel.
So how’s this thing supposed to work.
The wheel is composed of three separate, identical electrodes that are tessellated together to form a ring.
Each electrode is interleaved with its neighbors such that as you move away from the center of one electrode, the current electrode exposes less and less surface area while the next one exposes more and more.
This means that if you measure the capacitance values of all three electrodes in succession, you should see approximately complimentary values on two of them, and an “untouched” value on the third.
This should be sufficient information to figure out the orientation of the touch.
The schematic for this wheel design is straight-forward enough, but this is far from an easy shape to draw.
As I highlighted in a , EAGLE really isn’t going to help you draw something like this, so you need to turn to another program to do it and then import the results.
My tool of choice is OpenSCAD, so I got to work on a.
However, I came up with another way to express this shape that is more amenable to being generated directly in OpenSCAD.
It’s a technique I found on the OpenSCAD mailing list that the creator referred to as “chain hull”.
A chain hull of a list of primitives is the union of the convex hulls of neighboring pairs of said primitives.
Did you follow that?  has a good visual example of the operation in action.
I think chain hulling is a brilliant use of the primitive functions available in OpenSCAD and allows for complex shapes to be described very concisely.
curved_triangle(r, pitch, separation, gap) {                                  (num_steps  )                                  (top_d  pitch    separation)                                  (bottom_d  triangle_tip_width)                                  (delta  top_d  bottom_d)                                  (d_incr  delta / (num_steps))                                  (b_incr/(num_steps  ))                                  ()                                   (i[:(num_steps)]) {                                    () {                                      ([, , b_incr  i])                                         ([r, , ])                                           square(size[top_d  d_incr  i, ], center);                                      ([, , b_incr  (i)])                                         ([r, , ])                                           square(size[top_d  d_incr  (i), ], center);                                      (, top_d  d_incr  (i));                                    }                                  }                                }                                                                hosted with ❤ by                        One gotcha I figured out in the course of this project is that , even if they’re just describing the outline of a polygon.
To account for this, I drew the wheel sections a tiny bit smaller to account for the line width I’d use in EAGLE.
This is not unlike accounting for the kerf on a laser cutter, so if you’ve done that before you’ll be familiar.
The next step is getting it out of OpenSCAD and into EAGLE.

I wrote about using OpenSCAD shapes as board outlines in another post

but this case is a little different.
Board outlines can just be simple wires, but polygons need to be closed shapes.

The DXFs that come out of OpenSCAD are just collections of segments

I needed a way to convert these segment lists into ordered lists of points that they could be entered with the POLYGON command.
So, of course,.
The operation for converting a set of segments into a ordered list of points is pretty easy.
The trick is to think of the list of segments as edges in a graph, and then the objective becomes traversing the graph and outputting a list of.
To do this, first I read all the segments into memory, then put them into a map indexed by their start point.
Then I pick an arbitrary segment, write its two points to a list, and then use the second point to do a map lookup for the next segment that matches it.
This process then repeats with the second point of each segment until we’re back to the start point.
This process nets a list of lists of points, each list being a closed polygon.
Once all the segments appear in a polygon, we’re done, and from there it’s easy to generate a set of EAGLE commands and write them into a .scr file.
This entry was posted in  and tagged ,  on  by.
This entry was posted in  on  by.

Most of the time when I’m driving an LED

I do it with a simple ballast resistor, and that’s all there is to it.

However, I’ve been working on a few LED matrix projects

and while it’s certainly possible to use the same simple resistor approach, this leads to a very dim display.
( The good news is that there’s a straightforward solution to this problem.

LEDs have a rated forward current

but they also have a rated peak current, specified at a given pulse width and duty cycle.
For instance,  are rated for 30mA forward current and 185mA peak in 0.1 ms pulses at 10% duty cycle.
Why is this stat useful.
As long as you stick to the pulse width and duty cycle parameters, you can intermittently drive an LED at an excess current and get a brighter light without burning it out.             To prove that everything was working, .

I started out by connecting the steady current resistor and probed all the LEDs

Everything lit up fine. With the baseline established, the next step was to set up the PWM signal.
According to , the Arduino’s built-in analogWrite() PWM runs at about 500Hz, which is too slow for the target pulse width.
Since I didn’t need crazy precision or performance here, I decided to quickly write up an Arduino sketch that toggled the output pin manually and used delayMicros() to set the interval.
The sketch turned out to be pretty simple: [gist https://gist.github.com/bryanduxbury/7729613] To verify that this was giving the output I expected, I hooked up the output pin to my handy.
On the first try I ended up with a   The over-driven LED was the most complicated to set up.

I plugged the peak current number into an LED resistor calculator

and it told me I needed a 12 ohm,  resistor.
I certainly don’t have anything like that on hand.
Rather than putting a whole ton of resistors in parallel, I wired up a simple constant current LED driver circuit using some common transistors and resistors.
I’ll leave the discussion of that driver circuit for another time, but the cool thing about it is that it allows the transistors to do all the heavy wattage dissipation while the resistors see a tiny load.
Closeup of the final brightness test.
Hooray for DSLR cameras.
This entry was posted in  on  by.
Older posts.
"Exactly-once" has been implemented exactly zero times.
RT @: New from the @ tech blog: "Clojure, Faster" by  @.
Search for:                                                                                                                      Post to                                                          Privacy & Cookies: This site uses cookies.
By continuing to use this website, you agree to their use.
To find out more, including how to control cookies, see here:.



Board footer

Powered by FluxBB