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.

Ordered Free Day items – Sensors, Valves, and Buttons OH MY!

Retailer Sparkfun has a sort of annual event.  They offer free stuff to people in the form of a code they can use on a future purchase for solving puzzles/trivia or other challenges as they decide from year to year.  This year I managed to come home for lunch with the contest still running and won $100 of free stuff from Sparkfun instead of eating lunch.  It took almost my entire lunch hour but eventually I managed to get a captcha correct at the right moment and won a $100 code.

As luck would have it one of the items I wanted rapidly sold out that same day so by the time I got home from work I couldn’t place my order.  So after a few days the item finally went back in stock and I placed my order.  So far they haven’t shipped the order which is kind of a frown maker but I figure they’ll get to it eventually.  Unfortunately this means I won’t get it until sometime next week but hey… it’s free!

Items for the coffee roaster project:

1 Crib for Arduino + Ethernet Faceplate – I’m hoping to mount a DB25 on the back of it and run that to a new PCB I want to get made.
1 RHT03 temp/humidity sensor module to try out for possible ambient sensing instead of the existing sensor due to soldering complexity
2 Current Sensors, jacks, and breakout for the jacks so I can breadboard them for now. – Two so I can sense total input vs only the amount going to the heater.  I intend to monitor this for statistical purposes/energy tracking, control options, and
Several PCB mount potentiometers for the next phase when I have a PCB made.
Momentary pushbutton switches for a control button panel.  To be wired to a single pin using analog sensing to figure out which buttons are pressed based on voltage/resistance readings.

For other projects:

2 solenoid controlled valves to shut off water.
Thumb joysticks… just because…
More Momentary pushbutton switches

I’m hoping to use some of the parts with one of the “pro” arduino boards or eventually figure out a smaller method using chips individually, a text LCD, a flow meter to monitor water gallons and tie it to the solenoid valves.  In pursuit of better water quality I have what is effectively a low level commercial high flow reverse osmosis water system.  It can produce around 700 gallons of reverse osmosis water per day.  It has a rather large faucet and my intention is to plug a flow meter like they use on some water cooling computer projects to track the rate the water is coming out and then turn it off with the solenoid after a defined amount of time or a specific number of gallons flows through the flow sensor.  I’ve had too many “accidents” where the 5 gallon water bottle overflows out the garage and down the driveway when I step away and get distracted.

I get told all the time… just set a timer.  I say why set a timer when you can engineer a circuit to do it automatically for you!

I figure I’ll modify or make a Total Dissolved Solids monitoring circuits to feed the water purity info to the controller, perhaps let me run water for a few moments to get the sensor reading cleaner water since it starts off spiked high.  It often does this during the first 20-60 seconds when I haven’t used it in a week or two.  Finally it then starts tracking gallons for this run and possibly remember “lifetime” gallons for filter life monitoring too since my last replacement.  To control it I’ll set the size bottle by the number of gallons it holds or a length of time to run on an LCD readout and using some buttons, press start, and wait for it to filter that much water.  Once that happens the valve will disengage closing the water off since they fail closed.

As long as the water pressure is enough out of the output line this should work out reliably enough to have it stop short and then have a “spurt” setting button to pulse smaller amounts of water out to top off.  My hope was to close off the input line AND the output line just to be sure it’s off in case something doesn’t work well.  Worst case is the input line has more than enough pressure to work and I’d need to follow-up with a spurt and then close an output valve manually to keep the membranes completely wet.

 

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.

TechToys SSD1963 eval kit on a PIC32 I/O Expansion Board

Now that I’ve gotten all the leaks taken care of on my new aquarium I decided I should at least figure out if the new SSD1963 eval kit with 7 inch 800×480 LCD that came from TechToys. com.hk works. Officially it is listed on the site as SSD1963EVK-R3B + 7″ WVGA color TFT with Touch Panel Part #: SSD1963EVK-R3B-TY700TFT and as of July 2011 was listed as a bundle price of $119 USD plus shipping. This includes the LCD, SSD1963 board with a cable between them, and 40 jumper cables.

This kit is intended for a development board created by TechToys that fits the connector perfectly. On that board you can then place a PIC32 starter kit. For my purposes this is not usable because I do not need the devices on that board such as the MP3 player. I also need to add a variety of I2C and SPI devices for sensing environmental conditions. For my project sticking with the PIC32 I/O expansion board is the best bet.

