Roast controller now at full power.

So I’ve played around with the PID settings.  I haven’t officially sat down and tried to do a “real” tuning since the processing app I’m using right now lets you play with different numbers and feed it back to the Arduino to tweak it.  As a result I came up with a few numbers that flattened out a lot more than it did previously.

First roast with crudely adjusted PID

Next I will need to take it more seriously I wipe out the configurations, dump some junk beans in, and fire up the roaster and calibrate until I can’t stand it anymore and then roast some coffee again.

In regards to the button controller I have figured out a layout that I will likely use but I’m trying to keep this accurate on the schematic system I’m working with to build a real PCB later.  For whatever reason the part in the system appears to not match every other part I’ve seen out there and what I’m currently working with.  I also need to go back to radioshack and buy a resistor I’m going to need because the big multi-pack I have doesn’t include that one resistor that I need to make the math work.

The last couple roasts with this new controller turned out decent enough.  After 3-4 days rest they had extremely good smells (but tasted only “pretty good”.)  Today’s two tests are MUCH closer to ideal roasting the way they worked out and the smells (and the smoke detector) agreed at the right times.  I’ve got two batches waiting that will get consumed over the next several days and we’ll see how it’s going as they rest.  I’ve got a single serve coffee brewer that’s working out better than some of the other ones so it will take me some time to work through all of the beans.

Ahh the smell of progress… roasting coffee!

So as I mentioned yesterday I roasted some coffee.  This time (except for manual control of the fan) the roaster did it all by itself.  I had given it a handicap of limiting power to the heater only to 85% of the capacity but it appears to have worked ok.  The Arduino roaster controller worked well enough considering the state it is in.  Power control from the Arduino worked for manual potentiometer signaling the fan speed and a data array of settings for the heat controlled the roast automatically trying to maintain the temperature.

I’m going to increase the power again to 90%.  The room temperature was around 45-50 degrees since I roasted it out in my garage so I think it did pretty well getting to temperature.  I’ve also bumped the fan up slightly to a higher maximum.

I will need to get a button controller going soon so that I can force the system from automatic into manual mode so I can quickly shut down heat if necessary without having the laptop connected while letting the fan continue to run.  I’ve got a CAD type design of a PCB going that has a button controller but I haven’t ACTUALLY prototyped it out on some RadioShack boards.  I do have some etch-able boards here to try a toner transfer to build out some controls.  I still need some carbide drill bits though for drilling the through hole parts and the jumper connectors.  If I had SMD header pins I think I actually have all the parts I’d need to build a 6 or 7 button analog pin matrix.  I may need a couple more resistors though to pull that off.  I’m pretty sure I could get at least 4 buttons though.

The power control system had started to get out of control with the heat sinks so I had to beef it up some.  Before anyone says it I know the large heat sink is on upside down.  I didn’t want to drill the board before I was sure it was going to work so those bottom pins are sticking out the top.  I’ll probably run it like this for a little while until I make a permanent board though.

So for those of you keeping track… I went from this:

First working prototype in Radioshack Project Case

To this:

This is MUCH better for the following reason…heat sinks got out of control and all the wires were getting obnoxious:

Next Steps?

  1. Increase allowed power to heater
  2. Make button control pad.
  3. Tune PID.
  4. Improve CSV log system.
  5. Add automation to the Fan control.  Use mild PID triggered adjustments to the fan.  Coarse heat changes by heater.  Minor heat changes (a few degrees) by Fan.
  6. Add current sensor to judge wattage to the heater.
  7. Get profiles loading from SD memory using button pad to select them.
  8. Begin creating circuit to connect my original PIC32 project to the arduino over serial / rx/tx or other communication method.
  9. Complete 7 inch touch screen (I have a screen designed but it’s not entirely stable yet… the backlight flickers occasionally and the image stutters here and there but it’s there…)  I’ll upload a bitmap from the layout tool soon.
  10. Migrate most functions to PIC32 eventually.
  11. Build a final PCB.
  12. Get a case made for it.
  13. Roast lots of coffee.
  14. Brew it.
  15. Drink it.

First test run of the Arduino FreshRoast SR500 Controller

This afternoon when I was home for lunch I ran the Arduino control touching a light bulb plugged into the heater output.  It tracked the heat pretty closely until it got up around 300 degrees.  It overshot by about 10-20 degrees initially and then once it caught up it was pretty close the rest of the way pulsing the power as necessary.  After it neared 300 degrees it couldn’t keep up and started lagging.  At that point I left the fan running at full speed for the duration of a normal roast.

This evening I went out and plugged in the heater.  The heater is a totally different monster!  It tracks but it OBVIOUSLY needs the PID calibrated until it works better.  At low fan when the heater dies down it has a massive swing in temperature going under and then back over again.  It appears to only do ok at the lower temperatures and then is all over the place at the higher temperatures.  What is noteworthy is that it DOES track the same “slop” drift around the target temperature all the way up.  The drop/gain on the % power is simply too drastic and needs to be adjusted to flatten out more.

For giggles I’m throwing out for view a test graph as it ran (no beans) for a few minutes once with low fan and another with higher fan.  I have the heat maxed at 80% power in the program so that I don’t burn anything up accidentally until I’m sure it can run like it should.

First Arduino Roast Controller test with heater connected

In the lower graph it shows a low fan vs a higher fan setting.  The middle one is a heat amount that actually gets reduced to 80% in the code during testing.  The green in the top graph is the target while the red is the actual temperature reading. Both tests were run with the roasting chamber left empty.  I’ll try adjusting the PID settings a little bit to smooth it out to have smaller sweeps and then start loading some old green coffee in to test it with a “load” and see  how much that stops the swing.

