Skalierung (0–7 V, 15–18 V) auf (0 V, 3,3 V) für das OTGW-Projekt

Einführung

Es gibt ein Open-Source-Projekt zur Implementierung des Opentherm-Protokolls, das die Master- und Slave-Schaltung für die digitale Kommunikation gemäß der Protokollspezifikation definiert . Opentherm definiert ein Kommunikationsprotokoll zwischen „Thermostat“ und „Boiler“ zur Temperaturregelung von Heiz- und Kühlgeräten. Der "Kessel" kommuniziert durch Ändern der Stromstärke und der "Thermostat" tut dasselbe, indem er die Spannungswerte der Leitung ändert. Die Frequenz beträgt 1 kHz mit min. 20 us Anstiegs- und Abfallzeiten.

Gemäß dem Schema im Projekt definiert die "Boiler" -Schaltung eine Konstantstromquelle mit der Fähigkeit, den Strom zwischen zwei Pegeln von ~ 6 mA und ~ 21 mA zu ändern. Laut Opentherm-Spezifikationen sollte der Strom 5-9 mA für Low-Pegel und 17-23 mA für High-Pegel betragen. Gleichzeitig sendet die Slave-Schaltung Nachrichten, indem sie die Spannung auf den beiden Leitungen ändert, wobei:

  1. Low-Pegel ist 0-7V
  2. Der hohe Pegel beträgt 15-18 V

In der folgenden Abbildung ist die "Boiler" -Schaltung dargestellt, die die Konstantstromquelle sowie den angeschlossenen Eingang (RA0) und Ausgang (RA4) darstellt. Der Ausgang treibt einen Transistor an, der den Strom der Stromquelle ändert, und der Eingang liest einen skalierten Spannungspegel von (0–7 V, 15–18 V) bis (0–0,87 V, 1,87–2,24 V). Danach wird der Eingang in einen Komparator innerhalb der MCU eingespeist und in ein digitales Signal umgewandelt.

Geben Sie hier die Bildbeschreibung ein

Dieses Projekt ist sehr spezifisch, wenn man die Verwendung eines eingebauten Komparators in der MCU berücksichtigt. Es gibt eine Ableitung dieses Projekts, die mit 5-V-MCUs funktionieren sollte, die den Komparator überspringt und die Leitung direkt mit einem digitalen Eingang verbindet. Schaltung unten gezeigt:

Geben Sie hier die Bildbeschreibung ein

Gemäß dieser Schaltung werden die hohen Pegel (15–18 V) in (4,3, 5 V) und niedrige Pegel in (0–1,63 V) umgewandelt. Obwohl die Ebenen nicht mit den Arduino-Logikebenen übereinstimmen, sagt der Ersteller des Projekts, dass es funktioniert. Meiner Meinung nach würde ich R8 etwas mehr erhöhen, um die Spannung des niedrigen Logikpegels zu verringern.

Implementierung der Schaltung für 3V3 MCU

Das Ziel dieses Threads wäre also, die oben gezeigte Schaltung so anzupassen, dass sie mit einer 3V3-MCU funktioniert. Um genau zu sein, sagen wir, wir würden diese Schaltung an eine STM32F401-MCU anschließen, die laut Datenblatt max. von 0,3Vdd=0,99V für Low-Pegel und min. von 0,4 Vdd = 1,32 V für High-Pegel.

Beispiel 1

Wenn wir zu Abbildung 1 zurückkehren, sehen wir, dass der Spannungsteiler R5 und R6 Logikpegel (0-0,84 V, 1,87 - 2,24 V) liefert, die dem STM32-Datenblatt entsprechen. Theoretisch sollten diese Pegel innerhalb der Spezifikation liegen und die Schaltung sollte funktionieren, indem nur der Spannungsteiler R5 und R6 verwendet wird.

Geben Sie hier die Bildbeschreibung ein

Vorteile:

  • Kostengünstig
  • Einfache Schaltung mit geringer Bauteilanzahl

Nachteile:

  • Niedrige Margen für Fehler. Die Spanne von 0,15 V für Low-Pegel und 0,55 V für High-Pegel ist nicht sehr praktisch. Rauschen, Komponententoleranz, Umgebungstemperatur können nachteilig sein. Daher halte ich diese Schaltung nicht für sehr zuverlässig.

