This is the experimental result that motivated me to produce a small CNC machine just for joinery operations. Both sides of this dovetail joint in 1"x6" pine were cut with the same 1/8" straight router bit - the upper board with the bit perpendicular to the board; and the lower board with the bit parallel to the board.
As I built the JBot, I took photos and posted them one at a time to show how each part was made and how they went together. I'm picking a few of those photos to provide ideas for those who're coming to the party late. Most of the machine is made of 3/4" Baltic birch plywood. The two X-axis steppers are mounted directly to the JBot's base with socket head cap screws. Each of the steppers has its own driver circuit and both of those circuits are controlled by the same control signals. I used two steppers for the X-axis because it carries the largest load. This photo shows the basic structure of the entire machine.
I made Y- and Z-axis stepper mounts from 1/4"x4"x4" aluminum angle, and the rail mounts are made from 3/4"x3/4" aluminum stock. The rails themselves are 1/2" hardened steel shafting. Multiplying the stepper's 400 steps/revolution by the Acme lead screw's 12 threads/inch translates into 4800 steps/inch, or 1/4800 inch/step which is accurate enough for most of my joinery needs.
The Z-axis stepper is mounted in the same way as the Y-axis stepper, and this photo shows a trial fit with a pair of (too long) button head cap screws.
The spindle is an inexpensive trim router that will be mounted to a tilting spindle plate with a pair of hose clamps. This photo shows the spindle and the two brackets that will cradle it securely.
Here's a quick look at the spindle mounted to the painted spindle plate with a pair of hose clamps. It isn't particularly elegant, but it works and the price was right.
I looked for an off-the-shelf hinge on which the spindle plate could be tilted, but couldn't find anything that would do the job. I made this pivot with 3/4" Baltic birch plywood leaves and a piece of 1/4" drill rod. In spite of my misgivings, it has held up quite well. You can see another view below.
The final step in building the JBot was attachment of the tilting spindle plate to the z-axis carrier. I used both epoxy and screws to attach the pivots - here you see the clamps left in place until the epoxy has cured well. That's the control box hiding below the JBot.
The JBot is hooked up to the shop PC and is running the first of the G-code motion control tests to verify reliability and determine the fastest speed at which it can be pushed. By the end of the day the test program had been run 616 times without any mis-steps (pun intended).
While the design emphasis was on being able to rout with the JBot's spindle in either vertical or horizontal orientation, even before completion of testing applications requiring other angles began appearing. This photo was taken to illustrate how the spindle might be tilted for routing angled dados.
A peek inside the control box for anyone curious about the complexity of the stepper power/control circuitry. The front panel holds the power switch, a pair of fuse holders, and grommets for the control cables; and the rear panel supports a small cooling fan. The large connector is the control box end of the cable that plugs into a PC printer port.