Now that the heat is able to be completely shut off this helps the temperature drop a lot faster.  It’s my guess this would be better for the roaster overall to completely drop the temperature of the coils before turning it off while it cools the beans.  I’ve set the system so that the cooling requires the probe to reach a low temperature before turning off so the coffee beans should be quite cooled before it shuts down by itself.

Nearing a rough prototype roast controller setup

I haven’t had a lot of time to work on this project lately.  A few weeks ago I had ordered a variety of jumper/header crimp pins, housings, and tools to crimp with.  With those ends I’ve pieced together “arduino compatible” wiring harnesses to go between break out boards, arduino and to the perfboard and other pieces I’ve thrown together.  As a result I feel I am now approaching a rough prototype roast controller.

One of my other purchases was a “Crib for Arduino” to mount some of the pieces inside a box that were not already part of the RadioShack case pictured in my last blog entry.  Most of the crazy wiring on the Arduino photo has been woven together into separate bundles and connected directly to the DB25 connector cable which I’ve also been slowly crimping together.

I would have been testing the fan and heat controls last weekend (and when I had time this week) except that when I finally got it hooked up the fan and heat were no longer “smooth” but instead stuttered all over the place.  It had been quite a while since I had the Arduino side of it hooked up to the mains power so I had to go through and double check all the wiring in the harnesses and DB25 hookups.  Eventually I figured I’m either overloading it with the service schedule on reading sensors and writing to SD, updating the screen and not having time to trigger the mains voltage properly or else the timer wasn’t triggering properly.

Once I had confirmed all the wires were right I looked up the interrupt lines and timer lines in the Arduino website and realized the code probably had the wrong interrupt in there.  Several months ago while trying to clean up some of the code I remember having accidentally typed over the interrupt number in the attachinterrupt line and saved it without realizing it had been modified while updating other code.  Once I returned it back to the proper interrupt for the pin I was using everything worked again.

Tonight I tried running a load of beans through the roaster on fan only.  I believe my adjustments for the fan power are slightly off because the beans begin moving a tiny bit too far into the % potentiometer.  I’ll need to try running beans in an unmodified roaster and pay attention to the level of movement in both roasters based on the position of the knob.  If I had some sort of manometer it would probably help more but I don’t have one.  There are several DIY projects that appear to have built one that I’ve seen months ago that I might end up trying to look up again but I’ll have to see how well it goes without it.

This weekend I’ve got other things going on so it will probably be over the next week and following weekend that I try to calibrate the fan and then the heater.  Once I’ve accomplished both things I’ll begin testing the PID settings to see how well I can control everything to automate the roast

Once the automation appears to be working I do want to add a few additional sensors still.  I then will start working on an Arduino to PIC32 conversion of the controls adding the touch screen and using it to send instructions to the Arduino.  Then slowly migrating more and more sensors and devices back over to PIC32 until eventually I’ve eliminated the Arduino unless it proves helpful to have separate microcontrollers for specific functions.  There will probably be a basic Arduino compatible roast controller in between that will be built onto a PCB that will be professionally produced using one of the quick PCB prototype companies.

 

Arduino roaster controller with zero crossing dimmer

With all the time I’ve put into the Pic32 roaster I’ve always had this nagging worry that any of my sensors may have had damage during testing. When you try to get something working and keep getting gibberish you need to find a way to rule that out. As a result I decided to purchase an Arduino a few months back to confirm everything works. Turns out (so far) that everything IS actually working and I didn’t damage any sensors.  In the months I’ve been working with the Arduino I’ve actually learned a few reasons why some of the sensors didnt work on the PIC32 the way I had programmed them because learning to program an Arduino is sooooooooooooooooo much easier and better documented for “average people” to figure out compared to reading the hundreds of pages of technical manual for the PIC32 that isn’t ACTUALLY even finished being written yet.  There is a ton of code out there to test every single sensor I’ve purchased so far on Arduino. In addition I decided it would be a great way to start the dimmer using zero crossing detection in a system that runs outside the PIC32 before I convert it.

My intention is to get basic functions working on Arduino, then get the PIC to talk to the Arduino to send it commands to switch power by itself while the PIC reads all the sensors and logs data and then decides what to do as it comes from the Arduino.  Finally it will eventually be migrated entirely to PIC32 when I learn more about the interrupts on PIC32. At the moment I’ve put together a board that takes in 120VAC and uses Q4015L5 Triacs and MOC3052 drivers to control power to two receptacles. It reads the zero cross on my power using a H11AA1 and gets an interrupt used to trigger power switching. During my initial testing I confirmed the zero cross detection circuit worked and switching the triacs manually on or off worked without  regard to the zero cross state. It unfortunately didn’t seem to actually switch automatically for some reason when I wanted it to dim.  After a few days of testing I realized the Arduino Mega and the Uno had the interrupt timer pins in different places.

Since this is the first mains power circuit I’ve worked on I started running it with a variac out in the garage (and then fed that out into the driveway at the end of an extension cord…) and gradually turned the power up from 0 to 120VAC testing each section as I built it to ensure nothing arced or got hot or burnt up.  During late November I hooked it to the Arduino and got it to begin adjusting fan and heater under PC control as well as using two separate knobs.  Later in December and January I got it to begin logging to SD memory and following a programmed profile.  After that I added a bunch of additional environmental sensors and mounted it in a RadioShack project case.

 

First working prototype in Radioshack Project Case

