Bi-direktionales Level-Shiften mit minimalem Bauteilaufwand

Gast #2337871
Lesenswert?

Hallo zusammen!

Ich knobel gerade an der folgenden Aufgabe:

Ich möchte an 24 Pins einer Kfz-Steuergerät-Schnittstelle die 
Fehlercodes auslesen. Die Pins des Steuergeräts liegen im Ruhezustand 
auf ~12 V. Zum Auslesen eines Fehlercodes zieht man den jeweiligen Pin 
für ca. 4 Sekunden auf Masse. Nach ca. 2 Sekunden "antwortet" das 
Steuergerät dann auf diesem Pin, in dem es seinerseits den Pin im 
Sekundentakt auf Masse zieht.
(die Anzahl der Low-Impulse entspricht dann dem Fehlercode)

Soviel zu den Rahmenbedingungen. Ich möchte nun dieses Auslesen 
automatisiert durch einen Mikrocontroller durchführen lassen.

Mein erster Lösungsansatz:
Das Signal vom Steuergerät über einen Spannungsteiler auf <= 3.3V 
reduzieren. Funktioniert leider nicht, das Steuergerät erkennt dies 
bereits als "auf Masse gezogen".

Mein zweiter Lösungsansatz:
Alle Pins des Steuergeräts mittels 74 HC 4050 auf 
mikrocontrollergerechte Pegel reduzieren. Damit wäre die eine Richtung 
bereits erledigt. Allerdings muss der Mikrocontroller ja auch jeden Pin 
auf Masse ziehen können. Dies wäre mit einem Transistor pro 
Signalleitung VOR dem 4050 möglich.
Die Erfolgschancen sehen gut aus, allerdings würde bedeuten, ich müsste 
48 Pins am µC opfern, zudem 4x 74 HC 4050 + 24 Transistoren + 
Hühnerfutter auf der Platine vorsehen.

Hat vielleicht jemand eine Idee, wie man die Signale eleganter abfragen 
könnte? Gibt es bidirektionale Levelshifter-ICs, die mit 12V 
zurechtkommen?

Vielen Dank im Voraus!

Gruß
daniel
Gast #2337930
Lesenswert?

Hey, das ging ja flott! Vielen Dank!

Rene Zimmermann schrieb:
> Wow, kenne ich nur von Mercedes. Jedes Steuergerät hat seinen eigenen
> Pin am Diagnoseanschluss. Dort wird aber multiplext und gut ist.

Richtig, ein alter Mercedes :-)
Ähm, multiplexen? Wie läuft das? Ich hab nur mal ein Original-Lesegerät 
von Mercedes gesehen, das besteht fast ausschließlich aus Relais...

Knut Ballhause schrieb:
>> ~12 V.
>
> Echt Wechselspannung?!

Ähm, nein :-D Das sollte "circa 12V"  heißen ;-)

Knut Ballhause schrieb:
> Bestimmt. TPIC6C595 für µC->12V.
wow, das ist ja ein cooles Teil. Diese Variante werde ich auf jeden Fall 
mal durchdenken!

remo schrieb:
> Bei ELV ist im Drei-Achsen-Beschleuniger-Bausatz ein bidirektionaler
> Pegelshifter realisiert. Der Schaltplan müsste im Inet verfügbar sein.
> Spick doch dort mal. Ich denke mich erinnern zu können, das die das mit
> einem Fet und einem R je Kanal hinbekommen.

