[SOLVED] Defeating microwave oven obnoxious beeping - Page 1
Forum section: electronics / beginners

author: Peabody
author_rank: Super Contributor
timestamp: December 25, 2024, 04:59:02 am
content: Edit: My solution is described in post #30.This is not something I really need to do, but it turns out to be interesting. Four years ago I bought a Magic Chef microwave oven, model HNN1110W. And it has the most obnoxious "feature". When cooking ends, it produces five loud beeps at about 1Hz, and it insists on producing all five beeps even after you've opened the door. It also won't allow you to enter anything new on the keypad until after it has finished beeping. I don't see how anyone could have thought this was a good idea, but there it is.I've been thinking how I might stop the beeping, and of course the simplest approach is to just cut the lead going to the beeper. But that's not really the ideal solution because it's useful to have some beeps. And it turns out that at any point during the cooking countdown you can hit Stop, and it will pause. Then if you hit Stop again, it cancels everything and returns to idle - but without the five beeps.So I'm thinking I can install a microcontroller (an Arduino board or maybe an MSP430) that would tap into the display and the keypad. The display is seven segment, four digits, and it connects with 11 pins, which is right for multiplexing seven segments and four digits. See Display.jpg below showing where I could make the connections. The keypad has 24 pads on it, and the flex cable connecting to it has 6 + 4 traces, which I assume is some variation of rows and columns. See Keypad.jpg below.Assuming just for example that it's a common cathode display, then my MCU could be interrupted when a digit cathode line goes low, then in the ISR I would read the state of the segment lines, convert that to a number, and store it as the value currently being displayed on that digit. Then back in Main, the code would continually check for "blank, zero, zero, three" as the state of the display. When that occurs, it then checks to be sure that "blank, zero, zero, two" occurs very close to one second later, followed by "blank, zero, zero, one" one second after that. At that point, it shorts the appropriate row and column pins twice, which simulates two Stop keypad presses, which stops the cooking and clears everything, but with only two quick beeps. It's necessary to react only to a countdown, otherwise it would trigger as the clock counts up.Right now I need to do more investigating to find out what voltage the system runs on, and whether it's CA or CC. But beyond that I'm wondering about how to detect high and low on the display pins. If it's CC, a segment line will not go to 0V when the cathode goes low. It will only go down to the Vf of the LED (green), which will be about 2V. Well that's not exactly low. Also, I don't know yet if these segment and CC lines are push/pull. I know a lit segment line will be about 2V, but I don't know what a dark segment line looks like. It could be 0V or it could be tristate. Same issue with the CC pins. So I may need pullups or pulldowns.I've been looking at the 74HCT14 if it's a 5V system, or the 74LVT14 if it's 3.3V, as a way of level-shifting the inputs so the MCU can recognize them properly as high or low. Are there better ways to do that?Since there is some risk involved in taking the controller board out, if anyone thinks this just isn't going to work at all, please tell me your thinking. Or if you have any other comments or suggestions, please post.

author: u666sa
author_rank: Frequent Contributor
timestamp: December 25, 2024, 06:01:01 am
content: Can we extract and disassemble the firmware microwave runs on? Perhaps identify the part of the code that triggers beeping and modify the part of the code that triggers 5 beeps?

author: inse
author_rank: Super Contributor
timestamp: December 25, 2024, 06:23:00 am
content: I suggest to make a delayed blanking timer, eg from two 555‘s that cuts the beeper for a certain time after the first beep.And skip the rest of the idea for unappropriate complexity - after all it’s a low cost microwave (as the Midea logo indicates)Just before Christmas I fixed a Midea microwave from Aldi (shouldn’t have done so, but it was from someone I know) and cut my fingers several times on the razor sharp metal edges.I noticed the loud beeper there as well.

author: BeBuLamar
author_rank: Super Contributor
timestamp: December 25, 2024, 10:30:37 am
content: Yes if you can modify the firmware that's the best. Otherwise perhaps build an entirely new controller.

