Assignment: Propose a machine design with at least one axis, define and divide tasks among members of your group, automate your machine. Document your individual contribution and also as a group on your lab page.
Team from Ajaccio: Lucia Simeoni - Frithjof Kuntze - Gerard Bandini - Yann Even
Introduction: For this two weeks, we decide to make a drawing machine capable of writing and drawing. The XY travel (printable area) of the machine is 30x30cm. It can work with any paper up to and including that size, including envelopes, note cards and why not cookies (with a food pen). You can also use implements that aren't pens, such as pencils, chalk, charcoal, brushes, and many others. Now, the challenge is to bring together our diverse skills, for make the drawing machine!
• And now we need to:
Mechanism/Structure: Gerard and Yann
3D model: Lucia and Gerard
Build the machine: The Team
Document the project for the group: Lucia
• Equipment and software used:
Materials: MTM KIT - BOM
Extra material: Plexi, Plywood, Piece of CD player, Acrylic, ABS,
Software: Illustrator, Inkscape, Sketchup, FreeCAD, Repetier Host, Cura, TracFoil, SolidWorks, VCarve, Premiere Pro
Machine: Laser cutting, Mini CNC,
Problems: 1/ problems with the size of our structure, especially at the interlockings. 2/ In the kit, a metal rod has a different diameter than the other. Is it a joke???????????????? 3/ For put the pen on the machine, we would like to use a servomoteur but the electronic maps don't support it so we use a piece of an old Player CD (rest in peace dude).
Useful links: mechanical design - Machine Design
- Machine that makes- AXIDRAW
Files: Sketch - 3D model
- Laser cutting 1- Laser cutting 2- AXES 1- AXES 2- CARRIAGE NOTCHES- PENHOLDER- PENHOLDER SUPPORT- PEN TUBE
First of all, we wanted a machine for the FabLabAjaccio. Something that could be useful to the users of the FabLab. Quickly, Frithjof propose the drawing machine. And Yann wants a machine with the ability to write too. Okay great. We all agree for this machine! We are inspired by the AXIDRAW machine. So... Leeeeeet's goooo!
• We start with sketch:
The idea is to create two axes (XY). Each axes is compound of 3 metallic rods, which form a triangle. We thought it would be better for the stability.
• The final sketch:
• The 3D model:
• It's time to build:
Yann and Gerard start with the kit. So, quickly we have our basical structure. Then, Lucia cut the feet with the laser cutting for make prototype. During this time, Gerard design the "penholder" with the help of a piece of cd player. Yann and Gerard made drilling, sanding and painting :D. Yann cut the final feet with the CNC and make a FabNet board. Meanwhile Frithjof tries to move the mechanism (but this is more explain in a second part).Focus on Gerard: How he made the pen holder? First of all, he removed an old cd player with the help of Marylin (the FabManager of FabLabAjaccio). Then, he sawed a portion of the optical unit to adapt the pen holder and gain a few millimeters. After that, he designed 3 pieces on FreeCAD: an adapter for attaching on the optical block, the pen holder himself and a tube in which drag different size of pen. The adapter was cut with the laser cutting into a black acrylic because it's such a simple piece that 3D printing was useless. The support and the tubes were printed in 3D.
Install of the Gestalt framework proved to be surprisingly easy. The laptop used to drive the virtual machines had a full python installation so all libraries where available and 'python' generated a command prompt from the DOS shell. The interface board was build and connections made.Both XY and single line test programs worked with the caveat that the temporary file (*.vmp) must be removed whenever changes are made to node ordering. Potentiameter adjustment on each board was necessary to reduce current draw as the driver chips would heat quickly and initiate thermal shutdown. Once correctly adjusted, no overheating was observed and motors could be left poered on for extended periods of time.The gestalt system requires XY coordinate data to action the stepper motors. The coordinates are generated using the source code supplied to drive the axidraw printers. The software provides an interface from which the drawing coordinates generated using inkscape are captured without having to manage the intricacies of the SVG format. Axidraw creates the drawing path as an intermediary step and this was used as raw input data.The axidraw source code is available on Github (https://github.com/evil-mad/axidraw). After understanding the general flow, a file was opened and data in the form of XY coordinates where written to a file by placing write statements within appropriate code sections. It should be mentioned that the use of python and the associated interpreted permitted a fast, iterative development cycle that required no recompliation or restart of inkscape when changes were introduced into the Axidraw code.The file needed was manually edited to remove certain formatting elements and loaded into the Gestalt framework directly by opening a file pointer and reading data into a python array.Some slight conversions where added to permit scaling where necessary. Due to difficulties in integrating the paramaters for the DVD motor, pen up/down functionality was not integrated in the first iteration of the project.
Plotting text requires the use of special plotter fonts. Most fonts in modern computing systems are rendered as two sets of lines to provide a thickness for the stroke. This is altering depending on the font size. The thickness may not be uniform over all the paths of the character itself. Plotter fonts depend on the diameter of the writing head to manage thickness which in turn requires characters be desribed as single strokes. A well known font family is called 'Hershey Text' which are a series of fonts designed in the late 20th century when electronic printing technologies where not able to render thickness aside from changes in the pen size. Tests for text printing used these Hershey Fonts to plot readable text. The results were acceptable considering pen up/down functionality was not integrated.Next, some clip art was used to generate an image. This worked surprisingly well so long as the clip art was suitably modified to removed lines that would create many connected strokes.It was originally decided to integrate a third motion axis to control pen up/down but was not achieved due a lack of documentation on integrating new parameters into the gestalt framework. This could eventually prove to be interesting as it would permit a more aesthetically pleasing output. Additional switches to limit the travel of the motors could also be useful to limit the motors working agains the end stops. Axidraw does this partly in software but hardware failsafes could protect motors in case of incorrect input or unplanned bugs affecting motor functioning.
Ici la description alternative
Code for reading coordinates from file:
f = open('TdMCoords.txt','r')
coords = 
for line in f.readlines():
x, y = [float(str) for str in line.split()]
Code for normalizing coordinates:
xmin = min( x for x,y in coords)
ymin = min( y for x,y in coords)
moves = 
for x, y in coords:
moves.append([int((x - xmin)*10), int((y - ymin)*10)])
This was all the code necessary to permit plotting the data, the rest of the data was standard pyGestalt.
FabAcademy2016 - Drawing Machine from Lucia Simeoni on Vimeo.
Fab Academy 2016 - FabLabAjaccio