Tuesday, November 27, 2018

Automated Woodshop Dust Collection

tl;dr: You can see a quick demo of the second version, here:

Long Story:
A few years ago I built a basic shopvac controller, quickly followed up by a less dangerous and better version, similar to the iVac and found it really useful.  I was too lazy to turn the shopvac on for quick cuts, but almost always regretted it after, so automating my laziness was really convenient.  Last year a buddy got a 240v dust collector and I suggested we automate it, similar to I Like to Make Stuff's DIY solution for shopvacs.  I'd never designed my own PCB, so I decided this would be a good chance to try it out.  So I started with a requirements list:
  1. Control a 13amp 240v dust collector
  2. Automatically open/close blast gates of 4 or 6" size
  3. Support 120 and 240v tools.
  4. Support detecting current in-line, or by attaching a sensor to an extension cord.
  5. Have an override switch so you can force the gate open and DC on for repeated cuts
  6. Know when the bin on the dust collector is full.  It has a window you can peer through.
  7. Wireless communication between the sensors.  Because we can.

For my first iteration I designed a basic shield for an arduino Nano, using Eagle's PCB software, and then had it printed using oshpark.com, but I wasn't sure how to control the dust collector.  In previous use cases I'd controlled the shopvac using a Songle 15 amp relay, but that wouldn't work for the 2x 13amp 120v hot leads in a 3 wire 240v system.  While reading through the dust collector manual I saw it was using a large contactor, which seemed to fit the bill, but I couldn't find any 5v contactors, so I ended up using a basic 5v relay to push 120v AC to drive the contactor.

Upon showing my shield to a different friend they laughed at me and told me to get an atmega, the brains of an arduino, and build my own board from scratch.  Over the course of 3 months I designed my first PCB, learned how to reflow solder, and assembled a dozen or so circuit boards across several different iterations (and 2-3 week lead times).  Here's the first "production" PCB.  I used screw terminals to connect wires, and found this to be a real pain during assembly.

Next up was controlling the blast gates.  I'd seen similar ideas for mounting a servo to open and close a metal blast gate, so that's what I did, using a mg996r RC car servo.  Here's a demo of the gate opening/closing.  This is just a prototype of the servo and gate mounted to a sheet of scrap plywood.

You can see I have an outlet and switch in a double gang electrical box along with a 5v 2amp PSU, my circuit board, and a current transformer, which detects current running through the outlet.

Here's a full demo of the system on my kitchen counter.  This was was unplanned.  Pardon the obvious lack of a script :p

Here's what the inside of the master control box looks like. You'll find:
  1. My custom PCB
  2. 5v relay (similar, but not the exact same)
  3. 5v 2amp power supply (overkill for this controller)
  4. Double pole contactor, 40amp (overkill)
  5. 4 wire dryer cord, plugs in to the wall, and connects to the input side of the contactor.  
  6. 120v extension cord for powering the electronics, because the neutral is not connected in the 240v garage wiring.
  7. Finally, a 3 wire 12 gauge extension cord to connect to the dust collector.  This is connected to the output side of the contactor.  Because the dust collector uses a momentary switch we can't simply plug the dust collector in and leave it switched on.  So we read the schematic for the dust collector and wired ourselves directly to the motor, bypassing the built in controller.

The first test, and a mini demo of the first version, installed in his garage:

A year later I bought a dust collector for myself, and even though I only have one tool permanently connected to it, decided to build another controller.

With the first version I found the original screw terminals to be a pain, so I redesigned the PCB adding JST ZH connectors which proved to be much, much easier to work with.  Scroll up to the top for a demo of the latest version, using the newest PCB.  Here's a rendering of the PCB used in the demo video at the top.

For this version, for fun, and to learn how to write an Alexa skill, I added Alexa integration, so I could ask the echo in my garage to turn the dust collector on.  Because I am using an atmega with an nrf24l01 my PCB doesn't have the ability to talk to Amazon Web Services, so I used a Raspberry Pi.  The Pi talks to AWS, and drives the dust collector via the switch input on the controller, just like the manual switch on the tool.  Here's the second controller, installed in my garage.  Being the second one I've assembled the wiring here is much cleaner.  Note: I have a 110v DC, so I wired the load and neutral through the contactor to make wiring a bit easier.  I was lacking white 22gauge wire so forgive me for using black and red.

The next version of the PCB adds an I2C header for more intelligent communication with the Pi, and removes the screw terminal headers.

Because why not? :)

Wednesday, September 14, 2016