author: Analog Kid
author_rank: Super Contributor
timestamp: December 25, 2024, 11:37:13 am
content: Quote from: u666sa on December 25, 2024, 06:01:01 amHow in the world would you do that?It's not like there's a well-known, nicely accessible microprocessor sitting there with a programming port ready for code download.Don't appliances like that use a processor hidden inside a "blob" with no access?

author: wilfred
author_rank: Super Contributor
timestamp: December 25, 2024, 12:08:55 pm
content: I'd do one of these.1. Nothing2. muffle the sound with a piece of tape over the hole in the beeper.3. remove the beeper and replace it with a better sounding one4. Have a lie down to think about it some more.Maybe two things. 1 and 4.

author: themadhippy
author_rank: Super Contributor
timestamp: December 25, 2024, 12:40:49 pm
content: Quoteya missed out options 5 and 65)pull the plug out on the first beep6)hammer time

author: inse
author_rank: Super Contributor
timestamp: December 25, 2024, 02:21:51 pm
content: Analog Kid, I‘m almost sure u666sa and BeBuLamar were just being funny

author: Peabody
author_rank: Super Contributor
timestamp: December 25, 2024, 03:47:51 pm
content: Quote from: Analog Kid on December 25, 2024, 11:37:13 amIt may not have been a serious suggestion, but I found the picture below of the back of the board in an Ebay listing. Not only is the processor visible, but there's an ISP header on the left side. But I've actually done the disassembly thing in the past, and wouldn't want to do it again. It's rough when nothing has a name.Well, you guys are just no fun. I'm hobbyist, not an EE, and doing pointless, but interesting, stuff is my idea of a good time. And not even any comments on the Vf problems reading the display pins. I thought somebody would want to hold forth on that.So I think I will go forward with it and report how it turns out.Edit: Forgot to say that I was wrong about needing to do the countdown. The clock would never show "blank, zero, zero, one" because it's a twelve-hour clock. So when that state occurs, I can just press the Stop key.

author: u666sa
author_rank: Frequent Contributor
timestamp: December 25, 2024, 08:57:26 pm
content: There are hardware hacking forums. I bet it's sufficient enough extracting the bin by desoldering the thing and sticking it into programmer and posting that bit to those forums. Plus tracing output from this MCU to the beeper so they know what to look for.5 beeps? That is either 5 lines of the same code or a loop. They just change 1 thing and it's done and ready to go back into the chip.

author: ejeffrey
author_rank: Super Contributor
timestamp: December 25, 2024, 09:21:14 pm
content: This sounds like a totally reasonable approach. Of course it's a lot of time to sink into what's ultimately a cheap appliance. Automating the stop button has a big advantage over silencing the buzzer that the keypad will be re-enabled immediately.

author: Peabody
author_rank: Super Contributor
timestamp: December 26, 2024, 02:39:41 am
content: Well, I think I'm dead in the water for now. I expected the display to be your basic multiplex by digit, but I took pictures of "8888" at 1/250 second, which is 4ms, and got the results shown below. it appears it does segments a, b, c and d for all four digits, then comes back and does e, f, g and the colon. The only reason I can think of for doing that is if the processor can drive four segments at once on a GPIO pin, but not 8. So if you do four at a time, you don't need the four transistors. That's pretty slick, but it makes it kinda difficult to decode what's being displayed. Anyway, I'll have to think about how I would deal with this.

author: Analog Kid
author_rank: Super Contributor
timestamp: December 26, 2024, 02:44:54 am
content: Quote from: u666sa on December 25, 2024, 08:57:26 pmC'mon, nobody's gonna do that. Nobody, except some crazed OCD sufferer.And someone upthread told me they thought you were kidding ...

author: basinstreetdesign
author_rank: Frequent Contributor
timestamp: December 26, 2024, 05:56:14 am
content: Quote from: wilfred on December 25, 2024, 12:08:55 pmI must have the same controller in a G-E oven because mine does exactly the same thing. The unit works just fine for the past 10 years and my only strategy to avoid swearing is to open the door 2-5 seconds before the end time then cancel the timer. If I ever have a real need to take the cover off that thing I swear I am going to cold-chisel the damn beeper from the board.