I decided I would leave the original breakout boards attached and wire the LCD and graphics chip on. I removed the Microchip Graphic boards from the side and popped out the riser card. To properly find the wiring you need to use you need to consult both the schematic for the Multimedia Evaluation Kit for Microchip PIC32 Starter Kit and the Evaluation Kit for SSD1963QL9. You are looking at the diagrams for MCU interface and SSD1963 EVK Interface. What you will find is that not all of the pins are diagrammed through to both sides. They need wired through though and the correct connections can be determined elsewhere on the schematic. Wire everything from the SSD1963 EVK Interface diagram and then add onto it the Reset, LE and other pins. Once you do this you end up… with a mess:

Then I began the process of trying to compile the modified MultiApp Demo. I selected one of the hardware profile includes for the 7 inch LCD and SSD1963 that involved a PIC32MX795 and tried to compile it. I’ve read about people potentially having to modify when using a Graphics Library higher than 2.0. Turns out this was not the reason I had errors. Instead I needed to fix the driver file because it mentioned parts I was not using and didnt match the name of the driver. I commented out a few lines and uncommented the lines that matched the actual names from the driver. It reports not having a compatible Controller prior to that and worked fine following that. However, the tech toys modifications stopped other graphic apps from compiling so you need to do a diff comparison to figure out changes necessary to newer libraries.

Once the lines were commented out I compiled, uploaded and launched the app. Success was short. Within a few moments I realized while pressing around on the touch screen calibrating the corners and pressing to save the calibration I noticed that the program didnt continue any further. Stepping through a debug I noticed it was at a point waiting for the EEPROM to respond. That’s when it hit me. TechToys sells a development board which happens to include an Atmel SPI EEProm. On the Microchip boards this is found on the graphics board because they expect you to change graphics boards potentially with your own and they supply it on their graphics board.  For TechToys it’s on their development board and not with the graphics boards.

Upon removing the microchip boards I thus no longer have an EEPROM. Upon playing around I found that pressing in the upper right corner instead of calibrating results in the board eventually skipped the write and reload of the calibration and jumped to the home page though I had issues reproducing this reliably. Ultimately just to test it working I ended up triggering buttons about 2/3 of the way from the bottom to trigger the lower buttons and then gradually moving up until it selected another item.  The various graphical items displayed and I managed to get some of the apps to launch though not be able to control them very well.  All that mattered to me is it technically worked as wired.

From what I can see there is an acceptable write speed to the LCD for setting up a coffee roaster control screen but I will need to test further once I can store the configuration data and switch to the original roaster program on the larger screen. I’m thinking I should actually be able to store this to a file on a SD memory stick instead of an EEPRom. Both are SPI but will require a different process to read/write but there’s been others who have done so without much issue into a config.ini file.

Ordering…7 inch LCD using SSD1963 graphics board.

So I’ve decided that the regular Microchip development kit LCD touch screen it comes with is fine for watching results on but ultimately it stinks if I need to interact with the roaster at all.  The only way I’ll get away from this is to order a kit with a 7 inch LCD using SSD1963 graphics controllers.  Why?  One of the issues is really that I would need to interrupt the normal processing and switch control back and forth between various screens.  The PIC would then need to keep tracking the updates and logging them in the background but drawing anything I missed when I eventually go back to the other screen.  This would need to take place regardless if I did leave the screen during a roast but I’d rather keep an eye on everything while I’m changing things in a different portion of the roast control screens.

So to do this I’m attempting to use an SSD1963 graphic controller chip to squeeze a little bit more resolution out of things and going to send it to a 7″ touch screen module that I have on order.  I know there are plenty of projects out there that have demoed a 7 inch touch screen and other 640×480 and 800×480 LCD outputs driven by a PIC32.  MOST of them people keep trying to run video or turn the thing into a full resolution JPEG slideshow.

Everyone pretty much goes on and on about how a PIC32 can’t run much screen and it takes too much time to draw the screens.  Those that tend to say these things keep trying to get the PIC32 to stream video from somewhere which it is not the right kind of system to try that on.  When it involves only drawing graphs and buttons and text responses on the screen the system seems to run just fine in my opinion.  The way the graphics library seems to work these sort of updates are drawn in small sections.  It tells it to go to this position and draw text.  Go here and draw a line.  Go over there and put a dot.

My hope is that once I manage to convert a driver that works with the graphics library and get this thing up and running I can plan out which areas of the screen to update and find an acceptable balance and end up just spreading things out and enabling a few controls so that when I’m reviewing past information and configuring the upcoming roast it shows more resolution and then when it runs live it uses only what it can produce quickly on the screen.

I also think I need to start considering what sort of enclosure I need to use for mounting some prototype stuff into so I don’t have a pile of circuit boards spread out on the counter.  I’ll be needing to use some high voltage stuff soon so it’s safer to firmly mount connectors to a board and then safely mount a circuit board in a way that those ends won’t accidentally be bumped into.  I’m not sure where to begin with.  Obviously I’ll need to find something that I can purchase in single quantities.

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.