Oh, interessante Schaltung (hier mal der Link: 
http://www.elv.de/output/controller.aspx?cid=758&detail=10&detail2=7). 
Auch diese Alternative werde ich mal genauer untersuchen! Mal sehen, 
womit ich zu einer kleiner PCB-Fläche komme...

Vielen Dank für die guten Inputs!

-daniel
#2338018
Lesenswert?

Naja, da wirst Du folgendes machen müssen:

<=Auto     µC=>

E---+-----+
    |     |
    R     |
    |     |
    +->   |
  __|__    \|
   / \      |---R--->
  /___\    /|
    |     V
M---+-----+

Die Diode ist eine Z-Diode mit grob 5 Volt, zum Beispiel 4,8 oder 5,1 
Volt. Der Widerstand darüber sollte so groß sein, dass er noch nicht als 
Pulldown erkannt wird. Beispielsweise 1 Megaohm.

Der Transistor hängt mit dem Emitter an der Masse des Autos, mit dem 
Kollektor an der Leitung. Du kannst ihn über die Basis und den 
Widerstand einschalten, und somit die Leitung auf Masse legen.

Wie schon gesagt, es ist eine Frage der Dimensionierung. R muss groß 
genug sein damit noch kein Pulldown erkannt wird, aber klein genug, 
damit der Eingang des µCs noch schaltet.

Die Z-Diode dient dazu, dass Dein µC nicht bei Überspannung die Grätsche 
macht. Eventuell kannst Du noch parallel dazu einen Kondensator 
schalten, so dass das RC dann als Tiefpassfilter Störungen rausfiltert.
Gast #2338052
Lesenswert?

Zwirbeljupp schrieb:
> Die Erfolgschancen sehen gut aus, allerdings würde bedeuten, ich müsste
> 48 Pins am µC opfern,

Du kannst die Pins auch abwechselnd als ein- und Ausgang schalten, oder 
ebenso wie das Auto gleich nur eine Leitung nutzen, womit wir wieder bei 
24 wären. Diese ließen sich durch Multiplexen oder Schieberegister noch 
weiter bis auf drei reduzieren.

Zwirbeljupp schrieb:
>24 Transistoren + Hühnerfutter auf der Platine vorsehen.

Transistoren gibt es in Arrays, allen voran der allseits bekannte 
ULN2803.

Die Transistoren in der Schaltung im Anhang sind ebensolche, den oberen 
kann man zwecks Schaltschwellen ggf. auch als ULN2804 wählen. Pull-Ups 
gibt es ebenfalls als DIL bzw SIL. Wären dann insgesamt 6 Treiber + 
Pullups und drei Schieberegister an drei Pins.
Angehängte Dateien:
Gast #2338131
Lesenswert?

Hall und Danke für die Schaltungsvorschläge!

@ Christian Berger (casandro):
Eine ähnliche Schaltung hatte ich mir mit einem zweiten Transistor 
anstelle der Diode + Widerstand aufgemalt. Ich denke, das wird auf jeden 
Fall hinhauen (mit 2 Transistoren oder eben Deine Variante). Aber leider 
bedeutet das 48 Pins am µC... Es sei denn, ich "multiplexe" die Signale 
vom Steuergerät auf einen einzigen µC-Eingang. Allerdings ist mir nicht 
ganz klar, wie das funktionieren würde. Alle geshifteten Signalleitungen 
über eine Diode auf einen "Sternpunkt" verbinden?

@ gaast:
irgendwie glaube ich auch, dass Deine Schaltung so nicht ganz 
funktionieren würde. Aber danke für den Hinweis mit den ULNs! Mit ULNs + 
Multiplexing lässt sich das Problem vielleicht doch elegant lösen?
#2338152
Lesenswert?

Zwirbeljupp schrieb:
>  Allerdings ist mir nicht
> ganz klar, wie das funktionieren würde. Alle geshifteten Signalleitungen
> über eine Diode auf einen "Sternpunkt" verbinden?

1. Mit meiner Idee hast Du ja 2 Leitungen vom µC, eine ist ein Eingang, 
der andere ein Ausgang. Du kannst nun zum Beispiel UND-Gatter verwenden, 
damit der Ausgang nur dann high, und somit heruntergezogen, wird, wenn 2 
oder mehrere Anschlüsse des µCs auf High sind. Damit kannst Du deutlich 
mehr Leitungen schalten.

2. Die Rückmeldung ist relativ einfach wenn Du nur eine Leitung 
gleichzeitig bedienen willst. Bei der Lösung mit den Dioden bräuchtest 
Du nur ein UND-Gatter mit vielen Eingängen, so bald eine der Leitungen 
heruntergezogen wird, kriegst Du das mit. (allerdings nicht welche 
Leitung, das dürfte Dir aber egal sein, da es immer die Leitung ist, auf 
der Du angefragt hast)
#2338183
Lesenswert?

>Richtig, ein alter Mercedes :-)
>Ähm, multiplexen? Wie läuft das? Ich hab nur mal ein Original-Lesegerät
>von Mercedes gesehen, das besteht fast ausschließlich aus Relais...

Was ist das den für ein Daimler von welchem Baujahr?
Mit Multiplexen meine ich du hast den Pegelwandler nur ein mal
und schaltest ihn nacheinander auf die entsprechende Leitung.
So machen das aktuelle Diagnosetester zumindestens.

Gruß Rene
Gast #2338203
Lesenswert?

Christian Berger schrieb:
> Nö so wie in dem Bild geht das nicht, durch die Basis-Emitter-Strecke
> des rechten Transistors wird so viel Strom fließen, bis die
> Basis-Emitter-Spannung, und somit die Spannung an der Leitung, grob 0.6
> Volt sind...
>
> => ständiger Pulldown und verbrutzelter Transistor.

Als wenn ich nicht schon deutlich darauf hingewiesen hätte, dass damit 
jeweils ein einzelner Treiber des 2803 gemeint ist... Dieser hat als 
solcher bereits Basiswiderstände und noch ein bisschen mehr integriert, 
und diskrete Transistoren kommen für den TS ja nicht in Frage, somit hat 
sich das auch erübrigt. Letztenendes geht es um die Grundschaltung an 
sich, vor dem Aufbau sollte man manchmal eben das Hirn einschalten.
Überpenible Nörgler dürfen sich Basiswiderstände hinzudenken oder gleich 
die innenschaltung des ULN2803 im Geiste hinmalen. Oder gleich einen 
FET, womit die Basiswiderstände wieder hinfällig wären. Wundert mich ja, 
dass sich noch keiner über den fehlenden Widerstandswert beim Pullup 
beschwert hat, schließlich könnte da ja ein falscher Wert ebenso die 
ganze Schaltung braten.

Zwirbeljupp schrieb:
> irgendwie glaube ich auch, dass Deine Schaltung so nicht ganz
> funktionieren würde.

Glauben tut man in der Kirche.

Zwirbeljupp schrieb:
> Mit ULNs +
> Multiplexing lässt sich das Problem vielleicht doch elegant lösen?

Was gefällt dir denn konkret am Vorschlag nicht?
Gast #2338256
Lesenswert?

Hallo,

Rene Zimmermann schrieb:
> Was ist das den für ein Daimler von welchem Baujahr?
> Mit Multiplexen meine ich du hast den Pegelwandler nur ein mal
> und schaltest ihn nacheinander auf die entsprechende Leitung.
> So machen das aktuelle Diagnosetester zumindestens.
Ein r129, Baujahr 7/95.
Ja, der offizielle Tester scheint die Leitungen tatsächlich über Relais 
zu multiplexen. Ich bräuchte aber etwas für die Hosentasche :-)

gaast schrieb:
> Zwirbeljupp schrieb:
>> irgendwie glaube ich auch, dass Deine Schaltung so nicht ganz
>> funktionieren würde.
>
> Glauben tut man in der Kirche.
>
> Zwirbeljupp schrieb:
>> Mit ULNs +
>> Multiplexing lässt sich das Problem vielleicht doch elegant lösen?
>
> Was gefällt dir denn konkret am Vorschlag nicht?

Sorry, hatte einen Gedankenfehler. War irgendwie der Meinung, der linke 
Transistor in Deiner Zeichnung würde durchschalten, sobald am 
Signaleingang die 12V liegen... Blödsinn. Nach reiflicher Überlegung 
behaupte ich nun das Gegenteil. Ich werde wohl am besten mal einen 
Schaltungsvorschlag erEaglen und dann noch einmal zur Diskussion 
stellen.

Danke nochmals!

Gruß
Daniel
Gast #2338262
Lesenswert?

Christian Berger schrieb:
> 2. Die Rückmeldung ist relativ einfach wenn Du nur eine Leitung
> gleichzeitig bedienen willst. Bei der Lösung mit den Dioden bräuchtest
> Du nur ein UND-Gatter mit vielen Eingängen, so bald eine der Leitungen
> heruntergezogen wird, kriegst Du das mit. (allerdings nicht welche
> Leitung, das dürfte Dir aber egal sein, da es immer die Leitung ist, auf
> der Du angefragt hast)

Ja, das klingt plausibel :-)
Danke für die Nachhilfe. Ich komme eher von der Softwareseite und habe 
noch ein paar Defizite, was digitale Schaltungstechnik angeht...
Persönliche Seite #2338566
Lesenswert?

gaast schrieb:
> 2011-09-08_17-52-50_483.jpg
>
> Die Transistoren in der Schaltung im Anhang sind ebensolche, den oberen
> kann man zwecks Schaltschwellen ggf. auch als ULN2804 wählen.

Die Einwände sind schon berechtigt, denn die Schaltung funktioniert so 
nicht.

* Der µC ist auf Tristate
* der rechte NPN ist aus
* der linke NPN ist durchgeschaltet
* Es liegen 0V auf dem Pin des Steuergerätes
* Will das Steuergerätes den Pin auf 0V ziehen,
  dann hat das keine Wirkung.

Im Anhang eine LTspice Simulation der Schaltung von gaast.
Angehängte Dateien:
Gast #2339837
Lesenswert?

Stimmt natürlich, ursprünglich ging ich von der Verwendung getrennter 
Schieberegister für Ein- und Ausgang aus, weshalb die oben von mir 
vorgesclagenen bidirektionalen Portexpander Quatsch sind. Allerdings 
darf dann auch der Pull-up weg, dafür eventuell ein Array 
Schutzwiderstände vor die Ausgänge des Portexpanders setzen.
Gast #2340520
Lesenswert?

Zwirbeljupp schrieb:
> Die Erfolgschancen sehen gut aus, allerdings würde bedeuten, ich müsste
> 48 Pins am µC opfern, zudem 4x 74 HC 4050 + 24 Transistoren +
> Hühnerfutter auf der Platine vorsehen.

Nicht wirklich, du kommst mit 6 Pins aus: mit 5 Pins gibst du eine Zahl 
von 1..24 aus an 3 Decoder, die jeweils einen Transistor zum 
Kurzschliessen eines Eingangs ansteuern - wenn du Decoder mit Open 
Collector und ausreichender Spannungsfestigkeit findest, kannst du sie 
direkt anschliessen.

Die 24 Eingänge fasst du nach der Pegelwandlung (muss kein 4050 sein, 
wenn du den Spannungsteiler hochohmig genug machst geht jeder 
CMOS-Inverter) mit Oder-Gattern zusammen, es kann ja nur ein Eingang 
antworten, wenn ich deine Beschreibung richtig verstanden habe. Also 
genügt 1 Pin am µC.

Von 48 auf 6: Nachdenken lohnt sich fast immer.

Gruss Reinhard
Gast #2342441
Lesenswert?

Hallo zusammen,

noch einmal vielen Dank für die guten Vorschläge! Ihr habt mir wirklich 
weitergeholfen!
Nach dem Check der Verfügbarkeit der Chips habe ich mich jetzt auf 
folgenden Plan festgelegt:
Ich beschränke mich auf nur noch 18 Signale, die ich vom Steuergerät 
abfrage.
Pegelwandlung der Signale durch 3x 74HC4050, pulldown der 
Signalleitungen durch 2x 74LS145 und Zusammenfassen der Steuersignale 
nach der Pegelwandlung durch 3x 74LVX32D. Ich komme dann mit maximal 20 
Pins am µC aus, das ist völlig okay.

Das wird zwar mit den ganzen ICs trotzdem etwas sperrig für die 
Hosentasche, aber das ist mir deutlich lieber als 48 Transistoren + 
Basiswiderstände von Hand zu löten und zu routen :-D

Wenn ich den Schaltplan entworfen habe, bettel ich hier noch einmal um 
Feedback ;-)

Danke & Gruß
Daniel

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren