P008 → CNC Etch A Sketch
Computer Controlled Mechanical Drawing Toy
This page was last updated June 2020;
I stopped working on this project unfortunately because of COVID, and fortunately because I got a job at Milwaukee which scratches the hands-on mechatronic prototyping itch.
Right now it is pretty crude as I focused most of my attention on controlling it accurately and adding functionality.
The current plan is to get it working well, then design a sleek case that the Etch A Sketch can pop in and out of. This will also include custom firmware and PCB that makes the whole experience more “product-like”.
Right now it is centered around an Arduino, which I already owned from previous projects. I bought additional small stepper motors and their accompanying drivers, focusing on size and price over accuracy. I plan on using these parts to create other computer-controlled automated projects in the future.
I started by controlling the Etch A Sketch through a joystick as a proof of concept. This worked well, but the Etch A Sketch itself is not perfect and that revealed itself almost instantly. There is an inherent slippage in the Etch A Sketch's internal drawing mechanism which makes repeatable patterns a challenge - yeilding disastrous results for a CNC. I took this inconsistency into account by calculating a vertical and horizontal error that could then be used to correct the values as it draws. It takes into account the direction it is currently drawing, the direction it was drawing, and where on the canvas it currently is. I found that single pass outlined text is the most unforgiving thing to draw accurately so I used that to test - shown below.
calibration
and
including error
into the code
calibration
and
including error
into the code
There are many examples of similar Etch A Sketch projects online, and I was inspired by some of them. In the end, I elected to write my own code from scratch and create my own mechanical design for this project. A common feature I am choosing not to include is an erase function. I have seen other projects use a tilting or vibrating mechanism, but as anyone who’s used an Etch A Sketch knows - it requires a serious shake to properly erase. For that reason, I am holding off on a lackluster automated erase feature for now.
The next step is getting it to run full G-CODE. I plan on using GRBL, an open-source software for controlling machines like this. It will require me to modify the stepper motors to be bipolar motor, rather than unipolar, which should also increase their efficiency (I think). It may also mean that I must abandon my custom error mitigation that I detailed above, but gain the ability to program longer operations.
Below is the C++ code that I have written so far. It has many limitations but can currently run modified G-CODE. Making it very easy to program complex drawings.