5
\$\begingroup\$

I am trying to understand how this data interface works.

It's supposed to:

  • translate (read) "OT" current difference into logical OUT (<10mA = 0, >17mA = 1)
  • send logical IN to "OT" by varying the voltage across OT (<7V = 0, >15V = 1)

opentherm master circuit

The voltage across OT terminals is around 18V and the current ~5..9mA when idle.

Specifically I don't understand how current sensing works in this circuit. Does D5, D6 or both play a role?


Note: the interface is for an OpenTherm 2.0 master, though I hope I have provided all the relevant details about the interface in the question itself such that any further knowledge of OpenTherm is not required to answer the question (if it is, please comment about what exactly is missing and I will provide it).

\$\endgroup\$
2
  • \$\begingroup\$ I don't know anything about OpenTherm. But it looks as though it is supposed to connect a boiler and a thermostat directly to each other (boiler powers thermostat.) Your interface appears to depend upon some unknown (to me) boiler circuitry (which supplies power to the circuit you show) and is designed to communicate with an MCU, which isn't part of the specification. There should be another circuit for the MCU to talk with a thermostat, which expects a boiler but is really talking with an MCU. (And also isn't part of the spec.) I think we need OpenTherm spec details. Or, at least, I do. \$\endgroup\$
    – jonk
    Commented Nov 11, 2019 at 1:53
  • \$\begingroup\$ If I understand well these and similar OpenTherm Master implementations, it needs an external 3.3V power source. However the actual Thermostat can be powered by the OpenTherm wires. Did anyone see a circuit where, for example with a voltage regulator, the 3,3V power is supplied from the OpenTherm wires and not from externally? \$\endgroup\$ Commented Oct 9, 2022 at 10:05

3 Answers 3

3
\$\begingroup\$

The boiler will always put a DC current on the bus, so if nothing is connected, the voltage on the bus will be between 24-48v.

Transmitting Data: The thermostat needs to “push down” the bus voltage to either around 6v (for transmitting a low level or idle) or around 17v (for transmitting a high level). U1 will select either D7 or D6 to put 4v3 or 15v to the base of Q1, which will pull the bus voltage down to a slightly higher voltage than the selected zener (you need to add the 3 diode forward voltages from Q1 (Vbe) and D1/D4 or D2/D3. So at the end (assuming 0.5v per diode), the bus voltage is pushed down to 5.8v or 16.5v. Most of the current will flow through the collector of Q1 and not through the zener diodes, as Q1 will limit it's base current by pulling as hard as needed for the main current to go trough the collector. R1 is only there to guarantuee an accurate voltage for the zener diode bu putting them in the flat part of their curve.

Independant of the voltage to which the bus is pulled down by this, the current trough Q1 / D5,R2,R3 will stay the same, the the boiler regulates the current to a constant value depending on the RX level.

Receiving Data: The boiler will regulate the bus current to either 7mA (low level or idle) or 20mA (high level). So we need to detect both current levels to drive / not drive U2's LED. As the majority of the current is flowing through the collector od Q1 (as told above), the voltage over R3 will go either to (7mA * 100 Ohm) 0.7V for low level or to (20mA * 100 Ohm) 2v for high level. 0.7V will be too low to turn on the LED of U2. But for a high level, the LED of U2 will be turned on as it forward voltage is about 1.2V. Of course the voltage won't be 2v due to R3, so it will be limited to 1.2v due to the LED. Finally, D5 is there to limit the max current to the LED of U2 to (4.7v - 1.2v / 220 Ohm) 16 mA.

It looks like a clever designed circuit.

\$\endgroup\$
3
  • \$\begingroup\$ Yes it is a clever design how this FDX biphase regulates LED Rx current and Tx regulates voltage current and impedance such that Rx is also activated when transmitting as a form of loopback but with 5V on Q1-E \$\endgroup\$
    – D.A.S.
    Commented Feb 13, 2020 at 0:50
  • \$\begingroup\$ @Tony, I don't think Rx is echoing Tx. Rx can only be triggered by a rised current on the bus which is driven by the boiler (acts as a constant current source). In theory, Tx and Rx communication should be possible simultaneously. \$\endgroup\$
    – Bigjim
    Commented Feb 13, 2020 at 12:15
  • \$\begingroup\$ at first, I thought it was FDX but then D7, D5 Zener levels seemed to imply HDX with Rx active during Tx \$\endgroup\$
    – D.A.S.
    Commented Feb 13, 2020 at 15:36
1
\$\begingroup\$

The most input current goes through Q1 emitter then through R2 to R1 and U2. When the voltage on R1 raises enough U2 LED will open sending a "1" level

Some current goes through R1 to the U1 opto or D6 but it's limited to Vbe/R1 = 0.7/330 = 2mA

Some current goes through Q1 base, collector current divided by beta so yo can say that most input current will go through collector and R2.

The voltage level translation is pretty obvious, the level is D6 or D7 voltage + Vbe + D1..D4 voltage drop.

D5 is just a limiter to prevent high current through U2 for speed reasons

\$\endgroup\$
3
  • \$\begingroup\$ By q2 you mean Q1? Does it mean Q1 needs to be "open" for current sensing to work? In that case the voltage has to be above 15V (to go through D6) or "IN" needs to remain high, correct? \$\endgroup\$
    – rustyx
    Commented Nov 11, 2019 at 12:13
  • \$\begingroup\$ All yes. Some minimum current is needed to work \$\endgroup\$
    – Dorian
    Commented Nov 11, 2019 at 12:55
  • \$\begingroup\$ "IN" can be low that's why D7 is there, to keep a minimum voltage for the current translator to work \$\endgroup\$
    – Dorian
    Commented Nov 11, 2019 at 12:59
0
\$\begingroup\$

Yes, this circuit allows an OpenTherm thermostat to receive current signals and to output voltage signals, all on the same line, in line with the OpenTherm specification. It does not provide remotely the (3V3) power supply.

The first reply (from @bigjim) is correct for the transmission part: a high voltage on the IN pin will saturate the transistor in U1, so the 4V3 zener kind of replaces the 15V, so the voltage on OT1-OT2 will change from 15V+3x0.7V (17V) to 4V3+3x0.7V (6.4V).

For the reception part, it's a bit different: when the boiler wants to send a 0 (idle state), it keeps the current to 7mA. Assume for one moment Q1 isn't there, then the voltage on R1 would be 330*0.007 = 2V. So we can deduct that Q1 is always ON, and voltage on R1 is always 0.7V, hence current in R1 is about 2mA. Current in zeners is also 2mA (+ neglictible base current), so no risk of killing them. The other 5mA flow through R2 and R3, so V on R3 is only 500mV, and OUT is low. It doesn't vary with OT voltage, the difference only affects Vce of Q1 (either 3.2V or 14V).

When current moves to about 20mA, there is still the same current in R1 and the zeners, so there is now 18mA through the transistor, which would bring voltage to 5.7V on the collector of Q1. That doesn't happen because of the Zener D5, that limits that voltage to 4.7V, hence the current in R2 and R3 to 14mA max. But now VR3 would be 1.4V, so U2 lights up, and OUT is positive.

Note that I used Vbe and Vdiode = 0.7V, this can vary, but won't affect the explanation.

Regarding the role of D5 and D6, they are quite different : D5 allows the boiler to see that there is a thermostat (otherwise the voltage on OT could go higher/out of specs). D6 allows to keep the current in R2 and Q2 in a safe range (Iot could be as high as 23mA, hence maybe more than 20mA in the LED in Q2, depending on its voltage drop)

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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