author: inse
author_rank: Super Contributor
timestamp: December 26, 2024, 06:02:25 am
content: Does it also do an annoying beep on each button press?

author: Peabody
author_rank: Super Contributor
timestamp: December 26, 2024, 03:19:03 pm
content: I think the beep when you press a key is useful. The keypad is just membrane, and it's not always clear that you've pressed the key hard enough. So the beep tells you that, without having to look up at the display. But it should be vewy, vewy quiet, and it's not.But I really don't know what the five beeps at the end are all about. Maybe it's a regulation of some kind that they are following literally. But it certainly doesn't make sense to continue beeping at you after you've opened the door.Anyway, since discovering the odd display refresh pattern, I've decided to set up an Arduino with a display to duplicate what I think it is doing, and confirm that with scope readings, and then see if I can code another Arduino to detect what's being displayed, including dealing with the level shifting. If that all works, then I can take the controller board out and solder in the connecting wires.Do you think Netflix would be interested in this project?

author: Analog Kid
author_rank: Super Contributor
timestamp: December 26, 2024, 07:48:49 pm
content: Wish I could help you with your problem, but afraid I can't.Just want to share that I have a Magic Chef microwave, but it's one I've had for ~40 years (so probably close to half a century old; got it used from a friend back in the 1980s) that still works perfectly. Thing's built like a tank.It beeps, softly, when you touch keys. It also beeps at the end of cycle, but only 4 times, so it doesn't cause too much of a headache.Apparently the old ones are better ...

author: MathWizard
author_rank: Super Contributor
timestamp: December 27, 2024, 03:46:56 am
content: I just took apart another MO, so I got2, 16A 125VAC and 3A 250VAC relays105C 10A and 180C 10A, 125VAC thermal switchesa nice loud piezo buzzera little step down transformer for the control voltage supplythe LCD module and it's resistors and BJT'sa few brandname electrolytics+4MHz Quartz crystalSome of it can be left on the PCB, like the transformer and relaysAnd a few high power connectors and wiressome nice AC switchesthe fan motor, I usually use their coil of fine wire for inductors in RF projectsI'll probably save the turntable motor, maybe some day I'll make myself a Doc Brown kitchenI'll probably save the outer metal shell, for making making my own little fold over onesI could save more than that, but I don't have the space. I salvaged a couple years ago, and maybe with a couple more and can do the following. I have a few projects where some of this should come right in handy, like converting my reflow toaster oven, into a proper temp controlled reflow oven.Also for a DC electronic load project I've been thinking of for years, some of this can help.

author: CatalinaWOW
author_rank: Super Contributor
timestamp: December 27, 2024, 05:55:27 am
content: So forget the elegant solution. Clip the wires to the speaker. Feed them into an auxiliary board that you design. It counts the beeps and stops letting them through after your selected number. Then after an appropriate number of seconds lets any new beeps come through.The beep detector is a simple diode with appropriate rc filter (includes discharge path to ground). Feed that to a microprocessor that you choose and use the micro to do counting and timing functions as well as drive the relay (or analog switch or other implementation) that passes the audio.Simple. Cheap. Almost no reverse engineering required. You do need to find the wires to the beeper and find an appropriate power source for your micro.

author: fzabkar
author_rank: Super Contributor
timestamp: December 27, 2024, 06:22:11 am
content: I've always hated those annoying drawn-out beeps. It's as if the microwave is alerting the user to a culinary disaster. Why can't designers use something like the ding-ding-ding-ding that precedes an aircraft boarding call? Perhaps a warm female human voice that says something like, "Good morning, citizen, I've just nuked your breakfast".

author: Analog Kid
author_rank: Super Contributor
timestamp: December 27, 2024, 06:27:25 am
content: Quote from: fzabkar on December 27, 2024, 06:22:11 amI give you ... a microprocessor and a sound chip.Have at it.

author: themadhippy
author_rank: Super Contributor
timestamp: December 27, 2024, 01:45:53 pm
content: QuoteHave we learned nothing from history/the future.Look at the chaos the talkie toaster caused