I’m now at a stage where I’m looking to consolidate the various sensor cards either down onto a circuit board or attached to a set of pins directly.  I’ve grown tired of accidentally unplugging random wires carrying it back and forth from the garage to my office area and out to the kitchen stove / vent at various stages.  My hope is to shrink it down to a much less complicated arrangement being mostly on a single circuit board and interfaced by a few short cables to the Arduino.  It’s a bit complicated currently and getting worse.

Jumble of Arduino stuff

For the Arduino I’m using the MEGA 2560.  It is attached to the power control box pictured above via the DB25 cable.  At this time the box only controls power but I’ve mapped out pins on the DB25 to use for future boards to allow sensor breakout boards from a variety of DIY electronics companies to plug into them.   I’ll break this out to various header pins that match various breakout boards so they can be directly attached.  I’ll probably also design positions for eventually soldering chips directly to a board later once I order them when I’m further along and jumper the headers into those sections.  This will let me test a circuit on the board while still ensuring it actually works with the breakout board first.  The board will be designed to replace the items in the RadioShack box using SMD parts in some cases where cheaper and more convenient to shrink the board down smaller.  I hope to have it all shrunk down and consolidated to a single board with a DB25 connector to get to an Arduino I’ll be mounting inside an Arduino Crib case.

FreshRoast SR500 Teardown – Part 3

Continuing the series of taking a Fresh Roast SR500 apart leads us to the internal heat / air mechanisms.  At this stage you have reached the components critical to any modifications of your roaster.  I’m updating this post in December with photos taken back in October when I stripped the roaster down the rest of the way and began building my modifications.

Part 1 we started with the external screws to gain access to the internals.  In Part 2 we separated the electronics between the high and low voltage and then lifted the high voltage board out with the heater/fan.  This left us here:

Heater / Fan and Power board assembly

We have now reached the point where we unplug the old roaster boards and start looking at attaching alternate controls.  At this point you are going to separate the metal connectors from the board (assuming you are replacing any of these parts or modifying it in some way)  You will have a black plastic cover from the top, a metal cone underneath that funnels the hot air towards the vented top, and a black plastic pan with a fan sticking to the bottom.  The pan will have three screws.  You see one of the locations to the left side and another to the right.  The third one is not visible in this photo due to it being on the back side of everything you see.  If you remove the phillips screws from these locations it will allow the top plastic piece to be separated.  The top metal piece is sandwiches between these plastic pieces and held in place with the screws mentioned above.  The metal piece is sealed to the heater mechanisms inside the bottom black plastic pan using silicone sealant.

Once you lift the top covers off and break the silicone seal you see this:

and this:

The fan is firmly connected to the bottom and up into the blades.  The fan is a straight sheet of metal leading from the middle out to the edges with a flat disc on top.  It is not apparently simple to separate and seems quite “stuck” in place.  The middle “axle”/hub of the fan does not appear to have an obvious way to disconnect it though I’m sure there is a way to do so.

Looking back at the heating area you will see the bimetallic switch and a temperature sensitive fuse.

In the center there are two bolts/nuts .  These anchor the top part of the funnel to the heater coil.  You will notice 4 spots that look like staples above.  These are how several supports made of the same material that the fuse and switch are riveted to.  There is a metal ring holding this all in place with a “washer” made out of the same material again.  This material is a high temperature material often used in heat guns, hair dryers, and popcorn poppers.  It is designed not to burn and to cool off quickly.  There is no point in disconnecting the nuts  you see and you are likely to damage something in the process when you try.  Immediately under the center part is a small heater coil that connects to the fan.  This coil always generates heat whether the system is on or in “cool”.  It is used to lower the voltage from 120 volts to somewhere close to around 20 volts DC using resistance and the resulting energy given off by the coil.  The remaining electricity leads out from the system to the “black box” rectifier on the bottom of the fan motor.  The outer coil is on the opposite side of the slit and continues all the way around providing the majority of the heat.  You can see the outer cool quite clearly in the photo below.

In the photo above and below you clearly see the temperature fuse.  This device is called a ThermoDisc Microtemp thermal cutoff.  There is a PDF that discusses the features of this particular device http://www.thermodisc.com/uploads/PDF-ecombro.pdf.  It also has a diagram of the inner mechanisms that make this work.

It is a Thermodisc G4A01216C 216*C Cutoff.  Once the red stuff melts (at 216 degrees Celcius) there is a spring inside that is released and it mashes the wire outside of the housing and no longer makes contact to allow the electric to flow.  Once it fails the only way to repair it is to bypass it or to put a new one in.  Since the mechanisms are anchored with a rivet they are not the easiest to source and replace but it is possible to do.

The last mechanism is a Klixon YS10 46b-s x9ab.  This is a Klixon YS10 Series 150*C Beryllium Copper Arm, Standard Length Terminal (31.5).  Normally once it triggers at 150 Celcius it then has to cool before it works again.  The reset is set to 90 degrees normally and some models has a different offset.  YS10 specifies the type, 46 is the temperature (150 degrees) b specifies Beryllium Copper (the bimetalic switch material) -s for standard.  In the X9ab position this would possibly be where a different temperature reset amount would be specified.  It does not clarify the numbers used there.  It appeared in the PDF linked above as (XX) in the part number.  This MIGHT be that it needs a 9 degree temperature drop on the switch before it engages again assuming it uses an X as a place holder rather than using a 0.  Since it is not in parentheses this might simply be some sort of a plant number or production date rather than a temperature offset.

 

Modification:

Many modifiers like to disconnect both the fuse and the bi-metallic switch.  I do not advise this unless you are absolutely sure what you are doing.  If you wish to use the center heat coil separately or with the main coil together this is up to you.  You will need to disconnect the white wire that leads to the fan by prying open the brass clip (under the heat shrink) and supplying your own transformer to around 20 volts AC to independently control the fan.

At the moment I’ve been using an Arduino to control a Q4015L5 triac with a MOC3052 and a H11AA1 as a zero crossing detector. There are two triacs each used to separately power the fan and the heat circuits. Each side’s gate is triggered with a MOC3052 opto-isolator by a single pin on the Arduino to a resistor through the moc’s infrared led and on to the ground pin. The H11AA1 works the opposite way triggering a led on the high voltage side and it measures the fall of the 60hz sine wave of US electric.  Each fall signals the Arduino on another pin that is connected to a hardware interrupt on the processor. The interrupt sequence compares the fan and heat potentiometers to a map and then uses the lookup value to set the length of a processor timer. The timer then comes back and fires the fan or heat pin that fires the MOC3052 linking the triac and connecting power from the input side.

I disconnected the white wire from the fan and routed it with the primary heater coil so that they both run at the same time. On the fan side I connected it to a transformer from Radioshack that outputs 25VAC. This appears to adequately run the fan and delivers more air flow than normal due to the fan being “overdriven” from it’s normal voltages. While this is not good for long term use this could be useful if properly triggered in the programming for cooling and drying or initial heat up. In other words turn heat on at 70%. Start fan at 120% Gradually drop fan to 100%. Increase heat to 100% while dropping fan to 60%. Etc…

While running the system from a variac and through a watt/amp monitor I found the fan consuming approximately 50 watts at the original 100% air flow on through the new maximum around 70 watts for a 125 to 130% flow rate. Once I turned on the heater I found the original wattage level use set at 80 to 85% heat and what seemed like a normal heat output felt by hand in front of the output. Lately I had been getting around 1520 watts with momentary flutters up to 1580 at high and full fan before bypassing the controls. Now at 100% it was showing upper 1600 to 1750 watts for the brief few seconds before I turned it down.

I’m pretty certain this is not designed to run like this and would likely melt something if left to run this way on it’s own without some sort of “safety” override in the programming. What I would expect to be necessary is to mandate original 100% air flow before the heat can be turned past the usual level and the fan cannot be lowered until a specific number of seconds after the heat is dropped to a normal number. Additionally there should be a limit on the duration of this heat overdrive. This would be used to help drive the roast in a way many home roasters like to use to try reserving some heat until towards the end to drive it to second crack or some other nuance.

This should be thought of as some sort of reserved “afterburners” to a skilled pilot used only when necessary or someone pushing a nitrous injection button on a race car or turning on some super charger.

Once heat has been disabled it clearly cools off much faster than before. As of 10/10/11 I’m waiting to more firmly mount all the controls and switch to the new potentiometers before testing a roast. I also have a few buttons for start/stop and a microSD logger to setup first before I start this because I want to track thermocouple readings vs each of the percent settings etc so I can review it later after my first test. If anyone has a way I can sense the wattage use and feed it to the Arduino too please let me know. I’ve seen a few very LARGE devices intended for whole house sensing but I’m looking for something small….

FreshRoast SR500 Teardown – Part 2

Welcome to Part 2 of the FreshRoast SR500 Teardown. In Part 1 you saw the basic steps to open the SR500 properly. This article will explain how to continue a teardown a FreshRoast SR500 roaster into the various components and probably give insight to similar pieces in a SR300 as well. If you are looking to modify an SR500 the following content will be the best starting point for understanding what makes your roaster work as it sits. It will include technical information about the components that make the SR500 work. Part three will begin to make suggestions of where modifications will need to take place if you wish to split fan and heater control to external dimmers, VARIAC devices, or otherwise control your SR500 with a Microchip PIC, Arduino, or other microcontroller or PID controller device.

This article was made possible by having purchased a spare SR500 base that can be completely broken down and tested upon. I will be using this base to interface to my roasting computer.

You should refer to Part 1 if you need assistance opening the roaster. Most people should be able to open the roaster without the first guide but it is a good idea to review it briefly to become familiar with what you are getting yourself into and deciding if you are up to it getting inside. Most of the connections are very “coarse” and use through hole parts.

For my project I am going to be using surface mount parts which requires a bit more skill. There are many options out there so if you are looking to simply use something like a 20×4 character LCD you can probably find a way to do this without the surface mount parts. If you want to continue with a graphical LCD like I am you will likely need to learn about more advanced methods of soldering.

If you are unsure you should research and contact a “Maker” or “HackerSpace” club in your area. Examples of such include NoiseBridge in San Francisco. There are plenty of other groups throughout the USA as well as in many European countries. The closest one for me is about 3 hours away unfortunately so I’ve had to resort to figuring most of these things out on my own. Coffee roaster computers are a pretty popular thing out there so you can probably find other reference material out there.

Most of these groups offer classes in soldering as well as often having capabilities to help design/build enclosures, mill parts, create circuit boards, and have shared equipment for laser cutting, CNC milling, 3D printing and many other systems. Not all groups have these amenities and many require you to demonstrate a level of mastery, take classes, or otherwise “wait for time slots” on the items of interest. Hackspaces normally charge a monthly membership to participate and use the facilities but usually have forums, IRC channels, and other such things where you can find out more information before you commit to driving for a visit.

Removing the inner parts of a FreshRoast SR500 Coffee Roaster

You will need:

  • A small phillips screwdriver.
  • A SR500 Base with the bottom removed (SR300 may be similar except for changes to the microcontroller board)
  • A baggie or small tray to hold screws
  • A clean area to work
  • Optional: Items to label the wires removed. This should be done as you unplug each wire so there is no confusion.
  • Recommended: Needle-nose pliers to grasp some of the flat connectors and pulling them from the circuit board.

