Universelles Steuergerät mit 16 Ein- und Ausgängen und seriellem Datenbus

 

  1. Einleitung
  2. Planung
  3. Umsetzung
  4. Informationen

1. Einleitung


Die Idee war die Entwicklung eines Steuergeräts, das in der Lage ist, eine große Anzahl von parallelen Datenleitungen zu überwachen, diese Daten über einen seriellen Bus weiterzuleiten und in einer CPU (hier ein Mikrocontroller) weiterzuverarbeiten.

Abhängig von den Programmbedingungen sollten nun ebenfalls 16 Ausgänge seriell angesteuert werden.

Zwar ist Kernstück der gesamten Schaltung ein PIC Mikroprozessor, allerdings erfolgt die Erfassung der Eingangssignale bzw. Steuerung der Ausgänge über Schieberegister. Mit 3 Datenleitungen (Clock - Data - Enable) und GND können so 16 und mehr Ein- bzw. Ausgänge angesprochen werden.

Für die Eingänge kommen 2 CMOS-Bausteine 4021 zum Einsatz, die hintereinander kaskadiert werden. Bei jedem Clock-Takt wird das niedrigste Bit auf die Datenleitung gegeben und vom µC verarbeitet. Durch das Kaskadieren der 2 ICs wurden nach 16 Taktzyklen die 2 Bytes eingelesen und können von der Software individuell verarbeitet werden.

Umgekehrt verwende ich für die Ausgänge den 4094. Das ist ebenfalls ein Schieberegister, aber wichtig mit Zwischenspeicher. Erst wenn der Enable-Pin HIGH ist, werden die Daten an die Ausgänge gelegt. Somit ist es möglich, während der Kommunikation die 16 Datenbits in den Speicher der kaskadierten MOS4094 zu schieben, und erst wenn der Enable-Eingang aktiviert wird, stehen die Signale an den Ausgängen.

Es könnten problemlos auch mehr Schieberegister kaskadiert werden, nur verlängern sich dann die Signallaufzeiten. Allerdings verkraften die Schieberegister mühelos die 1 MHz Takt, die ich mit dem PIC vorgebe, so dass an den einzelnen Ausgängen der Schieberegister sogar eine Pulsweitenmodulation realisiert werden kann. Wenn man wenige Millisekunden Signallaufzeit in Kauf nehmen kann, ist eine Erweiterung auf bis zu 124 Ein- und Ausgänge durchaus möglich.

Da die Schaltung als Steuergerät konzipiert wurde, müssen im µC nach jedem Datentransfer sämtliche Bedingungen überprüft werden und entsprechend die Ausgänge gesetzt werden. Dadurch entstehen dann recht spürbare Zeitverzögerungen im µs-Bereich. Diese fallen aber nur bei der Pulsweitenmodulation auf. Ähnlich arbeiten übrigens SPS Steuerungen.

Die Schaltung soll einmal im Auto zum Einsatz kommen, um einige Komfortfunktionen zentral nachzurüsten (bspw. Innenlicht Schalten beim Öffnen und Schließen der Zentralverriegelung, Steuern der Fensterheber, Komfort-Blinkersteuerung, PWM-Steuerung der Sitzheizung und Gebläse, Lichtwarner, Wegfahrsperre, Alarmanlage uvm.). Dabei können falsch gesetzte Ausgänge durchaus verheerende Folgen haben. Da die Daten aber stets durch die Register geschoben werden, stehen die "alten" Daten beim neuen Schreibzyklus wieder seriell am letzten Register zur Verfügung. Führt man diese nun zum µC zurück und überprüft sie mit den zuvor gesendeten Bytes, kann man 1 Schreibzyklus später feststellen, ob Fehler aufgetreten sind. Um eine gewisse Sicherheit zu gewährleisten, werden Ausgänge, bei denen Fehler mehrfach nacheinander auftreten, abgeschaltet und nicht weiter angesteuert.

nach oben


2. Planung

Die Planung war weitestgehend von meinen Ansprüchen an die Platine geprägt. Sie sollte möglichst klein werden (ohne SMD) und nur einseitig geätzt, da diese äußerst günstig gefertigt werden können.

Somit fiel die Wahl nach langem Hin und Her auf die CMOS-Schaltkreise 4021 und 4094 für die Ein- und Ausgänge. Das nächste Problem stellte die Spannungsdifferenz zwischen Bordnetz (+12V) und der µC-Steuerung dar, die mit 5V arbeitet. Der Einfachheit wegen werden nur 0V-Pegel erfasst. Alle Eingänge sind hochohmig auf High (+5V) gelegt und können über Dioden vom Fahrzeugnetz nur auf 0V gezogen werden. Die Spannung von +12V wird so geblockt und wirkt nicht auf das Steuergerät. Dies ist zwar ungünstig für die Kabelbruch-Erkennung, kann aber über die Programmierung abgefangen werden.

Als Leistungsstufen für die Ausgänge habe ich mich für 2 Wege entschieden; 8 Ausgänge sind über BTS650 ausgeführt und 8 Ausgänge über den ULN2008.

Die BTS650 sind Power FETs, die in der Lage sind, äußerst verlustarm Ströme bis 170A zu schalten. Sie haben dabei einen RDSon von ca. 4 Milliohm. Eine Kühlung ist somit in den wenigsten Fällen nötig; selbst beim Schalten des Abblendlichts erwärmt sich der BTS650 kaum mehr als handwarm.

Der ULN2008 ist ein Schaltkreis, der pro Ausgang 500mA schalten kann und über interne Freilaufdioden verfügt. Somit kann an jeden Ausgang des ULN2008 direkt ein Relais angeschlossen werden.

Layout des Steuergeräts

Version 1 inkl. Leistungsstufe und aufwändiger Eingangssignalaufbereitung

Version2
Version 2 inkl. LCD-Display und ohne Leistungsstufe

nach oben


3. Umsetzung

Nachdem der erste Prototyp vom Ätzen kam, bestückt und getestet wurde, stellte sich Ernüchterung ein. Probleme machten die BTS650. Diese sollten mit 5V und 0V angesteuert werden. Leider machen beide Pegel für den BTS650 keinen Unterschied, wenn sie 12V schalten sollen. 

Der BTS650 reagiert auf 0V-Pegel, dann schaltet er den Ausgang auf hochohmig bzw. +Vdd (also hier 12V). Beides war nicht gegeben. Somit mußte der Prototyp um 8 Transistoren (idealerweise FETs) ergänzt werden, um die notwendigen Steuersignale zu generieren. Ein weiterer Nachteil waren die Dioden an den Eingängen und Pull-Up-Widerstände. Dies hätte im Falle eines Kabelbruchs immer ein "High"-Signal ergeben. Der geplante Einsatz im KFZ ist damit unmöglich.

Die Behebung der Probleme war aber ohne weiteres möglich, so dass die überarbeitete Version nun ruhigen Gewissens seinen Weg ins Auto finden kann.

Prototyp des Steuergeräts

nach oben


4. Informationen

Nach Abschluss der Testphase kann dieses Steuergerät bei Interesse in kleinen Stückzahlen geordert werden.

nach oben

Quellen:

n geordert werden.

nach oben

Quellen: