12
\$\begingroup\$

The wired wall control panel in my garage has only 2 wires connected to it. Yet somehow it acts different when I push the big "door" button than when I push the "light" button or the "lock" button. That pair of wires is connected to the overhead automatic garage door opener.

Many different overhead automatic garage door openers and many different wall control panels are all compatible with each other. I suspect they are compatible because they all discriminate between the buttons in the same way. What is the name for that way? If there are several different, incompatible ways or protocols, used in actual garages, what are the names of those ways?

(It shouldn't matter which particular door opener I have, because I would like to know the name(s) of the way(s) used by most door openers, even if that's not exactly the same way my particular door does it. But just as an example, I currently use a Chamberlain LiftMaster garage door opener ).

Here's a picture showing some examples of apparently compatible 2-button and 3-button wall control panels from 2 competing companies (and a few incompatible ones), from the BlueMate.com website:

photo of several 2-button and 3-button wall control panels

Like many other people, I'm designing and building a gadget connected to those same 2 wires that tells the automatic garage door opener to roll down my garage door for me when I drive away but forget to roll it down. ( Debugging a garage door opener circuit with an optocoupler and mosfet ; Activate garage remote via an Arduino ; shorting a remote control pushbutton with GPIO and a transistor ; etc. ). It would be nice if my gadget uses a standard method that works with many or most garage doors. It would be nice if my gadget could also activate and deactivate the overhead light the same way the wall control panel does it.

What is the name of the protocol(s) used to let an automatic garage door opener know which button I've pushed on the wall control panel?

I'm looking for an answer more like "It's called the HART Communication Protocol; the main varieties are ..." and less like the well-meaning posts that suggest something like "Just look at the signals with an oscilloscope, and assume that if your prototype works in your house in an ActiveX control in Mosaic Netscape, it will work for everyone".

\$\endgroup\$
6
  • 1
    \$\begingroup\$ Typically RF (radio) encoded signals. \$\endgroup\$
    – Passerby
    Dec 1, 2014 at 18:48
  • 2
    \$\begingroup\$ have you tried hooking an oscilloscope up to the two wires and capturing what happens when you push the buttons? you'll quickly know if it communicates over the two wires and if so if its a complicated porotcol \$\endgroup\$ Dec 1, 2014 at 18:49
  • 2
    \$\begingroup\$ I've tried to edit this post to make it more clear that I'm asking an (on-topic) question about designing an electronic device that implements a particular standard protocol. This post is not about trying to use some particular device (which would be off-topic). Perhaps we can re-open it now? \$\endgroup\$
    – davidcary
    Jun 6, 2017 at 3:27
  • 3
    \$\begingroup\$ I think that this question is very much about electronic design, and thus should be re-opened. \$\endgroup\$
    – Bort
    Sep 4, 2018 at 13:18
  • 2
    \$\begingroup\$ Just looked into this. Genie brand uses simple resister setup. The board has R1 = 82.5Ohm and R2 = 121Ohm. Open/Close is short, Lock is through R1 and Light On/Off is through R1+R2 in series. 5V coming from garage door opener. \$\endgroup\$
    – Geordie
    Jan 12, 2022 at 7:10

8 Answers 8

16
\$\begingroup\$

I did a little probing with my oscilloscope on my Chamberlin liftmaster pro formula 1 opener wires. There are 2 wires that connect to a 3 button wall switch (door open/close, light on/off, lock on/off). It's a PWM encoded DC signal with highs around 18v. When no buttons are pressed, there is a low pulse @ 80Hz periods that lasts for 200us. When the light button is pressed, the two wall wires are connected to a 1uF electrolytic capacitor which alters the PWM signal to have low periods of ~3ms. The lock button has a 22uF cap on it, so the low signal will be even longer. When the door button is pressed, the wires are shorted (0V, no PWM).

Also worth noting is when the opener is "locked", the wall switch LED flashes. So effectively there are 2 PWM signals on the line now: one wide low pulse so that us humans can see the LED turn off, and the regular 80Hz pulses during the high periods (LED on) for wall panel button detection.

Given all of this, there are 2 possible ways they measure this. One would be a digital sampling circuit in the opener that is measuring the widths of the low pulses to detect a button press. Another is using an ADC input pin to measure the slope of the falling edge/discharge. The larger cap will be slower.

I don't have any other openers to sample, but I suspect they all could be different. They may all utilize PWM encoding since there are only 2 wires for the wall panel, but the pulse patterns used are most likely different. Thus, you may not be able to make one device that can control every device.

For my solution, I bought a home security reed switch that connects when a magnet is nearby (called a normally open (NO)). I mounted the magnet on the door, and the reed switch on the door jam. One switch pin goes to ground, the other to an input pin on my microcontroller that is configured to have an internal pull up resistor. This way, when the door is closed, the switch closes and the input pin goes to zero. Keep in mind you might want to have some sort of de-bounce detection in your microcontroller code as the reed switch can bounce around before it settles. Since the door control is simply shorting the two controller wires together, this was done with a simple relay controlled by the microcontroller.

As for controlling the light, you would need to get some sort of light detector for the microcontroller to know the state of the light. To control the light operation, you would need to implement another relay, but this one has a 1uF cap in series with the relay. This would nearly perfectly emulate the different PWM signal just like the wall switch does.

To know what lock state the opener is in, you would need to build a PWM detector inside your microcontroller to look for those very wide low pulses (LED off). Sending the lock command to the opener would be like the light switch, but with a 22uF cap in series.

\$\endgroup\$
3
  • 1
    \$\begingroup\$ Were these pulses square, or with a typically curved RC rise? Most likely the opener is measuring the capacitor via an RC time constant (see for example the arduino capacitance meter example), though the shared use with the LED is clever. It may be possible to send command by detecting the low edge and using a transistor to hold the line low for a comparable amount of time to that accomplished by the desired button, rather than using two actual capacitors. \$\endgroup\$ Jan 7, 2017 at 21:44
  • \$\begingroup\$ Definitely not squares. The capacitors take time to charge or discharge fully. You are right they might use an ADC to sample the falling edge to detect the discharge slope. \$\endgroup\$
    – yzf600
    Jan 8, 2017 at 3:48
  • \$\begingroup\$ It's not an ADC, but rather an explicit or implicit comparator - they probably drive the line low, then charge it back up slowly with a current source or resistor and measure the time it takes to return to a particular level. \$\endgroup\$ Jan 8, 2017 at 3:50
8
\$\begingroup\$

One example, to answer the title question but not your specific device:

Genie Series II Wall Console

Two Wire, 5V, White is Neutral

  • R1, 121 Ohms
  • R2, 82 Ohms
  • LED

  • Locked = R2

  • Unlocked = R2 + R1 + LED
  • Light (Push Button Toggle) = R1 + R2 (push button shorts the LED)
  • Open/Close (Push Button Toggle) = (push button closes the circuit)
\$\endgroup\$
4
\$\begingroup\$

First of all, you only need to simulate pushing the button when you want to close the door. You don't need to know when the button has been pushed by someone else.

If there are only two wires between the control panel and the garage door controller, then as others have said, some sort of multiplexing must be going on, either using some combination of diodes etc., voltage levels, DC pulsing, or an AC signal superimposed on the DC. In any case, trying figure out the multiplexing scheme and then emulate these is probably be more trouble than its worth.

Instead, if you can open up the case and get to the terminals of the button, then to simulate pushing the button, you can use the circuits you linked to in your question, using either transistors or an optical isolator, or you could use a reed relay (my preference) since it is easy to hook up to an Arduino, in fact they make relay shields just for this purpose.

What no one has seemed to address though, is that you need to have a way to detect whether the garage door is already up or down in the first place. Since it appears there is only one button on the control panel that operates the door, it works as a toggle (open the door if it is closed, and close the door if it is open).

So simulating the pushing of the button is not going to guarantee that the door will close -- in fact, if you do remember to close the door using the remote on the way out of your driveway, then x minutes later, your computer is just going to open it again.

So you are going to need some type system to determine of the door is up or down. This could be mechanical (a microswitch with a long arm, like this one), or an optical solution -- either breaking a light path by using a IR transmitter and detector on both sides of the door path, or a IR transmitter and detector mounted at an angle on the ceiling, with some sort of reflective patch at the top of the door.

Or, you could use any of these solutions to the bottom of the door, near the floor of the garage, but I think putting it near the garage door opener itself is a better solution. It will mean running two wires from the garage door opener area to your Arduino.

\$\endgroup\$
2
  • \$\begingroup\$ You are probably write that it's more trouble than it's worth -- nevertheless, I am curious: What are the names of these various multiplexing schemes that use diodes etc.? (I thought "resistor ladder" was the name of one of them, but theamk seems to say that means something else). \$\endgroup\$
    – davidcary
    Dec 2, 2014 at 22:59
  • \$\begingroup\$ One name given to a diode multiplexing schemes is "Charlieplexin". As already mentioned, a "resistor ladder" can refer to a scheme where various voltages are tapped off depending on a switch being closed. This ix also the way a DAC can be constructed. Unfortunately I don't think either of these schemes is applicable to your circuit, since it uses only two wires which have to supply power as well as data. So my guess is there is some sort of AC signal superimposed on top of the DC power. \$\endgroup\$
    – tcrosley
    Dec 3, 2014 at 0:12
2
\$\begingroup\$

Assuming you're talking about the wired ones- the wireless ones use RF and codes and such like.

Note: I'm adding this as an answer, but just to get the photos from this eBay listing here (since they won't last). Looks like it might be resistors or diodes for the top two switches and the bottom switch just shorts the two terminals together. Maybe some LEDs on there too.

enter image description here enter image description here

Easiest thing would be to pop the board out and trace it out. Very simple, in any case.

In case you're wondering "how" it would use resistors or diodes to detect the switch closures, the master unit would effectively measure the resistance for resistors, or flip the polarity and measure continuity. Obviously if the up/down switch is pressed it cannot detect anything else- no n-key rollover for you.

\$\endgroup\$
2
\$\begingroup\$

My chamberline switch has just three micro switches, a resistor and 2 different value capacitors, one inline with the light function and one on a "lock" feature. The resistor drops the voltage for the LED and I'm guessing there are 2 different AC components on the DC which get activated for the 2nd and 3rd functions. Not an engineer, just a tech. but seems logical to me.

\$\endgroup\$
2
  • \$\begingroup\$ Hi Tom, welcome to the site. The answers section is not for guesses, if you are not sure of your answer post it as a comment. \$\endgroup\$ Aug 21, 2016 at 5:39
  • \$\begingroup\$ @ClaudioAviChami you might take note that this is only answer here which states the components found in an actual button panel - compared to the others which only speculate, this one actually has the most basis in relevant facts. Even the circuit board picture previously posted guesses at what is on the components side, as unlike Tom that poster did not disassemble the unit to study it. \$\endgroup\$ Aug 21, 2016 at 6:07
1
\$\begingroup\$

When there are multiple buttons attached to a single wire, there are usually resistors and/or diodes involved. Here is a good explanation of how to attach multiple buttons to a single wire using resistors:

http://www.instructables.com/id/How-to-access-5-buttons-through-1-Arduino-input/

Here is how to do it with diodes:

http://users.tpg.com.au/users/p8king/inform01.htm

I do not known the exact values of resistors used, but you should be able to measure it yourself if you have a known working unit. Note that "resistor" way is limited to one button at a time, while 'diode' can do both switches independently; thus I suspect that 'hold' switch is using a diode, while buttons have the resistors.

\$\endgroup\$
3
  • \$\begingroup\$ Would you mind adding the names of these techniques? Something like 'A "voltage ladder", also called a "resistor ladder", uses a series of resistors.' What is the name of the technique that uses diodes like that? \$\endgroup\$
    – davidcary
    Dec 2, 2014 at 14:03
  • \$\begingroup\$ Sorry, I am not aware of the names for the techniques, as they seem to be fairly generic. A 'resistor ladder' refers to specific resistor arrangement used with push-pull outputs (such as microcontroller outputs), but this arrangement is not likely to be used here. \$\endgroup\$
    – theamk
    Dec 2, 2014 at 18:54
  • \$\begingroup\$ Are you saying that the nice person who wrote "Digitalduino: R2R Button Resistor Ladder" should have used some other name rather than "resistor ladder"? If so, what would be a more appropriate name? \$\endgroup\$
    – davidcary
    Dec 3, 2014 at 4:50
1
\$\begingroup\$

Any reason you have to use the same control method as a wired wall control button?

Many garage door openers/motors have terminals for various functions such as open and close on the unit itself.

You also have to investigate if you have any outptuts to monitor the door status. If not it would probably be easiest to add in reed switches and monitor those.

Another consideration is you have to be very careful and check if the opener has obstruction detection such as sensing an impact or pe beams or similar to prevent damage to property or injury/death to people thay may be struck by the door. This is very important if you wish to do unattended automatic door closure.

Can't comment on the exact one in question but I do know commercial units with multiple buttons seem to use 4-6 cores and I wouldn't be surprised if they were RS-422/485 or similar.

\$\endgroup\$
0
\$\begingroup\$

The way it works is very simple.

There are three switches in parallel all using the same sourced voltage from the 2 terminals on garage opener.

Each of the 3 switches on the remote (Open/Close Door Switch, Lock Switch and Light Switch) have a different value resistor in series with each switch - one of them problably has NO resistor.

The garage controller input is simply a digital volt meter and will see a different voltage on the circuit depending on which switch is pressed - that is why it can do so with only 2 wires.

\$\endgroup\$

Not the answer you're looking for? Browse other questions tagged or ask your own question.