Giter VIP home page Giter VIP logo

reflowmaster's Introduction

ReflowMaster

Reflow Master is my open source toaster oven reflow controller that I also sell full assembled on tindie: https://www.tindie.com/products/13378/

Reflow Master

It's custom hardware and custom code but all open source so if you want the challenge of making one yourself or you want to hack the code, go for it!

I have a live stream build of the board here if you want to see what's involved https://www.youtube.com/watch?v=OGQ-GZZ90oE

ReflowMaster Design Files

Included in this repository:

  • EagleCAD schematics and Board layout files (Eagle 9.1)
  • Exported Gerber files (Gerber 274X)
  • STL files for the 3D printed case
  • Adrduino code

Open Source License

The hardware design files are released as open source under the CERN license. Please review the license before using these files in your own projects to understand your obligations.

STL files for 3D printing

I have included the STL files for the case and also the exhaust fan adapter I made for my specific toaster oven.

NOTE: Do not print the exhaust fan in PLA, please use PET-G or ABS as PLA warps/melts at a low temp. Also DO NOT connect the 3D printed exhaust fan directly to the metal of teh oven, it will melt and ruin your oven. You will need to add some heat resistant insulator between the metal and the 3D print.

Which TFT?

The TFT I am using is a 2.4" SPI TFT using the ILI9341 Driver available via...

AliExpress https://s.click.aliexpress.com/e/_DevvrLr

Ebay https://rover.ebay.com/rover/1/705-53470-19255-0/1?icep_id=114&ipn=icep&toolid=20004&campid=5338252684&mpre=https%3A%2F%2Fwww.ebay.com.au%2Fitm%2F2-4-240x320-SPI-TFT-LCD-Serial-240-320-ILI9341-PCB-Adapter-SD-Card-M52%2F291549777432%3FssPageName%3DSTRK%253AMEBIDX%253AIT%26_trksid%3Dp2057872.m2749.l2649

SAMD21 Bootloader

If you build your own Reflow Master, you will need to use a SAMD21G18 that already has an Arduino bootloader on it before it is put on the board. If you need to add a bootloader, you'll need an ATMEL ICE and an adapter for the chip. The cheapest adapter you can get is my SAMD21G Mangler available here... https://www.tindie.com/products/13379/

Updating firmware & Adding profiles - for Version 2.0.0

You can flash your Reflow Master with the Arduino IDE using the code provided above.

If you wish to add or change any of the reflow profiles, you need to do so in the code and re-flash the changes to your Reflow Master.

The Reflow Master board works like an "Adafruit Feather M0" - so you'll need to have the Adafruit Cortex m0 hardware profiles installed as well as the regular Cortex m0 Arduino profiles.

Reflow Master

You can use the instructions here to install everything you need to get up and running in the Arduino IDE: https://learn.adafruit.com/adafruit-feather-m0-basic-proto/setup

You will also need the following libraries from Library Manager

  • One Button
  • Adafruit_GFX
  • Adafruit_ILI9341

Once you have everything you need, you can download the code from this repo and put it into the Arduino folder where your sketches are stored, load the sketch, select Adafruit Feather M0 from the boards list, plug in your RM and turn it on, and select the correct port from the ports list and flash.

The easiest way to put a new profile into the code is to change one of the existing profiles, by altering the values in it's class initialiser. Information of what each value is is available in the ReflowMasterProfile.h file: https://github.com/UnexpectedMaker/ReflowMaster/blob/master/Code/Reflow_Master_v2/ReflowMasterProfile.h

Enjoy!

Support Unexpected Maker

I love designing, making and releasing my projects as open source. I do it because I believe it’s important to share knowledge and give back to the community, like many have done before me. It helps us all learn and grow.

That said, a lot of time, effort and finances have gone into designing and releasing these files, so please consider supporting me by buying some of my products:

https://unexpectedmaker.com/shop

https://www.tindie.com/stores/seonr/

Or by becoming a Patron:

https://www.patreon.com/unexpectedmaker

Join my discord server

https://discord.com/invite/xAHpApP

Unexpected Maker

https://unexpectedmaker.com

http://youtube.com/unexpectedmaker

http://twitter.com/unexpectedmaker

https://www.facebook.com/unexpectedmaker/

https://www.instagram.com/unexpectedmaker/

reflowmaster's People

Contributors

dmadison avatar unexpectedmaker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

reflowmaster's Issues

hermite tangents not supplied

I am surprised your environment doesn't crash because of this, esp32 does

  baseCurve.setPoints(CurrentGraph().reflowGraphX, CurrentGraph().reflowGraphY, CurrentGraph().len);
  baseCurve.setDegree( Hermite );

You specify Hermite, but provide no tangents to _m
void setPoints( float x[], float y[], float m[], int numPoints );

in spline, this causes exceptions on esp32, loadprohibited , since _m is unset

     // calc()
     // _m[i], _m[i+1]
      return hermite( ((x-_x[i]) / (_x[i+1]-_x[i])), _y[i], _y[i+1], _m[i], _m[i+1], _x[i], _x[i+1] );

Oddly , The spline lib doesn't seem to catch this or ensure that _m is set for hermite sets..

No idea what memory this accesses on samd, maybe its safer, shrug.

MPNs of the components in the BOM File

Hey, I am trying to build this oven, but having a hard time finding the exact components. Can you please provide the MPNs of the components in the BOM File?

Thanks in advance!

New language options

Hope to add language setting option in the next version
I can help adapt to Simplified Chinese, Traditional Chinese, Japanese

BOM and Schematic PDF

Great project. Thanks for sharing it!

Might I suggest listing a BOM of the purchased parts?

Affiliate links are always welcome as well.

Also I support your decision to add a "Buy Me A Coffee" link. So many times I've found and used an open source project and have no way of expressing my thanks to the person that put all the hard work into it. I really wish GitHub had this integrated.

I've attached a PDF of the current schematic (Rev F) as I find this super handy when checking out a project.

ReflowMaster_Rev_F.pdf

Update GERBER

I tried to download the GERBER file and found that the version is 2018-2. I noticed that the version on tindie is 2019-2. Please update the file. Thank you.

Support esp32?

Thanks for sharing great Project. I need to know this code support for esp32. I need to buikd dIY but SAM IC dificult to find in my town. Thanks

Proportional controller performance

Hi @UnexpectedMaker and thanks for your open-source projects and YouTube videos.

I am making a pretty similar project for a hot plate where I replace the original controller board with a custom one. Since there is just space for a segment display and some buttons, reflow profile will be configured from a smartphone using BLE. The hardware is mostly final and I am now working on the firmware using ESP-IDF.

I stumbled upon your project and found that you use the same thermocouple chip (MAX31855) than me and I am wondering how did you settle on the current temperature controller. I started working on a PID controller but saw that that you are only using a differential input:

duty = base + ( 172 * perc );
duty = constrain( duty, 0, 256 );

I did not try to tune the PID controller on the plate yet but was wondering how did you settle on a proportional-only controller? Does the temperature closely match the chosen profile? I also saw some recommendations to rather use bang-bang (on-off) controllers for heaters due to the large inertia.

Bom don’t contain certain part names only what package

I can’t seen to figure out what voltage regulators you are using? The diode is also just the package type. Also the crystal is the same just the package. Kinda confused about the 12.5 pf 0805s also since they aren’t able to be bought. I’ve asked and searched a few suppliers and have been told such a part isn’t made.

BUG? startFullBlast

If I set startFullBlast true, ( I expected startup to be 100% for a bit )

Instead it goes 100% and stays 100%

I can't see whats wrong here

  // override for full blast at start
if ( set.startFullBlast && timeX < CurrentGraph().reflowGraphX[1] )
    duty = 256;`

seems like it should only override the first graph point or reflow level but it keeps going

Anyone have ideas, I am still trying to understand the MatchTemp function and timex graphing loop

Updated Board Files?

I ordered a board from you last year (thank you, by the way!) and it's labeled "2020-2". It looks like the EAGLE files in the repo are labeled "2018-3" and are missing the programing header.

Is there any chance you could update the board files in the repo to the latest version?

abort immediate

abort does not turn off heater immediately

  • add SetRelayFrequency(0);
    do not wait for return and loop
void AbortReflow()
{
   SetRelayFrequency(0); // relay off
  if ( state == 1 || state == 2 || state == 16 ) // if we are in warmup or reflow states
  {
  • moved in front of state checking, and always abort!, in case a bug causes a bad state etc.

Which USB socket?

Some BOM items are hard to identify, especially the Micro USB socket. What is the exact component used?

I tried two different components but they do not exactly fit the footprint. I noticed the two holes in the PCB, presumably for little bolts in the component (which would actually be very useful for manual pick and place).

Also, which exact MCU is used? The BOM just says ATSAMD21G-A, but there are dozens of variations of that chip in a 48pin package. Does it matter or can I pick any?

Can't get eagle files to work

I am trying to get the eagle files to work but it keeps giving me the same error

"Error:

line 8, column 16: This is not an EAGLE file.
"

SSR PWM potentially not fully on when set at 255

According to the Adafruit guide on Arduino sketches on SAMD21, performing an AnalogWrite(255) only sets the PWM to 255/256 rather than 255/255. As such, a special case is required to handle when it's at 255 and just digitally set the pin high. This is relevant to the SetRelayFrequency function

Might be worth investigating this, as it will improve ramp-up (marginally) and stop the toaster getting cut off and then slammed on again in periods where it should just be happily humming away. Unfortunately I don't have any hardware with which I could test this sorry, so might be a red herring if the info is wrong or the SAMD21 Arduino core has been changed.

BUG? overshoots

I think I found a bug, but I am hacking on my own fork and have not reproduced using upstream so was wondering if someone could confirm.

I noticed when I had sharp curves ( I am making some custom curves ) I was getting massive overshoots, 20-30C, and the heater would turn on randomly when way above wanted temp and even on cooldown, so I figured something might be wrong.

It looks like percent can be negative which causes duty to go above 0% and pulses the heater when it is not needed.

I added some sanity checking for perc and it seems to made a huge difference.
But if someone could check and test and make sure this is not going to break something.
change is below

MatchTemp()

    // prevent perc less than 1 and negative and greater than 100
    perc = constrain(wantedDiff - tempDiff,0,100);
    if(perc < 1) perc = 0;

BAD log
(ignore the T stamp, I am using a holding pattern)

T: 70.00  Current: 125.30  Wanted: 105.00  T Diff: 0.00  W Diff: 0.00  Perc: 0.00  Delta: -20.30  Base: 0.00 -> SetRelayFrequency
RELAY Duty Cycle: write: 0.00 0.00% Using Power: 100%
Holding..

T: 70.00  Current: 125.68  Wanted: 105.00  T Diff: 0.37  W Diff: 0.00  Perc: 0.00  Delta: -20.68  Base: 0.00 -> SetRelayFrequency
RELAY Duty Cycle: write: 0.00 0.00% Using Power: 100%
Holding..

T: 70.00  Current: 125.60  Wanted: 105.00  T Diff: -0.08  W Diff: 0.00  Perc: 0.08  Delta: -20.60  Base: 0.00 -> SetRelayFrequency
RELAY Duty Cycle: write: 12.00 4.69% Using Power: 100% <------- HMMMM
Holding..

T: 70.00  Current: 125.39  Wanted: 105.00  T Diff: -0.21  W Diff: 0.00  Perc: 0.21  Delta: -20.39  Base: 0.00 -> SetRelayFrequency
RELAY Duty Cycle: write: 36.00 14.06% Using Power: 100%

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.