First performance evaluation

Checking Accuracy

Scan of the circle test

Scan of the circle test

Using my simple router code I had the X/Y table plot a square with a circle inside of it (and then added some extra code to draw a smaller circle inside that). The first time I tried this I found that one side of my X/Y table was significantly (1mm or more) lower than the other. I added a washer between the table and the piece of wood that attached it to the Y-axis drawer pull and that improved things quite a bit ( the washer is on the bottom left corner of the test pattern). Using a felt tip marker gives a good indication of the level of the work platform, as the tip will be pushed up (and spread out, leaving a wider mark) if the table gains height, or get smaller if the table drops. One of my corners (top left in the image) has a distinct dip in it, but because I started the plotter at that corner and adjusted the height as it was moving I need to repeat the test. The giant ink spot in the top middle is because I left the pen sitting on the paper while writing the code to draw the inner circle.
Continue reading

New Serial Controller

I received the new and improved serial stepper controller board (version 4) from Ocean Controls. (Cost: 65 AUD) Although it supports up to a 6kHz stepping rate, I found that my steppers can only be driven at the RATE 12 setting, or approximately 745 steps a second. I’m not sure if this is because I’m not providing enough voltage or power (currently at 6v and 1.66A) or if that’s just the maximum rate of the steppers. When I try to use RATE 11, the steppers make nasty noises and are obviously loosing steps here and there. I don’t think it’s a current issue, as the usable RATE doesn’t change when running one stepper or two steppers at the same time. At some point in the future I’ll find a higher voltage power supply and see if that allows the motors to step faster.

This speed is still a small improvement over the original stepper controller, which worked at 605 steps a second maximum speed (despite the fact that it was supposed to run at 1000 s.p.s. or 1kHz). The documentation for the SSCB says that rate 12 is equivalent to 755.9 steps/second, so my measured 745 is relatively close, and probably is due to the built in acceleration and deceleration at the start and end of motion.

The real benefits of the version 4 board is the ability to start multiple motors at the same time, and get a prompt back over the serial line when the motors stop moving so I don’t have to poll the position (which still results in the controller board dropping steps). The new board also includes two command controlled relays, which will be perfect for turning on a spindle motor via program control, and perhaps enabling the stepper motor power supply.

The new multi-motor start command and feedback when finished greatly simplified the python code to interface with the stepper controller, and the serial control board no longer drops characters (perhaps because I am sending less characters and waiting patiently for motors to finish moving.)

Limit Switches: Important!

X-axis limit switches

X-axis limit switches


I have added limit switches to my X and Y axis. I always planned on adding them eventually, but after I stripped the nylon threads on one of my flange nuts in a router accident I decided that it was time. I’m using small micro-switches mounted such that they are closed when the X or Y axis nears the maximum extend of it’s motion. The ocean controls serial stepper controller has ports for limit switches on each axis, and when the circuit is closed that axis immediately stops moving and can only be moved one step at a time until the circuit opens again. I mounted the X-axis switches on a piece of wood from my 8 foot board I had to buy for the Y-axis pusher assembly (7.8 feet left!). I can’t decide what makes the router look more ghetto: The Ikea drawer rails, or the 45 degree screws holding the piece of wood down. (Also in the running is the blob of black epoxy-putty that pushes one of the X-axis limit switch.) Continue reading

CNC Mill Electronics

Servo motor with screw drive

Servo motor with screw drive


I purchased the 3 stepper motors from a surplus supply house for $25 each, and have been very happy with them. The fact that they include a screw drive mechanism has really simplified my mechanical construction. They are manufactured by HSI inc, and are Model 43000 external linear actuators.

The electronics that control the stepper motors on my CNC mill were purchased from Ocean Controls (An Australian company) in kit form. Specifically, I purchased Continue reading

X/Y Table Motion, or 2.5 axis CNC router

Y-axis Servo and pusher assembly

Y-axis Servo and pusher assembly

Since my last post I have constructed the Y table servo mount and pusher assembly. The Y-axis servo is mounted using a pair of L-Brackets, M4 machine screws, washers and nuts that were purchased specifically for this project and actually fit the screw holes on my servo! (Unlike the X-axis servo, which is connected with a 3/32 machine screw that doesn’t actually fit the threaded hole in the servo, and relies on friction to keep it from moving.) Since I was at the hardware store, I also bought an 8 foot piece of wood (2 inches of which I used for the pusher assembly with a lot left over for things like the X-axis limit switches.)

