This machine, a variation on the hanging-pen plotter is a conspicuous and wilfully naive attempt to break out of the pristine, pixel perfect, colour-corrected space that exists inside our computers. It's a drawing machine, that takes a pen (a human tool) and uses it to draw in a singularly robotic way, with some grand results.

It doesn't draw at all like we would (though it could), and we would struggle to draw exactly as it does (though we could).

It can draw on things bigger than itself - the question is really "how long is a piece of string?" when it comes to working out it's maximum area.

It's easier to look at what it does, than to explain it, so just have a look.

Step 1: History

Well there have been lots of new drawing machines doing the rounds lately, there's a real thirst to see devices that leap out of the virtual into the
physical. For me, it's all too easy to produce digital things which are interesting - programming or mash-ups or virtual experiments are devalued because they are intangible, you can run a hundred, a thousand, a million variations in a day - it's the proverbial roomful of monkeys with typewriters. The output becomes disposable, it get's hard to see the value, the craft.

So 3D printers and other desktop manufacturing tools and technologies (laser cutters etc) have got more and more popular, it's hard to overestimate how much hunger there is for a tangible, physical, touchable, smellable product of all this clever-clever digital work.

So this isn't wholly original, check out this prior art for more inspiration:

Hektor - the daddy of all hanging drawing machines
Der Kritzler - the smartest one yet
AS220 Drawbot - the basis for mine
SADBot - Instructable for an automatic drawing machine on the same pattern by Dustyn Roberts

But this is the original Polargraph! The term is a portmanteau word invented for this instructable, and it has caught on. People who don't know their drawbot history often use the word to describe any hanging-v plotter, but it is actually means something very specific: A machine that runs the Polargraph software.

Mostly based on the success of this instructable, I started a little workshop making Polargraph parts, and the next-generation Polargraph gear (PolargraphSD). Couple of links below:

Polargraph website
Polargraph wiki and code
Flickr stuff