DIY Corner Desk

I recently finished building a desk for my wife using construction 2x6 and 2x4.

4x 2x6 KD "whitewood"
2x 2x4 KD "whitewood"
4x 3/8 5" bolts
8x 3/8 washer
4x 3/8 nuts
1x Dark Walnut stain

The first thing I did was rip the rounded edges and plane all of the lumber to a consistent thickness.  Then I laid everything out and made sure it fit snugly, using a hand plane to clean up areas where everything didn't fit together snug, and proceeded to glue.  I only had 36" bar clamps (total width is 42) so I glued the large piece and then the short piece  (which will make the curve) separately and then glued them together last.

Once the glue dried I ripped the ends with a circular saw so that everything was perfectly flush, cut a notch from the back corner at 45' (to give a good place to mount the monitor arm) and then when we (friend pictured) drew an arc using a pencil taped to a dowel.
After cutting along the line with a Jig Saw and using a roundover bit on the router to clean up the edges:

Now it's time to build the legs.  The wife ordered Xs so I figured out the width and height, marked out a "grid" on my scrap plywood work surface and simply laid out the boards.  I then lines on the borards where they overlapped so I could cut out the channel for the half-lap joint.  I used the miter saw to cut out the half-lap, intentionally going a little less than half way through so that the boards would be a bit raised.

Repeat for the other leg, and then it was time to figure out how to attach the legs to the table top.  I decided to use cleats, which were tricky to install.  Becuase of my offset half-lap I assembled the legs and the cleats, THEN glued and screwed the cleats the table.  once the screws were down I removed the legs (this ensured I had perfect spacing for my legs), and then clamped everything down.

Once the glue dried I test fit everything and put it on the ground to make sure everything set square.  Unfortunately two legs were 1/8" too long so I flipped the table over, marked off the 1/8th" and used a belt sander to get the legs the right length.  Fortunately this desk is going on carpet so the bottom doesn't have to be absolutely perfect to sit on the floor.

To stain it I used a dark walnut stain.  I removed the legs from the top, stained them first, followed by stained the bottom, avoiding standing too close to the edges so that when I stained the top I wouldn't end up applying stain to a visible face twice.  Once it was dry I flipped the top and stained the top and edges, as well as the 1" of the bottom I left unstained previously.

Finally I applied 3 coats of polyurethane and brought it in the house.

I'd take an after picture but... she buried it in crap and I'm too lazy to clear it off.

The desk is a bit wobbly length wise, but very sturdy the other direction.  The mounting mechanism for the legs isn't very strong, I'd recommend coming up with a better solution.

DIY Wall Mount Projector Projection Screen

Earlier this year I bought a new projector and needed a screen for it.  I knew the length of my TV stand was 96" and I wanted my frame to be a tiny bit wider than that so using the 16:9 aspect ratio I knew my height would be 54", by using the Pythagorean theorem I would have an approximately 110" screen (before adding the border).  I found blackout cloth that was the right size and ordered it.

1x 66"x110" projector screen material 
1x roll of felt for the border
1x 1x6 (it was what I had in the garage) which I ripped in to pieces.

I started out by building the frame, a simple square.  I attached the corners and middle "stile" using a Kreg pocket hole kit.

In order to mount the frame to the wall and keep it snug I:
1) Using a router and a 3/8" rabbet bit and cut a lip on the front side of the top of the mount.
2) Because I didn't want a visible cleat on the bottom and I wanted the screen to be snug against the wall I attached a cleat near the bottom corners using pocket screws
3) To hold the top against the wall I cut and attached two long cleats to the wall, routing a matching rabbet, this time on the wall side of the cleat.  This makes sure it's nice and snug to the wall all the way across the top.
4) Then I cut two small cleats to put at the bottom of the screen, keeping the whole thing snug against the wall.

I test fit everything like this to make sure I was happy with the set up.

Once I had my dry-fit done it was time to stretch the material.  I don't remember whose process I followed but the gist of it was to start from the middle and work your way out, keeping tension on the screen with each staple like explained on this page.  It took me about an hour to work my way around.

Once I had the material stretched I cut the felt to length and stuck it to the screen, and hung it. 

Since I love Top Gun I always use it to test audio / video upgrades.  Here's the final product.  We've been using it for 6 months now and haven't had any issues.  Today I took it down and hung a 60 mile OTA antenna behind it  (you might notice the black cord coming out the bottom right corner of the screen).  I'll hit the exposed piece of cord with some house paint in a few weeks and it will blend right in. 


Sunday, February 7, 2016

DIY Bar Stools

We needed new bar stools for our new kitchen and in typical "I can build that" fashion I said I could make bar stools like the Pottery Barn Tibetan bar stool seen here:

2x 96" 2x4 per stool (really about 1.5)

My Cut list:
3x 19" pieces (final seat pan = 18", we will trim them after glue-up to get down to that)
2x 26" pieces (cut these in to 4x 1.5x1.5x24" legs wit a 5 degree miter and bevel)
1x 16" piece (cut in to 2x .75x1.5x16.25" and 2x .75x1.5x9.25" for the rails)

I started out with the seat pan because I knew it would be a challenge.  I read a bit and people mentioned making jigs for their router.  To make the jig I used a string on a pivot point a few feet away to draw an arc I liked on the sides of the jig (1x6).  Then I cut it with a jig saw and sanded it down with a belt sander.  I used some scrap 4x4 to connect the sides and then that became the platform the seat pans would rest on (I used scrap/shims to hold the seat pan snug).  Then I made a quick sled for the router and attached rails on the underside so that the sled only slid on one axis.  A friend operating the jig:

This worked pretty well, it was built on a whim without much of a plan, but it worked out pretty well.

Once the jig was figured out I ripped and glued 3x 18" pieces of 2x4 together to make the seat pan, waited for the glue to dry and then ran it through the router sled.

Then it was time to make the legs.  I had never done a through tenon before so this was new to me, and my first few stools are not as good as the last one.  I figured out that I needed a 5 degree angle on my legs to get what I wanted so I set the miter saw to a 5 degree miter and a 5 degree bevel.  Then I drew out the locations for each tenon (using a board with a 5 degree angle cut on the end to figure out the "through") and drilled out the center with a forstner bit using a hand drill (during this project I acquired a drill press which made the last stool easier), and then chiseled out the rest.  A complete tenon:

Once I had everything put together I glued the legs together.  Once they were dry I set the seat pan on top, sanded the legs until the seat pan sat nicely proceeded to glue and nail (23ga pin nailer), and then set a bunch of weight on top to hold it down while the glue dried.

Legs attached to the seat pan:

For finishing I used the vinegar + steel wool method, and then applied 3 coats of polyurethane, sanding between coats.

The final product (each one is a little different, they are hand made after all :p):

Lessons learned:
* Glue the legs first, then attach the seat pan.  Don't try and do it all at once.
* Tenon's take a while.  It's also much easier if you have a drill press and sharp chisels
* Stools take a lot of time to make.  $100 from pottery barn is pretty cheap!
* I built each of the 3 stools from start to finish, one at a time.  I should have done it manufacturing line style building the stools in parallel rather than series.

Z-Wave Controlled Kitchen Cabinet LED Lighting

We recently remodeled our kitchen and as part of the process needed new under cabinet lighting.  Our house already has quite a bit of Z-Wave automation so I wanted it to be controllable from Z-Wave which also made it so I didn't need to figure out how to install a new light switch to control it.  Finally, the cabinet above the microwave has a power outlet in it where I could plug the lighting in.