The video below shows the router drawing a diamond (twice as difficult as a square, because you have to make two motors move at the same time). I am controlling it using a small bit of python code to issue motor commands over a serial port to the stepper controller board. The diamond is drawn from 0 to 18,000 in stepper coordinates on each axis. (The 5.5 inch range of each axis ranges from 0 to 46,000 in stepper coordinates, so the working area is about 2.5 times larger than the drawn diamond.) As you can see from the (lengthy) video, the screw drive assembly on my (1.8 degree per step) steppers makes the actual motion speed of the X and Y axis quite slow. It is unlikely that I will have to artificially slow down my cutting speed when cutting actual material.

The device holding the sharpie marker is a (cheap, and inexpensive) “Dremel Drill Press” from Harbor Freight Tools that cost me $15. I can no longer find them on the Harbor Freight website, but they do have a “Drill Press Milling Vise” for $60 that is basically an X/Y table with 8 and 7 inch travel and a 5 inch jaw capacity. Adding a few servos to that would effectively replicate my X/Y table made from IKEA parts for only slightly more money and a bit less labor, although you’d still have to figure out a way to anchor the servos and connect them to the screw drives. I plan on raising and lowering my dremel drill press by hand to cut out the parts I need for my next generation CNC mill. So my computer control program will run the X/Y axis automatically, and then give on-screen prompts to the human Z-axis operator.

CNC Router (Milling Machine) from IKEA Surplus parts

X-Table with Servo and linear bearings made from IKEA drawer rails

X-Table with Servo and linear bearings made from IKEA drawer rails

I am building a poor man’s Computer Controlled Router (Milling Machine). My first step will be to bootstrap the ability to mill needed components. Before I can make my own linear bearings, I am using cheap linear rails from the AS-IS (Surplus, Scratch & Dent) room of IKEA. Specifically, drawer rails make relatively good linear bearings. (Well, relatively good compared to what I could make myself without a mill.)
Continue reading

Passat Clutch Problem – Bleeding the Clutch on a Manual

Friday morning I got into the family car (1998 VW Passat with manual transmission) and, depressing the clutch, started the engine. The car rocked backwards (I normally leave the gearshift in reverse when parked, plus the parking break was on), the engine died, and the clutch petal stayed on the floor (not good!). The clutch petal had lost all resistance, so I couldn’t shift the car. Looking under the hood, I found that a hose leading from the brake fluid reservoir had popped off and sprayed brake fluid around. I connected it back to the reservoir, and started the engine in Neutral, but the clutch didn’t magically start working. (Sigh…I like easy solutions.) Twenty Dollar bike to the rescue!

Continue reading

Laptop Battery Refill update

I refilled the Li-ion cells in my laptop battery about 18 months ago.The battery has worked as expected since then. The only "special" treatment this battery gets is that it travels in my laptop (as opposed to being the extra battery in my backpack) when traveling through TSA security checkpoints. (I figure it's better the have the battery with the fully applied IBM label sticker visible in the backpack, and the battery where I pulled off the label sticker to dissasemble it safely integrated with the laptop.) 

Laptop Battery

Over the last 18 months, the battery capacity has reduced itself to 44% of the original value (This happens with LiIon cells as they age). My last full capacity ACPI reading is now  21060 mWh, and provides 1-2 hours of working time on my IBM X31 Thinkpad. In a few more months it will be time to replace the Li-Ion cells again. Luckly, a friend gave me an IBM T60 extended battery (containing 8 cells) that had failed. When I took it appart, it appeared that 6 of the cells worked fine, and two of the cells were dead (killing the entire battery). TaDa! 6 free replacement cells! 

MythTV / MythDVD movie ripping / playback problem (Solved!)

I have used Myth to rip a large number of my DVD's to AVI files (using either the Excellent or Good setting).  Now that I am starting to play back the movies, I have found something that is very troubling.

On many of the movies, the first 95% of the movie (e.g. 1:13 min of a 1:26 movie) plays flawlessly. However, near the end of the movie, the audio and video starts to speed up and get jerky. (Audio/video sync is also thrown off.) Continue reading

DPMS monitor control via remote control on Myth TV

I am using an LCD monitor as the display for my MythTV box, connected via an analog RGB (a.k.a. VGA) cable. This allows me to use DPMS (Display Power Management Signaling) to turn the monitor on and off from the MythTV box.

Instructions for setting this up with MythTV are here , but I found that I had to make a few changes to get things to work correctly. I modified one line of the shell script  as follows:

STATUS=$( xset -q | grep "Monitor is" | awk '{print $3}' )

To trigger the monitorpowerbutton.sh script, I placed the following into my /etc/lirc/lircrc file:

begin
 prog =  irexec
 button = TV_POWER
 repeat = 4
 config = /usr/local/bin/monitorpowerbutton.sh
end

Now my TV_POWER button toggles the power state of the monitor!