Step 1: Unplug your SR500 from the wall and remove bottom as described in Part 1.

FreshRoast SR500 Interior

Step 2: Identify the high voltage power wires inside the case leading from the main black wall power cable and detach them (N and L1)

It is absolutely critical that you have unplugged the power before performing this step or you will be electrocuted.

The wires you need to remove are labeled N in the middle of the board and L1 on the JP2 side lower down on the board. Normally this would be Neutral (N) and Load (L1). Normally in most North American electrical devices you would not label things L1 and L2 unless you intended to have an L3 for three phase electric or were enumerating your loads. Since the wall plugs into one of the L’s and the other goes to the actual load this seems a little odd but I can follow the reason. Regardless, both will need to be removed to lift the circuit board and heater system up out of the enclosure. You should use the needle nose pliers to grasp the connector and pull it up. Grasp it by the metal and not the wire. Pulling by the wire will rip it out of the connector requiring it to be replaced with crimpers and appropriate ends. You should try to support the board so that pulling the ends do not put additional stress than is necessary.

It is ok to slide the circuit board up some as shown in the L1 photo. It will be difficult to lift the board up very far prior to removal of the N and L1 wires. Again, support the board as you use the needle-nose to pull the wires off.

N on right between 100W and JP1

N on left between 100W and JP1

L1 on Left below JP2 and MOC

L1 Removed below JP1 and MOC3043 chip

N removed

Step 2a: If desired during step 2 above or 3 below you may wish to remove the power circuit board from the PCB guides in the enclosure.

Gently slide the power board upward on both sides trying to clear the top edges. This may be difficult to do and is generally not necessary until you wish to remove L2, 100W and 1000W.

Power Board being lifted out of guides

Step 3: Remove JP1 and JP2 low voltage cables.

Both of these cables are low voltage and will come off easily when pulled. JP1 connects to the main logic board with the Atmel CPU and front control panel. JP2 connects to the Fan Speed Control potentiometer.

JP1 Removed

JP2 Removed

Step 4: Slide heater/fan assembly out while looking for the NTC sensor cable.

Do so slowly because the NTC sensor is still attached to the main logic board. Once the heater top layer begins to slide out of the enclosure you should try to find the wiring coming from the side of the heater. If you removed the circuit board from the guides pay attention to it as well so that it does not catch on anything.

NTC Sensor on Heater Enclosure

Identify the connection on the main logic board and unplug.

NTC Sensor connector

NTC Sensor unplugged

Step 5: Inspect the removed heater and power control board.

Heater / Fan and Power board assembly

You should be left with a loose middle portion of the enclosure with the main logic board still attached.

Middle Enclosure with Main Logic Board

Put it to the side and continue with the power board removal.

Step 6: Remove the 1000W, 100W and L1 cables to separate the Power Control Board.

Using the needle-nose pliers pull off the 1000W, 100W and L1 cables from the Power Control Board. This will allow replacement, modification, or other inspection to occur more easily.

As mentioned above L1 and L2 are a little odd in North American wiring but regardless the white wire is the Neutral and Black is the Load typically. Since we have 1000W and 100W and one has black and one has a white wire this continues in not complying with North American wiring standards and there are other reasons this roaster is abnormal with wiring so we will disregard this in thinking about the roaster. The 1000W connection white wire comes from a large outside heater coil and gets fed power from the L2 connection. The 100W side requires voltage to be applied to L2 and will operate both the fan and the small center heating element.

The 100W side heater to fan wire connects to the bridge rectifier on the base of the fan motor and is wired this way to use the heater coil in the middle to provide resistance to drop the voltage to a level acceptable to run the fan. The black wire side of the bridge rectifier is connected to the 100W connection on the power board creating a second complete circuit. The fan itself (after the rectifier) picks up its power on the other 2 wires once the internal mechanisms “do their thing” in that bridge rectifier. There is a capacitor jumped across the rectifier and I’m not very familiar with rectifiers and using a capacitor but I would guess this has something to do with the zero crossing and trying not to “sputter” when the power cuts out momentarily since this is DC for the motor and AC for the power source.

Alternate angle of power control board.

JP1 is labeled with J1 through J5 positions. J4 and J5 go to pins 4 and 5 on the MOC3043 chip. This is for microprocessor control of the attached devices. The board appears to have spots of solder placed on each of these that look like a “via” that someone tried to solder over but there does no appear to be a real via on this board since it appears to be a single layer board when viewed in front of a bright light. I’m not really sure why those spots are there. If someone has any ideas please pass them on and I’ll add them here.

J3 connects to the Neutral connection. J1 appears to go around the edge of the board linking to the fan potentiometer circuit and the BTA08 (Q6) trigger. J2 leads directly to the BTA16 (Q5) trigger.

Electronics and Connections Analysis

Normally in home electrical work you are required to switch the load side on or off prior to whatever object gets the power. For example you have power going to a light switch. The wire that comes out of the switch then leads to the light and then the light connects to neutral. When you flip the switch you supply load power to the switch, the light then illuminates, and then it passes the electric to neutral completing the circuit. This is typically a safety measure so that you can change light bulbs and particularly remove broken ones with the power off and not get electrocuted as well as generally being good practice in case of almost any other malfunction. This is not how the roaster is wired. If you had the ability to touch either the fan or the heater coil while it was plugged in but not running you would get electrocuted because they appear to be always live. Since they are physically enclosed it is not as important but will affect how you control the roaster.

