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
noch ein weiterer Tipp: NXP Application Note AN97055 http://ics.nxp.com/support/documents/i2c/pdf/an97055.pdf
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.