This machine has no purpose. It's a useless machine. When I heard about the Macrofab design contest. I thought this would be a perfect opportunity to make something that no one else would make, and to learn a couple of things that I’ve been interested in.
The mouse controller consist of a mouse that is connected to a Raspberry Pi. The Raspberry Pi converts the position of the mouse to G-code commands with a python script. The G-code commands are sent to an Arduino through USB. The Arduino is programmed with GRBL and is fitted with CNC controller shield. The Arduino CNC controller drives 3 stepper motors that control a 3D printed and laser cut XY gantry. The XY gantry moves a mouse.
Details
Files
parts list.xlsx
3D printed, laser cut and purchased parts
Microsoft Office - OOXML - Spreadsheet -
12.42 kB -
08/09/2019 at 22:10
Included in this post are the STL and DXF files needed to 3D print and laser cut the gantry. STL files of the laser cut parts are also included in case a laser cutter is not available. The STL and DXF files can also be downloaded from Thingiverse. I have included the link below.
I've also included a parts list, which includes the quantities needed for the 3d printed and laser cut parts, and a list of purchased parts and sources.
The Fusion360 design file for the XY gantry can be found in the link below. This can be used for determine parts placement for the 3D printed and laser cut parts.
For this project I glued all of the mating 3D printed part together. Since I printed this with ABS I was able to make glue using acetone and failed prints. Super glue or Bob Smith will also work.
After the 3D printed and laser cut parts were assembled the motors and belt drives were mounted. The motors were bolted to the motor mounts using the M3x6mm screws. The idler pulley shafts I bought were to long and need to be cut down to 20mm. The idler pulley assembly was put together using the M3x30mm screws and nuts. The belts were cut to length and clamped using the M4x20mm screws and gear clamp belt clamps. The spring tensioners were added to the center belt.
2
Programming the CNC Controller
The CNC controller was programmed with GRBL. The github link for GRBL can be found below.
Below are photographs of the CNC controller shield. These can be used to determine jumper position, wiring, and stepper driver orientation.
For the stepper motors I used I set the drives up for 1/4 step. This can be set using the jumpers positioned below each of the three large capacitors. Note that only the middle jumper is set.
Since the y-axis has two steppers I used driver A to drive the second motor. This is done by adding the two jumpers on the left to the y-position. Since the two y-axis steppers need to spin in opposite directions, I wire one of the steppers backwards. Note the wire color pattern for driver Y and A.
What a well documented project. I actually have a possible use for the main parts of it, controlling a stepper with a mouse, so thank you. I've got a lot of electronic experience, I've fiddled with a Raspberry Pi for 3D Printing (Octoprint), have some long time Linux system admin skills, and I build a small CNC router using Geko drivers. But Arduino and Python are new to me. I'm going to give it a shot.
Have you tried attaching the controlling mouse to the mouse controller to see what kind of motion feedback you could create? I imagine if you attached it in the same orientation and gave it a bump to start some motion it would just track to the edge and hit a side, but if you attached the controlling mouse in a different orientation maybe you could get it to chase itself around in a circle or something. :)
What an amazing post really its a nice idea to controll the mouse and you can check its speed by visiting easycpstest website.