Monday, December 22, 2014

Ham Radio: KK6QZZ

Just a quick update for the holidays. After nearly two years of putting it off, I finally took the test for a Technician ham radio license on December 9th. I passed with one question wrong and my call sign is KK6QZZ. I initially wanted to get a license for high-altitude balloon tracking and now I can begin to move forward with this project. I'm not sure if I want to build my own APRS transmitter or just buy one. I'll see how this pans out.

Tuesday, November 25, 2014

Mechanical Iris

Thanksgiving break began, and I spent the last couple of days designing and cutting out a mechanical iris. I got some practice with Autodesk Inventor and using my CNC. The entire thing was designed in one part file, then exported to an assembly, where I added constraints to simulate the movement of the mechanism. Then, the face of each part was exported as a DXF file and converted into a toolpath with V-Carve.

Closed
Opening
Open
The simulation looks great, but how would the actual device turn out? Since my machine is not rigid at all, the the cuts were significantly off (when compared to other DIY CNC machines). But in the end, the final product wasn't half bad.
Cutting out the fins and support ring.
Closed
Opening
Open
A quick video showing the opening and closing:

I would say this project is a success. I'm still working on getting the machine more rigid. I made some rails out of 8020 and v-groove rails and bearings.

Sunday, October 5, 2014

CNC Acrylic

Today I tested out machining acrylic with my CNC. I used a 1/8" end mill and machined out my home's street number in 1/4" clear acrylic at a depth of 1/8". It turned out pretty well for a first attempt but the bottom of each pocket wasn't very smooth. There was also tiny "islands" of plastic that weren't cut out in several pockets. I painted the numbers black and will check tomorrow how well that turned out.

Bulb-ramping project still on-going. I got the encoder to switch between states and display the current selection on an LCD.

Monday, September 29, 2014

Finite State Machine

I've spent the last weekend learning how finite state machines (FSM) work and how I could implement one. I plan to use one to keep track of the state of a menu system for my bulb-ramper project. After browsing stackoverflow.com and Google, I found that it's actually fairly easy to implement. My code is based off of the code here. I have a list of possible states (e.g. menu1, menu1_entered, menu2, menu2_entered, ...) and a list of possible actions (e.g. button press, encoder turn, ...). I then create an array that contains the action that should be performed when a certain event has happened and what state to transition to based on the current state.

I also wanted to test SyntaxHighlighter (for any code I post here; 2020 Update: SyntaxHighlighter is now replaced with prism):

int test = 0;

Saturday, September 13, 2014

Table Clamps and Rockets

Today I had the machine drill holes into the table for table clamps. This would allow me to securely hold down material that wasn't very big. However, my calculations were off and half the holes (the outermost two columns) were unusable because they intersected the bracing below. Still, there should still be enough usable ones for most projects. I still need to cut out clamps to use with the holes.
Afterwards, I cut out two new fin designs for the Team America Rocketry Challenge (TARC) rocket my team is using. I used my new 1/8" end mill and cut at 10 ipm. I was not in a rush and wanted to make sure the fins were as accurate as possible. They came out very nicely.


Saturday, September 6, 2014

Alignment

Today I took a little time to level the spindle to the base. I did this by making sure the height of the spindle to the table was the same at all four corners of the table. Beginning near the origin, I lowered the spindle until the end mill was just above a piece of wood. Then I jogged the spindle to all four corners and adjusted the bearing pipe supports as needed. If the bit dragged into the wood, I would raise that corner up.

While adjusting a corner, the screw in the adjustment block stripped its threads out and broke off a piece of the super-glued wood (which was supposed to harden the wood so the threads would hold better). My dad and I made a new block by using a scrap piece of wood from cutting out router clamps. We took the center circle and made it into an adjustment block.

Old vs. New
New adjustment block.
I did get the machine reasonably level but since the center of the machine has a little sag (I would say ~1/50 of an inch) from the unsupported rails the alignment isn't perfect.

I hope to test the accuracy and precision of the machine with some simple shapes. I also intend to use a slower feed rate.

On another note, my 1/4" end mill and 1/8" ball mills from eBay came in a couple days ago. I should soon get the 1/8" end mill. I also received some plastic drawer cabinets for sorting my haphazard electronics workbench.

Monday, September 1, 2014

Waste