author: Peabody
author_rank: Super Contributor
timestamp: December 27, 2024, 03:37:53 pm
content: I'm definitely going to go for the elegant solution. I made some progress yesterday on how it works, so I've already done the reverse engineering.The display is a standard 4-digit LED with a colon in the middle. But there are five common anodes, the fifth "digit" being the colon. So there are 13 pins in total. The common anodes are cycled through 1ms at a time, but a complete digit requires two cycles through the anodes. On the first pass it displays segments A - D of all four digits, and on the second pass it does segments E - G. So to read the values displayed on the digits, I need to save the values from the first and second passes for all four digits, then OR them together.Since I only need to distinguish the state "blank, zero, zero, one", I only need to read segments A, B, D and G. The segment lines are where I have the voltage translation problem, but since I only need to read four segments, I can use a quad comparator to shift the ~2V high up to 5V. And I dug out from my junque box a genuine Radio Shack TLC374, still unopened from probably 35 years ago. Then combining that with an Arduino Pro Mini and a mosfet, which I also already have, that should about do it. I found 5V and ground on the ISP header.I'm still concerned about the flex cable that connects the keypad to the controller board. I'm unsure how the connector on the board works. I would need to disconnect it to get the board out, then reconnect it. My assumption is that this should be straigforward, but that's just an assumption.I would need to use pin change interrupts on the Arduino for the anode lines, but the ISR can simply disable the one that just caused the interrupt, and enable the next one. All five lines would be on the same port, so that should work fine. Then back in the main loop, I would just be continually looking for the magic pattern that triggers the Stop button presses.Film at 11.

author: ejeffrey
author_rank: Super Contributor
timestamp: December 27, 2024, 04:54:52 pm
content: Quote from: Peabody on December 26, 2024, 02:39:41 amDoes the microwave have multiple display brightness levels? Maybe on max brightness it drives all 8 segments every cycle but on medium or low brightness it only does 2 or 4 segments per sweep?

author: Peabody
author_rank: Super Contributor
timestamp: December 27, 2024, 06:47:34 pm
content: Quote from: ejeffrey on December 27, 2024, 04:54:52 pmNo, there's no brightness adjustment. I've never seen anything like this before. Maybe the designer was too close on his power budget for the 5V rail, and needed to reduce peak current, which this would do since no more than four segments would ever be lit up at the same time. But it does extend the period between refreshes. A single segment goes 10ms between refreshes. But I don't see any flicker, so I guess it works.

author: fzabkar
author_rank: Super Contributor
timestamp: December 27, 2024, 07:15:25 pm
content: Quote from: themadhippy on December 27, 2024, 01:45:53 pmWow, where can I get one? A real electronics geek should have a house full of customised appliances. Needless to say, I have an obligatory Big Mouth Billy Bass, and I've hacked the intro screen on both of my DVD players.How about a cookie jar with a switch on the lid that triggers a warning from Southpark's Mr Mackie - "cookies are bad, mmkay".Or what about a gadget that warns you when you're about to enter a toilet after someone has done a number 2? If you enter within a "smell delay", you hear the Lost In Space robot saying "danger Will Robinson, danger", or Kenny Loggins singing the "fly into the danger zone" theme from Top Gun.

author: JustMeHere
author_rank: Frequent Contributor
timestamp: December 27, 2024, 09:24:41 pm
content: Have you tried pushing the off button before you open the door?

author: Peabody
author_rank: Super Contributor
timestamp: December 27, 2024, 09:55:13 pm
content: Quote from: JustMeHere on December 27, 2024, 09:24:41 pmYes. When the countdown has completed, the oven no longer recognizes a Stop key press. So it just continues beeping. And, actually, it won't recognize any keypress until it's finished beeping. So it's absolutely relentless. It demands that you listen to those five beeps and not do anything else.But I am determined to defeat it. I may break it in the process, but one way or another it's going to stop beeping at me like that.And just to make it official, as Dave would say, Magic Chef = !!!!!!! FAIL !!!!!!!!!

author: inse
author_rank: Super Contributor
timestamp: December 27, 2024, 10:31:33 pm
content: Thats what I call determination - GO FOR IT!

author: black6host
author_rank: Contributor
timestamp: December 29, 2024, 02:02:58 am
content: Well, from days of yore I'd try: Up Up Down Down Left Right Left Right B A and maybe STARTSee if that works! :-Dhttps://en.wikipedia.org/wiki/Konami_Code

author: Peabody
author_rank: Super Contributor
timestamp: December 31, 2024, 04:38:59 am
content: I've completed the circuit and the coding, and it works perfectly. It detects when the countdown has reached one second, then "presses" the Stop button twice, which cancels the countdown and returns the microwave to idle. Those presses produce two short beeps as an indicator that cooking is completed, but they are not obnoxious.The protoboard is shown in the attached picture. It includes an 8MHz Arduino Pro Mini, a TLC374 quad comparator acting as a level shifter, and an N-channel mosfet which shorts the row and column of the Stop button. 5V and ground are available on an ISP header on the microwave's controller board. Inputs include the four digits' common anode pins. Four of the segment lines are also inputs. Since I only need to detect a blank digit, a zero and a one, only four segments are needed to identify those states to the exclusion of all other decimal values. They are the A, B, D, and G segments.The common anode lines are a bit of a puzzle because they swing through the full 5V, and because they are active low. I suspect these inputs are actually the gate drives of P-channel mosfets powering the common anodes.The oven powers the A, B, C and D segments one digit at a time, then goes back and drives the E, F and G segments in the same way. So to get the currently displayed value requires eight readings over a period of 10ms. I'm still not clear why the designer did it this way, except possibly to reduce peak current draw since no more than four segments would ever be powered at the same time.For the code I was going to use interrupts, but since the Pro Mini has nothing else to do, I decided to just process the pin values directly. My code requires two successive readings of the one-second state over 20ms before it recognizes that state as valid.This is a pretty elegant solution for me, and it took a bit of work to get right. Particularly helpful were pictures taken at various shutter speeds revealing the two-stage display algorithm. Anyway, it works like a charm. So that's one minor daily annoyance removed from my life.Netflix showed no interest in doing a documentary on this project. Oh well.Edit: Details here:https://github.com/gbhug5a/Microwave_Anti-Beep_Mod

author: Peabody
author_rank: Super Contributor
timestamp: December 31, 2024, 04:48:19 am
content: Forgot to say - the CPU on the oven's controller board had no markings. So I don't think I would have been able to disassemble the code.

author: inse
author_rank: Super Contributor
timestamp: December 31, 2024, 05:43:00 am
content: Wow, that was incredibly fast.What happens one minute after midnight?

author: Peabody
author_rank: Super Contributor
timestamp: December 31, 2024, 04:10:27 pm
content: It's a 12-hour clock. So one second after midnight, or noon, is 12:01. The pattern I test for is "blank, zero, zero, one", which is what's showing at the end of a cooking or timer countdown. In timekeeping mode, the ones digit of hours will never be zero unless the tens digit is 1. And if the tens digit is blank, the ones digit will never be zero. So I think it works right.If it were a 24-hour clock, it might be necessary to keep track of the previous state, which would tell you if you're counting up or counting down.It went pretty fast because I was able to use the parts I already had onhand, including the protoboard. So I didn't have to order a board or buy any parts. Both the circuit and the code are actually pretty simple. What took the time was diagnosing how the microwave worked, which is still not totally clear, but clear enough.

author: inse
author_rank: Super Contributor
timestamp: December 31, 2024, 05:02:09 pm
content: Quote from: Peabody on December 31, 2024, 04:10:27 pm😆👍 I‘ll keep that as a quote

author: Peabody
author_rank: Super Contributor
timestamp: January 01, 2025, 03:23:11 pm
content: I've posted the details in a Github repo in case anyone else wants to try something similar.https://github.com/gbhug5a/Microwave_Anti-Beep_Mod