|
2 HardwareDas CAN-Bussystem, das bis zu 100 einzelne Knoten umfassen kann, ist als Multimaster-Bus ausgelegt. Durch den modularen Hardwareaufbau ist eine flexible Erweiterung der Knotentypen für viele Anwendungsbereiche möglich. Zunächst soll ein kurzer Überblick über die verwendeten Bausteine gegeben werden. Danach wird auf die einzelnen Komponenten des Buskopplers eingegangen und abschliessend soll die Applikationshardware, bestehend aus der I/O-Applikation und der RS232-Applikation, vorgestellt werden. 2.1 Buskopplerhardware2.1.1 Beschreibung CAN-Controller: Siemens SAE81C90Der Standalone Full CAN-Controller SAE81C90 beinhaltet alle Komponenten die nötig sind, um eigenständig Nachrichten-Telegramme gemäß dem CAN Protokoll über einen Datenbus zu senden und zu empfangen. Die flexiblen Datenschnittstellen des Bausteins erlauben es, den CAN-Controller auf vielfältige Weise in Zielhardware zu integrieren. Er besitzt einen 16-Bit I/O Port (Porterweiterung), einen CAN Sende- und Empfangs-Port, eine komplette 8-Bit Mikrocontroller-Schnittstelle, die wahlweise im seriellen oder parallelen Modus betrieben werden kann, zwei Anschlüsse für den Quarz um seinen Arbeitstakt zu erzeugen, und einen Taktausgang für eventuelle mit einem Arbeitstakt zu versorgende externe Bausteine. Dies alles ist in einem PLCC44 Gehäuse untergebracht. Die Versorgungsspannung beträgt 5V DC. Der CAN Sende- und Empfangs-Port stellt einen TTL-Signalpegel zur Verfügung und kann deshalb mit diversen Bus-Leitungstreibern betrieben werden. Der Baustein wird vollständig über interne Steuerregister konfiguriert. Für Bus-Telegramme steht ein Sende- und Empfangsspeicher für 16 Nachrichten-Objekte zur Verfügung (Message-Object 0-15, MO 0-15), wobei die unteren 8 MO-Speicher noch jeweils 2 Byte Zusatzspeicherbereich für einen eventuellen Zeitstempel beinhalten. Die ID-Bytes dieser Nachrichten-Objekte sind direkt mit Angabe einer Registeradresse zu erreichen. Die Daten-Bytes können nur über ein Shadow-Register gelesen oder geschrieben werden, damit dabei die im MO enthaltenen Daten nicht zerstört werden. Zum Byteschreiben, bzw. Bytelesen muß eine bestimmte Reihenfolge eingehalten werden. Zur Nachrichtenfilterung (Akzeptanzfilterung) werden für jedes MO jeweils die 2 ID-Bytes im Sende-Empfangs-Register verwendet. Für eine ausführliche Beschreibung des Bausteins siehe Datenblatt. 2.1.2 Beschreibung µController: Atmel AT90S8515Kurze Tabellarische Übersicht der Eigenschaften des µC AT90S8515 von Atmel: (Für weitergehende Informationen siehe Datenblatt)
2.1.3 SchaltungsbeschreibungDie Buskopplerhardware stellt zum einen die grundlegenden Funktionen zur Verfügung, die für den Busbetrieb notwendig sind und zum anderen die Schnittstelle für die Applikationshardware. Abbildung 2.1 verdeutlicht die Funktionsweise in einem Blockdiagramm. Abbildung 2.1: Blockdiagramm Buskoppler Der AtmelµC und der CAN-Controller sind über einen gemeinsamen 8Bit breiten Daten- und Steuerbus miteinander verbunden. Hierüber läuft die komplette Kommunikation zwischen µC und CAN-Controller, z.B. die Konfiguration des CAN-Controllers oder der Austausch der eingetroffenen/zu versendenden CAN-Bus Telegramme. Beide Bausteine verfügen je über zwei freie 8Bit I/O Ports, sodaß insgesamt 32 binäre und einzeln schaltbare Ein/Ausgänge zur Verfügung stehen. Die beiden freien 8Bit Ports des AtmelµCs lassen sich durch Setzen der entsprechenden Bits im Atmel-Adressraum direkt schalten, hingegen die beiden 8Bit Ports des CAN-Controllers müssen vom µC über den gemeinsamen Steuer-/Datenbus adressiert werden, was für hohe Schaltfrequenzen, z.B. bei der softwaretechnischen Nachbildung eines I2C-Busses, o.ä., sich hinsichtlich der Geschwindigkeit nachteilig auswirken kann. Deshalb wird der CAN-Controller I/O-Bereich hier nur für einfache Schaltaufgaben benutzt (Taster/Relais). Desweiteren beinhaltet die Applikationsschnittstelle des AtmelµCs eine serielle RS232-Schnittstelle, die z.B. zum Anschluß an einen PC genutzt werden kann. Um auf den CAN-Bus zuzugreifen benötigt der CAN-Controller noch einen weiteren Baustein (Philips PCA82C251, Datenblattverweis im Anhang), der die logischen Pegel nach CAN-Bus Spezifikation herstellt. Erst dadurch wird aus dem CAN-Controller ein Busteilnehmer. Über die ISP-Schnittstelle läßt sich der AtmelµC im eingebauten Zustand mit einem passenden Programmiergerät programmieren. Die Resetlogik versetzt beide Bausteine nach einer Spannungsunterbrechung oder nach dem Einschalten in einen definierten Anfangszustand. Zur Beschreibung der Schaltung dienen Abbildung 2.2 und 2.3. Abbildung 2.2: Schaltplan Buskoppler (110k) Abbildung 2.3: Positionsplan Buskoppler Zur Kommunikation sind IC1 (AtmelµC) und IC2 (CAN-Controller) über den Datenbus (AD0-7) und Steuerbus (/INT, /ALE, /CS, /WR, /RD) miteinander verbunden. Die Anbindung der I/O-Ports des AtmelµCs an die Applikation ist mittels Steckverbinder (X2) über PortA und PortC realisiert, auch die serielle RS232-Schnittstelle (PD0, PD1) ist über X2 nach aussen geführt. Die I/O-Ports des CAN-Controllers sind über P0.0 bis P1.7 zugänglich (X1). IC3 (PCA82C251, Leitungstreiber) ist mit TX0 und RX0 am CAN-Controller angeschlossen. Sämtliche Bausteine (IC1-IC3) verfügen in der Spannugszuführung über keramische Kondensatoren, die die Spannung am Baustein direkt noch einmal filtern/sieben und stützen sollen. IC2 benötigt dazu noch eine weitere Siebung die mittels C2 räumlich nah am Baustein platziert ist. Die physikalische Anbindung des CAN-Busses an den Buskoppler erfolgt mittels 8poligen Westernsteckern (RJ45; X4, X5), die auch in der Netzwerktechnik weit verbreitet sind. Um den Bus weiterzuführen sind X4 und X5 parallel geschaltet, was aber der geforderten linienartigen Topologie durch die kurze Leitungslänge nicht widerspricht. Der Abschluß am physikalischen Ende des Busses kann durch Setzen des Jumpers JP3 erreicht werden. Dadurch wird R3 (100Ohm) zwischen die Leitungen CANH und CANL gelegt. Der Takt, generiert von Q1 (16MHz), C7 und C8, gelangt direkt an die beiden Takteingänge (X1, X2) des IC2 (CAN-Controller). Intern wird dieser durch einen softwareprogrammierbaren Taktteiler (in diesem Fall 2:1) heruntergeteilt und am Taktausgang (CLKOUT) an XTAL1 (IC1, Atmel) geführt. X3 bildet die ISP (In System Programmierbare) Schnittstelle. An sie kann direkt ein Programmiergerät der Fa. Equinox (Activ8er, http://www.equinox-tech.com, Belegung des ISP-Sockels siehe Anhang) angeschlossen werden, oder über externe Adapter auch andere Programmiergeräte. Um die ISP-Schnittstelle zu aktivieren, muß sich der Jumper JP2 in Stellung 2-3 befinden. JP1 muß geschlossen sein. JP2 in Stellung 2-3 verbindet den Reset-Eingang des AtmelµCs mit dem ISP-Sockel und trennt gleichzeitig das Reset-Signal vom Resetschaltkreis und vom CAN-Controller. Um eine ISP-Programmierung einzuleiten wird vom Programmiergerät ein +12V-Programmiersignal auf die Reset-Leitung des µCs gelegt. (Die Programmierspannung liegt natürlich nicht am CAN-Controller an.) JP1 muß gesteckt sein, damit sich der CAN-Controller im Reset-Zustand befindet und den Datenbus (AD0-7), der teilweise zur ISP-Programmierung verwendet wird, währenddessen nicht stört. R2, R1 und C9 bilden gemeinsam den Resetschaltkreis, der für ein sicheres Anlaufen des µCs und des CAN-Controllers verantwortlich ist. Im Normalbetrieb muß dazu JP2 in Stellung 1-2 sein, und JP1 darf nicht gesteckt sein. An JP1 läßt sich über eine zweipolige Leitung ein Resettaster anschließen, der dann zu einem Gehäuse geführt werden kann. Die Betriebsspannung von 9V-DC wird dem Buskoppler über das Klemmenpaar X6 zugeführt. Dieser wandelt eine unstabilisierte Eingangsspannung, die im Bereich von 8V-13V liegen muß, mit einem Festspannungsregler (IC1) in eine Konstantspannung von +5V um. Der Festspannungsregler ist mit bis zu 1A belastbar, da aber der Knoten nur 80mA verbraucht, ist eine Kühlung von IC1 nicht notwendig. Das Kondensatorpaar C12, C10 glättet und siebt die über X6 angelegte Spannung vor dem Festspannungsregler; C11 und C13 erledigen diese Funktion am Ausgang des Spannungsreglers. D6 zeigt an, ob die Platine mit Spannung versorgt wird. Die obige Hardware wurde inzwischen durch eine Version mit geändertem Layout abgelöst. Die Funktion und Bauteile sind dabei gleichgeblieben, lediglich die Größe und die Position der Bohrlöcher hat sich verändert. (Buskoppler-Hardware(kleiner): Foto) Auch eine SMD-Version ist inzwischen entstanden - auch mit ungeänderter Funktion, Bauteilen. (Buskoppler-Hardware SMD: Foto) Im folgenden Abschnitt soll die Applikationshardware näher vorgestellt werden. Er enthält die Beschreibung der I/O-Schaltung und der RS232-Anbindung. 2.2 I/O-ApplikationshardwareDie I/O-Applikation stellt die Schnittstelle zur Hausinstallation dar. Über sie können Taster eingelesen und Verbraucher geschaltet werden. Im vorliegenden Fall besteht die Taster/Relaisplatine aus 4 digitalen, optisch entkoppelten Gleichspannungseingängen und 4 Relais, die jeweils eine Last von bis zu 10A schalten können. Abbildung 2.4: Blockdiagramm I/O-Applikation Abbildung 2.5: Schaltplan I/O-Applikation (Seite 1) Abbildung 2.6: Schaltplan I/O-Applikation (Seite 2) 2.2.1 SchaltungsbeschreibungDie Verbindung der Buskopplerplatine (X1) mit der I/O-Applikationshardware (X1) wird über ein 16pol. Flachbandkabel bewerkstelligt. Bei einem logischen 1 Pegel am Portausgang schaltet das zugeordnete Relais ab - bei einem logischen 0 Pegel am Portausgang schaltet das Relais ein. Diese logische Umkehr ist notwendig, da beim Einschalten der Buskopplerhardware die Portpins des CAN-Controllers defaultmäßig auf Eingang stehen und somit bei direkter Logik die Relais anziehen würden. Erst während der Initialisierungsphase des CAN-Controllers könnten die Portpins von Eingang auf Ausgang geschaltet werden, was dann aber durch die Zeitverzögerung ein kurzes Anziehen der Relais bewirken würde. Diese Besonderheit muß bei der Programmierung berücksichtigt werden. Zum Zwecke der Logikumkehr und der Regenerierung der Flankensteilheit durchlaufen die Schaltsignale zunächst einen invertierenden Schmitt-Trigger (IC3), bevor sie auf eine Darlington Treiberstufe (IC1, ULN2803, Datenblattverweis siehe Anhang) gelangen. Die Treiberstufe schaltet bei einem logischen 1 Pegel an ihrem Eingang die inneren Open-Kollektor-Ausgänge gegen die von aussen angelegte Spannung (hier: +12V) durch. Dadurch fällt an den Relais die zum Einschalten benötigte Spannung ab und die Relais ziehen an. Liegt am Treibereingang eine logische 0 an, so bleiben die Ausgänge hochohmig und die angeschlossenen Relais können nicht durchschalten. In die Treiberstufe sind auch gleich die notwendigen Freilaufdioden, parallel zu den angeschlossenen Relais, eingebaut. So sind keine weiteren Bauteile mehr nötig und die Relais können direkt vom TreiberIC angesteuert werden. Die Klemmen X10 bis X13 stellen die Anschlüsse für die Verbraucher zur Verfügung. An die Eingänge (Klemmen X6 bis X9) können Taster direkt 2polig angeschlossen werden, oder alternativ an Anschluß 1 jeder Klemme eine Gleichspannung von 12V. (Anschluß 2 der Klemmen liegt auf +12V). Die Schaltungsbeschreibung erfolgt exemplarisch an Eingang 1, für die anderen Eingänge gelten die Aussagen und Bezeichnungen entsprechend. Widerstand R1 dient der Strombegrenzung für den Optokoppler (IC6). Durch ihn fließt etwa ein Strom von ca. 10mA, der auch dafür sorgt, daß im Schalter eventuell vorhandene dünne Oxidschichten weggebrannt werden (Freibrennstrom). D3 erzeugt eine definierte Schaltschwelle. Erst eine Eingangspannung höher als die Schwellspannung von D3 (ca. 5V) läßt Strom durch den Optokoppler fließen. D4 ist der Verpolschutz. D2 dient der Symmetrierung der Entprellung. C1, R2 und R3 legen die Zeitkonstante der Entprellzeit fest (hier: 50ms). Der Schmitt-Trigger (IC5C) erzeugt aus dem analogen Signal an C1 ein definiertes Digitalsignal, das dem Porteingang des CAN-Controllers direkt zugeführt werden kann. Damit die unbenutzten Schmitt-Trigger nicht schwingen können, werden alle Eingänge auf Masse gelegt. Alle Bausteine sind auch hier mit 100nF Keramikkondensatoren in der Spannungszuführung ausgestattet. Für die Spannungsversorgung der I/O-Platine sind 2 Printtransformatoren zuständig. Ein 12V Trafo übernimmt die Versorgung der Gleichspannungseingänge und der Relais. Der 6V Trafo versorgt die restlichen Bausteine mit Spannung. Ihnen ist je ein Brückengleichrichter und ein Festspannungsregler Typ 7812/7805 mit entsprechender Bestückung nachgeschaltet. Die Ausgangsspannung der Trafos hängt stark von der Belastung ab, im Falle des angeschlossenen Buskopplers, liegen an der Sekundärseite ca. 18Veff bzw. 12Veff an. Die Scheitelwerte betragen demnach ca. 25V bzw. 17V. Nach der Gleichrichtung sind dies noch |u| = 16,2V bzw 10.8V die vom Festspannungsregler auf die geforderten 12V bzw. 5V heruntergeregelt werden müssen. Die hierbei auftretende Verlustwärme wird über das Gehäuse abgeführt, sodaß beim Einbau auf ausreichende Wärmeabfuhrmöglichkeiten zu achten ist. Je eine Leuchtdiode gibt über den Spannungszustand Auskunft. Die Netzspannung ist über Klemme X2 anzuschließen. Die Klemmen X3 und X4 führen die unstabilisierten aber schon gleichgerichteten ca. 10V, X5 stellt die unstabilisierten 18V (je nach Belastung) für externe Hardware zur Verfügung. 2.3 RS232-ApplikationshardwareDie RS232-Applikation verbindet den CAN-Bus mit einem PC über eine serielle Schnittstelle. Durch sie kann der angeschlossene Rechner den kompletten CAN-Bus "fernsteuern" oder als normaler Knoten in Erscheinung treten, der lediglich Protokollaufgaben übernimmt. Abbildung 2.7: Blockdiagramm RS232-Applikation
2.3.1 SchaltungsbeschreibungDer Anschluß der RS232-Applikationshardware an den Buskoppler verläuft über die an X1 und X2 angesteckten Buchsenleisten. X1 und X2 sind parallelgeschaltet, um eine Weiterführung der I/O-Ports zu ermöglichen. D.h. es kann nicht nur eine RS232-Applikation an den Buskoppler angeschlossen werden, sondern noch andere Hardware bedient werden, da die restlichen Ports weiterhin zur freien Verwendung stehen. Die Signale der im AtmelµC integrierten seriellen Schnittstelle werden in TTL-Pegel ausgegeben. Um RS232C konforme Pegel zu erhalten, ist ein Pegelwandler nötig. Diese Aufgabe übernimmt IC1 (MAX232). Er kommt mit nur 4 Kondensatoren (C1-C4) als Außenbeschaltung aus. Hinzu kommt noch ein keramischer Stützkondensator C5 mit 100nF. Die Verbindung zum PC kann über ein normales SUB-D 1:1 Verlängerungskabel erfolgen, das an Buchse X3 angesteckt wird. Die unstabilisierte Spannungszuführung wird über die Klemmleisten X4 oder X5 (beide sind parallelgeschaltet) zugeführt. Muß eine weitere Platine mit Spannung versorgt werden, so kann von hier weitergeschleift werden. Die Spannungsstabilisierung entspricht der Spannungsstabilisierung des Buskopplers. Auch hier wird eine Leuchtdiode zur Anzeige der angelegten Versorgungsspannung eingesetzt. 2.4 Peripherie für Buskopplerhardware v.1x (auf 8515-Basis)2.4.1 LCD- und Drehencoder Anbindung(im Aufbau) 2.4.1.1 Verdrahtung LCD-Display und Drehencoder mit CAN-Knoten
Abbildung 2.4.1.1: Ansteuerung LCDisplay
Drehencoder:
(Drehencoder von Conrad)
2.4.2 Anschluß des IR-Empfängers TSOP1736PD2/Int0 – Ausgangssignal des TSOP1736
2.4.3 Steuerplatine für Dimmeranschaltung/Menüsteuerung(Bild Tasterplatine; Display und Cursortasten hier) Anschlußbelegung und Zuordnung der Tasten Tasten 1-18: Dimmerdirekttasten
2.4.4 Beschaltung des Temperatursensors DS18202.4.5 Beschaltung DCF77-EmpfangsmodulAVR-Portpin PD2/INT0 - Pin 4 des Moduls 2.4.6 Anschaltung I2C-Bus
2.5 Buskopplerhardware v2 (auf ATmega163-Basis)Die neue Hardwarevariante v2 basiert auf dem ATmega163. Ein Grund für den Umstieg auf den ATmega163 waren sein integrierter AD-Wandler und der größere Programmspeicher. Der 8515 mit seinen 8k Flash stößt bei dem Zeitschaltknoten an seine Grenzen, für einen Rolladenzeitschaltknoten (so wie ich ihn mir vorstelle) reicht der Speicher (ohne größere Programmkürzungen) leider nicht. Für reine Relais-Applikationen ist selbst ein 8515 überdimensioniert. Die Platine wurde als universell verwendbare Versuchsplatine entworfen, d.h. alle Ports sind auf Stiftleisten herausgeführt. Der CAN-Teil sitzt komplett auf der Rückseite/Lötseite der Platine, die Bestückung ist optional. Dafür müssen dann die dafür vorgesehenen Brücken R4, R5 (in SMD-Widerstandsform auf der Platine) gebrückt werden. Auch der LM75 (Temperatursensor) und der externe I²C-EEProm (inkl.der zugehörigen Abblock-Cs) müssen nicht bestückt werden. Im Unterschied zu Hardware v1.x ist in der neuen Version der CAN-Controller seriell angebunden. Das spart einige Leitungen ein, die jetzt frei für Peripherie sind.
2.6 Peripherie für Buskopplerhardware v.2x (auf ATmega163-Basis)2.6.1 RS232-ApplikationDiese RS232-Applikation ist identisch mit der unter Kap.2.3 vorgestellten Schaltung - es wurde lediglich ein kleineres Layout erstellt.
|