1. Introduction
4. CAD design
5. Circuit
6.1 HMI Screenshots
7.1 Arduino IDE
8. App
8.1 Screenshot
8.3 Time and alarms
8.4 Relay
8.5 LEDs
8.6 Persistant data
9.1 Requirements
9.3 Configuration
9.3.1 InfluxDB
9.3.2 Grafana
9.4 Demonstration
10. App
10.1 Features
10.2 App installation
11. To Do
3D printing is an advanced and environmentally friendly manufacturing method. It is a rapidly growing market both private and commercial. It is not just that they help you to act out your creativity or building prototypes, you are also able to repair things where you will not get any spare parts. They are also used in the medical and aerospace industry! SLA and DLP printer are growing increasingly from an expensive niche to a consumer product. The Fablab in Leoben has a commercial Form One and a self built DLP printer. These printers usually need some form of post curing with additional UV light and heat to strengthen the printed parts. This would help to open more application areas for SLA/DLP resin printer to help saving ressources and our environment. During our DLP printer build and because of our experience with the Form One we tried several methods to post-cure the parts after printing. The perfect solution was not found in our experiments so we decided to build our own UV furnace.
Broken parts printed with a Formlabs Form One SLA printer:
DLP Printer of the Fablab Leoben:
Successfull print of Aria the Dragon
It looks great but you have to be very careful because the resin is not fully cured. So it is an ideal candidate for the UV furnace.
During the last few months I have designed and built this furnace. It is already working but still under heavy development to include new features and fix small bugs.
Pos. | Pieces | Unit | Name | comment |
---|---|---|---|---|
1 | 1 | [] | Arduino Mega 2560 R3 | |
2 | 1 | [] | Arduino Ethernet Shield 2 | |
3 | 1 | [] | Adafruit Thermoelement-Verstärker MAX31855 breakout board - v2.0 | |
4 | 1 | [] | Thermocouple Type-K Glass Braid Insulated - K | |
5 | 1 | [] | Adafruit Magnetic contact switch (door sensor) | Normally open reed switch |
6 | 2 | [] | Kingston 8 GB Micro-SDHC Class10 Speicherkarte | any Micro-SD card is ok |
7 | 1 | [] | Adafruit ChronoDot - Ultra-precise Real Time Clock - v2.1 | |
8 | 1 | [] | Adafruit VEML6070 UV Index Sensor Breakout | optional |
9 | 1 | [] | Adafruit Rugged Metal Pushbutton with LED Ring | |
10 | 1 | [] | Male DC Power adapter - 2.1mm plug to screw terminal block | |
11 | 1 | [] | 5V 1 channel relay shield for Arduino | |
12 | 1 | [] | MEAN WELL RS-25-12 | |
13 | 1 | [] | MEAN WELL LDD-350HW | |
14 | 2 | [] | MEAN WELL LDD-500HW | |
15 | 3 | [] | FISCHER ELEKTRONIK SK57750SA | |
16 | 1 | [] | MEAN WELL PM-10-5 | |
17 | 1 | [] | 240 V 50 W heater mat | |
18 | 1 | [] | Nichia SMD LED UV NCSU275 365 nm | on a 10 x 10 mm pcb |
19 | 1 | [] | Nichia SMD LED UV NCSU275 400 nm | on a 10 x 10 mm pcb |
20 | 1 | [] | NIKKISIO 300 nm LED from EQ Photonics GmbH | ~ 260 €/piece (optional) |
21 | 1 | [] | Arctic Silver Wärmeleitkleber (2x 3.5g) | |
22 | 1 | [] | fused quarz glass plate 200 x 200 x 2 mm | |
23 | 1 | [] | Aluminium plate 200x200x3 | |
24 | 1 | [] | Geocel Plumba Flue Silikondichtmasse, bis+315°C, Kartusche, 310ml | optional |
25 | 1 | [] | IEC-Steckverbinder C14, Tafelmontage, gerade 10A 250 V ac | |
26 | 24 | [] | Openbeam Corner Cubes | |
27 | 10 | [m] | Openbeam beam | |
28 | 36 | [] | Makerbeam Corner brackets | |
29 | 4 | [] | Feet for Openbeam | |
30 | 1 | [] | Thread forming screw set for OpenBeam | |
31 | 24 | [] | MakerBeam Right angle brackets | |
32 | 12 | [] | MakerBeam T brackets | |
33 | 2 | [] | MakerBeam Button Head Socket Bolt | |
34 | 1 | [] | MakerBeam M3 regular nuts | |
35 | 1 | [] | MakerBeam M3 knurled nuts | |
36 | 1 | [] | MakerBeam M3 cap nuts | |
37 | 1 | [] | USB 2.0 Anschlusskabel USB 2.0 Stecker A - USB 2.0 Stecker B 1.80 m | |
38 | 1 | [] | USB 2.0 Anschlusskabel USB 2.0 Stecker A - USB 2.0 Stecker B 0.50 m | |
39 | 1 | [] | USB-Einbaubuchse vorne USB-Buchse Typ B · hinten USB-Buchse Typ A | optional |
40 | 1 | [] | RJ45-Einbaubuchse Buchse, Einbau, Stecker, gerade Pole: 8P8C RRJVA_RJ45 | optional |
41 | 1 | [] | Netzkabel, C13 auf Stecker mit Schutzleiterkontakt, 2,5m, 16 A, 250 V | |
42 | 5 | [] | mirror flagstone 200 x 200 mm | metallised with Aluminium |
43 | 1 | [] | Nextion 4,3" Touch Display NX4827T043 | |
44 | 1 | [] | Arduino Mega Screw Shield | optional |
45 | 2 | [] | Fan SUNON PF80321B1-000U-S99 | optional |
46 | 3 | [] | Resistor 4,7 kOhm | |
47 | 1 | [] | shrink tubing | |
48 | 1 | [] | bell wire or other wires in different colors | |
49 | 2 | [] | small hinge from your local DIY market | |
50 | 1 | [m] | three-pole electric cable 1,5 mm² | |
51 | 5 | [m] | eight-pole bell wire | or other wires with different colors |
52 | 1 | [] | Female/Male 'Extension' Jumper Wires - 40 x 6" | to wire the sensors |
53 | 1,5 | [m²] | plywood 12x1000x1500 mm |
Estimated costs: ~1000 €
It really depends on your manufacturing possibilities and the shops where you buy the components. Also be aware that we are using a 300 nm UV LED for ~260 €/piece! Try to recycle parts when you have a low budget and drop expensive nice to have parts like the "USB-Einbaubuchse" and "RJ45-Einbaubuchse" which cost ~40 € each. So there is enough room to cut the costs down :)
Pos. | Tool | comment |
---|---|---|
1 | patience ;) | |
2 | different Screwdrivers | |
3 | different hex key drivers | |
4 | 3D Printer | |
5 | soldering iron | |
6 | drilling machine | |
7 | different drills | |
8 | hammer | |
9 | small buzzsaw or Lasercutter | |
10 | multimeter | |
11 | jigsaw | |
12 | lighter | for shrink tubing |
13 | Arduino IDE | |
14 | Nextion Editor | to program the display |
15 | Micro SD Card reader |
The CAD Design was done with Onshape. It is free for Hobbyists, Makers.
You can find, modify and download the UV furnace design here. Feel free to modify the housing to fit your budget.
I have designed the circuit with Fritzing. Download the free software to be able to modify the circuit. Wire everything like on the picture below and check everything at least twice to make sure everything is wired correctly! Otherwise you can destroy your hardware and jeopardise your health.
Everything mounted in the furnace:
The HMI was designed with Pencil, an open-source GUI prototyping tool that's available for ALL platforms. The interface is based on the Material Design Guidelines from Google for better useability.
Save the UV_furnace.tft file on a micro SD card, insert it into the display and supply it with power. The flash process starts automatically. After that remove the micro SD card and repower the display. If you would like to make changes to the interface just open UV_furnace.HMI with the Nextion editor.
Because of the comprehensive features I had to use an Arduino Mega for this project. Visit the Getting started page for more information on how to configure your board.
Technical specification | |
---|---|
Microcontroller | ATmega2560 |
Operating Voltage | 5V |
Input Voltage (recommended) | 7-12V |
Input Voltage (limit) | 6-20V |
Digital I/O Pins | 54 (of which 15 provide PWM output) |
Analog Input Pins | 16 |
DC Current per I/O Pin | 20 mA |
DC Current for 3.3V Pin | 50 mA |
Flash Memory | 256 KB of which 8 KB used by bootloader |
SRAM | 8 KB |
EEPROM | 4 KB |
Clock Speed | 16 MHz |
Length | 101.52 mm |
Width | 53.3 mm |
Weight | 37 g |
First of all download the Arduino IDE and install it on your computer. It is available for Windows, Linux and Mac.
Download the libraries.zip file and extract them into your Arduino libraries folder. The path for Windows computer is:
C:\Users\YourName\Documents\Arduino\libraries If you do not have this folder do not hesitate to create it.
Open the Arduino IDE and connect your Arduino via USB to your computer. Under Tools/Board select Arduino Mega and choose the right serial port. Open the sketch UV_furnace.ino and click on the compile & flash button. The compiler now translates the code and writes it to your microcontroller.
My code uses a finite state machine (FSM) to make reading and understanding such a massive amount of code easier for everyone.
Definition of a Finite State Machine:
A finite-state machine (FSM) or finite-state automaton (FSA, plural: automata), or simply a state machine, is a mathematical model of >computation used to design both computer programs and sequential logic circuits. It is conceived as an abstract machine that can be >in one of a finite number of states. The machine is in only one state at a time; the state it is in at any given time is called the >current state. It can change from one state to another when initiated by a triggering event or condition; this is called a >transition. A particular FSM is defined by a list of its states, and the triggering condition for each transition.
The FSM serves as a manager that organizes the states of the UV furnace.
The furnace uses a MAX31855 thermocouple amplifier to measure the temperature. You can use thermocouples also for temperatures over 1000 °C. Only the thermocouple is in the hot part of the furnace so you do not need to worry about damaging the amplifier.
During startup the furnace requests the current time via the Network Time Protocol (NTP) to set the time of the DS3231 realtime clock. The realtime clock is used to generate an alarm when the furnace has finished. The integrated temperature compensation is also used to check the temperature of the electronics and acts as a safety feature.
The UV furnace has a high thermal mass, so the response time is slow. Therefore it is possible to use a cheap relay instead of a solid state relay to control the heating pad. In our case the response time will be 0,1 Hz or once every 10 seconds. Take care of yourself when you wire the relay because there is mains voltage involved!
I use Meanwell LDD-500H LED driver to control the LEDs. They offer a wide input voltage range from 9 ~ 56 VDC and a high output voltage range from 2 ~ 52 VDC. Hence you are very flexible when you would like to use other LEDs with a different wavelength in your furnace. You only need to change the power supply if necessary. At the moment I am using three LEDs (red, green, white) in the visible light spectrum. Due to the fact that the furnace is under heavy development it is much more comfortable to add features, fix small bugs and test the workflow. This shows the flexibility of the LED setup. Switching to UV LEDs is only a matter of minutes.
To be able to cure the 3D printed parts the UV light needs to light the curing area. We do not want to stress our light source with unnecessary heat when we cure our prints. Regular glass blocks most of the UV radiation. Because of that we use a quartz glass plate below the LEDs.
The tuning parameters for the PID controller are saved in the Arduino's EEPROM. Thus the UV furnace will remember the settings from the last time. EEPROM can only be written a finite number of times so we compare the contents before writing.
There are many use cases where data logging and visualization can be very useful so I have made an easy setup to achieve this functionality.
- Computer running Ubuntu
- Install Docker
- create directory /media/nas/data/influxdb/
- create directory /media/nas/data/grafana/
Install command for InfluxDB
sudo docker run -d -p 8083:8083 -p 8086:8086 --name influxdb -p 4444:4444/udp --expose 4444 -e UDP_DB="my_db" -v /media/nas/data/influxdb:/data --restart=unless-stopped tutum/influxdb:0.13
Install command for Grafana
docker run -d -v /media/nas/data/grafana --name grafana-storage busybox:latest docker run -d -p 3000:3000 --name=grafana --volumes-from grafana-storage --restart=unless-stopped grafana/grafana:3.1.1
In your browser got to yourserver:8083 Change Database to my_db Under Query Templates create a new user and password for the next step
In your browser got to yourserver:3000 and add a new data source: Name: Influxdb UDP Type:InfluxDB URL: yourserveraddress:8086 Access: Proxy Database: my_db User and Password you have created in the step before Save and Test
Save your dashboard and configure the time range in the right corner:
Start your furnace and you will see the incoming data in your graph:
The smartphone app makes it possible to monitor your furnace when you are not nearby. You will also get a notification when it has finished or if there is an error.
You can monitor the following things:
- furnace on/off
- LEDs on/off/intensity
- minutes and hours left
- current temperature
- setpoint temperature
- status LED
- temperature chart
![alt text](https://github.com/fablab-leoben/UV_furnace/blob/master/miscellaneous/APP_Screenshot.png "Screenshot" width="300")
The App supports Push, Email and Twitter notifications to inform the User when curing has finished or an error happened.
![alt text](https://github.com/fablab-leoben/UV_furnace/blob/master/miscellaneous/APP_Settings.png "Settings" width="300")
Download and install the Blynk app for your Android or iOS device. Now scan the QR code below and replace Auth code in the access.h file. Currently you can see the the setpoint and current temperature. You will get a notification when the furnace is ready. More features will be added in the future.
better display bezelpreheat feature- PID finetuning
- PID tuning without reflashing the sketch
improving the app