VBus-Decoder/Adapter Nano

Aus Hobbyelektronik.org

Dies ist ein Unterartikel von VBus-Decoder. Auf der Hauptseite gibt es weitere Informationen zum Thema.

Einleitung

Die Hardware für den Empfang geht auch deutlich einfacher als in der Protokollbeschreibung und weiter oben auf der Seite gezeigt.

Mit einer geschickten Beschaltung eines Komparators braucht man für die Hysterese genau einen Komparator und keinen einzigen Schmitt-Trigger.

Das macht die Schaltung kompakt, billig und einfach aufzubauen. Ich hab einfach mal geschaut, wie klein man es machen kann, das Ergebnis lautet: 13x32,5 mm²:

Statt des Optokopplers OK1 und R1 sowie C1 können auch die 0-Ohm-Widerstände R10 und R11 bestückt werden, allerdings fällt dann die galvanische Trennung weg und es kann aufgrund der Vorwärtsspannung der Dioden zu einem GND-Offset kommen. Die Bestückungsoption ist allerdings nur der Vollständigkeit halber vorhanden, generell rate ich dazu, die nicht einmal 60 Cent zu investieren.

Die drei Halblöcher dienen zum platzsparenden Fixieren mit M2,5-Schrauben.

Menge Referenz Wert Package Reichelt Bestellcode
1 SV1 MA04-1
2 C2, C3 100n C0603 X7R-G0603 100N
3 R5, R7, R8 10k R0603 RND 0603 1 10K
1 C5 10u/16V C1206 KEM X7R1206 10U
1 R4 15k R0603 RND 0603 1 15K
1 X1 1751248 1751248 AKL 059-02
2 R3, R6 18k R0603 RND 0603 1 18K
1 R9 1k R0603 RND 0603 1 1K
2 C1*, C4 1n C0603 X7R-G0603 1,0N
1 R1* 3k3 R0603 RND 0603 1 3,3K
1 R2 68k R0603 RND 0603 1 68K
1 OK1 6N136 DIL08 6N 136
3 D1, D2, D5 BAV99 SOT23 BAV 99 NXP
1 IC4 LM393D SO08 LM 393 D SMD
1 IC1 LP2985IM5-5.0 SOT23-DBV LP 2985 IM5-5.0
1 D3 P6SMB 15A SMBJ P6SMB 15A SMD

Zu den mit * markierten Bauteilen erhielt ich von Micha folgenden Hinweis:

Ich musste am Ausgang den C entfernen und den PullUp auf 4.7k erhöhen - sonst hat der Raspi das Low nicht erkannt.

Nachtrag vom 10.11.2019: Nach erneuten Messungen mit 3,3 V auf der Augangsseite stellte sich heraus, dass die Pegel deutlich besser werden, wenn für R1 ein 6,8 kOhm-Widerstand und für C1 ein 680 pF-Kondensator eingesetzt wird. Wie von Micha beschrieben, kann C1 auch einfach weggelassen werden. Mit dem Weglassen steigt allerdings die Gefahr von Glitches.

Ich sollte die untenstehenden Messungen also nochmal mit 3,3 Volt wiederholen. Ebenso möchte ich IC1 durch "TS 5205 CX533" ersetzen, der ein gutes Stück günstiger ist.

Aufbau

Der Aufbau kann nach dem üblichen Vorgehen erfolgen, hier ein paar Hinweise, die es vereinfachen

  • D3 vor D5 bestücken, da die Pads von D3 sehr klein ausfallen
  • Die Oberseite kann komplett vor der Unterseite bestückt werden. Die Stiftleiste und Anschlussklemmen sind so gut wie gleich hoch

Messung

Kommt auch das raus, was rauskommen soll?

Die Spezifikation gibt ein paar Vorgaben:

  • Maximale Strombelastbarkeit: 35 mA
  • Schaltschwellen am Slave: 2,25 V Space, 2,00 V Mark

So die Theorie. In der Praxis hat die Schaltung eine Stromaufnahme von etwa 3 mA.

Den Rest musste ich an der echten Anlage messen, da in der Bastelecke weder ein Resol-Regler noch ein Protokollsimulator (der in diesem Fall relativ einfach ausfallen könnte) herumsteht. Also das Oszi eingepackt und die Schaltung bei meinen Eltern fliegend angeklemmt.

Bei den Schaltschwellen sieht es wie folgt aus:

Die Schaltschwelle für die steigende Flanke liegt bei etwa 1,96 V, die für die fallende bei 2,44 V. In Hinblick auf die Messgenauigkeit des Oszilloskops und Toleranzen der Widerstände ein mehr als zufriedenstellendes Ergebnis.

Der Optokoppler bringt leichte und vor allem asymmetrische Verzögerungen mit sich.

Gemessen wird hier das Signal vor (Ch1 an OK1.3) und nach (Ch2 an OK1.6) dem Optokoppler. Als Stromversorgung auf der "rechten Seite" wurde eine Powerbank mit 5,1 V Ausgangsspannung verwendet. Als Schwellenwerte wurden jeweils 0,25 * Vcc und 0,75 * Vcc verwendet.