Beispiel 2

Die unbequemen Fehlergrenzen in Beispiel 1 sollten irgendwie vermieden werden, und ich habe eine schmutzige schnelle Lösung gefunden, indem ich ein paar Transistoren integriert habe, sodass die Pegel zwischen 0 V und 3,3 V schwingen würden. Hier ist die Schaltung:

Geben Sie hier die Bildbeschreibung ein

Der Spannungsteiler skaliert das Signal auf (0-0,48 V, 1-1,25 V). Da die Hochpegelspannung des Teilers (R1 & R3) die Vbe(sat) des Transistors Q1 übersteigt. Der Transistor wird jedes Mal gesättigt, wenn ein hoher Pegel vorhanden ist, und der Ausgang beträgt 3,3 V. Wenn ein niedriger Pegel vorhanden ist, reicht es nicht aus, dass Q1 gesättigt ist, sodass am Ausgang ~ 0,2 V anliegen. Die Simulationsergebnisse sind unten gezeigt. Der Q2-Transistor ist nur ein Inverter, da ich in der Software nicht mit invertierten Pegeln umgehen wollte. Zweifellos kann Q2 vermieden werden.

Geben Sie hier die Bildbeschreibung ein

Vorteile:

  • Hohe Fehlerquote
  • Die Schaltung wandelt die definierten (0-7 V, 15-18 V) Pegel immer in (0, 3,3 V) um.

Nachteile:

  • Höhere Kosten als Beispiel 1
  • Die Schaltung hat keine Hysterese. Die Kommunikationsleitung wird mit bis zu 50 m Entfernung verlaufen. Alle Arten von Hochfrequenzrauschen können in die Leitung eingekoppelt werden. Dieses Rauschen kann jedes Mal, wenn das Signal zwischen den Pegeln schwingt, zu einem falschen Auslösen der Schaltung führen. Nach meinem bescheidenen Wissen sollte jedes Rauschen, das schneller als die Anstiegs- / Abfallzeiten des Signals ist, zu einer falschen Auslösung führen. Die typischen Anstiegs- und Abfallzeiten von Opentherm betragen 20 us. Ich weiß nicht, ob dies schnell genug ist, um diese Art von Fehlauslösung zu vermeiden, also könnte vielleicht jemand seine Meinung teilen.

Beispiel 3

Ich bin mir nicht sicher, ob das Problem der Fehlauslösung in Beispiel 2 wirklich ein Problem ist, aber ich habe mich entschieden, noch einen Schritt weiter zu gehen und es zu vermeiden, indem ich die gesamte Schaltung neu entwerfe. Da das ursprüngliche OTGW-Projekt einen eingebauten Komparator verwendet. Ich sagte, warum nicht einen externen Komparator verwenden? Auf diese Weise kann ich auch eine kleine Hysterese hinzufügen und damit das Problem in Beispiel 2 vermeiden.

Ich habe die folgenden Spezifikationen für den Komparator definiert:

  • Das Eingangssignal (0–7 V, 15–18 V) wird auf (0–1,1 V, 2,5–3 V) skaliert.
  • Die Referenzspannung des Komparators beträgt 1,5 V
  • Es wird eine Hysterese von ~0,16 V eingeführt, was im Originalsignal ~1 V entspricht.

Gemäß diesen Spezifikationen habe ich die folgende Schaltung mit einigen Widerständen entworfen, die ich zur Verfügung hatte. Die Parameter sind nicht genau die oben definierten, aber es sollte funktionieren.

Geben Sie hier die Bildbeschreibung ein

Ich war auf der Suche nach einem schnellen und ausreichend günstigen Komparator, der die Arbeit erledigen sollte. Ich entschied mich für BU5265HFV-TR . Der für die Hysterese verwendete Widerstand R4 ist groß genug, um den Spannungsteiler zu beeinflussen. Die Simulationsergebnisse sind unten gezeigt.

Geben Sie hier die Bildbeschreibung ein

