The modified drill press vise slides had to go, which were replaced with keyboard drawer slides mounted on steel plate back-planes. The drives nut were made from HDPE, tapped with a 5/16″ – 18 thread. The drive screws are simply 5/16″ – 18 threaded rods, fixed to HDPE end-bearing blocks with ABEC-7 roller blade bearings serving as the actual thrust bearings. The stepper motors (Minebea PM55l-048-HP69) were harvested from old, discarded HP Deskjet printers and modified to run in bipolar mode. They are coupled to the drive screw by home-made helical flexure shaft couplers made out of nylon spacers.
I found a minor flaw in the CNC’s control board. After a little troubleshooting, I found that I accidentally swapped pins 16 (VCC1) and 8 (VCC2) for each axis. It’s going to require a bit of work to desolder and resolder the affected areas of the protoboard.
One time pads are perfectly secure in theory; however in practical use, simple mistakes can render a one time pad completely insecure. I asked a friend to send me a few short messages encrypted with the same one time pad for me to attempt to decode.
I wrote a genetic algorithm to mount a dictionary attack against the cipher, giving the following results in about 10 minutes:
HOW LONG DID THIS TAKE
WHAT DM YOU THINK IT IS
PLEASE SEND THE CODES
And apparently the one time pad was not random either (WE HAVE TO OPTIMIZE IT)
The genetic algorithm was kind of a sledgehammer approach to solving this problem. When I find the time, I would love to delve deeper into the mathematics necessary for a faster, more analytical approach.
Work on the CNC mill has ground to a slow crawl, but it has basic functionality. The next step is to improve the quality of the linear slides, as the modified drill press slides really are not up for any other task except perhaps making parts for the next CNC mill in the works. I am really disappointed with the results, but it was a pretty good learning experience. I can definitely see why most mills use things like dovetail slides, open-loop control and stepper motors.
The new board uses the PIC18F4550 and can support up to 3 stepper motors. I also added provisions for reading limit switches on the translation stages. While I was at it, I made a better stand/casing for the CNC.
New Dremel (4000 series) and mount (which does not require modifying the Dremel) and the base is mounted. Epoxied heatsinks to the H-Bridge drivers and added catch diodes. Driver chips run cool now even under high loads. Took advantage of the H-Bridge driver chip’s ability to run from two separate power supplies, so now the CPU runs from USB power and the motors have the external power supply all to itself.
The controller board was finished long ago and I am able to send basic commands to actuate the motors and read the optical encoder strips via Serial Emulation over USB. The trouble now has been writing a specialized USB driver for it. After a while it really dawned on me how involved this is and that I should save that for later and just focus on getting a basic CNC up for now and start making cuts I will see what it will take to get EMC2 to talk to the board over the CDC USB serial emulation link.
After catching up with work and school, I need to detail the following:
1. How I identified the pinout for the optical encoders
2. How to read the optical encoders.
3. Provide schematics of the control board
4. Document and publish the source for the basic firmware I am using on the controller board.
I completed the controller board yesterday and ran a successful motor drive test. The board consists of a PIC18F14K50, two SN754410NE H-Bridge driver ICs, a 7404 hex inverter chip and some miscellaneous components. I will have some schematics up as soon as I figure out how to make them in gEDA. Unfortunately, there were not enough pins available on the PIC for me to take advantage of Interrupt on Change (IOC) for the optical encoders. I will have to try various methods of polling and see what works best. Also on the to do list is establishing a USB connection with the device.
Nestled under each positioning stage is a linear optical encoder strip salvaged from a used printer. This first mill is not meant to be accurate to 0.001″ (more like 0.0025″ at the very best,) so the relatively low resolution of these strips should not be a problem. The readings are now satisfactory through the full range of travel. Of course, I need to add limit switches, but that can wait a bit. The next step I’m taking is prototyping the microcontroller board to interface with the motors and sensors.