VBus-Decoder/Adapter Nano
Dies ist ein Unterartikel von VBus-Decoder. Auf der Hauptseite gibt es weitere Informationen zum Thema.
Inhaltsverzeichnis
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.
Update: Bei aktuelleren (6/2021) Messungen hat sich gezeigt, dass selbst bei 6,8k die Low-Pegel noch recht hoch sind, also besser ab 12k für R1 einsetzen. Oder gleich die Schaltung aus Version 1.3 verwenden
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
- Leiterkarte nochmal genau ansehen, irgendwelche Lötbrücken, wo keine sein sollten? (Ich weiß, sie ist verdammt eng)
- Spannungsquelle auf 9 V einstellen, nachmessen und Spannung notieren. Sofern vorhanden sollte die Strombegrenzung auf etwa 20 mA eingestellt werden.
- Spannungsquelle über das Multimeter für eine Strommessung an X1 anschließen (die Polarität ist egal)
- 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
- 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
- Multimeter auf Spannungsmessung umstellen (umstecken nicht vergessen...)
- 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. - 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. - Ausgangsspannung des Reglers über C3 (Marker vergessen) messen, sollte ziemlich genau 5,0 V sein. Wenn nicht: Regler checken.
- 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. - Spannung über R4 (
S4-G1
) messen, diese sollte ca. 2,03 V betragen. Wenn nicht, R2, R3 und R4 sowie IC4 prüfen. - Spannung über R7 (
S5-G1
) messen. Diese sollte ca. 1,79 V betragen. Wenn nicht: R6 und R7 sowie IC4 prüfen. - 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).
- Im Ruhezustand sollte über C1 (
S6-G2
) 3,3 V anliegen, wenn nicht: R1 prüfen, C1 probehalber entfernen. - 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.
- Im Ruhezustand sollte über C1 (
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
- Datei:Vbus nano.zip EAGLE-Dateien und LTspice-Simulationsdaten für den VBus-Nano