What I used:
1x 12v waterproof LED Lighting Strip from Amazon
1x 12v DC Power Supply (15ft uses 2amp, so I got a 5amp) from Amazon
1x Fibaro RGBW LED Controller (I'm not going to use the RGB functionality) from Amazon
1x 10 pack of pigtails from Amazon
1x 66ft of electrical wire from Amazon

Note: I used waterproof strips because I wanted to be able to wipe them down if they got greasy, the non-waterproof strips wouldn't make that easy.

First, a picture of the complete kitchen w/ the undercabinet LED lights turned on:

The first thing I did was remove the microwave and verify that I could squeeze electrical wire in the gap between the cabinet and the microwave.  Then I proceeded to drill holes in the bottom of the cabinet above the microwave, and in the bottom of the cabinets where the lights would go, as well as the sides (to sneak behind the microwave) and fish the electrical wire from the lower cabinet up behind the microwave and in to the upper cabinet.  I soldered pigtails on to each end of the electrical wire making the cords the right length.

With the wire run (the piece of missing drywall was removed by a previous owner or the builder).

 Finally, I had to mount the LED lighting to the cabinetry.  The first time I relied on the double sided sticky tape on the lighting but that started falling off within a day.  I settled on using silicon caulk to attach the LED strips.  In the places the lighting was falling down I applied caulk to the bottom of the cabinet and then pressed the LED strips in to it, and finally used packing tape to hold it tight until the caulk dried.  It didn't all stick 100% but nothing has fallen in the last 3 months so I'd say it's probably good enough, but it's not perfect.  I'm not really sure what I would do different next time.  Probably use more tape while the caulk dries.  I didn't take any pictures while I was installing it, this is what it looks like today (several months later).

Wiring the lighting to the Fibaro was very simple.  I connected two pigtails to the W screw, 3 pigtails to the 12v screw, and one pigtail to the GND screw.  I did all of this directly to the terminals on the Fibaro so no soldering was required here.  Crude wiring diagram:

And what it looks like installed:

Then I got to the Z-Wave / SmartThings side of things.  Originally I wanted to control the lights by a remote so I purchased an Aeon Labs Minimote and set button 1 to 100%, 2 to 75%, 3 to 0%, and 4 to 40%.  This worked well but I quickly realized I could have them turn on/off automatically when the kitchen lights turn on/off (there's a 30-60 second delay which is manageable).   So I used the Smart Lighting app to set the cabinet lights to 100% when the kitchen lights turn on, and 40% when the lights are off because we've fond it's nice to have them on a low level as a "night light" so to speak, so we rarely turn them off.  This has worked very well and we no longer use the remote (we've yet to find the 30-60s delay a problem).

Wednesday, October 7, 2015

Arduino Driven Current Activated Power Controller

I like things to be easy, and I would really like it if the shop-vac connected to my miter saw box (or router or table saw if I've moved it) would simply turn on when I cut something.  It would definitely get used a lot more often if it happened automatically, cutting down on the amount of dust in the garage and my lungs.  There are existing products that solve this problem like the i-socket Autoswitch, but I decided it might be fun to try and build one myself with an Arduino.  So I did :)

Parts list:
1x Arduino (I used a Nano)
1x 30 amp ACS712 Current Sensor
1x relay.  I used a 30 amp relay just to be safe.
1x project box, I used a fairly large one to make wiring easier.
2x modular power outlets, I bought a 12 pack.
1x modular receptable (like you generally see on a computer power supply)
1x USB Power Adapter (I used an old iPhone charger), or something like this
1x Pack of terminal connectors
1x 16x2 LCD, with an i2c adapter (I used a version from ebay/china)
1x 1x4 LCD button (I used a version from ebay/china)
Romex electrical wire, I used 12 gauge I had lying around but for a 15amp circuit 14gauge is fine.

Finished product:

For the assembly I took my dremel and cut holes in the sides of the box, then I used the dremel to trim the "ears" on the outlets because they were a little too long to snap in to place.

Then I fit each of the power outlets and receptacle in to the box, and ran the eletrical wire.  Here's a drawing of how I ran the electrical in the box.

Then I did a thorough "walk through" of the power to make sure everything was connected properly, nothing was touching anything it shouldn't, etc. and made sure I wasn't going to set the house on fire when I plugged it in.  Then I connected the Arduino to the ACS712 and the relay, wrote a basic sketch to turn the relay on and off and uploaded it to the Arduino.  The relay toggled on and off as expected, so all I had to do was figure out how to the current sensor.

I ended up using some example code from a thread on SparkFun to read the current going through the ACS712, and then basic logic to enable the shop vac when the amount of current exceeds the set limit, and turn it off (after a configurable delay) when there is no current.   The sketch is available here.  If you don't want to use an LCD or the membrane buttons you can carve that logic out of the code.  The top line of the LCD displays the current amount of amperage, the configured / trip current, and the current state of the mode button which toggles buttons 3 & 4 from changing the current limit to the sleep timer.  The bottom line displays the sleep time, the override state, and pwr which is the relay state.

The ugly insides.

What would I do differently?
I'd use stranded wire to make the wiring easier
I'd figure out how to better mount stuff in the box so it looked good
Use a different power supply, I just ordered this and this to see what works best.

Saturday, August 29, 2015

Custom Kitchen Pantry Barn Doors

As part of our kitchen model (becoming house renovation) we decided our kitchen needed a dedicated pantry, and the best place to build one was where we generally had a mess of piled food and kitchen appliances, or the "bar" as we called it.  Also, because we suck at taking before pictures, pretend this is a before picture and there's no door in it :p
Normal doors wouldn't work with the space we had, so it was folding doors or barn doors.  We immediately ruled out folding doors and after some research we decided on a simple barn door look.  We planned to build it with framing lumber from lowes, with the sides being 2x6, the top and bottom 2x8, and the center pannels 1x6.

The opening is 61.5" wide and we wanted the doors to overlap by an inch on each side, so we made each door 32" wide.  We didn't have an extra 64" of space to the left to open the doors so we opted to make it so only one door could be open at a time.  This will make more sense when you see the final pictures below.  We bought the hardware from ebay without a track, and then bought a 100" piece of steel from a local mill.  We also decided to make our own door handles, so we did that as well.  We totally winged it, we sat on the floor in the hardware store and pieced it together to see what size we liked.

So, parts list:
2x 2" x 6" x 96" whitewood board - $4/ea
1x 2" x 8" x 96" whitewood board - used scrap we already had
8x 1" x 6" x 96" whitewood board - $6/ea
1x 3/8" x 1.5" steel bar - $20
Barn Door Hardware - $119 shipped

Door Handles (these are not the exact items we bought, but are similar):
2x 6" 1/2" steel pipe
2x 1/2" elbow
2x 1/2" floor flange
Door Handle Hardware: $35

Rustoleum white primer: $5
Rustoleum hammered black: $5

We started out by cutting the pieces for the frame of the door to length, then used a router with a 3/8" rabbet bit to cut a 3/4" deep, and 3/8" wide lip all the way around the inside of the door frame for the 1" x 6" panels to sit in.  The frame is held together using Kreg pocket screws.

The assembled frames (I didn't take a picture of the rabbet'd back side):

Next up we cut the center panels to length, and because 4x5.5 = 22, and our center panel needed to be 20" wide we used our table saw to rip 1" off of 2 of the 1x6 boards (we put these on the outside).

Here's a quick test fit of the doors, with the panels temporarily fitted.

At this point we decided which door was left and right and which was the top and bottom of each, based on how well they fit together.  Then we cut half an inch off the bottom of the doors because they were going to be a tad bit too tall for the overhead piece to the top right.

Once we were happy with the fit we started the finishing process.  We're a fan of the weathered look, and a simple way to get that is by mixing steel wool #0000 and vinegar in a container and wait a few days.  Then we applied the resulting mixture to several wood scraps so we could try different combinations of vinegar and stain.  We were planning to stain the doors after the vinegar solution, but ultimately we settled on two coats of the vinegar solution followed by several coats of satin polyurethane.

As usual we didn't take pictures of the sanding and staining process, but here's a breakdown.

  1. Sand the doors so that everything fit nicely and there were no high spots.  We started with a belt sander where more material needed to be removed (I don't yet have a planer) and then moved to a random orbital to get a finer finish.
  2. We gave it a rough / aged look by beating them up a bit.  We used a 3' piece of chain, and then proceeded to drop tools, hit the doors with hammers, poke them with screws, etc.  
  3. "paint" the doors with water to bring up all the rough bits
  4. Sand the doors, then repeat with water and sanding a few times.
  5. Coat the doors with the vinegar mixture, wait a day and apply a second coat.
  6. Lightly sand the doors with 220 grit
  7. Apply 4 coats of satin poly, hand sanding with 400 grit between coats.  The resulting finish is incredibly smooth.
Once we had everything stained I glued the center panels together (I didn't use any screws) so they wouldn't warp over time.

We only had 2x 24" clamps so I used a ratcheting strap to help hold the middle together, and then glued the other panel together a few hours later.  Because of this I went and bought more clamps so I don't run in to this problem again.

Then I fit the center panel in to the door and attached it using 1.5" brads from an 18ga brad nailer, spaced about 8" apart.  

We cleaned the handle hardware with mineral spirits and then used Rustoleum primer and hammered black paint.  We used the same paint on the barn door hardware (track included).

I installed the 100" long steel bar by myself, it was a bit tricky but not too bad.  I figured out where the first bolt would go and then held the bar with one hand and the drill with the other (after drilling a pilot hole in the stud).  Once the first lag bolt was installed I used a level and then inserted the 2nd through 7th lags.  With the track up I shimmed the bottom of each door (you can see them in the picture) until I had them sitting where I wanted them, hung the hardware on the track, drilled pilot holes in the door and installed the hardware.  Then I removed the shims.  This allowed me to get the doors exactly where I wanted them.  I stood on the stool to attach the hangers to the doors (pre-drilling the holes).

Once the doors were hung we installed the handles and then did some touch up painting on the screws:

And the final look:

To see what we did for shelving/lighting, see Arduino Controlled LED Pantry Lighting