Today my dad and I cut out the back of the gantry so it would line up with the sides and have a hole in middle (like the original plans). This wasn't as easy as we expected. Only on our third attempt did we finally get the exact shape we wanted.

Back of gantry. 1/8' too short.
The first time went very smoothly, except that the length of the back was 1/8 of an inch short. The wobble from the only partially-tightened bearing rails cause this. Every other axis didn't have this issue.

To compensate for the 1/8 inch, I made the gantry CAD file 1/8 of an inch longer and updated the tool paths. After I installed the new back I would re-tighten all the axis to remove the wobble.

The second time was going along fine until... everything shut down. I opened the shed door to find everything shut off and the gantry stuck on a cable. The motor shaft caught onto the power cable of the overhead lamp and cut through the insulation. This caused a short circuit that blew the surge protector in the extension socket (I couldn't reset it anymore). I was just relieved that all the expensive electronics survived.

Uh oh.
After cleaning up the dust and fixing the lamp cord, we began cutting the back for the third time. This went off without a hitch and we were able to install the new back.



Today was definitely a day of learning and a warning to pay more attention to the machine. The torque of the motors aren't meant to be joked with.

I just need to tighten up all the bearing pipes and create a dust boot with vacuum attachment for the router. The dust is really getting out of hand.

Sunday, August 31, 2014

Precision

With the start of school, I won't be able to do as much with my CNC, but I'll still be able to do less time consuming projects on the weekend. This labor day weekend I decided to redo the walls of the gantry so the router didn't stick so far forward.

Yesterday I attempted to cut out the new sides but failed all three times I tried. The first one looked fine but when I cut out a second, I noticed they didn't line up. The back of the second one was missing about a 1/8 on an inch. I tried a third time (and failed) before realizing that the wood I thought was 12 inches wide — the width of the gantry sides— was actually 11 and 7/8 inches. I would not be able to get identical sides without perfect alignment of the cutting material. I decided to stop there and get some wider planks of wood the next day.


Today, my dad and I went to Home Depot and got 4'x8'x3/4" piece of fairly nice plywood. We also picked up a wet/dry vacuum that attached to a bucket (used for the dust collection). The plywood was cut into 16 inch wide planks, which is wide enough for the gantry sides.

A little tweaking to the CAD drawing (to fix the upper corners; I forgot to readjust the diameter of the bearing mount but I don't use it anyways) and several dusty minutes later, the two new sides were cut out. They were a 1/8" short but I expected that. The entire gantry bends back as the router plunges into the wood and the cutting forces push and pull the bit off center. It's relatively accurate for now, but I'll definitely need to tighten up the y-axis or rebuild the lower axis to use supported bearings.
Old CAD drawing
New drawing.
It was fairly easy to disassemble the gantry and drill the holes into the new sides because we could use the old sides as templates. We did have a little confusion when we forgot which pipe mounting block went where but with a little trial and error and looking at pictures we got all of them in the right place.
Old.
New.
Vacuum is pretty good for the price; just need a way to mount it and to add a dust boot.


Now the gantry looks a lot cleaner and cooler. I tightened up the y-axis and added super glue to the thread to keep them from stripping. Tomorrow I'll cut out the back of the gantry as the old one doesn't line up anymore.

Saturday, August 23, 2014

Router Clamps

It turns out that my initial tool paths for the router clamp were calculated incorrectly because I accidentally doubled the width of my end mill in VCarve (5/8 instead of 5/16). After adding a line in the CAD file where the clamp tightens and recalculating the tool paths, I was ready to cut out two new router clamps. The first one went rather smoothly but when cutting out the second one, the z-axis coupler slipped off. A slight re-tightening fixed the problem and the second clamp came out nicely.

You can see a partially completed clamp on the left (the one where the z-axis fell).

Wednesday, August 20, 2014

First Cuts

With the router mounted yesterday, I was ready to make my first actual cuts with the CNC. I designed the new router clamp in AutoCAD and used VCarve to generate the toolpaths and g-code.

AutoCAD drawing.
I flipped the y-axis direction in stepconf to fix the problem from yesterday and opened up the g-code in LinuxCNC. It looked good and the router clamp felt fairly tight so I felt ready to begin cutting. I used the smallest router bit (not exactly a "true" end mill) I had to cut this part out, which was 5/8 of an inch. With all my safety equipment on, I hit run.

Woops.
I immediately hit several problems and stopped the machine. The clamp was actually slightly loose and router could wobble back and forth. The router also flexed and jerked in the clamp quite significantly in all directions under the load. To make the clamp tighter, I just used several layers of duct tape to fill in the gap between the router and the clamp. It worked like a charm and held the router very tightly.

Duct tape solves everything.
In VCarve, I recalculated the tools paths so they only took out one hundred thousands (1/10") of an inch and slowed down the feed rate to about forty-five inches per minute.

This resulted in a successful cut. It isn't the most accurate cutout (there are visible defects on the edges) but it's pretty nice for a first attempt.

In the middle of cutting.
LinuxCNC running the machine.
Done cutting!
Not bad.
This machine makes a mess when cutting. I'll definitely need a vacuum.

Here's a list of tasks I need to do to make the CNC better:
  • Make a second router clamp and replace the old clamp
  • Buy a shopvac (or other dust collector) and make an attachment for it so it sucks up the dust right at the router
  • Soundproof the shed (sorry to the neighbors that I might have annoyed at night)
  • Add in the limit switches and the e-stop
  • Build a clear barrier around the entire table (to catch residual dust and stop any flying chips)
  • Buy smaller end mills (including ball mills, v-bits, etc.)
  • Buy a variable speed router/spindle with less runout
  • Buy a solid state relay to control the spindle
  • Make the whole machine more rigid

Plotting

I was able to finally run a legitimate test of the CNC today. I didn't cut anything yet, but I was able to plot the LinuxCNC default code with a Sharpie. It was flipped (because I had the axis direction flipped) but turned out okay. The errors in the test were from pen deflection. There wasn't enough grip to hold the pen perfectly in place, and as a result, caused the tip to wiggle back and forth as it dragged on the paper.

First plot.
To reach this point, I had to put the table and its torsion box on and mount the router. The table was relatively easy and I put it on last Sunday. I just had to glue the torsion box to the table top and then bolt that to the side walls.

Table mounted.
How not to use a jigsaw.
Mounting the router was a considerably more difficult challenge that I tackled this night. I drafted out dimensions for a router clamp and drew the lines to cut on the wood. I had only used a jigsaw maybe three times before and my inexperience showed in cutting the clamp out. I was surprised that the router sat pretty snugly in the mount. It's ugly, but it did the job.

Split wood.
I need to learn how not to split wood. And use cutting tools. (I should find time to practice.)

Router mounted.
The first thing I'll be cutting out on the CNC will be two new clamps for the router. Two are needed to prevent the router from deflecting. You can even see the router sagging inwards with my single clamp. I just hope my crude clamp (which I will likely need two of) will survive a couple of cuts so I can replace them.

Thursday, August 14, 2014

Clamps

Since the last post, I've gotten the ends of the CNC bolted to the lower torsion box. I just glued on the top layer of that torsion box and am now waiting for it to dry. I always knew that you could never have enough clamps, but today I learned this firsthand. There weren't enough clamps to hold down the top of the torsion box. We had to use the heaviest things we could find in the shed to weigh the top down.

Putting the glue on.
Weighing down the top panel.
All I have left to do is to attach the upper torsion box, cutting surface, and the router.

I also was able to get some cheap plastic from TAP Plastic's scraps. The bottom-most piece is 8.5 inches by 11 inches.

Seven decently sized pieces of plastic for $7.00.

Tuesday, August 12, 2014

CNC Almost Done

Two days ago my dad and I built a table for the CNC to sit on and moved it into the dedicated CNC shed. Just last night we moved the gantry into the shed and attached the Y-axis anti-backlash nut to the gantry. The final leadscrew was also cut to length. We still need to align the end blocks and get them bolted to the torsion boxes. The machine looks really good and I hope to complete it this week.

The shed.
Table in assembly.
Me working on the table.
The CNC machine, almost complete.

Friday, August 8, 2014

CNC Update

I've finished the X and Z axes on the CNC and was able to jog them back and forth. I'm using LinuxCNC on an old desktop to run the whole system. All I need to do now is move the gantry outside and mount it, along with the motor, leadscrew, and nut, onto the Y axis. I should be able to run test cuts very soon.




On another note, I spent the last month at COSMOS, a summer science program. Here's a link to my team's final project (a kinetic sculpture): https://sites.google.com/a/eng.ucsd.edu/2014-team-6/

Monday, May 12, 2014

Catching Up

I haven't said anything in a long time on here. But no worries, projects are still on-going. About three weeks ago, the largest axis (Y-axis) of the CNC was fit together. Not fully assembled yet, but my dad and I were able to get the gantry onto its supporting pipes. It took several passes on the router to get the gantry thin enough (bearing supports were too far out and had to make the cut deeper). We still need to put the entire base together and add the lead screws and motors, but the CNC is coming along nicely.

Thursday, April 3, 2014

Pixy

I just got my Pixy (CMUcam5) camera sensor in the mail today. Tried out some demo functions and was amazed by the tracking ability of the sensor. They are right about needing an object that really stands out. A saved the signature of a small red flashlight and it easily tracked dozens of red objects in its field of vision.

Hope to find a good use for it on a robot.

TL;DR: It's awesome.

Wednesday, April 2, 2014

Some Thoughts

I haven't written anything lately but I had some things I came across I wanted to record.

  • Looking at how CPUs work: After I'm done with the CNC, I want to make a TTL CPU. I've been reading and looking at videos of other DIY CPUs and found it very intriguing. The connection between software and hardware is something I find fascinating and I have learned a lot recently about how this works.
  • Differential Signaling: When reading about how computers work, I came across this term. It's such a simple way to get rid of noise: the signal that is transmitted is sent over two wires, with one signal being inverted. The signals are fed into an op-amp set up as subtractor on the receiving end. Any noise that is picked up will be picked up on both wires, and the noise is effectively subtracted away. The wanted signal is effectively doubled (V-(-V)).
  • CNC: I'm still working on the CNC. I got the Y-axis pipes and drilled the holes in the pipe mounting blocks. I hope to get this done soon, and try out milling (or even 3D printing!).

Sunday, March 2, 2014

LED Transciever

I remembered the fact that LEDs (well all semiconductors) are sensitive to light after browsing through Forrest M. Mims' book Timer, Op Amp, and Optoelectronic Circuits & Projects again. I had some time and connected a white LED (which had resistor soldered to it) I had lying around from a previous project to an Arduino. The LED's cathode went to ground and the anode went into an ADC channel. I printed out the readings to the serial output and graphed them with some sample code for Processing I found online.


I was surprised by how effective the LED was at detecting changes in light. I was in a normally lit room, with the light bulb about five feet from the LED. I waved my hand back forth in the beginning of this graph and one more time near the end. When I tested with just my finger going over the LED quickly, I could easily see small dips in the graph.

On thing I did notice was that the LED had a "memory effect." While it could respond to fairly fast changes in light, if I kept my hand over the LED, it took a second for the voltage to drop to a steady level:


I will test the sensitivity with a bigger contrast between lit and covered and see how fast the LED can respond. I also don't know how much noise there is in this system. I'll need a way to not trigger on noise and detect a small dip in the average voltage. 

For now, these results are very interesting and I might make a two-way transmitter with only one LED on each side.

Saturday, March 1, 2014

AVR

Slightly sidetracked, I got an AVR programmer from eBay to learn how to program AVRs outside of Arduino. I also got a serial to USB cable to fool around with the UART of the AVR. I'm using a ATtiny2313 (and also have a ATmega8).

I need to get back to the CNC and finish that first.

Tuesday, February 18, 2014

An Incomplete List

I don't have a lot of time today but here's a list the projects that are in progress:
  • A robot prototyping platform (haven't worked on it for awhile): I wanted to make a simple, multipurpose robot for trying sensors and algorithms out but got stuck thinking of a way to mount the tires to the wheels. It (if it could move) can navigate between points on an imaginary coordinate plane and as a fun test want it to be able to paint with light by taking a long exposure of the robot moving.
  • A CNC machine: I'm currently working on this and have already completed the X-axis and Y-axis but haven't mounted the motors or leadscrews yet. I have all the parts for the rest of the machine and the electronics but need to find some more free time to get it done. It's a JGRO (Plans) design. The major problem I'm hitting now is lining up the motors and leadscrews so they are perfectly lined up.
I'll add some images at a later time.

Monday, February 17, 2014

A Start

Well, this marks the start of this blog, where I'll hopefully document any projects or ideas I come across (so I am motivated to finish/think about them). Hope to actually post and not abandon it. We'll see where this goes.