Skip to content

Commit 2431b14

Browse files
committed
update readme
1 parent d4aeee6 commit 2431b14

File tree

1 file changed

+137
-58
lines changed

1 file changed

+137
-58
lines changed

README.md

Lines changed: 137 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,113 +1,192 @@
1-
reflowOvenController
1+
Reflow Oven Controller
22
====================
33

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
516

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>
819

9-
Suitable for the controler hardware sold by [ESTechnical] or for DIY controllers based on Arduino hardware.
1020

11-
12-
Changes
21+
Introduction
1322
====================
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`
1723

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.
2025

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.
2227

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]
2431

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.
2633

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.
2735

36+
Please note that all important timings are *based on the mains frequency*, so the circuit will **not work** properly without mains connection.
2837

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.*
3151

32-
The ESTechnical reflow oven controller was designed to operate the T962, T962A and T962C ovens.
52+
![MenuEditProfile]
3353

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.*
3556

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.*
3759

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.*
4068

4169

4270
Obtaining the source code
4371
====================
4472

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`.
5074

5175
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+
5281
git submodule update --init
5382

83+
to fetch all involved libraries. (See: [Submodule Cheat Sheet])
84+
5485

5586
Installation
5687
====================
5788

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.
5992

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.
6195

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:
6397

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.
65102

66-
##############################################################
103+
Also, for the user interface, you require my own [Menu] and [ClickEncoder] libraries, which are included as submodules.
67104

68-
atmega328_20MHz.name=ESTechnical Reflow controller
105+
All other libraries need to be downloaded and installed.
69106

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).
73108

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.
81110

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.
86112

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.
87114

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.
89116

90-
Save the file and quit.
91117

92-
Setting up the source code to build firmware
118+
Things to note
93119
====================
94120

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.
96124

97-
From the files downloaded and unzipped from github:
98125

99-
Copy the ReflowController directory from the zip file into the Sketchbook directory.
100126

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)
102131
103-
Open the arduino IDE, open the ReflowController.pde sketch (using File->Open).
132+
Copyright (c) 2014 karl@pitrich.com
133+
All rights reserved.
104134
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:
106141
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.
108144
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+
```
109153

110154

155+
[PID Autotune]:https://github.com/br3ttb/Arduino-PID-AutoTune-Library
111156
[Submodule Cheat Sheet]:http://blog.jacius.info/git-submodule-cheat-sheet/
112157
[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

Comments
 (0)