|
1 |
| -reflowOvenController |
| 1 | +Reflow Oven Controller |
2 | 2 | ====================
|
3 | 3 |
|
4 |
| -**Reflow Oven Controller with PID Control ** |
| 4 | +Arduino-based reflow oven controller with: |
| 5 | +* [PID] loop control |
| 6 | +* [Wave Packet] and [Phase Fired] control for AC outputs |
| 7 | +* graphic TFT LC-Display, drawing the temperature curves |
| 8 | + * using an [Adafruit 1.8" TFT] or derivate display |
| 9 | +* solely controlled using a rotary encoder and it's one button |
| 10 | +* stores up to 30 temperature profiles in EEPROM |
| 11 | +* configurable PID-parameters |
| 12 | +* simple, small hardware to drive loads up to 600V and up to 8A |
| 13 | +* hardware can |
| 14 | + * measure two temperatures independently |
| 15 | + * drive two AC loads, such as heater and fan |
5 | 16 |
|
6 |
| -* (c) 2013 Ed Simmons <ed@estechnical.co.uk> |
7 |
| -* (c) 2014 Karl Pitrich <karl@pitrich.com> |
| 17 | +(c) 2014 Karl Pitrich <karl@pitrich.com> |
| 18 | +based on a project (c) 2013 Ed Simmons <ed@estechnical.co.uk> |
8 | 19 |
|
9 |
| -Suitable for the controler hardware sold by [ESTechnical] or for DIY controllers based on Arduino hardware. |
10 | 20 |
|
11 |
| - |
12 |
| -Changes |
| 21 | +Introduction |
13 | 22 | ====================
|
14 |
| -* 2014-05-17: Support for click encoder |
15 |
| - * The `#define USE_CLICKENCODER 1` in LCDMenu.h selects the use of a rotary encoder with button instead of the buttons in the T962x oven. |
16 |
| - * Configure the Pins used in `LCDMenu.cpp` |
17 | 23 |
|
18 |
| -Important |
19 |
| -==================== |
| 24 | +This Reflow Oven Controller relies on an Arduino Pro Micro, which is similar to the Leonardo and easily obtainable on eb*y for about $6.00, plus my custom shield, which is actually more like a motherboard. |
20 | 25 |
|
21 |
| -After cloning this repository, you need to do |
| 26 | +As I believe it is not wise to have a mess of wiring and breakout-boards for operating mains powered equipment, I've decided to design custom board with easily obtainable components. |
22 | 27 |
|
23 |
| - git submodule update --init |
| 28 | +The hardware can be found in the [folder hardware], including the Eagle schematics and PCB layout files. It should fit the freemioum version of Eagle. Here are preview images: |
| 29 | +![PCB][ImgPCB] |
| 30 | +![Schematic][ImgSCH] |
24 | 31 |
|
25 |
| -to fetch all involved libraries. (See: [Submodule Cheat Sheet]) |
| 32 | +The board contains the Arduino Pro Micro, a simple [Zero crossing] detection circuit, used to align control logic to mains frequency, two [MAX31855] thermocouple-to-digital converters and two [Sharp S202S01] PCB-mount solid state relays, mounted on cheap [Fischer SK409 50,8] heat sinks. |
26 | 33 |
|
| 34 | +The software uses [PID] control of the heater and fan output for improved temperature stability. The heater AC load is controlled using [Wave Packet] control, in order to minimize RF interference. |
27 | 35 |
|
| 36 | +Please note that all important timings are *based on the mains frequency*, so the circuit will **not work** properly without mains connection. |
28 | 37 |
|
29 |
| -Introduction |
30 |
| -==================== |
| 38 | +For testing, I've added an additional timer to simulate the zero-crossings, in order to run the software without being connected to mains. Please note that everything is tuned to 50Hz mains, if you live in a retro-country 60Hz mains and probably even imperial units, you need to adjust the source to fit. |
| 39 | + |
| 40 | +Screenshots and usage information |
| 41 | +======== |
| 42 | + |
| 43 | +![CycleWithOverflow] |
| 44 | +*Display after a cylcle has been completed. The graph wraps around automatically. 'Sp' is the current setpoint for te PID loop. In the lower line there are current heater and fan output, both in %, and the current temperature rise or drop rate. The graph will draw orientation lines every 50°C up to the peak temperature set in the selected profile.* |
| 45 | + |
| 46 | +![Menu] |
| 47 | +*The main menu can be navigated by rotating the encoder. Click enters the menu item or navigates to the submenu. Doubleclick moves up or back or exits the menu item.* |
| 48 | + |
| 49 | +![FanSpeedEdit] |
| 50 | +*To edit a setting, click once to enter edit mode, rotate to change the value, click again to save. Doubleclick exits without saving.* |
31 | 51 |
|
32 |
| -The ESTechnical reflow oven controller was designed to operate the T962, T962A and T962C ovens. |
| 52 | +![MenuEditProfile] |
33 | 53 |
|
34 |
| -It operates using PID control of the heater and fan output to improve the control compared to the original manufacturer's controller. |
| 54 | +![ProfileSettings] |
| 55 | +*These are typical profile settings.* |
35 | 56 |
|
36 |
| -ESTechnical sell the controller hardware ready to install on eBay and on the ESTechnical website: http://www.estechnical.co.uk |
| 57 | +![ProfileSettingsEdit] |
| 58 | +*They can be easily edited using the encoder like described above.* |
37 | 59 |
|
38 |
| -Thanks go to Toby Wilkinson for his excellent menu codebase - http://tobestool.net/t962-t962a-reflow-oven-controller/ |
39 |
| -Thanks are also due to Brett Beauregard for his excellent work on the arduino PID library - http://playground.arduino.cc/Code/PIDLibrary |
| 60 | +![MenuLoadProfile] |
| 61 | +*Profiles can be loaded and saved. You have to do this manually, so that you can have 'save-as' functionality without overwriting existing profiles.* |
| 62 | + |
| 63 | +![PIDValues] |
| 64 | +*My current pid values for my 1300W toaster oven.* |
| 65 | + |
| 66 | +![PIDValuesEdit] |
| 67 | +*Edit is simple, note that, unlike with the profile settings, the PID values will be stored to EEPROM when you exit.* |
40 | 68 |
|
41 | 69 |
|
42 | 70 | Obtaining the source code
|
43 | 71 | ====================
|
44 | 72 |
|
45 |
| -Use one of the following methods to get the source code: |
46 |
| - |
47 |
| -Using GIT: |
48 |
| -If you are familiar with git and want to use git to check out the source code, use the following command in a terminal: |
49 |
| -(This will check out the source code from git into the current directory. I will cover no further use of git here.) |
| 73 | +Get the code using `git`. |
50 | 74 |
|
51 | 75 | git clone https://github.com/estechnical/reflowOvenController.git
|
| 76 | + |
| 77 | +or [download a Snapshot]. |
| 78 | + |
| 79 | +I've added some libraries I've used as submodules to the git repositroy, so it is important that, after cloning this repository, you do |
| 80 | + |
52 | 81 | git submodule update --init
|
53 | 82 |
|
| 83 | +to fetch all involved libraries. (See: [Submodule Cheat Sheet]) |
| 84 | + |
54 | 85 |
|
55 | 86 | Installation
|
56 | 87 | ====================
|
57 | 88 |
|
58 |
| -To edit/compile the source code for the reflow controller, first install the arduino IDE - http://arduino.cc/en/Main/Software |
| 89 | +Of course, you need to have the Arduino IDE installed. I've worked with version 1.5.x only and I will not support older versions. Get it from the [Arduino Download] page. |
| 90 | + |
| 91 | +There as several dependencies you need to install. |
59 | 92 |
|
60 |
| -**Note:** Tested with Arduino 1.5.x only. |
| 93 | +If you are unfamiliar with Arduino Libraries, please read [the library guide]. |
| 94 | +Basically, the Library needs to be liked or copied into your Arduino library folder. |
61 | 95 |
|
62 |
| -If you use the ESTechnical reflow controller which uses a 20MHz crystal instead of a 16MHz crystal, special build settings for the arduino IDE are required. |
| 96 | +On a Mac, this is how you link the submodule libraries to your Arduino libraries folder: |
63 | 97 |
|
64 |
| -Browse to your arduino installation directory, then browse to hardware/arduino/boards.txt. Edit this file (using, for example Programmer's Notepad http://www.pnotepad.org) and add the following block to the top of the file, taking care to not mess up the layout of the file: |
| 98 | + cd ~/Documents/Arduino/Libraries |
| 99 | + ln -s ~/Development/<reflow source code>/libraries |
| 100 | + |
| 101 | +My code uses [TimerOne] for basic timing, for the 1.8" TFT [Adafruit_ST7735], which requires [Adafruit_GFX]. I **strongly suggest** to use my *modified version* of [Adafruit_GFX-pit], as it **performs much better**, but requires you to use SPI. |
65 | 102 |
|
66 |
| - ############################################################## |
| 103 | +Also, for the user interface, you require my own [Menu] and [ClickEncoder] libraries, which are included as submodules. |
67 | 104 |
|
68 |
| - atmega328_20MHz.name=ESTechnical Reflow controller |
| 105 | +All other libraries need to be downloaded and installed. |
69 | 106 |
|
70 |
| - atmega328_20MHz.upload.protocol=stk500 |
71 |
| - atmega328_20MHz.upload.maximum_size=30720 |
72 |
| - atmega328_20MHz.upload.speed=57600 |
| 107 | +After you've installed all libraries, open the Arduino IDE, open the ReflowController.pde sketch (using File->Open). |
73 | 108 |
|
74 |
| - atmega328_20MHz.bootloader.low_fuses=0xFF |
75 |
| - atmega328_20MHz.bootloader.high_fuses=0xDA |
76 |
| - atmega328_20MHz.bootloader.extended_fuses=0x05 |
77 |
| - atmega328_20MHz.bootloader.path=atmega |
78 |
| - atmega328_20MHz.bootloader.file=ATmegaBOOT_168_atmega328.hex |
79 |
| - atmega328_20MHz.bootloader.unlock_bits=0x3F |
80 |
| - atmega328_20MHz.bootloader.lock_bits=0x0F |
| 109 | +Select the right kind of hardware from the Tools->Board menu. |
81 | 110 |
|
82 |
| - atmega328_20MHz.build.mcu=atmega328p |
83 |
| - atmega328_20MHz.build.f_cpu=20000000L |
84 |
| - atmega328_20MHz.build.core=arduino |
85 |
| - atmega328_20MHz.build.variant=standard |
| 111 | +Compile the firmware (Sketch->Verify) to test everything is installed correctly. Choose the correct serial port from Tools->Serial Port and then upload the code. |
86 | 112 |
|
| 113 | +I could not fit PID Autotuning into the limited space of the Arduino in addition the normal code. So if you want to try it, install the [PID_AutoTune] Library, `#define PIDTUNE 1`, recompile and download do the Arduino. |
87 | 114 |
|
88 |
| - ############################################################## |
| 115 | +As all timing relies on Zero Crossing detection, you need to `#define FAKE_HW 1` and install [TimerThree] when you want to run without actual hardware *or* without mains connection. |
89 | 116 |
|
90 |
| -Save the file and quit. |
91 | 117 |
|
92 |
| -Setting up the source code to build firmware |
| 118 | +Things to note |
93 | 119 | ====================
|
94 | 120 |
|
95 |
| -Locate the sketchbook directory that the arduino IDE created when installing, you can see the path to your sketchbook folder in the arduino preferences menu (File-> Preferences). |
| 121 | +* The [MAX31855] does not like the thermocouple being grounded; It must be isolated from ground or earth. |
| 122 | +* The PID Loop must be tuned individually for each oven. It will *not* work out of the box. |
| 123 | +* [PID Autotune] is not very useful, as it seems to be able to tune only to keep a specific temperature value, which is not what we do with a reflow oven. Also, at least my oven seems to be very non-linear when heating up. |
96 | 124 |
|
97 |
| -From the files downloaded and unzipped from github: |
98 | 125 |
|
99 |
| -Copy the ReflowController directory from the zip file into the Sketchbook directory. |
100 | 126 |
|
101 |
| -Copy all the directories in the Libraries directory to the libraries directory in the arduino sketchbook directory. |
| 127 | +Licensing |
| 128 | +==================== |
| 129 | +``` |
| 130 | +The MIT License (MIT) |
102 | 131 |
|
103 |
| -Open the arduino IDE, open the ReflowController.pde sketch (using File->Open). |
| 132 | +Copyright (c) 2014 karl@pitrich.com |
| 133 | +All rights reserved. |
104 | 134 |
|
105 |
| -Select the right kind of hardware from the Tools->Board menu. |
| 135 | +Permission is hereby granted, free of charge, to any person obtaining a copy |
| 136 | +of this software and associated documentation files (the "Software"), to deal |
| 137 | +in the Software without restriction, including without limitation the rights |
| 138 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
| 139 | +copies of the Software, and to permit persons to whom the Software is |
| 140 | +furnished to do so, subject to the following conditions: |
106 | 141 |
|
107 |
| -Compile the firmware with Ctrl+R to test everything is installed correctly. Choose the right serial port from Tools->Serial Port and then upload the code using Ctrl+U. |
| 142 | +The above copyright notice and this permission notice shall be included in |
| 143 | +all copies or substantial portions of the Software. |
108 | 144 |
|
| 145 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| 146 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| 147 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
| 148 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
| 149 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
| 150 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
| 151 | +THE SOFTWARE. |
| 152 | +``` |
109 | 153 |
|
110 | 154 |
|
| 155 | +[PID Autotune]:https://github.com/br3ttb/Arduino-PID-AutoTune-Library |
111 | 156 | [Submodule Cheat Sheet]:http://blog.jacius.info/git-submodule-cheat-sheet/
|
112 | 157 | [ESTechnical]:http://www.estechnical.co.uk
|
113 |
| - |
| 158 | +[Arduino Download]:http://arduino.cc/en/Main/Software |
| 159 | +[folder hardware]:https://github.com/0xPIT/reflowOvenController/tree/master/hardware |
| 160 | +[download a Snapshot]:https://github.com/0xPIT/reflowOvenController/archive/master.zip |
| 161 | +[the library guide]:http://arduino.cc/en/Guide/Libraries |
| 162 | +[PID]:http://en.wikipedia.org/wiki/PID_controller |
| 163 | +[Wave Packet]:http://de.wikipedia.org/wiki/Schwingungspaketsteuerung |
| 164 | +[Phase Fired]:http://en.wikipedia.org/wiki/Phase-fired_controllers |
| 165 | +[Adafruit 1.8" TFT]:http://www.adafruit.com/products/358 |
| 166 | +[MAX31855]:http://www.maximintegrated.com/en/products/analog/sensors-and-sensor-interface/MAX31855.html |
| 167 | +[Fischer SK409 50,8]:http://www.pollin.de/shop/dt/NzE5OTY1OTk- |
| 168 | +[Sharp S202S01]:http://sharp-world.com/products/device/lineup/data/pdf/datasheet/s102s01_e.pdf |
| 169 | +[Zero crossing]:http://en.wikipedia.org/wiki/Zero_crossing |
| 170 | +[TimerOne]:http://playground.arduino.cc/Code/Timer1 |
| 171 | +[TimerThree]:http://playground.arduino.cc/Code/Timer1 |
| 172 | +[Adafruit_ST7735]:https://github.com/adafruit/Adafruit-ST7735-Library |
| 173 | +[Adafruit_GFX]:https://github.com/adafruit/Adafruit-GFX-Library |
| 174 | +[Adafruit_GFX-pit]:https://github.com/0xPIT/Adafruit-ST7735-Library |
| 175 | +[Menu]:https://github.com/0xPIT/menu |
| 176 | +[ClickEncoder]:https://github.com/0xPIT/encoder |
| 177 | + |
| 178 | + |
| 179 | + |
| 180 | +[CycleWithOverflow]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/CycleWithOverflow.jpg |
| 181 | +[FanSpeedEdit]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/FanSpeedEdit.jpg |
| 182 | +[Menu]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/Menu.jpg |
| 183 | +[MenuLoadProfile]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/MenuLoadProfile.jpg |
| 184 | +[MenuEditProfile]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/MenuEditProfile.jpg |
| 185 | +[PIDValuesEdit]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/PIDValuesEdit.jpg |
| 186 | +[ProfileSettings]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/ProfileSettings.jpg |
| 187 | +[PIDValues]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/PIDValues.jpg |
| 188 | +[ProfileSettingsEdit]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/images/ProfileSettingsEdit.jpg |
| 189 | + |
| 190 | + |
| 191 | +[ImgPCB]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/hardware/v0.2.brd.preview.png |
| 192 | +[ImgSCH]:https://raw.githubusercontent.com/0xPIT/reflowOvenController/master/hardware/v0.2.sch.preview.png |
0 commit comments