<p>Motor shield, control Board motors [L293D]</p><p>FL39ST 1.8&deg;, NEMA 16 (39 мм)</p><p>6 contacts , but I use 4 pins</p>
<p>Hi! I have Arduino UNO R3. Motor shield motor control. <br>The engine is 1.8 degrees (200 steps per revolution).<br>Gear diameter 12 mm Length of circumference of 37.68 mm<br><br>What settings should I put?<br>mm/Rev = ?<br>- steps/revolution = ?<br>- step Mulitplier = ?</p><p>Another question: On Arduino UNO, a possible micro-step?</p>
Hello,<br><br>mmPerRev=37.68<br><br>The rest depends on which motor shield you're using.<br><br>Microstep is possible, but depends on the motor driver.<br><br>sn
Hi! Thanks for a great tutorial! My polargraph works very well. So I decided to install servo for better drawings. I think that the servo will raise the pen up when there is a white place in picture, so instead of simple lines there would be blank space. But it lift the gondola only at start and then at the end of drawing. So is there any trick to do this with simple (not SVG) image?
<p>I find that when I change the number for &quot;bright pixel&quot; then in some bright places my servo lift the gondola as I want. But with this change of bright pixel comes issue that my picture is more dark (you can see the change betwen left and right drawing). I just want same colours on drawings but with blank space instead of straight lines.<br> In Polargraph software there is button named &quot;Choose mask colour&quot; and I think it might be the right button for my problem but I don't get how it works. By clicking on my &quot;mask colour&quot; at image there isn't any feedback. I think it might work that I choose &quot;mask colour&quot; and any brighter colour then my &quot;mask colour&quot; is drawed as blank? Or just the one mask colour that I choose is drawn as blank? Or can I choose a multiple times and all that colours will be saved as mask colour? In that case there would have to be button named &quot;delete mask colour&quot;. <br>I'm confused :D</p>
Have just added a couple of pages on the wiki about these underdeveloped and confusing features!<br><br>https://github.com/euphy/polargraph/wiki/Masking-pixels<br>https://github.com/euphy/polargraph/wiki/Bright-pixel-and-Dark-pixel<br><br>I'm a bit stumped about the compression of the darkness. I can't think where it would occur in the code. Having a different pen width thickness would do it, remember that pen width thickness isn't saved between resets - you've always got to do it manually.<br><br>sn
Thanks for great explanation! I understand these functions now :). <br>Maybe I forgot to set the pen thickness during testing bright pixel function.
<p>Now I think is working, but my stepper motors are making strange noise (squeak and like boiling noise) and got hot very quick. Anyone can help? :) </p>
<p>What's more I've just noticed is that when I want my gondola to move right it is going down, and when I want it to go left it moves up :(</p>
<p>Did you get you problem solved?</p>
<p>switch motor cables. left &lt;&gt; right </p><p>OR(!)</p><p>change wire-couples -&gt; if red+blue is on the top connectors and black+green is on the bottom connectors, switch both pairs. Put red+blue down and black+green up.</p>
<p>Use only steppers with lower amp rating. Like 0.4A which is common with 30mm steppers. 1.3A motors can fry the L293D. 2.0A motors will fry it.</p>
I didn't find the RENDER VECTOR command <br>I foud RENDER PIXELS, is it the same ?! And it dosen't function <br>
<p>ok I asume that there is somthing I missed .. </p><p>Reder pixels after I select the area around the vector dosen't function propably </p>
Render pixel and render vector are entirely different and separate.<br><br>To render pixel, you load a bitmap image, and select an area of it.<br><br>To render a vector, you select an area you want to draw in, and &quot;set frame to area&quot;. <br>Then &quot;load vector&quot; and choose your SVG. <br>Then &quot;move vector&quot; and &quot;resize vector&quot; to place your vector artwork.<br>Only the area inside the frame (red crop marks at the corners) will be drawn, or be visible in the preview.<br>Click &quot;Draw vectors&quot; to build the commands to draw the vector.
<p>thanks I followed your instrctions .. </p><p>There is small problem I faced </p><p>The path is not good </p>
<p>hi there !!</p><p>Sorry for distarbance .. but I've no more time to submet my tech.project , and you helped me so mutch &quot;THANK YOU BRO&quot; .. I've just the path of the vectoŕ and how to compelement it or make it the same ?! </p>
<p>Stepper motors keep vibrating, they don't move when I set points. I think I'm doing wrong connections. Can you please tell me how to connect the stepper motors to the motor driver.</p>
<p>If you use adafruit shield you must connect the tearms of each coil within same side example:</p><p>1st chick the motor end tearms by ohm-meter to find where is the ends and the centertaps of the same coil.</p><p>M1 has two input junctions you must put the ends of the same coil in this two junctions</p>
<p>I tried all the permutations to connect the 4 wires coming out of Nema 17 to the motor driver.(24 permutations) No luck till now. For each combination, the stepper motor just vibrates. I have no idea what's wrong. What should I do?</p>
<p>OK!! </p><p>What about : STP-59D3012 /22545 (stepper motor) </p><p>Driver : adfruit shield </p><p>I think it's 12V motor with 6 pins </p><p>Can It be matched to gather?! </p><p>What about the programme ?! </p><p>If you help me I would be great happy with that .. because it's my final project to be graduated .</p><p>Thank you again ?</p>
<p>I think I found my misstake .. also thank you for your help </p><p>Some other quastions : </p><p># how to chose the location of the motor (R, L) m12 , m34 adafruit shield posision.</p><p>#how clearfy the imag and how to use SVG for that </p>
<p>For example, the figure in the file will be able to draw? Roughly A3 size. How long without losing quality.</p>
You'll just have to try it and see!
<p>hi there !!</p><p>The program ( arduino source ) perfictly downloaded ... but my steppers didn't work </p><p>I use 28BYJ-48 with ULN2003 </p><p>The servo perfectly works ..</p><p>I followed all the instructions that I found for definning the pins in configuration part </p><p>What did I miss and how to fix it ?!! </p><p>Thank you !! </p>
Hi sorry, I've never used this motor and driver myself.<br><br>First step: Make sure the steppers, and the stepper drivers work outside of Polargraph.
<p>Hi! There is an idea to upgrade your project. To communicate with the Arduino controller, via USB. I want to consult with you about the SVG format commands, which are transmitted to the line in port of the Arduino controller.</p><p>Question:</p><p>Commands from the SVG file in this format is passed to the controller? (example)</p><p>&lt;path d=&quot;M117.136 51.4184c0.245,0.035 0.4897,0.035 0.7349,0.1225&quot;/&gt;</p><p>&lt;path d=&quot;M117.871 51.5409c0.455,0.5424 0.5777,1.2773 0.4197,1.96&quot;/&gt;</p><p>&lt;path d=&quot;M118.29 53.5009 c-0.5774,2.345 -1.6098,4.6197 -3.1496,6.4923&quot;/&gt;</p><p>Understands the format controller?</p><p>Or they are transmitted in a different format?</p>
<p>Well! I understand that the SVG file can understand your device's firmware. To accomplish this you only need your controller software? Perhaps using another terminal application to transfer a SVG file?</p><p>Thank you!</p>
The controller software can load SVGs and then sends movement commands to the device one by one.<br><br>The communication protocol is a bit like g-code, but it isn't the same.<br><br>There isn't a way to send raw SVG.<br><br>A motor control board with two L293Ds is a good one to use. If it isn't like this one (http://playground.arduino.cc/Main/AdafruitMotorShield), then you will have to define the control pins and do the motor setup in the firmware yourself.<br><br>Good luck!
<p>I admire your project!!! Going to implement it!!! You're cool!!! One more question!. Is it possible to use these components?</p><p>Arduino Uno R3, a Debugging Board for microcontroller atmega328P<br>Motor shield control Board motors [L293D].</p>
<p>Hi! Great project!!! I have a question. You can pass the ready G-code to Arduino via the terminal app? Do not use your software. Will work? If not, then how to do it?</p>
Nope, Polargraph doesn't read g-code sorry.
<p>So I noticed that if the Aruino is not connected and I click &quot;render pixels...&quot; that I get the option for &quot;Spiral&quot;, but once I connect the entire thing and Processing shows the polargraph as connected and ready then I loose the &quot;spiral&quot; option as well as another option... Why might this be? Is the spiral dependant on other factors?</p>
Hi exactly yes, spiral pixel only works on a MEGA-based Polargraph machine, not an UNO-based one unfortunately. There's not enough memory on the UNO for the curve routines!<br><br>The machine tells the controller what kind of machine it is when it connects, and the controller will only show the features that it knows that machine can actually execute.<br><br>sn
<p>When i put in a command for the motors to move they keep moving and wont stop.</p>
<p>You need to upload machine spec, and then &quot;set home&quot;.</p>
<p>Thank you very much i was forgetting the machine spec!</p>
<p>Hi,</p><p>I would like to draw a picture in the style like yours from Marilyn Monroe (https://www.instructables.com/file/FYP17BPGUVTYORL/). My problem is that the generatet path is not locking very nice. There is not really a difference between the black and the white elements.</p><p>My setting:<br>- Machine width = 708<br>- Machine height = 536<br>- NEMA 17<br>- Adafruit Motorshield v2<br>- mm/rev = 126<br>- steps/rev = 200<br>- Step Mulitplier = 16<br>- Drawing Size = DIN A4 (210x297)<br>- Pen size = 0.5</p><p>My process:</p><p>- Start polargraphcontroller<br>- Load image file (jpg)<br>- Resize image<br>- Move image<br>- Set area<br>- Set frame to area<br>- Set Gride size = 10<br>- Set Sample area = 10<br>- Render Pixel: Top-Right; Solid Square Wave<br>- Generate commands<br><br>In the attachment you can see the input picture and my generated path. </p><p>What I am doing wrong? <br></p>
<p>Hi Dominik! I scratched my head at this one, but I spotted the problem:</p><p>&quot;Solid square wave&quot; is exactly that, it's solid and there's no shading. It's always at maximum black. </p><p>All of the others do shading! Marilyn is done with variable frequency square wave.</p><p>sn</p>
<p>Hi, thanks for the fast reply. I have tested it with frequency square wave setting but the result seems similar.</p>
<p>Ok looks completely different to me - I'm not sure what you're expecting to see?</p><p>The preview shows the density of each &quot;pixel&quot; as a circle shaded from deep red (high density) to white (low density). The ones that are over the black areas are red, ie high density. The ones over the white areas are white, ie low density (or empty).</p><p>They are very small, so it's quite difficult to see, I'm not sure why that is, or what controls the size of those indicators.</p><p>What I believe you'll find though, is that your machine is unlikely to be able to render those pixels very well. For such small pixels, you really need a very narrow pen too. If the machine can't fit much shading into a pixel, it tends to either render everything as blank, or everything as solid (there's a bit of a guide to this here: </p><p><a href="https://github.com/euphy/polargraph/wiki/Empty-pixels" rel="nofollow">https://github.com/euphy/polargraph/wiki/Empty-pix...</a> )</p><p>Do you get any error messages in the error log (to the right-hand side of the command queue) when you press &quot;generate commands&quot;? If you don't, then you might be ok!</p><p>sn<br></p>
<p>I thought that the red lines show only the way of the pen. Now I made a test run and it works perfect :) Thank you very much for your support! Great work!</p>
Hello, really nice project.<br>You already answer this was possible wigh a mega 2560 wigh light modifications of the sketch but i owned a mega with a Ramps. Still realizable ?<br><br>Thanks in advance,<br><br>Vivian
<p>When I set my 200step motor to 400steps and a multiplier of 1 the movement is totally messed up. Approximately a 1cm move downwards moves the gondolo more like 10cm. </p><p>So I don't understand why you recommend to set the stepper motors to these values (doubled steps) that do not work. And as they don't work for me, they will not work for anybody else. No just kidding. Is there some math behind it or why is this?</p>
<p>nevermind. see this :</p><p>http://www.polargraph.co.uk/forum/polargraphs-group2/troubleshooting-forum5/cant-get-my-settings-calibrated-thread530/</p>
<p>When I move vector it won't release when I click. Weird. </p>
<p>Figured it out. One has to Select Area and Set frame to Area before placing vectors. </p>
<p>Thanks for a great tutorial! More details on </p><p>http://pappmaskin.no/2016/08/pen-plotter-1/</p>
<p>Hello euphy!</p><p>i loved this proyect!</p><p>i have one problem though... in my &quot;powerfull&quot; laptop it works great, everything</p><p>then i try a netbook or basically any other computer and it stays in busy (when trying to upload sizes to the machine) for over one second, even though, if i SET HOME , it doesnt compute, and it doesnt change place, i tried changing the cable, reinstalling arduino, reinstalling java, (i need to try picking another serial library for processing, though my powerfull laptop doesnt have it and still works), i need to check if the arduino co processor requires diferent drivers, great job BTW</p>

About This Instructable




Bio: Like everyone, I like making things. I'm currently a computer programmer by trade, which I adore, but I like building physical things when I ... More »
More by Euphy:Polargraph Drawing Machine Linear Clock Mechanical expanding cardboard lamp - This way up! 
Add instructable to: