Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.pio
.vscode/.browse.c_cpp.db*
.vscode/c_cpp_properties.json
.vscode/launch.json
.vscode/ipch
Empty file modified .pretty/0802A-1-SMT.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/C_0603.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/C_0805.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/FIDUCIAL-1MM.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/HDR_1x6_Pitch2.54mm.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/HDR_2x3_Pitch2.54mm.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/HOLE_NPTH_2.2MM.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/HYG9605B.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/IT-1102W.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/I_0603.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/LED_0603.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/LOGO-KICAD.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/LOGO-KICAD_XSmall.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/LOGO-OSHW_Small.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/LOGO-ROCKET-SCREAM_Vertical_Small.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/LOGO-ROCKET-SCREAM_Without_Text_XXXSmall.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/MF-FSMF.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/MICRO-USB.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/MSOP-10.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/NX3225GD.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/OLED-SSD1306-128X64-I2C.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/QFN-20_4x4mm.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/QFN-32_5x5mm_Pitch0.5mm.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/R_0603.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/SOD-123.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/SOD-323.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/SOT-1016.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/SOT-23.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/SOT-89.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/TB-1776275-2.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/TC33X-x.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/TS-018.kicad_mod
100755 → 100644
Empty file.
Empty file modified .pretty/TSSOP-14.kicad_mod
100755 → 100644
Empty file.
7 changes: 7 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
// See http://go.microsoft.com/fwlink/?LinkId=827846
// for the documentation about the extensions.json format
"recommendations": [
"platformio.platformio-ide"
]
}
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.drl
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gbl
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gbo
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gbs
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gm1
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gtl
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gto
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gtp
100755 → 100644
Empty file.
Empty file modified Gerber/TINY-REFLOW-CONTROLLER.gts
100755 → 100644
Empty file.
114 changes: 113 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,114 @@
# Tiny Reflow Controller
An all-in-one Arduino compatible reflow controller powered by ATmega328P (V2) or ATtiny1634R (V1). A reincarnation of the Reflow Oven Controller Shield that requires an external Arduino board like Arduino Uno based on user feedbacks over the years. Powered by the ATmega328P/ATtiny1634R coupled with the latest thermocouple sensor interface IC MAX31856 from Maxim, we managed to remove the need of an Arduino board and reduce the overall cost. We also use as much SMD parts in this revision to keep the cost low (manual soldering and left over residue cleaning is time consuming) and leaving only the terminal block and the LCD connector on through hole version. We also managed to streamline all components to run on 3.3V to further simplify the design. All you need is an external Solid State Relay (SSR) (rated accordingly to your oven), K type thermocouple (we recommend those with fiber glass or steel jacket), and an oven of course! You can now select to run a lead-free profile or leaded profile from the selection switch. V2 comes with 0.96" 128*64 OLED LCD to plot the real-time reflow curve and has a built-in serial-USB interface. V2 also has an optional transistor output drive fan if needed.

An all-in-one Arduino compatible reflow controller powered by ATmega328P (V2) or ATtiny1634R (V1). A reincarnation of the Reflow Oven Controller Shield that requires an external Arduino board like Arduino Uno based on user feedbacks over the years. Powered by the ATmega328P/ATtiny1634R coupled with the latest thermocouple sensor interface IC MAX31856 from Maxim, we managed to remove the need of an Arduino board and reduce the overall cost. We also use as much SMD parts in this revision to keep the cost low (manual soldering and left over residue cleaning is time consuming) and leaving only the terminal block and the LCD connector on through hole version. We also managed to streamline all components to run on 3.3V to further simplify the design.

All you need is an external Solid State Relay (SSR) (rated accordingly to your oven), K type thermocouple (we recommend those with fiber glass or steel jacket), and an oven of course!

You can now select to run a lead-free profile or leaded profile from the selection switch.

V2 comes with 0.96" 128*64 OLED LCD to plot the real-time reflow curve and has a built-in serial-USB interface. V2 also has an optional transistor output drive fan if needed.

## Building

Use VS Code with platform IO. Set the version you want to build in platform.ini

## Profile Configration

- Each Profile has 4 stages: pre-heat, soak, reflow and cooldown
- Each Stage has:
- Max Temp: The Max Temperature for this stage in degree C. Goal Temp.
- Micro Time: Milliseconds until the next temperature setpoint increase. (set to 0 for max heating speed)
- Heat Step: Degree C step size for new setpoint (set to "Max Temp" - "previous stage max" (TEMPERATURE_ROOM for first stage) for max heating speed)
- Hold Micro Time: Milliseconds to hold at max temp once it is reached (set to 0 to skip)
- PID KP:
- PID KI:
- PID KD:


## Profiles

Profiles can be configured in src/main.cpp starting on line 108.