The slide switch on the front and the cool/up/down adjustments only control the (right) gate sides of the two triacs. This gate is like a light switch. Normally this is a high voltage that is triggered by an opto-isolator chip. The MOC3043 inboard does this for one of the sides while other circuits trigger the other side. The other pins of the triac are the high voltage switched side connections. Both the 100W and 1000W neutral wire connections lead to the middle triac pins of their respective sides and are then gate switched to the wall Neutral pin in the middle of the board on the left side of the triac.

The 100W side’s use of the heater coils is used to drop the voltage by resistance to the fans rather than using transformers or other devices to provide lower voltage to the fan. It is more important as a voltage control than it is as a heater. The fan being connected this way results in some heat being generated whether you are in the cool cycle or not and would vary with the fan speed. Obviously changes in heat are slightly mitigated by the air flow. To fully control the fan separately from all parts of the heater you would need to separate the white wire side and route it to neutral while supplying power separately to the fan by a transformer to control the voltage or else completely remove the bridge rectifier and control it by DC power directly. 100W of heat is not very much and is likely not much of a concern and certainly not really useful either as a reserved heat source. Watching a wattage / amp meter in real time when the fan (with small coil) is running shows about 125-150 watts of power use at full fan. The 1000W side full heater bumps wattage into the 1450 to 1520+ range when supplied a full 120VAC.

The 1000W connection white wire comes from a large outside heater coil and gets fed power from the L2 connection. If you were to separate both of these wires and plug them into wall power you would get A LOT of heat being generated. The 100W side requires voltage to be applied to L2 and will operate both the fan and the small center heating element. Both of these when plugged in separately operate normally. Together I had some issues keeping the fan running once the fan side circuit is set to full power and the heater exceeds half power but this may be due to a faulty potentiometer I was dealing with. Ultimately I wanted heat totally separate from fan so I bypassed this with a transformer entirely and have a different set of potentiometers to install soon. I also switched from neutral gate switching to load side switching.

The fan does not appear labeled with any part numbers or any indication of voltage requirements. Based upon the common construction of many other air roasters and specifically a DIY favorite, the Poppery, being almost all similar it is likely to be a 20 volt fan and runs higher than 1.5 amps at the top.

As shown in Jim West’s blog entry about modifying a poppery http://popperyii.blogspot.com/2011/01/completing-hiros-journey-poppery-ii-mod.html (not affiliated with this site nor endorsing my modifications) the use of a transformer is probably required on the fan if we separate things fully and wish to control fan alone without a lot of complicated electronics. Use of a transformer is more expensive than some of these other options but it is quick and easy. Jim’s diagram of the heat system with the labels for each connection point is identical to the FreshRoast including the safety mechanisms. Those mechanisms on the FreshRoast, however, are calibrated to higher temperatures than what is allowed on a Poppery so the FreshRoast is much like a coffee calibrated poppery.

As a result I would hesitate to agree with anyone removing any of these devices like happens with a Poppery without being absolutely certain of their choice and without building in a lot of additional mechanisms. Pay attention to the old and new schematic areas for my point about the way this is wired. Running the fan alone on a variac at lower voltages works fine. As it exceeds the 20 volts area it begins to show the constant glow of an arc spark in the motor and may arc outside (dangerously) at higher voltages. A transformer is likely to be the easiest and safest solution.

Possible SR300 Fan Speed Modification

On the rear of the “power control board” above it has a silk screen label P/N:306171. I believe this is probably going to be the same board found in the SR300. On the SR500 the socket labeled JP2 leads to wiring on the rear marked R29, R30, and D5 on the “left” side. The position for R29 has no resistor installed on a SR500 but it appears to still have jagged solder and scrape marks on mine.

I believe this is a pre-assembled board made for the SR300 that is tested this way and then forwarded to the roaster manufacturer. My guess then is it is allocated to a SR500 where the manufacturer manually removes R29 and installs it in the SR500 case connecting a potentiometer that is installed on a SR500 panel assembly.

If JP2 exists and is unused on an SR300 the R29 might be able to be removed and replaced with a potentiometer using the JP2 (or holes for it). The front panel might then be drilled and the potentiometer then gets “creatively” installed. I’m going to guess that the plastic is probably already shaped for it and possibly drilled too because it’s probably easier to just put a different gray “sticker” on top depending on the roaster being made.

No impression yet on the “brain” bits of the roaster low voltage board and if the heat switch can be adapted. I would expect this part to be unique for each roaster model unless the installed switch only gets wired to the “High” and off positions of the board and excludes the middle and low position being connected to anything.

FreshRoast SR500 Teardown – Part 1

This article will explain how to teardown a FreshRoast SR500 roaster and probably an SR300 as well. If you are looking to modify an SR500 the following content will be useful as well. It will include technical information about the components that make the SR500 work and suggestions of where modifications will need to take place if you wish to split fan and heater control to external dimmers, VARIAC devices, or otherwise control your SR500 with a Microchip PIC, Arduino, or other microcontroller or PID controller device.

Now that I’ve finally obtained a spare SR500 base I’m a little more comfortable with tearing down the roaster to see what is inside.  This process has confirmed my initial memory of the roaster being simple to open up.

On SweetMarias’ forum there was a question by a user that I replied to about how to open the SR500 to clean it. I made reference to the FreshRoast SR500 being pretty easy to open up to clean it out inside if you felt it had clogged in any way but did not have the ability to just pop one open nor did I have enough notes about it.  The user managed to clean his through the holes in the roaster using compressed air through the various openings due to having difficulty removing the screws and getting the bottom off.  I suspect he missed taking out the screws in the middle labeled as 7 and 8 below.

