In my last post I mentions that I'm starting to work on a new DIY project - a “Digital Readout on steroids” for my Harbor Freight (Sieg X2) mini mill. I imagine it will be one of my “constantly evolving” projects, i.e. there likely won't be a “done” state, and new features will be added as I think them up. For now I pretty much made up my mind on what will be included in the initial version, but I will try to leave some space for future improvements. The first step will be to prototype the hardware and get the basic low-level functionality working, i.e. reading the scales, writing the position etc. I will make the design as modular as possible, so the parts can be reused or easily replaced if the magic smoke runs out. The unit will consist roughly of the following building blocks (I will go into more details in future posts...)
7-Segment LED display for the axis readout
I decided to use 7-segment LEDs vs. a large graphical LCD for two reasons: first, LED are much more readable in the garage; second, it will take a lot less CPU time. Maxim Semiconductor makes an MAX7221 IC that can drive up to 8 digits. The chip has some neat features, such as digital intensity control, 10MHz serial interface (SPI compatible) and individual segment control. The only drawback is the the price: at $10.49 it's an expensive little bugger.
Character LCD display for programming
I don't like devices that require elaborate cheat sheets for programming, so form the get go I want to have a display that shows available commands. 2X16 LCD (2 lines, 16 characters) off eBay fits the bill and can be had for $10 or so.
First of all, there will need to be a way to zero out each axis and switch between relative and absolute modes. Three panel mounted buttons will do the job. Additionally, I will need to enter number, so there should be a numeric keypad too. After some looking around I discovered that there are 4x4 button membrane keypads on eBay for under $5 shipped (from China, of course). The keypads I saw have digits 0-9, letters A-D, “*” and “#”. It would be nice to have a “+/-” key, for entering negative coordinates, but I haven't found a keypad that had one, so this will have to do.
Stepper Motor Drivers
I haven't decided what to do about the drivers yet, but the good news is that most drivers take standard inputs: step, direction and enable. For now I will use my trusty Pololu A4988 drivers (for prototyping) and switch to something more heavy duty later. I have two NEMA23 steppers laying around with 3A continuous current draw and there are quite a few inexpensive drivers that might work. If the budget allows, I might get proper drivers from Gecko (I've used them before and they are as good as it gets in that price range)
Motherboard and MCU
The DRO will, obviously, have a micro controller of some sort. I'm still undecided on which one it will be, though. The DRO part of the project won't be too demanding, as long as there are enough pins to drive different modules. G-code interpreter, on the other hand, will undoubtedly tax the MCU. My short list include Arduino Mega, MSP430 or a variant or ARM Cortex-M3 (LPCXpresso or similar). The whole thing will need a motherboard to mount switches, PCU power supply, level shifters etc. For now a simple breadboard will do but in future I intend to get a proper PCB made.
I tend to overlook this item a lot when I'm prototyping something using my bench power supply, but the steppers (potentially four of them) will drat upwards of 10A, so a suitable power supply is needed. I've come across 20A, 12V power supplies on eBay prices at around $40. I don't know how good they are, but this is as good of an occasion as any to test one out.
This should give a rough idea of the design and I will post more details as things develop. I will do my best to keep the project "sane", so it can be easily built by anyone with basic electronics skills from readily available components. I intend to make this into a full open source projects and your comments and ideas are welcome. Even if this turns into an one-off esoteric project withoug much interest in the community, the building blocks should be useful for other things.