Two years of blood sweet and tears and it has finally come together! A fully opensource trackball from circuit board to software.

Check out the project page for more details.

Share Button

So i have been using a 1.5″ x 3.5′” PVC reducer as the housing for the motion sensor as well as the stand for the billiard ball. I really could not ask for anything better. The one problem i always had was the distance between the motion sensor lens and the billiard ball According the ADNS-9500 technical manual it should be at a distance of 2.4 mm with a tolerance of +-0.22. Really? 0.22 mm tolerance. I realize in the grand scheme of things a tolerance of four tenths of a millimeter is really not all that precise.  However its not really possible to eyeball that. I was having trouble getting a good measurement so I created a cutout.  I have always really like cutaway models. So after creating the cutaway I was able to get some accurate measurements. It turns out I need to cut the upper PVC ring so it has a height of exactly 8 mm.

Share Button

Custom PCB from OSHPark

Well after a very long break I finally ordered a custom PCB from  OSHPark. I am very pleased with the result, i needed to manually cut the board because had my cutouts on the wrong layer.  I am most impressed with the fact that I soldered on a MOSFET with .5mm pad the first try! After putting all the components on the board and rewiring the breadboard it worked. Hell yes. My code was all wonky and its completely unusable but the hardware is functioning.

On to some code clean up.



Share Button


To make the base for the ball of my prototype trackball I went to Homedpot and got 3″ to 1.5″ PVC bushing and a 3mm Teflon rod from (Damn that’s an awesome site) and assembled them like you see in the picture. This was a complete failure. There is some serous resistance when moving the billiard ball. I tried flat and pointed Teflon nubs with the same result. I am not sure what I am going to use in its place but I am thinking a hard smooth metal of some sorts. Its funtional so i am leaving it the way it is for now.



It never occurred to me to check the pitch of the ADNS-9500, which is a problem since its 1.78mm  and almost most everything development or prototype related is 2.54 mm.


Share Button

Shortly after I got my first computer I purchased a Logitech TrackMan Marble FX Trackball and it was glorious.

Logitech TrackMan Marble FX TrackballFor almost 10 years this was the one and only mouse/trackball I ever used. I went through a few of them. I found the sensor cover would eventually fall off the the tracking sensor would get full of gunk and stop working. I even went as far as to stock up on them after I heard they had been discontinued. unfortunately about 5 years ago my last one gave up the ghost.

Since then I have bought and/or tried out quite a few trackballs. None of them have ever come close, there was nothing particularly wrong with most of the them, they where just not the same, they where all missing at least one key feature I could not do without.

So I have decided to take it upon myself to create a trackball that(hopefully) fills in the gaps that the bin of trackballs on my shelf could not. To be honest I may be biting off more than I can chew. We shell see.

Design points I am shooting for.

  • Cleanable:
    It should be relatively simple to fully disassemble in order to completely clean every piece. I would consider myself just as clean as the next guy by I find that all my HID’s eventually get absolutely filthy. Most of them are quite difficult nay impossible to really clean well.
  • Specs:
    The technical specs should be on par with the best high precision mice/trackballs on the market. Not only that but all the physical pieces should be top notch.
  • Big Ball:
    I was actually thinking of a Billiard ball(56mm).
  • Buttons:
    You can never have enough buttons.
  • Open-sourced:
    All code, designs and anything else related to this device should be under an open source license (have not decided which one).

I have already done quite a bit of research and picked out the first two major components. For the motion sensor I am going with the Avago ADNS-9500. This was the best sensor I could find and it seems fairly straight forward to get working. For the MCU I am going with the NXP LPC1343. Since I don’t have any experience with MCU’s this was a fairly difficult decision. In the end I decided on NXP because of the documentation, the user community and the fact that there is open source drivers under the BSD license. I decided against the mbed primarily because a lot of the work is already done for you. The knowledge I gain from this is just as, if not more, important than the result.

My order from Mouser is on its way. I am quite exited I have not had a good project in quite some time.

Share Button