Week 09 + 11


aka: last pending assignement for graduation. i love you visitor

hello 2 Axis machine

THE team

We teamed uo with Santi, my fabmate for developping a 2 axis machine (why not 3? well, first things first, there's always room for improvement and adding a 3rd axis). This has some limitations of course such as creating a drawing that is created my a continuos line, no dots since Z axis does no change.

intro + what's needed:
what's needed:
  • Arduino UNO board
  • CNC Shield v3.0
  • Pololu A4988 Stepper Motor Driver Carrier
  • Wantai Mini Stepper Motors 42BYGHW811
  • 220-12V AC adapter
  • Jumpers

  • We took (as expected) Nadya Peek's cardboard stages machine as a starting point.Great website and starting point to get the whole idea of how a multiple axid machine works.

    Find below each stage and a small review and improvementd or changes we had to made according to availability in lab, local conditions etc.

    Cardboard Shell (Axis Y)

    Cardboard sheel model is parametric and can be quickly edited and laser cutted. One of our 2 axis will be shorter than the other. This is because we will use a A4 sized sheet as canvas. Firs tests will be carried out with the longes axis. We dont ususally work in feet and inches so Nadya's models was scaled to mm. (Most machines here work in mm..). Best way to scale gh files is scaling the rhino model once baked.

    Inversion in terms of colors was needed (our settings mostly uses red for cutting and blue for engraving). Below a quick snap of the files ready to be lasered cutted:

    Some comments on the outcome (besides that the bad cardboard tests are: 1) inches conversion to mm is not exact so some measures needed to be slightly changed.

    2)Cardboard groove (sense) DOES matter. The design must take advantage of the rigidity in one sense and the "bendability n the opposite one".

    We chose to lasercut first one axis to test the material and start building the custom made parts (3d printed and laseredcut) We did try a couple of cardboards and to our surprise some of them were too thick and not as easily foldable.

    Carboard assembly

    Assembly of cardboard is pretty self explenatory video in Nadya's website.

    Once the fist test was done it looked good but the axis seemed quite fragile, mostly because of its considerable length. It's kind of hard to tell in the picture below, still, we did a couple of adjustments.

    After a couple of prototipes and several laser-cutted materials what we did is a mix of two different types of cardboards. A more flexible one for the exterior cladding of the shell and a more rigid one (double infill) for hidden ribs that end up cladded by the shell.

    Then we slightly changed the laser cutting layout in order to join some pieces that could be joined to gain rigidity:

    Below the result. See how neat?


    Refer to what's needed list above.

    Arduino + Shield

    We did not have Gestalt nodes so we sorrted the machine out using arduino UNO + a cnc command shield V3 + A4988 and 2 stepper motors. This shield has 4 motor drive modules meaning that's enought for us since we're using 2 stepper motors(X and Y axis).here'sthe stepper's data sheet.

    Volts regulation

    Thisvideo gives a good insight on how to regulate current.

    Uruguayan current is 220V so we used a current transformer to be able to plug the CNC shield (12Voutput transformer).

    Sad Note: Our transformer is not the most suitable one for this since it's 1A~ and we need a 2A~ for the motor. This basically means we can use this transfomer to run the tests but it's not a long term solution, otherwise the transformer can (and will) burn.

    This reference came handy to put all the components toghether properly.

    Setting Steps configuration

    Our motors have 1.8 degrees meaning: 180 degrees (which is a full turn) divided per 1.8 = 200 steps per turn. Connections on the CNC shield must be done accordingly, in this website you can find a more detailed explenation on how to connect MS0, MS1, MS2. Additionaly microsteps can be created to get a smaller distance between the steps. We divided each step into thirty-two (1/8) to get a more precise sroke. This means we will have 640.000 step/mm.(see universal GCode controller settings below)

    GRBL controller

    We used a GRBL controller to be able to control the Shield via arduino UNO. For that we downloaded the zip file and after restarting the IDE (arduino software) tryed the example sketches.

    GCODE Controller
    universal Gcode controller

    We have a homemade inhouse in our local fablab which we already control with this universal gcode controller so we headed that way and found this one that came more than handy. What's cool about it it's that commands do not need to be typed (eg: there's a button to reset the 0 in one axis. In the former controller that neede to be typed "G92XY" for example for setting the X and Y axis to zero). here'sa good configuration tutorial.

    The former controller has an autolevelling tool that's AMAZING for milling since the precision needs to be very accurate. We dont really need that here since we target precision by increasing the microsteps value.

    Setting up the controller can be easily done (after watching video above) by typing "$$" into te command line. This gives you a list of every setting and its current value:

    Below the final settings command list:

    We did change during test acceleration and speed value to get a more precisie, less blurry draing but the general idea remains the same.

    Servo Test

    Assembly of remaining PARTS

    Here's were all the laser cutted parts, 3d printed parts and components make out. This implied quite a lot of adjustments, re-printed and re-cutted parts and of course taylor-made parts.

    3d printed friend

    Below piece we designed in rhino for allowing the stepper to make the threaded rod twist.

    The first test worked pretty decently:

    Even making work the stepper manually the piece seemed ok and at the beginning we did int have to use the xtra holes for screws.

    Everything worked ok until we run tests with the longest axis (of course)

    In the end we did had to use the holes of the 3d printed piece to place a screw to fasten the stepper. The piece seemed to fit ok but the axis of rotation of the threaded rod wasn't precisely centered so once the stepper started twisting it was gone.

    The threaded rod was flatten first:

    2ND AXIS (x)

    Here's a rought idea of the 2 axis we're building. So far we've developed the lower and longest one. The reamaning one will be hanging and shorter (which makes sense since pending is not as stable as layered on the ground).

    Flying axis

    The shorter axis principle is the same one as the long (y) one, excep this axis will not only be flying but holding the drawing pen.Far from rocket science we laser cutter a couple of ribs to hold the X axis in the air. Quick effective solution, plus giant legs look steady so far.

    And the first cuasi complete assembly looks like:

    Pen Holder

    The upper axis will hold the pen in the following device which was lasercutted and holds a nut to be able to move allong the threaded rod:

    And here's the penholder into the threaded rod. See tests for X Axis movement.


    Here's the first test:

    So far so good. The X axis movement is not as precise as I would have liked but it still works. Probably this has to to with the fact that the pen is pending and holded with only one anchor point. We will add a more steady grip later on. Keep scrolling down my friend.


    final assembly and first test

    Well, there's not really an "assembly" between the two axis since they stand independently. What we need to improve is sketch accuracy. As you can see in the picture below the stroke is not a single stoke but the addition of small steps. Meaning you can tel every rod step in the drawing.

    The X axis was not the main problem but we still ad a reinforcement in order to improve the no-so-neat stroke:

    See below further improvements on Y (long) axis.

    Z axis limitation + GCode file

    our machine does not have a Z axis meaning all drawings must be done in one trace. This limits the outcome a little but the most important thing here is that; making a single trace drawing does not guarantee to have a single trace outcome.

    Creating a Gcode file is not precisely hard (you can have more information here) but it's important that the code is optimized to make sure there not unwanted traces. even more in our case since there's no Z axis. This optimizer code did not work at all.

    Above an example of a non optimized code we tested. The initial idea was to make a single traced 100% but without optimixing the code there were lots of unwanted traces in the middle and since our Z axis does not change we cannot get rig of them easily.

    coupling part

    The fact that the bottom axis (Y) was way longer than the upper one made it more difficult ti stabilize. In fact the coupling part we 3D printed did work on the upper axis but not on the bottom one. And we even tryed to add a screw to make it steadier.

    We tried to quickly print another longer set of pieces but we also rushed the 3D printer who went to Italy for 30 minutes and brought us italian peanuts...

    Luckily we did find in our lab a rubber rod we've been looking for weeks that solved this problem. The harde'st part was to steadily fit the threaded rod into de rubber rod.

    There's no way we could ahve recorded this but believe me it was incredibly hard to make it fit. Good news are the long axis was more firm.

    tests worked noticeably better, below a sneak peak o a 45 degrees line:

    The BOX

    The box that holded our canvas was not steady, and modified it, yes again. What we basically did is re-lassered cut the interior of the box and did a double carboard piece. // This was because we wanted to get rid of the interior ribs of the box since they seem to interfere with the 3 rods (2 alluminium + 1 threadd).

    We also doubled the triangle nut piece, meaning the machine has 2 points of traction (souble nut):

    Then the canwas itself it's a 5.5mm mdf that goes sticked into a pair of cardboards that are kind of threaded into the BOX like this:

    This allows the user to change the canvas size of the machine.

    A quick Note on the "drawble area": we designed both axis to have a canvas of 210mm x 297mm as in a A4 sized sheet. We did not use the complete drawing area for tests.

    hello Montevideo test

    Back to GCODE file: Getting a one-traced non-simple gcode is harder than expected. Here's a "hello montevideo" test that worked better (after some of the above mentioned adjustments):

    We still couldn't get rid of the depicted line below by optimizing the code.

    and a snapshot of what the "hello" sign looked like before the non-optimized line crossed meaningly the sign.

    square maze test

    after doing tests with handwritten fonts and unsimple shapes we decided to do a more traditional (eady and boring) one to get a more exact idea of the machine performance.

    Can't be unhappy about the outcome, it worked pretty good, still you can tell the difference of accuracy between the two axis, there;s room for improvement in the Y direction.

    mm to inches

    Just a heads up for future srudents: Conversion of mm to inches is not exact meaning: 2 inches are not exactly 50mm. This is not precise and when it comes to modeling it needs to be taken into consideration. (5/16 inches rod is closer to 7.9mm than 8 mm for example). This does count when relating a rod step with a distance, of when laser cutting pieces etc.

    Here's the final presentation video that talented SantiElJipi designed:

    the end, thank you visitor

    For further info on the machine you can visit our group assignement page or

    Dear lovely visitor: All the following text is about my missed machine assignement. I did not pass the fabacademy the first time because of this one assignement. Find below what we've done and please do not follow my erratic and academically not validated steps.

    Thislink was quickly expored during Neil's class. And has a quite vast idea about both, materials and joint pieces.

    I partnered up with Santi, my only fabacad mate for this assignment. We did not started from scratch but used a former open souce machine(s) to develop our own.

    This onecalled piccolo was inspired on this other one, and was our starting point. We wanted our machine to be pocket sized and keep the drawing idea.

    What I basically liked about this approch is the use of gears to cope with 3 axis. The first machine (right) kept the gear moving with the pen while the second one fixes the gear and the remaining part moves. This means the servo is moving with the gear.

    Laser cutting parts

    The laser cutting file was available online so we only had to download it and make sure to have all the materials available in our fablab -which we did-

    First 3mm mdf:

    Then 2.7mm acrilyc:

    Then stockboard:

    This thin layers were supposed to be

    For more info on later cutting you can visit my third weekassignment

    Then the model wasn't parametric, we just found a stl file and a vectorial file meaning adjusting the lasser cuting file can be a lil bit tedious. I was in charge of lasercutting all the parts and Santi took care of getting the servos and assemblies components.

    I wonder if there's a way to parametrize slots and joints with a linear ecuation. This means to set the with of the slot for example to 1ex1.005 (being e the with of the material). This means that if were able to know what percentage of the with the machine burns we don't have to fix a value. Or does de machine burns a constant value that's independent of the material width?


    We followed thistutorial which was pretty self-explenatory.

    At first glance, what could be improved here is the assembly between parts. We did not find M3 screws and nuts and the more similar ones were still not the best choice. Also, he pen holder isn't as firm as is should be. Mdf is cheap and nice but is kind of rigid for manipulation an once cracked or bended there's not really a way back. I rather using cardboard.

    I did assembly the XY axis and Santi the Z axis.

    What was carefully designed here was the cable slots. See how pretty?

    Below two servos (x-y) boxed into the mdf parts.

    Also, you are expected to need paper staces made of stock board. This can be thoughtfull but not really precise..

    Mechanical manipulation

    There's still some adjustments to be done here. Joints are not as precise for the size, therefore the movement in y is not as fluent as it should be.

    The movement in Z is the -almost- fluent one.

    Next week we will def tackle mechanisms: smoother movements and a more stable and if possible more precise joints.

    Here's Santi and my hand doing magic...not really we needed a smaller nut and were trying to fit it (more mentally that pisically) somewhere.

    Board and Programming

    This tutorial was a life saver.As you may see Processingneeds to be downloaded (Arduino too of course) and some Processing libraries (for both programs)

    Quick tips for adding libraries: you need to add the whole zip file here:

    You would then be able to install the library here as I did with attiny in my fourthweek.

    The piccolo design had its own board but could also be both, programmed and used with arduino UNO and basic breadboards connections. Here the breadboard connections

    I took care of wiring the arduino UNO to the piccolo machine.Each servo is connected to the arduino UNO as it follows:

    Before code testing, we checked out how mechanisms wereworking as shown below:

    The spiral (jetty)

    There are two sample piccolo files to test. We only (try) to test the first one: the spiral. I included Richard's Long picture here cause the X and Y axis did not worked properly and we weren't able to draw a spiral

    And below the code:

    //include the Piccolo Lib //Make a instance of the Piccolo library for controlling Piccolo //Spiral radius, reach to end of Piccolo draw area. //Min spiral radius. void setup(){ piccolo.setup(); //Setup Piccolo piccolo.home(); //Tell Piccolo to goto it's home position. drawSpiral(); //Draw a spiral. } void drawSpiral(){ float spacing = maxR/20; //Distance between loops. piccolo.beginShape(); for(float r = maxR; r > minR; r -= spacing) { for(float a=TWO_PI; a>0; a-= 0.01) { piccolo.vertex(sin(a)*r,cos(a)*r); } } piccolo.endShape(); } void loop(){ }

    #include Servo.h
    #include PiccoloLib.h
    PiccoloLib piccolo;
    float maxR = piccolo.X.getBedSize()/2.0;
    float minR = 1;
    void setup(){
    void drawSpiral(){
    float spacing = maxR/20;
    for(float r = maxR; r > minR; r -= spacing) {
    for(float a=TWO_PI; a>0; a-= 0.01) {
    void loop(){

    Feeling somehow lost with mechanisms? I did find this playlists of videos online. They do help:


    I found 2 limitations to this machine. The firt one can be easily solved and has to do with adding a weight on the oposite side of the pen/brush etc. It would certainly gain stability.

    The other limitation I encountered and IMPROVE was the pen holder.The piccolo version had 4 lase-cutted parts and was not only unstable but hard to put together.

    I modeled it and 3d printed it based on piccollo's sizes but generatio a better stability and grip.

    Above former (too many) pieces of the pen holder

    Which modeled would look like this:

    And as you can see no securre grip is provided, meanign an xtra band leash or W/E is needed to hold the pen.My intention was to make a more straight forward design (one piece) and to gain stability.

    printing a unique piece looked like quite challenging so I did another option (keeping the 4 piece st but improving the pen holder and gatting thicker pieces in order to have better stability

    Printing the pieces separately was the most obvios still quick option:

    And how the typical Uruguayan pen fits in more stable:

    Last minute (tiny) panic (W09)

    Mac Users: if you uploaded software version to sierra your SSS key will be requested (even if you asked before no te be asfed about your key here

    What happened was something internal to the Fabacademy and their server so I tryed it again and it did work.

    Week 11

    Machine Design

    Hi everybody (TIP / WARNING / ADVICE)

    Last MAchine Week we've started (and complete) developing a drwaing machine called piccollo but we did change our mind about going on with that one. This is a BIG mistake. If you (future students) are reading this I strongly recommend to focus on ONE and only ONE machine and to make the most of it. Even better if you can start developing your final project in this assignement.

    We've still sticked to the idea of a drawing robot and developed a new one called plotterboth. There is some information in the former link but what was weid is that the complete information (code, parts, etc) was scatterted arround different websites so we put a whole bunch of stuff toghether and tryed to make it work.

    In the following video we've mixed an engine from the former week to make this new machine worked. Ther

    Below the video we presented:

    To be honest the former machine we developed in Week 9 was far more complex and interesting but had several flaws starting with the non parametric design of slots meaning if milimetric screws and nuts weren't available ALL the disign should be updated which is to me a complete waste of time. What can be compared to that is to develop an open source project on this assignement. I did not wanted to develop this since I believe it's more efficient when learning something new to develop a simple machine from scratch to fully get both the mechanis and the automatization. I confirm this with the 1st week assignement: developing a html5 website from scratch prooved to be more enriching than using an existing code. Why? Because the complexity of this site is really really low and for the assignment's sake that in my case is learing I believe this is far more productive.

    As a student, my feedback is for the Fabacademy to make this even more clear. During week 9 and 11 We've asked if developing this was ok or if it lacked complexity and we had the heads up so we kept this way even if we handled other options. I see now, once the fabacademy is almost over that a more complex machine should have been developed but back then I could have not judge with even less knowledge than the one that I have now.

    This machine is far more staight froward than the piccolo and its main limitation (in which I worked ok) was the small area of drawing. I have been thinking of this before since I did a quick plan on a knitting machine for this week :

    As Thismachine is under a creative commos share-alie license I am sharing my improvement with you people.I rather call it an alternative solution and not an improvement, it was more of an investigation and change of gears and area of outcome rather than an improvement.

    I kest the 3d printing technique in this pieces:

    What's unpredictble, or at least hard to control is the position of the pen while th 90 degrees angle is turned.

    Room for improvement

    Find below some of the problems we encountered and how we sorted them out. Even if we did use as a model an existing machine severals problems were overcomed:

    Gear and Servo fitting

    RE-printing or laser cutting was needed according to the servos we did have inhouse.

    Small Gear (Z axis) redesigned

    The fitting wasn't ready stable so we design this piece as a double guide + gear. Note we had to pront the piece separately in the 3d printer because 3d printing is not a sustractive procedure.

    We designed the whole thing from scratch since the diameter of the piece needed to be reduced for better fitting and we add another plane for the gear itself to use as guide/rail for the Z axis:

    Both pieces were printed and attached together.


    Main problem were servos. Out of three servos 2 did not work and we did not have more servos to work with. Reaching this conclusion took various steps:

    We first test the code and the machine and notices only one servo twisted (see video beloe) so we switched both servos and pins and give it a try again but the only servo working was the X one.

    We then tryed again each servo separately with a basic servo code and the same happened. The gears were ok , not too tight, not too loose.

    Inthe end what we only heard was a servo trying to work but it didn't. So only lines in the X axis could be achieved if we wanted to..

    Bad luck? It does not really matter since I did experienced A LOT during theese weeks with my only fablab mate Santi. Below a quick summary of 5 out of 6 not working servos:

    Own research

    Even If we did some improvements on both machines I did wanted to test a mechanism myself an did some research on pentographswhich I find amazingly witty and remind me of geometric places riddles.

    Since we had only one servo working I did manage to dseign one mechanism that worked with only one servo:

    Above the pieces I creating using the laser cutting machine. And Below the ready-made pieces:

    I did not print nor laser cut the pieces but I think it will be a nice mechanism to test another time.What's graet about this design is that all the pieces turning with only one servo draw a perfect circle. As I said before this is the result of multiple constraints and geometric space result.


    As you may have realized before: even if we did not develop a machine of our own authorship and slightly changed an existing open source one I do believe the importance of this assignment was quite clear to me:

    As a result of both machines I spoted what I DID NOT WANTED for my final project if considered a mchine and quickly started to figure out how I was going to make that happen.

    Final Project Goal #1

    Screws and nuts are a nightmare if slots are not parametric. Remark: I have not used any slot, glue or any extra element in my final project. Every part is un "assmblyable". Meaning: no pockets needed for batteries but more important: if reproduceable in a lab no pains on local availability for materials (eg: special size screw and nuts).

    Final Project Goal #2

    My sphere mechanism to be openable will be or twistable or magnetized. No press-fit construction will be required. Same reason. Operability of a device cannot lay into nor availability of materials non a non-parametrical model and even less on a specific object example: a battery, a servo a whatever. I know this can be adjusted locally by every user/maker and fablab acoording to their needs and availability in terms of objects but one of my goals is to make the final project as versatile as possible in terms of materials. As a Latin American fab lab (small sized country which makes things even worse) I do believe on versatility and choises rather than over-constrainted open source projects.

    Hello visitor. You can download all the working files of this week #9 here and < a href="https://drive.google.com/open?id=0BwQl0kily211SklPNkpEaTJCZDQ">herefor the wekk #11. They really are both part of the same investigation.

    Go backto the INDEXor to thefollowing WEEK?

    Creative Commons License
    Please respect license terms. More info here