Bei steigender Flanke hängt der Ausgang 6,12 µs, bei fallender 8,68 µs hinterher. Die Verzögerung selbst ist hier nicht das Problem, sondern der Verzögerungsunterschied, da dieser die UART-Interfaces der Empfänger durcheinanderbringen kann.

Bei den verwendeten 9600 Baud entspricht eine Bitzeit ca. 104 µs. Die Verzögerungsdifferenz der Flanken beträgt mit 2,56 µs lediglich 2,5 % einer Bitzeit. Vernachlässigbar.

Wichtig ist ebenfalls, dass die Versorgungsspannung stabil bleibt, da sich sonst die Schaltschwellen verschieben und somit Unsinn übertragen wird. Besonders die Tatsache, dass der Optokoppler bei niedriger Busspannung aktiv ist, kann problematisch werden.

Das Oszi-Bild mit Probe am 5V-Ausgang des Reglers und DC-Kopplung war so unspektakulär, dass ich gar keine Bildschirmaufnahme gemacht hab. Interessanter ist da die Betrachtung der Versorgung mit AC-Kopplung:

Bisschen hohe Spikes, wobei diese auch mit dem Probing selbst zusammenhängen können (2x 20 cm Dupont-Drähte und EZ-Hooks), ansonsten nur knapp 10 mV Ripple. Passt soweit.

Troubleshooting

Nachdem ich schon ein paar Hilferufe erhalten habe, hier ein kleiner Troubleshooting-Guide - dazu am besten die beiden Bilder (oder zumindest das des Layouts) parallel öffnen:

Für die Messungen ist ein einfaches Multimeter und eine 9 V-Batterie ausreichend. Besser ist jedoch ein Labornetzteil.

Um eine Ferndiagnose zu vereinfachen, bitte alle gemessenen Spannungen und Ströme notieren

  1. Leiterkarte nochmal genau ansehen, irgendwelche Lötbrücken, wo keine sein sollten? (Ich weiß, sie ist verdammt eng)
  2. Spannungsquelle auf 9 V einstellen, nachmessen und Spannung notieren. Sofern vorhanden sollte die Strombegrenzung auf etwa 20 mA eingestellt werden.
  3. Spannungsquelle über das Multimeter für eine Strommessung an X1 anschließen (die Polarität ist egal)
    1. Die Schaltung sollte im Ruhezustand nicht mehr als 3 mA aufnehmen. Ist es mehr oder riecht es "warm": sofort abstecken und nochmal alle Lötstellen prüfen und schauen, ob die richtigen Bauteile bestückt wurden
    2. Mit Pinzette R5 (S3-G1) kurzschließen, der Strom sollte auf etwa 6 mA ansteigen. Wenn ja: die Wahrscheinlichkeit ist groß, dass alles ok ist :) - wenn nein: Weitermachen
  4. Multimeter auf Spannungsmessung umstellen (umstecken nicht vergessen...)
  5. Spannung über D3 (S1-G1) messen, diese sollte um die Durchflussspannung zweiter Dioden (ca. 1,3 V) geringer als die Eingangsspannung sein. Bei 9 V am Eingang sind das etwa 7,7 Volt. Wenn die Spannung deutlich niedriger ist, sind es ggf. die falschen Dioden verbaut.
  6. Spannung über C5 (S2-G1) messen, sollte um die Durchflussspannung dreier Dioden (ca. 1,95 V) geringer sein als die Eingangsspannung. Bei 9 V am Eingang also um die 7 V. Wenn nicht, siehe letzter Punkt.
  7. Ausgangsspannung des Reglers über C3 (Marker vergessen) messen, sollte ziemlich genau 5,0 V sein. Wenn nicht: Regler checken.
  8. Spannung über C4 (S3-G1) messen, dieser sollte etwa der Hälfte der Sapnnung über D3 entsprechen. Ist der Wert grob daneben, die Widerstände R5 und R8 kontrollieren (2:1-Spannungsteiler) und prüfen, ob der Komparator (IC4) richtig eingelötet ist.
  9. Spannung über R4 (S4-G1) messen, diese sollte ca. 2,03 V betragen. Wenn nicht, R2, R3 und R4 sowie IC4 prüfen.
  10. Spannung über R7 (S5-G1) messen. Diese sollte ca. 1,79 V betragen. Wenn nicht: R6 und R7 sowie IC4 prüfen.
  11. Nun können zusätzlich an SV1.1 3,3 V (oder 5V) und an SV1.4 GND angelegt werden (z. B. vom Raspberry Pi).
    1. Im Ruhezustand sollte über C1 (S6-G2) 3,3 V anliegen, wenn nicht: R1 prüfen, C1 probehalber entfernen.
    2. Wird R5 (S3-G1) kurzgeschlossen, sollte die Spannung über über C1 (S6-G2) auf "nahe 0 V" abfallen. Wenn sie nur leicht abfällt, R1 prüfen oder OK1 prüfen/tauschen.

Sollte die Schaltung dennoch nicht funktionieren, bitte die notierten Spannungen sowie aussagekräftige Fotos (gut ausgeleuchtet, scharf, zugeschnitten) per E-Mail an mich senden.

Leiterkarten

Es gibt wieder Leiterkarten. Wer eine haben möchte, kann sich gerne bei mir melden.

Downloads