This article will be the first part explaining how to teardown a SR500 roaster and probably a SR300 as well.  If you are looking to modify an SR500 the later parts will be much more useful though everyone will need to know how to open it up to do most things.

Opening a FreshRoast SR500 Coffee Roaster

You will need:

  • A phillips screwdriver.
  • A SR500 Base (SR300 may be similar except for changes to the microcontroller board)
  • A baggie or small tray to hold screws
  • A clean area to work
  • Optional: Vacuum and/or compressed air to clean chaff from interior of the roaster base

Step 1:  Unplug your SR500 from the wall.

There is serious electrical voltage at levels that can kill you inside the SR500. DO NOT OPEN THE ROASTER BECAUSE YOU WILL VOID YOUR WARRANTY AND YOU WILL GET ELECTROCUTED AND BURN DOWN YOUR HOUSE.  (No really…)

Step 2: Place your SR500 base in a clean work area.

Remove the roast chamber, chaff collector, and lid so that all that is left is a base.

FreshRoast SR500 Base

SR500 Control Panel

Step 3: Since you apparently do not mind getting electrocuted, burning your house down, or voiding your warranty it’s not my fault if you continue further.

When you electrocute yourself and end up dead don’t come crying to me about it…. or haunting me either. I also don’t want to hear from your spouse, parents, kids, lawyer, or the fire department either.  I will smudge stick , holy water, and exorcise this house at the drop of a hat should your “ghost” come to haunt me… don’t tempt me. By continuing further you have indicated your agreement that you are willing to get electrocuted at your own risk and void your warranty and risk burning your house down. You also agree that you will not haunt me afterwards because this is what you wanted to do at your own risk. Now that we have the formalities covered you may (if desired) continue to Step 4.

Step 4: Turn the roaster over.

FreshRoast SR500 Bottom

Step 5: Remove the 8 screws from the bottom.

FreshRoast SR500 Screws (8)

Numbered Screw positions for SR500 Roaster

Step 6: Loosen and remove the bottom plate.

The bottom plate should be VERY loose at this point and could simply fall off.  In addition be aware the top ring of the roaster will be very loose now too.

FreshRoast SR500 Bottom Plate and Screws

Step 7: Bag up your loose screws so that you do not lose them.

Better to be safe than sorry.  Store the loose screws in a tray or sandwich bag.  There will be additional screws later if you remove the micro control board later.  Also be aware

Step 8: Inspect the interior.

From top to bottom in the picture below you have AC Power cord entering the roaster base, power control board, blower fan in the middle as well as the heater assembly around the fan, and the main logic micro control board at the bottom.

To the right you have the fan potentiometer wiring leading from the round potentiometer leading to the right side of the power control board.  On the left you have the main logic board wiring leading to the middle of the power control board.  In the middle the blower fan and the heater have black and white wiring that lead to the power control board.  Out of the side of the heater assembly are two small wires that are not visible in this photo.  Those are the NTC sensor wiring.

FreshRoast SR500 Interior

Step 9:  If you are interested in cleaning the roaster you certainly can do so now.

Compressed air and/or vacuuming can be done at this time.  With a narrow crevice tool you can probably get access next to the motor in the middle.  There are many small blades as part of the blower inside the black housing shown above.  If you are more adventurous you will need to disassemble further and this will get you closer to the intake around the motor assembly.

Step 10:  Further Disassembly.

If you are disassembling the roaster further you will need to remove the power board, the lower housing from the upper housing, and disconnect the “microcontroller board” from the power board.  These will be explained in Part 2.

FYI I’ve taken a tiny break…

So as some of you may have guessed with the gaps between postings I have way too many hobbies.  One of them includes aquariums.  I only do freshwater stuff but I do more than “a goldfish in a bowl”.  Really I mainly focus on plants, shrimp, and a few not really extreme fish that are deemed compatible with the shrimp.  The plants need lots of light to make them grow which is why most people can’t keep aquarium plants alive.  The shrimp pick at the base of the plants pulling away the dead parts and look cool.

Several months ago I had some setbacks with some shrimp and some illnesses that came in with them.  I’ve decided to start over and build a setup that is designed to keep all of the conditions very solid that was hard to do in the “nano tank” that I had been using.  This resulted in ordering a new tank that came with a matching size stand that was unfinished.  I had to sand, finish, and assemble a stand and I’ve been throwing together a bunch of automated controllers that monitoring a variety of probes and adjust things…. not much different than controlling conditions in a coffee roaster.  Eventually I’ll be building my own control system for it and I’ll be selling off the existing control system that I’m installing just to get it running.

There is obviously value in “get it done now” vs building it yourself.  There is always a cost to results ratio that needs met to justify buying something or doing it yourself.  I think a lot of the coffee roasting world in the DIY arena operates in this world.  For people who cannot do it themselves and insist on programmability etc there are 800-900 dollar roaster systems.  For everyone else there is 150-500 dollar roasting setups.  Finally for those that want to make a 900 dollar roasting system on their own there’s Arduino and other micro controllers and the $9.99 Poppery roaster to the $200 random brand entry level roaster.

Anyway, I’m at a stage with the roaster that I need to hook up relays to cycle the heating systems on and off.  I’m probably going to order a second SR500 base from a site I found on the internet to take apart completely and splice these relays into it for the microcontroller to cycle.  I’m pondering the 3 stages of heat from the selector switch and actually cycling the power to the heater element.  I need to check some voltage readings from inside the roaster once I take it apart and decide if I want my controller sending signals in place of the switch to vary the desired heat status or just control the heater.  It might be easier to try controlling the fan speed first from my controller and then come back to the heater later.

For the moment I need to finish the fish tank stuff.  This weekend I’m trying to finish the under tank plumbing and then get the tank up on the stand.  The tank is an 18x18x18 25 gallon glass tank (no plastic, only a silicone seal between the glass).  I’m using a Neptune System Apex Controller underneath and am running all the sensors into the plumbing underneath.  The light on top is a 70 watt Metal Halide and the I’ve got CO2 gas bubbled into the plumbing based on the pH.  The entire thing gets logged and can be graphed onto a device web page.  I’m using an Eheim Ecco canister filter and running the output through a UV sterilizer, inline heater, and the CO2 reactor.  Later (once I get the right fittings) I’m mounting a IceProbe chiller inline through some plumbing as well.  I need to modify it with different fans to push air from inside the enclosure through the heat sink and then vent it out of the tank rather than blowing air down onto the heat sink.  The fan is pretty noisy so I’ll be replacing it with fans used to make super silent computer vent fans and running a series of small ones along the sides blowing inward and one large one up top to suck outward that will pass through the base enclosure wall.

I’m kind of discouraged in the coffee world right now.  Mainly I’ve been waiting for a good Ethiopian coffee to come in but this year has not been a good year for coffee.  I’m trying to figure out what else I want to try as my “base” coffee for the ongoing roasting experiments.  I really need to have a base to compare one roast to the next as I adjust the programming on the controller rather than having different beans roast after roast.  I just havent found anything I want to drink week after week while I work out the kinks.

More logging… and floating math.

Two nights ago I managed to finally get the screen that shows graphs to draw the current temperature up in the corner on top of the graph.  Most of the problem was figuring out how to convert the “float” numbers to characters.

I needed to feed this into Microchip’s Graphics Library and accommodate “unicode” characters to get the “degree” symbol on the screen eventually.  Instead of typing a string as string=”Hello There”; it ends up being string={‘H’, ‘e’, ‘l’, ‘l’, ‘l’, ‘o’, ‘ ‘, ‘T’, ‘h’, ‘e’, ‘r’, ‘e’}; which ends up being an array of character values.

A float is a decimal number.  In this case 3 digits for hundreds, a decimal position, and 3 more digits for numbers.  The sensor is kicking out two digits and I’m adding readings together, averaging them, and then rounding up or down with the extra positions in some places.  The PIC32 unfortunately does not have a floating point calculation area in its brain resulting in it “compensating” for it by automatically sliding all the other numbers around using complicated things called mantissa and a few other things I really don’t want to deal with.

The reason I don’t want to deal with them is actually NOT because it is complicated (which it is) but because since it is compensating when you divide a float it has to do MANY cpu cycles for it to compensate and come up with the answer.  It is ACTUALLY easier to multiply the float by 100, 1000, 10,000 etc and insert that number into an integer data type.  Integers can be divided, multiplied, subtracted, etc without worrying about how the numbers line up and doing crazy compensating.  They just don’t end up with a decimal.

If you have a temperature of 175.25 degrees fahrenheit you multiply it by 1000 which equals 175250.  This maintains all of  required digits as a whole number and gives extra space for “rounding” down below.

The issue with the graphics library you need to use a font for every character and take into consideration symbols like degrees etc.  This means it is not simply just a “character” but you need to allocate for all the extra stuff.  This results in a larger space for each character.  To me it looks like a single character in XChar is actually two positions instead of one to leave extra room for the fancy characters to be allowed for.  To convert text strings or float numbers into characters that can be handled by the library you have to load them into an array.  This array to convert the above number (float averaged=175.25)  looks something like this:

int showtemp[8];
showtemp[0]=averaged*1000; //175250

showtemp[1]=showtemp[0]/100000; //175250/100000 = 1 in integer
showtemp[2]=showtemp[0]/10000-(showtemp[1]*10); //175250/10000 = 17.  and then 17- 1*10 = 7 in integer
showtemp[3]=showtemp[0]/1000-(showtemp[1]*100)-(showtemp[2]*10); 175250/1000 = 175 and then 175 – 1*100 – 7*10 = 5
showtemp[4]=showtemp[0]/100-(showtemp[1]*1000)-(showtemp[2]*100)-(showtemp[3]*10); // etc
showtemp[5]=showtemp[0]/10-(showtemp[1]*10000)-(showtemp[2]*1000)-(showtemp[3]*100)-(showtemp[4]*10);

temperaturetext[0]=showtemp[1]+48; // 1 + 48 = 49 = proper number for 1 in character
temperaturetext[1]=showtemp[2]+48;  // 7+ 48 = 55 or proper number for 7 in character
temperaturetext[2]=showtemp[3]+48; // etc
temperaturetext[3]=46; // 46 = proper number for a decimal.
temperaturetext[4]=showtemp[4]+48;  //etc
temperaturetext[5]=showtemp[5]+48;  //etc

 

the results in temperaturetext looks like {‘1′,’7′,’5′,’.’,’2′,’5′}

I roasted twice now using the new graph with actual temperatures listed up top and was planning on comparing the results but I accidentally corrupted the first file.  I’ve got one more batch of some coffee from Rwanda that I was testing with.  I’m getting pretty close to running out of coffee again so it’s time to order some more soon.  I was hoping to have something good from Ethiopia come up for sale but it’s still a little early for that.

Still working on… recognizing temperatures for various(rough) stages the roast is at vs some sort of mechanism to confirm a stage marking things like first / second etc.  Also need to get ambient weather information recorded and get other sensors going on it…. and make it pretier…. and of course get it hooked to higher voltage turning on and off the heat.