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
>Ich möchte an 24 Pins einer Kfz-Steuergerät-Schnittstelle die>Fehlercodes auslesen.
Wow, kenne ich nur von Mercedes. Jedes Steuergerät hat seinen eigenen
Pin am Diagnoseanschluss. Dort wird aber multiplext und gut ist.
Gruß Rene
Zwirbeljupp schrieb:> ~12 V.
Echt Wechselspannung?!
Zwirbeljupp schrieb:> Gibt es bidirektionale Levelshifter-ICs, die mit 12V> zurechtkommen?
Bestimmt. TPIC6C595 für µC->12V. Vom Steuergerät zum µC mit hochohmigen
Spannungsteilern oder dem schon erwähnten 4050.
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.
so long
Remo
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
Nach genauem Hinsehen ist der TPIC6C595 leider doch keine Option :-(
Der hat nämlich eine minimale Supply-Voltage von 4.5V, was sich mit der
Betriebsspannung des µCs (3.3V) beißt...
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.
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.
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.
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?
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)
>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
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?
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
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...
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.
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.
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
Hallo,
Nachtrag: mit 74LS145 brauchst du keinen Transistor, sondern nur 3 ICs
zum Anwerfen der Daten-Ausgabe. Weniger dürfte nicht gehen.
Gruss Reinhard
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