Subverting Hamilton Beach Programmable Kettle for control by Arduino

Hello everyone,

This project is phase 2 of my Rube-Goldbergesque coffee machine. Everything except this part is complete, and I'm stuck. I've got the grinder functioning and use that part daily. I've got a pump, solenoid valve, and silicone tubing all ready to go, I just need to hack this Hamilton Beach (part # 40996) kettle for control via Arduino and I'll be done. My goal is to do this while retaining the built-in safety features. I was inspired by this blog post, which seems similar to what I want to do, but is unfinished as well: PourBot - Hacking the Kettle · Kris Jordan

I will post up the finished product in all its joe-producing glory when it comes together to break my habit of mostly coming to this forum when I need help with something. That said...

The part I'm having trouble with is twofold. I'll break down what I know about the kettle so far, with pictures, and then maybe someone can steer me in the right direction, or at least a direction I haven't tried.

There are two boards - a control board with microcontroller, button inputs, and the display, and another that houses the relay for the heating element and the mains wiring/VRs.

There are 5 wires connecting the two as highlighted in the picture.

From Yellow to Red, when the kettle is plugged in, without the kettle on the stand, they measure:

  1. 5V
  2. 0V
  3. 0V
  4. 2.5V
  5. 0V

With the kettle on the stand, and without pushing the "ON" button, they measure:

  1. 5V
  2. 0V
  3. 0.3V
  4. 2.5V
  5. 0V

With the kettle on the stand, switched "ON", they measure:

  1. 3.6V (drops to ~3V by the time water is boiling)
  2. -1.4V (drops to ~-2V by the time water is boiling)
  3. 0.3V (increasing with temp, this is definitely the temperature signal)
  4. 1.3V (trends down as water boils)
  5. 3.7V

So, as near as I (and Kris, apparently) can tell, here is a pinout (I think):

  1. 5V power to microcontroller/control board
  2. Gnd
  3. Temperature Signal from probe in kettle
  4. No idea.
  5. Relay signal to heater element relay.

So here's what I've tried:

  1. Replacing the #5 wire which I believed was driving the relay with a 5V digital output from the arduino. I verified 5V was going to the same pin on the power board as the one driven high by the kettle's on-board microcontroller (when the ON button is pressed), but it did not turn the relay on (or, therefore, the heating element). I'm not sure why this isn't working.

  2. Hooking up the #5 wire (relay control) and the #3 wire (temp signal) to analog inputs on the arduino and monitoring them via serial. The #5 goes high when the ON button is pressed, and on the #3, sure enough, voltage increases with temperature. When the kettle reaches assigned temperature, the #5 is again driven low.

Does anyone have any recommendations for the best way to control the relay (and therefore the heating element) via Arduino? I'm not sure why, but replacing the 5V output from the kettle's control board with a 5V output from the Arduino doesn't seem to be working. Maybe I should find the ON/OFF button output and just use a digital output from the Arduino to simulate turning on the kettle, or replace the button entirely? Why isn't the direct replacement, i.e. the simplest solution, working?

Appreciate any help/ideas that are out there. Thanks, all.

-Jimmy

got a picture of the other side of the board ?

There is an IC in the photo. if you check the data sheet, you should find what is Vcc and ground.
that would help verify your findings.

got a photo of the underside of the relay board ?
it would be driven by a transistor or FET or some such. identifying the driving circuit would help immensely.

I'll take a look when I get home, see if I can do both those things. I'll post a pic when i do. I glanced at it earlier and it looks like there might be an intermediate transistor/FET driving the relay, maybe i should just run my 5V digital arduino output directly to that transistor. If that doesn't turn it on, I guess I'll reevaluate, maybe there is a current driven component in between somewhere that I didn't see, but i don't know what that would be off the top of my head. Will see tonight or tomorrow. Anything besides that i should look for?

I'm just wondering if any of those "odd" voltages are signals (pulses). Have you tried switching you meter to AC? On the AC range you should read zero if the DC voltages are constant (or very-slowly changing). (But, check your meter with a battery on the AC to make sure it reads zero.)

Or, you can connect to an Arduino digital input to confirm it's DC. (Just don't connect the negative voltage.)

Okay, found the datasheet for the IC:

http://www.datasheetlib.com/datasheet/1138091/sn8p2722sg_sonix-technology.html

Looks like I was correct on power, ground, the temp sensor, and relay after comparing the pinout to the board, but still no idea what pin 4 is or why just hijacking the output pin doesn't work. I

Also, I've located a point at which I can power the heating element relay directly via Arduino.

My only concern is damaging the Arduino output pin, maybe when the normal kettle "ON" button is pressed, which would cause 5V and I'm not sure how much current to go into that output pin. It looks like there's a diode across the relay terminals, which I hope is enough to prevent any reverse current from the relay or heating element (do those things produce reverse current when they power down?). Also I imagine I will need another diode in series from the arduino pin to the relay so that I can still use the kettle's "ON" button normally without damaging the output pin.

Safety-wise, I would like to also hijack the kettle's boil-dry protection feature, but it's not obvious to me where the IC is getting that input from. Maybe this is related to pin 4? Open to ideas there, too on how to find that. In the kettle there is a two-part pin like a small stereo headphone jack that I think is the temperature sensor but might also play a part in the boil-dry protection. Maybe tomorrow I will measure the pins with an empty kettle and see what that yields, but enough for tonight.

I'll post the top and bottom of the mains/power board as requested next.

-Jimmy

power board bottom.gif

Also, DVDdoug, the voltages appear to be DC, I verified as you recommended.

Didn't read all of it, but I hope you do realise this "thing" runs on a capacitive supply (the big yellow cap).

That means that everything low voltage is directly connected to the mains.

Leo..

I noticed the cap, and aside from being extra careful not to touch the leads or short it, even after power is disconnected, I don't know of any other safety concerns. I did some reading on capacitive power supplies and didn't come away with much more than that from a safety perspective, besides making sure there is a bleed resistor for it and maybe leaving it a few minutes after powering down to be extra careful. If there is something I'm missing, which it sounds like there might be, please let me know, and thanks for looking out.

I'll hit pause on this project until i can do some more research on the topic, and to see if anyone weighs in here.

The main concern with a capacitive supply is that everything you connect to it becomes live.
If you want an Arduino to control this "thing", it has to live inside the case with no wires coming out.
Every control, button, display has to be mains rated. Pots/switches with plastic shafts etc.
USB socket could have 110 or 230volt on it. etc.
Leo..

What if I connect via optocoupler for the digital input, maybe something like this: http://www.clare.com/home/pdfs.nsf/www/CPC1001N.pdf/%24file/CPC1001N.pdf

and for reading the analog signal, connect via an analog opto-coupler, maybe something like this:

I say this because I need to run the wires out of the case into my main project enclosure. I haven't used optocouplers before, but it seems to make sense to use them here. Thoughts?