PROJECT: BsCNC | The BigSmol CNC - CNC on Wheels

Tell us the story of your project: 

The Inspiration

One of us got the idea of making a CNC on wheels when he saw Intel's whiteboard drawing machine at Maker Faire 2017. During the summer, he bagan working on a small Arduino-based drawing CNC at home. However, the project was small and could only draw on a half sheet of paper. To challenge this limitation, we wanted to mount the part that holds the tool on a small vehicle that can navigate the xy-plane and is only limited by the dimensions of the surface.

 

The Journey

Physical Components

We started planning a design on paper with a couple sketches, but since we had poor drawing skills and struggled to convey our ideas properly, we decided to start brainstorming using CAD models on Autodesk Fusion 360.

One of our main goals was to make the device as compact and portable as possible, so we immediately decided on a multilayer design. Our first design was only two layers with four NEMA 17 stepper motors on the bottom layer and the electronics on the top layer.

After we realized that two layers would not be enough, we began to sketch ideas for a three-layer design.

After taking into account the size of the battery, we made a design in which the battery would be inserted vertically down the middle.

Since a third layer would not work with the model above due to the height of the battery, we reworked the design with the battery resting horizontally.

And we finally arrived at our final chassis design, but we faced another problem. Due to the nature of the axle of the NEMA 17 stepper motor, it did not fit with the omni-directional wheels from VEX EDR or TETRIX Robotics, so we had to modify the VEX EDR omniwheels and design a custom mount for the wheels.

With this completed, we proceeded to 3D print all our components, assemble them, and wire all the electrical components.

Software

Built an Adobe Illustrator Vector File to G-Code converter, which reads vector lines and curves. G-Code is the standard numerical control programming language used to control CNC machines, which is more memory efficient and is easier to read compared to a long list of coordinates for every single point. The computer-generated G-Code file is stored on a microSD card, which is inserted into the BsCNC’s microSD card reader module. The Arduino Mega (programmed using C++) pulls and interprets G-Code data from the SD card reader, line by line, and sends instructions to motor controller boards. There are four stepper motor stepstick drivers to control each wheel, and one H-bridge DC motor driver to control the pen clicker.

The initial plan for storing the G-code on the machine was to write it directly to the Arduino Mega, in the form of a giant string. After trying this, I soon realized that there was an upper limit on how long the string can be, because of indexing issues. I then tried splitting the G-code up into multiple strings, then traversing through each string as the program ran. This idea worked, but it wasn’t practical because onboard memory filled up very quickly, and would slow down processing time. I underestimated the size of the G-code files we were planning on storing. The only feasible option remaining was to use an SD card reader, which at the time I had no experience programming. The reader was quite difficult to get working correctly, as it would not detect the SD card in the slot and would sometimes skip lines in the G-code.

One of the biggest short comings of the current setup and circuitry is that we can only run one axis at a time, meaning that diagonal lines or curves would be impossible to draw. We used only one micro-controller, so we could not run both axis at the same time. As a work around, we devised an algorithm to divide vertical lines and curves into a series of horizontal and vertical lines, which would allow the curves and horizontal lines to be created without running both axis at once. Instead, the BsCNC would alternate between X and Y axis drive. To draw perfect curves and horizontal lines, we are upgrading the current system to use three micro-controllers: the main main micro-controller will send data to two smaller ones, which will simultaneously run their respective axes. The main micro-controller will also run the pen clicker.

After the G-code control worked perfectly, I implemented a manual control functionality that allowed for a bluetooth connected smartphone to control the machine. The BsCNC receives instructions through a bluetooth module, which instructs it to move in a specified direction.

Difficulty: 
Duration: 
Collaborators: 
vasantsaic
sainathkesari1
Number of Forks: 
0
Tools: 
Quantity: 
1
Name: 
Drill
Quantity: 
1
Name: 
Ultimaker 2+ 3D Printer
Quantity: 
1
Name: 
Various Drill Bits
Quantity: 
1
Name: 
Wire Strippers
Quantity: 
1
Name: 
Allen Drivers
Quantity: 
1
Materials: 
Name: 
Nema 17 Stepper Motor
Quantity or amount: 
4
Name: 
WINOMO Nema 17 Stepper Motor Mounting Bracket
Quantity or amount: 
4
Name: 
Polylite PLA White Roll
Quantity or amount: 
1
Name: 
Polylite PLA Gray Roll
Quantity or amount: 
1
Name: 
4 Inch VEX Omni-Wheels
Quantity or amount: 
4
Name: 
Retractable Sharpie Pen
Quantity or amount: 
1
Name: 
Uxcell Micro Motor
Quantity or amount: 
1
Name: 
9V Battery
Quantity or amount: 
2
Name: 
VEX 9V Battery Mounts
Quantity or amount: 
2
Name: 
22-Gauge Solid Core Wire
Quantity or amount: 
A lot
Name: 
Mini Breadboard
Quantity or amount: 
4
Name: 
Micro SD Card
Quantity or amount: 
1
Boards & Kits: 
Name: 
Arduino Mega
Quantity: 
1
Name: 
Stepper Motor Drivers
Quantity: 
4
Name: 
H-Bridge DC Motor Driver
Quantity: 
1
Name: 
Bluetooth HC 05
Quantity: 
1
Name: 
SD Card Reader
Quantity: 
1
Team Members: 
Team member name: 
vasantsaic
What role did this person play on the project?: 
Partner
Team member name: 
sainathkesari1
What role did this person play on the project?: 
Partner
Public
Sort Order: 
0
Teaser: 
A pen on wheels that can take any digital drawing and draw it at any scale on a smooth surface. The project is housed in a 3D-printed chassis and contains two original scripts to convert Adobe Illustrator files to a modified version of G-Code.
Aha! moment: 
We realized that because of our single core CPU limiting us to drawing with only one axis at a time, we could not draw curved/sloped lines in a single motion. To work around this inconvenience, we took inspiration from Adobe Photoshop's line command, and developed an algorithm to convert sloped lines into a series of horizontal and vertical lines:)
Uh-oh! moment: 
Since our entire chassis was designed to be 3D-printed and it's relatively large in size, we spent a lot of time waiting for 3D prints to finish. It would have been fine if it finished properly on the first go, but our 3D printers refused to give us a nice print right away, so we ended up with about twenty failed prints!
Show & Tell video as default: 
Creation Date: 
Saturday, May 12, 2018 - 10:23

Comments