Friday, September 30, 2011

Sand Gloves

I started looking at the hand support options today.  I originally was considering using silicon coated modeling clay, but I don't think it will be quite stiff enough.  This morning, I grabbed a couple of latex medical type gloves and filled them with some wet sand.  Obviously, the laytex gloves are a temporary solution to play with.  The first one had way too much water in it and is too squishy.  On the second one, I went very sparingly on the water and it turned out much better.  It makes for a moldable blob that is very firm that should serve as a hand support.  Eventually, the buttons and trackball will be attached via velcro around the front and side portions.  This would allow the end user to rearrange the trackball and buttons in any order they want and custom fit the support to their hand.  It should allow maximum flexiblity and comfort. 

As you can see on the breadboard, I have three wires arranged as touch sensors (one with a quarter attached) for left, middle and right clicks.  I also got the scroll wheel functioning with the rotary encoder there on the board.  Lastly, there is a button and associated tri-color LED that is used to swap between the four user selectable resolution modes inside the optical sensor.  This essentially controls how much movement the pointer makes relative to the amount of movement you put into the trackball, allowing for either lightning fast moves or very slow accurate moving.  It operates somewhat like what happens when you change the gears on your bicycle.

Tuesday, September 27, 2011

Feeling a bit touchy

I've spent the last few days playing with mouse capacitive touch pads.  I have successfully setup a touch sensor that is operating as my first mouse button.  The operation is dependent on measuring the time it takes to charge the internal pull-up resistor and a small external capacitor (470pF).  There is also a 100K resistor to ground.  If someone is touching the sensor pad, it takes longer to charge.  That time differential is used to register capacitive touch events.  I did notice that this only works on the PWM equipped ports on the Teensy 2.0 board.

Here is a copy of the subroutine that reads the time it takes to charge:

int getButtonStat(int b){
  digitalWrite(b,HIGH);
  int i;
  for(i=0; i<16; i++){
    if(digitalRead(b) == HIGH){
      break;
      }
    }
  digitalWrite(b,LOW);
  delay(1);  //needed to fully discharge the circuit
  return(i);
  }

This was inspired by the work done here, which uses the same proceedure essentially.

This part of the project is driven by the need to make this trackball silent.  My wife and I really don't like the constant clicking for three hours while I'm raiding on my druid!  My computer sits in the living room, so the constant clicking is teadious for everyone.

Sunday, September 25, 2011

First prototype working

I spent most of the day building up the first prototype PCB with the related parts.  I choose to cook the board on the stove top in a pan to reflow the SMD components.  After three rounds of cooking, they were all finally flowed successfully.  After that, I manually soldered in the optical sensor (16 pin DIP package) and added the eight control wires that currently link back into my bread board where my Teensy is controlling the show.  Final testing showed I had just one bad via that needed to be reworked.  I guess it lost its wire during the cooking process.  It was a simple matter to fix, then the board tested out great.  I fired it up and to my surprise, it worked perfectly!  My first PCB milled and first time reflowing SMD components.  I was very happy. 

I then spent a little while connecting the board to the underside of the ball support socket.  After all that, I spent a few hours polishing up the code.  I now have full mouse control from my newly created trackball.  It works!!!


Saturday, September 24, 2011

First PCB Milled

The SMD parts arrived today from Mouser.  That got me into gear to think about milling my first PCB. I gotta say, it took me about three hours total and I learned a bunch.  I had challenges at about every turn, but I was able to adapt and move forward to get the job done.  Pictures are below.  It isn't all that pretty, but I think it can be considered a success.  The big DIP chip (the optical sensor chip) in the middle fits perfectly and the cut-out down the middle allows the lense to fit up under the optical sensor properly.  I used a larger bit than the program called for (0.03125" instead of 0.025"), but it is what I had on hand and was close enough.  That is why the pads look a little thin.

Here are the steps I followed:

1 Manually modify drill file code for x0 & x1 (0.125") to be -0.31" deep (z-axis) (0.25" + 0.06")
2 Tape edges of PCB material to spoiler board
3 Zero X0 & Y0 where Left Pin Hole will be after drilling
4 Run Drill File, using 0.03125 end mill for all but 0.125 holes
4.5 Run height mapping python script with top etch file.
5 Run top etch file using 45deg taper PCB bit
6 Flip board in X axis
7 Using 0.125 alignment pins, line up holes in PCB material with holes in spoiler board
8 Tape PCB material to spoiler board
9 Remove 0.125 alignment pins
10 Jog to x1, re-zero x axis at x1
10.5 run height mapping python script with bottom etch file.
11 Run bottom etch file
12 Run bottom Mill/cut-out file using 0.03125 end mill.

Lessons learned:
Broken off carbide end mills make great allignment pins.  They are exactly 0.125" inches around and fit the alignment holes tightly, when you drilled the holes with a 1/8th" bit that is.  The only thing is, they are really way too long and stick up.  I tried to cut one down shorter earlier today with Dremel tool cut-off disk.  The carbide end mill shank just laughed at me and thanked me for giving it a nice shiny polish in that part.  Needless to say, I didn't get them cut.  That is why I use them to line-up the board to the spoiler board below, but remove them after I have secured the PCB material with tape.  The trace isolation program does in fact stop at each hole and mill them out, so if you had a pin there near the height of the board, it would break the bit I'm sure.  I later read that you would need to cut carbide steel like this with a diamond blade.

EMC2 doesn't want  you to insert a tool that is a different length than the one you started with.  So, when it prompts to change tools and you put in that really long end mill that needs to be re-touched-off for height, you gotta manually stop the program, get the z-axis re-zero'd.  Once that is done, you gotta scroll down your program, right click the next line that needs to be executed, and tell EMC to "execute from here".  This bypasses the first part of the file and keeps you going.  My component hole drill bit overall length was much shorter than my hole alignment bit, causing this issue.

Before running the height-mapping software, be sure to properly attach your probe and ground the top plane of the PCB material to get the probe to work.  I forgot to do this part...always time to do it again if you don't do it the first time :p

The height-mapping script maps the whole area, including the place where you have already drilled holes.  It actually starts at x0y0 and trys to jog down inside the hole sitting there.  I had to trick the probe by using a jumper wire to prematurely short the probe and cause a reading, even though the bit didn't actually touch the surface (since it was sitting over the top of a hole).  I'll need to figure out what to do about this to make it right and not trick it to get a fake reading.  I'm sure this affects the output of the program by giving a non-exact reading in this area of the board. 

Be sure your spoiler board is big enought to provide support after you flip the board over.  In my case, part of the board was hanging off the spoiler after the flip.  This caused  a shallow milling on the back-side of the board due to lack of support.  I think it will barely be OK, but it doesn't look quite right. 

Views of the board from front and back.  Diameter is 1.25 inches



Board layout view from Eagle:

Thursday, September 22, 2011

New Spindle Mounted

The new Wolfgang Engineering TB-650 is now mounted up to my Zenbot Mini.  I got tired of waiting for Zenbot to make and send me the right mounting plate, so I took things into my own hands.  I just removed the existing Z-axis plate, and drilled the 1" x 1" hole pattern into the front that matchs up with the aluminum mounting plate that came with the new spindle.  The whole thing is about 0.5" out further than is needs to be since I have both mounting plates screwed together, but for now, it's on there and looks pretty good.  If at some point I need that extra 0.5" back on my X-axis travel, I can look into something better later. 

I ordered the SMD electronics from Mouser, so those should be here in a few days.

I have been continuing to wrap my brain around how to mill a double sided PCB still.  The whole side-to-side registration operation is probably more simple than it seems, but I think I have a strategy worked out.  I just won't know until I try. 


New spindle mounted:

Monday, September 19, 2011

Wolfgang Engineering Spindle Arrived!

The Wolfgang Engineering TB-650 spindle and it's associated variable speed power supply arrived today.  The spindle and mounting hardware looks great.  A fine piece of precision machined goodness.  to be fair though, I can tell that the collet is indeed hand-made.  I can see a slight mis-alignment in one of the slots, but it should still work fine. 

The variable speed power supply is another story.  What I received was a standard 12V power supply, commonly available on Ebay, a "servo consistancy master" module and a tiny little electronic speed control module.  This was all contained within a generic plastic electronics box.  Unfortunately, none of the components were secured inside the box, so they were all banging around inside.  As far as I can tell, the servo module is used to generate a pulse width modulated signal that is fed into the electronic speed control that ultimately drives the motor.  By the way, the motor is the same type of motor that you use on a remote controlled car.  He must be an RC hobbiest to provide two components commonly used in that hobby.  So, if I had to do it over again, I'd look elsewhere for the electronics portion of this.  I suspect it is tested and works though, so we'll push forward!

I'm going to take the contents of the power supply box and just mount those to a piece of ply-wood and screw that to the wall.  This will also allow the power supply to get access to air for cooling purposes.  It had no chance to stay cool inside that electronics box with no circulation fan at least.

Unfortunately, the mounting plate for my Zenbot has not arrived yet, despite being ordered over a week ago.  I checked status with Shaun late last week and he told me that all his machines had been tied up and he didn't have a chance to get it done just yet.  He committed to get it done either last Friday or over the weekend.  I've yet to hear that it was done and shipped yet though.  I may end up having to make my own mounting plate if this gets delayed much more.  I prefer to have the official mounting that Zenbot supports if I can, but, we'll see.


Picture of the Wolfgang Engineering TB-650 that I received:


My home-made variable power supply arrangement.  The electronics all came from Wolfgang Engineering, but needed a better setup.  I mounted them to this board:

Sunday, September 18, 2011

Battle of the CAD/CAM Sofware

Today, I spent some time getting familiar with Target 3001 as a test drive.  It seems very functional and able to do board design.  I did like the part search feature that narrows down the search based upon component package and size.  My biggest concern is the fact that most of the aspects of the program are geared for european countries, including the package library.  While this isn't the end of the world, it does pretty well ensure that I'm going to be forced to design every part.  Of course, I'm already well versed in designing parts in Eagle. 

I also put the finishing touches on my EMC2 controller installation.  Once it all looked good, I dragged it downstairs into the workshop and hooked it up where the Mach3 machine used to be.  I put EMC2 through its paces and everything worked perfectly.  I had added two features to the base installation which is the PCB height mapping python script and the Z-axis auto touch off plate with the probe.  Both worked perfectly as well.  I had my little Zenbot tapping away on top of a blank copper clad board as it mapped out the surface for any high/low spots. 

So, with the pros and cons of both approaches, I think I'm going to go the route of simply replacing my Mach3 software with EMC2 and continue down this path to get PCBs milled.  I still need to actually run a real job with the new EMC2 control computer and software to be sure it can do everything my Mach3 installation was doing with as much quality.  So far so good though.