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:
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.
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:
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.
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.
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.
Vorteile:
Nachteile:
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:
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.
Vorteile:
Nachteile:
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:
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.
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.
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:
Nachteile:
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.
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.
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.
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)
user_1818839