Den Ergebnissen zufolge definiert die Schaltung eine Spannung mit niedrigem und hohem Pegel zwischen ~9 V. Die Hysterese ist >1V und die Ausgangsspannung pendelt zwischen (~0, ~3,3V). Daher können wir sagen, dass es die oben definierten Spezifikationen in etwa erfüllt.

Vorteile:

  • Hohe Fehlerquote
  • Führt Hysterese ein

Nachteile:

  • Höhere Kosten als Beispiel 1 und 2

Die Frage

Aus meiner bescheidenen Erfahrung habe ich das Gefühl, dass jemandem mit viel Erfahrung eine viel bessere oder billigere Lösung im Vergleich zu Beispiel 3 einfallen könnte. Daher die Frage, wie man (0-7, 15-18V) in (0, 3,3V ).

Oder vielleicht, wenn die obigen Lösungen gut genug sind, könnte er seine Meinung zum Dilemma der falschen Auslösung in Beispiel 2 teilen.

Wenn Sie einen freien analogen Eingang haben, teilen Sie ihn mit einem Potentialteiler durch 6 (oder so), verbinden Sie ihn mit dem ADC, stellen Sie die Schwellenwerte in der Software ein.

Antworten (2)

Bitte verwenden Sie die folgende Schaltung, um Q6 zu ersetzen. Die Wellenform wurde auf LTspice simuliert. Sie müssen (mindestens) einen weiteren BJT hinzufügen, um eine Hysterese zu erhalten. Die grüne Spur ist 0 - 3,3 V Ausgang.

Geben Sie hier die Bildbeschreibung ein


Bearbeiten
Also, was ist anders? – Phil Donn

Q2 ist die „Base Common“-Konfiguration. Die Basis funktioniert wie der (-) Eingang eines OPA im Schaltmodus, während der Emitter als (+) Eingang eines OPA betrachtet werden kann.
Die Mitte von Input Threshold-Min und Trigger-Max wird 3,3 V durch R1 & R5 (bitte R1 & R5 neu berechnen, ich glaube, ich habe die Arbeit nicht sorgfältig gemacht). Ich habe die Eingangsimpedanz auf 20k (R1) gehalten.:

((Vth - Vtg)/2 + Vtg - Vbe) = ((15 V - 7 V) / 2 + 7 V - 0,7 V) + = 10,3 V

Das ist der Wendepunkt, an dem der Output-Übergang stattfindet. Somit haben Sie einen Rauschabstand von 4 V.

Da der Q2-Emitter auf 3,3 V liegt, müssen Sie sich in der Zwischenzeit keine Gedanken über die Überspannung am Eingang des Mikroprozessors machen (angenommen, es sind 3,3 V IO), während Sie die Schienenspannung erreichen und einen großen Rauschabstand bieten.

Vh_max – Vce_sat = 3,3 V – 0,2 V = 3,1 V

In der Zwischenzeit erreicht Vlow für die logische 0 0 V und bietet somit auch einen großen Spielraum. Sie müssen R4 gemäß Ihrer Berechnung anpassen.

All dies geschieht einfach durch Umordnen der Konfiguration zusammen mit PNP anstelle von NPN.

Dies ist Beispiel 2 ohne Q2 sehr ähnlich. Abgesehen davon, dass es sich um einen pnp-Transistor handelt.
@PhillDonn, aber anders, oder? Welchen anderen Unterschied haben Sie bemerkt, um den Ausgang von 0 - 3,3 V zu erhalten? :-)
Nun, das ist alles, was ich sehen kann :). Was ist also anders?
@PhillDonn , Erklärt, was ich nicht erklärt habe, im Haupttext. Bitte sagen Sie, es ist einfach und elegant. :-)
Dies ist definitiv besser als in Abbildung 2, aber ich kann immer noch keinen Unterschied zu der in Beispiel 2 gezeigten Schaltung erkennen. Ich kann sehen, dass der Spannungsteiler den Rauschabstand zwischen hohen und niedrigen Pegeln definitiv verbessert. Der IO-Pin wäre jedoch in Beispiel 2 immer noch vor Hochspannung geschützt, da er mit dem Kollektor des Transistors verbunden wäre.
@PhillDonn, ja, das versichere ich dir! Ich werde es erklären: Ausgabe Nr. 2 ist die "Emitter Follower"-Konfiguration. Was es alles tut, ist ein "Puffer", "Stromverstärkung (Ie = Ib * (1 + Beta))" oder "Impedanzisolation". Ich erzähle zu viel ohne Sinn. h.. h.. Es hat also "Stromverstärkung", aber "KEINE Spannungsverstärkung". Somit erscheint die Eingangsspannung von R8 & R11 (-Vbe) direkt am Emitter, Verstärkung von "1/1". Und Sie machen sich, wie Sie sagten, Sorgen um den Slop, also Hysterese. Ok .. lassen Sie mich wissen, wenn Sie weitere Fragen haben. [Bearbeitet von einem Moderator.]
@jay Jetzt verstehe ich, dass Sie die Schaltung in Abbildung 2 fälschlicherweise als "Beispiel 2" bezeichnen: D. Ich stimme Ihnen voll und ganz zu, dass Ihre Schaltung besser ist als die in Abbildung 2, wie in Ihrer Antwort erwähnt. Ich bezog mich jedoch auf die Schaltung in der Kopfzeile namens "Beispiel 2": D. Es ist tatsächlich in Abbildung 4 dargestellt :D

Die Frage: Aus meiner bescheidenen Erfahrung habe ich das Gefühl, dass jemand viel Erfahreneren eine viel bessere oder billigere Lösung im Vergleich zu Beispiel 3 einfallen könnte. Daher die Frage, wie man (0-7, 15-18V) in (0 , 3,3 V), oder vielleicht, wenn die obigen Lösungen gut genug sind, könnte er seine Meinung zum Dilemma der Fehlauslösung in Beispiel 2 teilen.

In Anbetracht der Ausfallkosten bei einem außer Kontrolle geratenen Kessel, der Einsparung von Kupfer bei einer langen 2-Draht-Lösung und der Möglichkeit, die Möglichkeit eines Vollduplexbetriebs mit einer gewissen Immunität gegen streuende EMI (CMRR) bereitzustellen , gibt es bessere Möglichkeiten zur Verbesserung Signal-Rausch-Verhältnis (SNR) und damit die **Wahrscheinlichkeit von Bitfehlern (**BER) unter Verwendung der Telefontechnologie, sieht die dritte Lösung ziemlich minimal aus , um einiges davon zu erreichen.

Ich sehe dort nur Teile im Wert von etwa 25 Cent in Beispiel 3. (in Volumen). Es muss eine Reihe von Interferenz- und Empfindlichkeitstests geben, bei denen mehr Teile benötigt werden, um Rauschen zu unterdrücken und somit Fehler zu reduzieren, als hier gezeigt, aber ich danke Ihnen, dass Sie eine interessante Industrieprotokolllösung geteilt haben.

(und das sind meine zwei Bits wert)

Wären Sie so freundlich, uns Online-Literatur, Beispiele oder Lösungen zur Verfügung zu stellen, die den Teil der Rauschunterdrückungsanforderungen erklären könnten? Ich weiß, dass auch in dieser Schaltung ein Mangel an ESD-Schutz besteht, was meiner Meinung nach ebenfalls berücksichtigt werden sollte.
Der ESD-Schutz ist hier gut abgedeckt. Um jedoch die Immunität gegen Leitungsrauschen zu erhöhen, kann je nach Umgebungsrauschen von Triac-Dimmern und SMPS eine CM-Drossel für Niederfrequenz wie ein Telefonie-Hybridtransformator mit STP-Kabeln und einem Filter erforderlich sein, um das Signal BW mit 1 kHz Biphase an DC anzupassen, aber Kerbleitung f in Extremfällen, da das Signal nicht impedanzsymmetrisch ist. Für die Kabelschnittstelle und Rx sollte ein Test für CMRR und PSRR spezifiziert werden.
Sind Sie sicher, dass ESD abgedeckt ist? Wenn Sie Abbildung 1 oder Abbildung 2 überprüfen, können die Anschlussstifte des Thermostats ESD ausgesetzt werden. Dies würde zu einer sehr hohen Spannung am Emitter und an der Basis des Q2-Transistors führen, was zu einer Beschädigung führen könnte.
Ich meinte, dass ESD im Allgemeinen für alle IO-Kabel im Forum behandelt wird