### Leaded Reflow Curve (Kester EP256)
```
Temperature (Degree Celcius) Magic Happens Here!
219-| x x
| x x
| x x
180-| x x
| x | | x
| x | | x
150-| x | | x
| x | | |
| x | | |
| x | | |
| x | | |
| x | | |
| x | | |
30 -| x | | |
|< 60 - 90 s >|< 60 - 90 s >|< 60 - 90 s >|
| Preheat Stage | Soaking Stage| Reflow Stage | Cool
0 |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ |_ _ _ _ _ _ _ _ _ _ _
Time (Seconds)
```

### Lead-Free Reflow Curve
```
Temperature (Degree Celcius) Magic Happens Here!
245-| x x
| x x
| x x
| x x
200-| x x
| x | | x
| x | | x
| x | |
150-| x | |
| x | | |
| x | | |
| x | | |
| x | | |
| x | | |
| x | | |
30 -| x | | |
|< 60 - 90 s >|< 90 - 120 s >|< 90 - 120 s >|
| Preheat Stage | Soaking Stage | Reflow Stage | Cool
0 |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _
Time (Seconds)
```

### PLA Annealing
```
Temperature (Degree Celcius)
|
63 -| x x x x x x
| x | | x
| x | | x
| x | | x
| x | | x
| x | | x
| x | | x
30 -| x | | |
|< 4 hours >|< 30 min >|< 3 hours >|
| Preheat Stage | Soaking Stage | Cool |
0 |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _
Time (Seconds)
```

### PETG Annealing
```
Temperature (Degree Celcius)
|
177-| x x x x x x
| x | | x
| x | | x
| x | | x
| x | | x
| x | | x
| x | | x
30 -| x | | |
|< 4 hours >|< 30 min >|< 3 hours >|
| Preheat Stage | Soaking Stage | Cool |
0 |_ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _|_ _ _ _ _ _ _ _ _ _ _ _ _ |_ _ _ _ _
Time (Seconds)
```
Empty file modified TINY-REFLOW-CONTROLLER-cache.lib
100755 → 100644
Empty file.
Empty file modified TINY-REFLOW-CONTROLLER.kicad_pcb
100755 → 100644
Empty file.
Empty file modified TINY-REFLOW-CONTROLLER.pdf
100755 → 100644
Empty file.
Empty file modified TINY-REFLOW-CONTROLLER.pro
100755 → 100644
Empty file.
Empty file modified TINY-REFLOW-CONTROLLER.sch
100755 → 100644
Empty file.
39 changes: 39 additions & 0 deletions include/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

This directory is intended for project header files.

A header file is a file containing C declarations and macro definitions
to be shared between several project source files. You request the use of a
header file in your project source file (C, C++, etc) located in `src` folder
by including it, with the C preprocessing directive `#include'.

```src/main.c

#include "header.h"

int main (void)
{
...
}
```

Including a header file produces the same results as copying the header file
into each source file that needs it. Such copying would be time-consuming
and error-prone. With a header file, the related declarations appear
in only one place. If they need to be changed, they can be changed in one
place, and programs that include the header file will automatically use the
new version when next recompiled. The header file eliminates the labor of
finding and changing all the copies as well as the risk that a failure to
find one copy will result in inconsistencies within a program.

In C, the usual convention is to give header files names that end with `.h'.
It is most portable to use only letters, digits, dashes, and underscores in
header file names, and at most one dot.

Read more about using header files in official GCC documentation:

* Include Syntax
* Include Operation
* Once-Only Headers
* Computed Includes

https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html
46 changes: 46 additions & 0 deletions lib/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@

This directory is intended for project specific (private) libraries.
PlatformIO will compile them to static libraries and link into executable file.

The source code of each library should be placed in a an own separate directory
("lib/your_library_name/[here are source files]").

For example, see a structure of the following two libraries `Foo` and `Bar`:

|--lib
| |
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html
| |
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |
| |- README --> THIS FILE
|
|- platformio.ini
|--src
|- main.c

and a contents of `src/main.c`:
```
#include <Foo.h>
#include <Bar.h>

int main (void)
{
...
}

```

PlatformIO Library Dependency Finder will find automatically dependent
libraries scanning project source files.

More information about PlatformIO Library Dependency Finder
- https://docs.platformio.org/page/librarymanager/ldf.html
40 changes: 40 additions & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html

[platformio]
default_envs = 328p8m ; Set this to the env you want to build. Remove to build both.

; Version 2 - OLED
[env:328p8m]
platform = atmelavr
board = 328p8m
framework = arduino
monitor_speed = 115200
build_flags = '-DVERSION=2'
lib_deps =
adafruit/Adafruit GFX Library @^1
adafruit/Adafruit SSD1306 @^1
adafruit/Adafruit MAX31856 Library @^1
bitbucket-fmalpartida/LiquidCrystal @ ^1.5.0
PID
SPI

; Version 1 - LCD
[env:attiny1634]
platform = atmelavr
board = attiny1634
framework = arduino
monitor_speed = 115200
build_flags = '-DVERSION=1'
lib_deps =
adafruit/Adafruit MAX31856 Library @^1
bitbucket-fmalpartida/LiquidCrystal @ ^1.5.0
PID
SPI
Loading