Upload
vincent-huyghe
View
230
Download
2
Tags:
Embed Size (px)
DESCRIPTION
UCL aac digital studio 2013 https://github.com/vinceHuyghe/explorations-in-robotic-3d-printing Vincent Huyghe
Citation preview
Explorations in opensource robotic 3D printing
https://github.com/vinceHuyghe/explorations-in-robotic-3d-printing
Vincent HuygheUCL 2013
Adaptive architecture & compuationTutors: Ruari Glynn, Khaleb ElAshry
Referenceshttp://reprap.org/wiki/RepRap
http://www.thingiverse.com/
Source: Moilanen, J. & Vadén, T.: Manufacturing in motion: first survey on the 3D printing com-munity, Statistical Studies of Peer Production
Prologue:
3d printing using extrusion of thermoplastics has become affordable and widely used. The main advantages of this technique is that the process is mechanically simple and the raw material is inexpensive; especially when compared to other 3d printing techniques such as powder printing and laser sintering. This has lead to the technique gaining a lot of traction in the open-source and DIY community, while the professional community has focused their attention on printers producing very high resolutions using much more expensive and complicated techniques. The large, community experimenting, researching and sharing ideas has allowed the extrusion technique to develop and improve very quickly. Now advancements and refinements in the field are being made constantly for example dual extrusion allowing printing in different materials or color blending nozzle, which allows to print in a range of different colors. The largest community and wiki is the one from the RepRap project- therefore this is the one which shall serve as the starting point of my research. RepRap printers are made from printed parts so as to be self-replicating machines. Additionally this means that any user can update, customize or improve the design. One of the website where all these designs are shared and printable files are available for download is the Thingverse.
thingiverse.com/thing:19590universal paste extruder for 3d printers
It allows you to experiment with various pastes on your 3D printer without the need for any air compressor equipment or valves etc. it simply uses the existing Extruder motor output from your printer electronics.
http://www.thingiverse.com/thing:23775universal paste extruder for 3d printers
This is a 3 extruder setup with a single hot-end combining nozzle, to ‘mix’ and blend coloured filament plastic or different materials on a RepRap or other 3D printer..
Abstract:
3d printing is considered the ultimate way of free form fabrication. 3d printing extrusions heads however are mostly used in combination with CNC machines. Printing layer by layer in the Z-plane seems like a very traditional and restricting way of implementing a technique that lends itself so well to free form fabrication. This paper will explore the possibilities of thermoplastic extrusion combined with an industrial robot. The goal of the project is to develop open-source fabrication protocols for robotic 3d printing. Additionally the need for dedicated machines for 3d printing in age where industrial robots are becoming more and more common in digital fabrication will be researched. Using industrial robots has some obvious advantages in freedom of movement and scale. Further it: has the advantage that it allows to combine different fabrication methods easily by switching end effectors. This would enable fabrication centers to have a greater flexibility in available fabrication methods with one machine. During the research I will not be trying to reinvent the wheel but rather try and get the most out of the knowledge gathered and developed by the open-source community.
http://www.thingiverse.com/thing:18379
UR 10
+ = ? References / Precedents
kamermaker 3d printer (2.2 by 2.2 by 3.5 m) DUS architects
http://vimeo.com/510910002010, Endless Process, Dirk Vander Kooij
low resolution thermoplastic extrusion combined with industrial robot.http://vimeo.com/17358934v
Almond technique, end effector for 3d printinghttp://www.youtube.com/
watch?v=6I05NXxV3ygMataerial by Petr Novikov, Saša Joki, Joris
Laarman Lab and IAAChttp://vimeo.com/66401994
Pet flakes, IAAC 2012http://issuu.com/thepetflakesproject/docs/
petflakesthebook
The beginning:
The first objective is to build a 3d extrusion printing end effector for a 6-axis robot. That starts with building an extruder and understanding the mechanical and material properties of the extrusion process. There are 2 approaches, the first is to buy an industrial thermoplastic welder and mount it on a frame and control it using a relay. The advantage of this technique is that it could deliver quick results. The other option is to start with extruder parts for a desktop 3d printer and modify them to fit the purposes of the project. The advantage here is that these extruders design are highly modular and can therefor easily be adapted. I will pursue the second as it feels it offers more opportunities.
some diffrent extruders “cold ends”:
Airtripper’s Bowden Extruder V3http://www.thingiverse.com/thing:35404
Lego worm drive extruderhttp://www.thingiverse.com/thing:21346
Direct Drive 3mm-GRRF-Hotend Bowden Extruder for Huxley (with removable fan ;-)
http://www.thingiverse.com/thing:40527
Referenceshttp://reprap.org/wiki/Category:Extrudershttp://reprap.org/wiki/Category:Hot_End
some diffrent “hot ends”: J head hot end, Alu hot end, Budashnozzle hot end
stepper motor
extruder
�lament
bearing
hot end thermistor or thermocouple
�lament width
extrusion width
large gearsmall gear
heater
the extruder
The desktop 3printer extruder consists of 2 main parts the “cold end” and “hot end”, the cold end is responsible for mechanically driving the filament in the hot end which is responsible for melting the thermoplastic. Because of the large open-source community and websites like thingverse, extruders come in a wide range of variety’s. For this reason I decided to start with Greg’s Wade reloaded extruder as it is the most common extruder used by the DIY community. Once the process is better understood after the initial research I will chose or develop an extruder better suited for robotic printing and meeting specific research goals that haven’t been defined at this point. The extruder workings can be broken down in different aspects namely; mechanical, electrical & hardware and software & code. The goal of the first experiments is to identify and play with the different parameters witch play a role in achieving a well-calibrated extruder.
Mechanical aspects
Chosen combination extruder: Greg’s wade reloaded extruder cold end: budashnozzleIn the 3d desktop printers community 1,75 mm and 3 mm filament are the most commonly used and readily available. Commercial 3d printer manufactures such as makerbot and ultimaker are pushing for the exclusive use of 1,75mm filament and the latest models of these brands only support printing with 1,75mm filament. 3mm filament is only in use for DIY and open- source printers. The use of the industrial robot for the moment instead of a cnc creates the possibility to print much larger objects then desktop printers because it is not necessary to achieve the same resolution used by said desktop printers. This motivated me to opt for a 3mm filament extruder, as this would give me possibility to extrude more material quickly. Nozzle diameters in desktop 3d printers range from 0.3 to 0.5 mm, in a further attempt to adapt the desktop printer technology to the larger scale I decided to use a nozzle with greater diameter namely 1,2mm.
Greg’’s wade extruder reloaded and Nema 17 stepper
Budashnozzle and heat cartridge + thermistor original nozzle 0,5mm and new 1.2mm nozzle (mounted on budashnozzle)
Referenceshttp://reprap.org/wiki/Wade%27s_Geared_Extruderhttp://reprap.org/wiki/LulzBot/Budaschnozzle
Electrical aspects
There are multiple platforms available for desktop 3d printers, a full list can be found in the reference. The most popular ones where developed based on the Arduino platform; namely RAMPS and Sanguilono. These controllers rely on specific firmware for 3d printing. Although this might be a good option in the beginning I think these might prove difficult to use when trying to integrate systems with the robot. For this reason I decided to use a standard Arduino board as that would offer me the most flexibility in the future and has the added benefit that I can rely on the knowledge of the huge open-source Arduino community.The different components used in extruder are:
controlArduino mega ADK
heat and temperature - heat cartridge 12V 40W - Epcos 100k thermistor
filament drive- nema 17 stepper motor
ventilation- Arduino motor shield- Fans 12V
Wiring thermistor
Wiring 12V heat cartridge
Wiring 12V stepper
Referencehttp://bildr.org/?s=thermistor
http://bildr.org/2011/03/high-power-control-with-arduino-and-tip120/
http://bildr.org/2012/11/big-easy-driver-arduino/http://www.instructables.com/id/Arduino-Motor-
Shield-Tutorial/
The stepper motor, heat cartridge and fans require 12V, the heat cartridge however requires high amp current while the rest does not. After some initial testing I decided that the best way to do the power supply is5V trough usb for Arduino + shield + stepper driver 12V low amp for stepper and fans 12V high amp for heatWhen combining the 2 12V circuits into one I was having problems. The heat is controlled trough PWM, which means the heat, is being turned on and off very quickly. When using high pulse cycles the stepper driver started overheating very quickly.
Arduino mega adk
Transistor circuit
Arduino motorshield
Big easy driver
Software and code aspects
Arduino side
The first step was to get all the components to work with Arduino code. However once everything was coded I realized that it would be difficult to calibrate the extruder properly whiteout being able to adjust the different parameters in real time and have visual feedback so as to understand the process. The next logical step was to code an interface for the extruder. After looking into the different possibility’s:- GUI in Arduino- serial communication - FirmataFirmata is a generic protocol for communicating with microcontrollers from software on a host computer. It is intended to work with any host computer software package. Right now there is a matching object in a number of languages. It is easy to add objects for other software to use this protocol. Basically, this firmware establishes a protocol for talking to the Arduino from the host software. The aim is to allow people to completely control the Arduino from software on the host computer.Firmata seemed like the best option because it would allow me to use the Arduino micro controller to read the sensor data and actuate the motors while the computationally heavier feedback loops would running on my laptop. Further in later stages of the project it would allow
me to easily integrate the robot data into feedback loops and wouldn’t matter how computationally heavy the code would become. For the host application I choose to use processing as I am familiar with it and would be easy to create a GUI with it.Getting the thermistor, heat cartridge and fans trough processing and Firmata was easy, however the stepper proved a bigger challenge. The stepper requires a HIGH LOW signal to complete 1 step- this isn’t a problem in Arduino code because the loop is called very quick succession but in Processing the draw loop is called much slower. In fact too slow to use processing to send signals directly to the stepper driver. The logical solution was to add the code to run the stepper to the Arduino standard Firmata code and trigger it from processing. The fact that the Processing draw loop is called slower then the Arduino loop created another problem when trying to pass numerical variables from processing to Arduino as one is reading faster then the other is sending. Some minor changes where made to the standard Firmata to remedy this.
code on github
Referenceshttp://www.instructables.com/id/Guino-
Dashboard-for-your-Arduino/http://arduino.cc/en/reference/serial
http://arduino.cc/en/Reference/Firmatahttp://firmata.org/wiki/Main_Page
http://processing.org/reference/libraries/serial/index.html
http://playground.arduino.cc/interfacing/processing
http://www.airspayce.com/mikem/arduino/AccelStepper/
void analogWriteCallback(byte pin, int value){ if(pin == extruderSpdPin) { extruderSpeed = value; } if (pin < TOTAL_PINS && pin != extruderSpdPin ) { switch(pinConfig[pin]) { case SERVO: if (IS_PIN_SERVO(pin)) servos[PIN_TO_SERVO(pin)].write(value); pinState[pin] = value; break; case PWM: if (IS_PIN_PWM(pin)) analogWrite(PIN_TO_PWM(pin), value); pinState[pin] = value; break; } }
void runstepper() { if (digitalRead(extruderOnPin) == HIGH) { if (digitalRead(extruderDirPin) == false) { stepper.setSpeed(extruderSpeed); stepper.runSpeed(); } if (digitalRead(extruderDirPin) == true) { stepper.setSpeed(-extruderSpeed); stepper.runSpeed(); } } if (digitalRead(extruderCaliPin) == HIGH) { stepper.setSpeed(extruderSpeed); stepper.moveTo(2000); stepper.run(); } }
Modified analogWriteCallback function from standard Firmata to be able to pass speed value from processing to Arduino. If a signal is send to the extruder speed pin intercept that value, then the speed = the value. This way Arduino is only reading when a new speed value is being send.
Added runstepper function witch is called in the Arduino loop to run the stepper. Using the Accelstepper library for Arduino.The function allows to- run the stepper at set speed step/sec- change the direction of the stepper- calibrate the extruder by doing 10 full rotationsthen mm of extruded filament can be measured and mm extruded / step can be calculated.
Arduino code
Processing side
functionality code
- read data thermistor and convert trough Steinhart-Hart thermistor equation to degrees C°. Common practice is to use lookup tables in 3d printers but I decided to implement the formula as it delivers more precise results.
- PID algorithm. The input is the temperature measured by the sensor the output is from 0 to 255, 0 being heat off and 255 maximum heat. Now this implement through a series of conditionals with 4 possible outputs states cold,cool, warm, hot. In the future I would like to replace this with a trough PID algorithm.
- run stepper motor. Speed, direction, calibrate, switch from micro stepping all the way to full stepping (1/16 to 1).
- run fans. 1fan to cool the top part of the hot end, 2fans to cool the extruded material.
- graphic interface. The 2 main components of the GUI are the sliders witch allow to tweak the parameters in real time and a graph showing the value of the variables over time. The control p5 library was used for sliders and toggles.
code on github
UR-10
Arduino
Extruderstepper
Hotend
movement speed
feedrate
speed++
heat cartridge
fans
thermistor
startstop
startstop
startstop
when temp okayif temp to lowif temp to high
if
Phase change diagram
Referenceshttp://en.wikipedia.org/wiki/Thermistor
(formula)http://reprap.org/wiki/Temperature_controlhttp://www.sojamo.de/libraries/controlP5/
processing
slider set variable target temperatureslider set var threshold PIDtoggle PID control onsliders set var temperatures states PID
toggles for extruder onswitch extruder directionengage full, half or quarterstepping
slider set var steps/sectoggle extruder fan onslider set var extruder fan rpmsame for extrusion fan
graphtemperaturestate PIDstep/sec
Material research
The most common materials used by desktop 3d printers are abs and pla. Abs is a general purpose, strong and very resilient type of plastic. Lego is made from abs. Polylactic acid is a cheap, biodegradable polymer, that is produced from lactic acid which can be obtained from the maceration of starch and sugars in biotanks. There are also some exotic materials available such as water solvable filament. If a an all metal hot-end is used materials that require a higher temperature for extrusion can be used as well such as nylon, PVA and lay wood. Other materials are used for full list see reference.
Referenceshttp://reprap.org/wiki/Printing_materialshttp://en.wikipedia.org/wiki/RepRap_Project#Replication_materials
First material experiments
The first material experiments have as a goal to try and understand the variables involved in the process. Firstly to determine the operating range of the variables needed for extrusion -what the minimum and maximum temperature is -what is the maximum feedrate for the filament This is the calibration of the extrusion. Afterwards to develop a deeper understanding of the process test one variable at the time and see what happens at different intervals going through the entire operation range. These experiments will be undertaken with the extruder mounted to a horizontal surface, the extrusion is exposed to only gravity at first then movement by hand motion.
increasing the temperature reduces the diameter of the extrusion, this more noticable for ABS
increasing the speed increases the diameter of the extrusion, this more noticable for ABS
low speedhigh heat
high speedlow heat
Conclusions
The min temp & max temp are 190 & 250. The maximum feedrate is around 255 step per sec at full stepping. At higher temperature the material is more viscous and easy to manipulate, while at lower temperature the extrusion is thicker in diameter and soft- not viscous at all. At higher temperatures the material adheres better to itself and other materials. At low speeds the diameter of the extrusion is noticeably thinner than at high speed. As can been seen on the processing screenshot on previous page when the stepper is run past the medium speed range the temperature of the hot-end drops even though the PID is in its warmest state. This could be the result of doubling the nozzle size while keeping the rest of the design. The solution to this could be housing the heat cartridge in a larger heater block, this would then have a higher thermal capacity and provide more stable temperatures for extrusion.
Moving towards robotic fabrication
Now that the workings of the extruder are understood it is time to move towards robotic fabrication. This starts by designing an end effector to house the extruder. The design requirements for the end effector are the following; modular design consisting of 3 parts: Arduino, extruder and hotend. This way it will be possible to update the parts making up the extruder without having to fabricate a new end effector. The first module is the Arduino part witch will house all the electronics. The goal here is to organize the wiring as cleanly as possible and limit the wires that run from the Arduino along the robot arm back to the host computer. The extruder part of the end effector will house the cold end. Here it is important to provide a flexible mounting platform that allows switching between different extruders easily. The final module is the one housing the hot-end; this part will be connected to the others through a soft connection. This will prevent any damage to the hot-end if it where to hit something in operation. Further a quick detach mechanism is preferable here as cleaning the hot-end during long operation might be necessary. On the code side of things, because Onyx the open-source library that will be used for robot kinematics is written in python it will be necessary to translate the existing code to able to integrate the
extruder and the robotic control. The speed of the extruder will be linked to the movement speed of the robot and a multiplier will be applied depending of the desired extrusion thickness.
Remarks
Short term goals
Software
Translate code to python to enable integration robot and extruder control.Start adding some functionality to Onyx for 3d printing.Explore if its possible to recycle some of the components of silkworm, specifically the part that calculates the extruder settings based on speed and wanted resolution.Explore the possibility of using blender for robotic control and simulationAdvantages would be - very robust open-source framework community robotics in blenderBuilt in IK solverThe possibility to integrate everything in one framework (kinect, robotic vision, ik solver, simulation)
Hardware
Machine end effector based on design set design goals discussed previously.Replace extruder for an extruded with a different filament drive wheel and add the capacity to to feed multiple filaments.Replace to hotend with a full metal one with a larger heat block so as to allow the maximum freedom in material choice and achieve more stable extrusion temperatures.
Long term aspirations
There are no specific long term for the project, I want to see where the research takes me that being said this first part of the project has convinced me there are some interesting research opportunity’s
firstly to answer the question posed in the first part, do we need dedicated machines for 3d printing if we have access to industrial robots.
Material computationMultiple filament feeds going to one rotating hotend with multiple nozzles. Could this open the door to being able to extrude material with different structural properties.
adaptive fabrication protocolsExtruding in the air with no support below allows to take full advantage of the movement freedom of the robot. However this technique will not be able to deliver a high precision so a feedback will be necessary possibly augmented with robot vision to access printed results and adapt the fabrication.
Referenceshttp://projectsilkworm.com/
http://www.grasshopper3d.com/group/onixhttp://wiki.blender.org/index.php/
Community:Science/Roboticshttp://www.warp1337.com/content/blender-
robotics-part-1-introduction-and-modellinghttp://www.openrobots.org/wiki/morse/
Index of open source references used to develop the projects
generalhttp://reprap.org/wiki/RepRaphttp://www.thingiverse.com/
precedentskamermaker 3d printer (2.2 by 2.2 by 3.5 m) DUS architectshttp://vimeo.com/510910002010, Endless Process, Dirk Vander Kooijlow resolution thermoplastic extrusion combined with industrial robot.http://vimeo.com/17358934vAlmond technique, end effector for 3d printinghttp://www.youtube.com/watch?v=6I05NXxV3ygMataerial by Petr Novikov, Saša Joki, Joris Laarman Lab and IAAChttp://vimeo.com/66401994Pet flakes, IAAC 2012http://issuu.com/thepetflakesproject/docs/petflakesthebook
extruder and hot endhttp://reprap.org/wiki/Category:Extrudershttp://reprap.org/wiki/Category:Hot_Endhttp://reprap.org/wiki/Wade%27s_Geared_Extruderhttp://reprap.org/wiki/LulzBot/Budaschnozzle
electrical circuitshttp://bildr.org/?s=thermistorhttp://bildr.org/2011/03/high-power-control-with-arduino-and-tip120/http://bildr.org/2012/11/big-easy-driver-arduino/http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/
Arduino codehttp://www.instructables.com/id/Guino-Dashboard-for-your-Arduino/http://arduino.cc/en/reference/serialhttp://arduino.cc/en/Reference/Firmatahttp://firmata.org/wiki/Main_Pagehttp://processing.org/reference/libraries/serial/index.htmlhttp://playground.arduino.cc/interfacing/processinghttp://www.airspayce.com/mikem/arduino/AccelStepper/
Processing code http://en.wikipedia.org/wiki/Thermistor (formula)http://reprap.org/wiki/Temperature_controlhttp://www.sojamo.de/libraries/controlP5/processing
materialshttp://reprap.org/wiki/Printing_materialshttp://en.wikipedia.org/wiki/RepRap_Project#Replication_materials
robot control and kinematicshttp://projectsilkworm.com/http://www.grasshopper3d.com/group/onixhttp://wiki.blender.org/index.php/Community:Science/Roboticshttp://www.warp1337.com/content/blender-robotics-part-1-introduction-and-modellinghttp://www.openrobots.org/wiki/morse/