Pretty on the outside and ugly on the inside prototype

So I’ve been busy doing a bunch of computer maintenance and looking into other things I’ve neglected while building the roaster so it’s been a bit slow.  I decided I wanted to start gluing corners together and drilling some holes to see how the case goes together so I can eventually get back to fixing the issues with the roast controller case.  Over the past several weeks I soldered together all of the boards, made wiring harnesses and figured out a bunch of “oops” moves I had made designing things when I got rushed for time.

Turns out I was not able to get stand offs locally in the sizes I had wanted so the heights are all screwed up where I placed holes on the outside surfaces.  I also forgot to specifically allocate power for the exhaust fan in the original design BUT I did have “Spare” pins allocated. The fan I ordered also was not the right size for the hole template I had used (Inside fan dimension vs outside screw / case dimension)… neither of them were actually labeled right the way every other fan I have is sized.

So with everything screwed or harnessed in place this is what I have for the Arduino…

The Arduino wired for Coffee Roaster control

It is a MEGA2560 mounted on a Crib for Arduino.  On top is an Ethernet Shield w/ microSD slot.  Then I used a variety of crimped headers to connect to some of the pins on the MEGA and on the ethernet shield.  I have twenty five lines in the bundle going to the Arduino.  I had some spare 10 strand cables from a project at Halloween and no 25 strand cables to use so I used one of those cable wraps to keep the all together after connecting DB25 to one end and header pins to the other.  Once the lid for the crib for Arduino is in place it then connects to the back of the enclosure.

Wiring Harness connecting to the back of the controller enclosure

As you may notice the sockets I was using for connecting the power out are the type that snap in.  The majority of these will not snap into most laser cut plastic sheets and instead are designed for aluminum cases.  The plug to the right on the other hand screws in.  These work great with a variety of thicker locations.  The fan was originally going to be on the inside with a wire cover on the outside but with the wrong size fan hole in use I had the wrong cover to fit the fans that I had that would fit the hole.

For the DB25 connectors it turned out good that I had decided to use a cut out pattern  that had the holes on the side for the anchoring hex nuts rather than just having them cut out so that I could mount them to the socket and anchor the connector.  Since the stand offs were too short they don’t allow me to anchor the PCBs to the bottom plate.  Instead I had to screw them to the back plate using normal screws and with the burnt circles on the laser cut work I had to use some washers too to keep it sturdy.  This is what the back plate looks like.

Rear Panel of controller

This panel includes – One non-filtered switched 15Amp Power Entry module, 2 snap in 15 amp convenience plugs, 1 5VDC fan, 2 DB-25.  The left one is the main guts for the LCD, TRIAC control, potentiometers, thermocouple, and a variety of other sensors.  The right includes all the non-essential stuff for backlighting all the buttons on the button pad and a few other things including spare wiring.  You cna see just a screw on the right since it was relatively intact and so it won’t block the DB25 plug being used.  The right DB25 has washers and screws in place.  These are primarily used to attached the PCB in place attached to the back side.

Next up is the inside view of the electronics area:

Rear View of the Back Panel

Rear view of the back panel.  I need to shrink up the crimp connectors around the wire  (they shrink like heat shrink tubing but is actually much firmer).  Also the connector on the right side (the switched power entry module) should have the screws more securely fastened with nuts and washers but this is mainly just a test to ensure it all fits together and then allow me to focus on some programming for a while to see if I can get more working and develop menus etc.  The clear acrylic bar is used to anchor the corners better.  I need to change the locations of the screws since I could not find screws the size I wanted without spending way too much for large quantities of them on the internet and having them shipped to me etc.  The thermocouple board on the right had the same issue with the stand offs so it is just floating loose in there right now.  I need to find somewhere to get the Omron thermocouple sockets where I dont need to order them by the 1000s since it looks like Ryan McLaughlin has stopped selling things on his site when they (used to) have problems getting the newer MAXIM thermocouple chip.  They’re all over the place now but he hasn’t restarted his store up so I don’t know the deal there.

Here is the view down into the enclosure from above:

Top view into enclosure

With the cover on:

Front panel installed on enclosure

Front panel running

Front Panel Running

When I send it back out again for a new case I hope to have a different board to install that will be switching the smaller breakout boards being designed onto the circuit board as well as add a power supply and possibly having an arduino board mated on top of the circuit board perhaps to bring more of the electronics inside.  I might want to try to get a Digilent board perhaps to try converting to it as a transition between Arduino and PIC32 before I completely switch to a dedicated PIC32.

I’ve also been looking at possibly creating a dedicated PC application to communicate with it directly via USB and over ethernet.  I am toying around with the “QT/QML” language but havent gotten too far with it.  I may just go back to Processing though.

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.

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