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
|
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.
Version 1 inkl. Leistungsstufe und aufwändiger
Eingangssignalaufbereitung

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.

nach
oben
|