Home

News

Schnelleinstieg

Hintergrund

Doku

Bilder

Download

Forum

Kontakt

2 Hardware

Das 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 Buskopplerhardware

2.1.1 Beschreibung CAN-Controller: Siemens SAE81C90

Der 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 AT90S8515

Kurze Tabellarische Übersicht der Eigenschaften des µC AT90S8515 von Atmel:

(Für weitergehende Informationen siehe Datenblatt)

  • 120 Assembler-Befehle, die meisten davon können  in einem Taktzyklus ausgeführt werden
  • 8 kByte Programmspeicher (Flash, bis 1000x wiederbeschreibbar, ISP programmierbar)
  • 512 Byte EEProm (100.000 Lösch-/Schreibzyklen, ISP programmierbar)
  • 512 Byte SRAM
  • 32 8-Bit Register zur freien Verwendung
  • 32 programmierbare I/O Pins (organisiert als 4 Ports à 8 Pins)
  • programmierbare serielle UART (RS232)
  • SPI serielles Interface
  • Betriebsspannungsbereich von 2.7-6.0V
  • Taktraten: 0-8 MHz
  • Verarbeitungsrate: bis zu 8 MIPS bei 8 MHz
  • ein 8-Bit Timer/Zähler und ein 16-Bit Timer/Zähler mit diversen Konfigurationsmöglichkeiten (z.B. Vergleichsfunktionen, PWM etc.)
  • 13 externe und interne Interrupts
  • Programmierbarer Watchdog Timer mit On-Chip Oszillator.
  • Analog Komparator
  • Stromsparmodi
  • Programmierbarer Leseschutz bzw. Schreib-/Leseschutz für Programmspeicher und EEPROM
  • Bauform: PLCC 44

2.1.3 Schaltungsbeschreibung

Die 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-Applikationshardware

Die 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 Schaltungsbeschreibung

Die 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-Applikationshardware

Die 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


Abbildung 2.8: Schaltplan RS232-Applikation

 

2.3.1 Schaltungsbeschreibung

Der 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

PortA

PA0

LCD D0

 

PA1

LCD D1

 

PA2

LCD D2

 

PA3

LCD D3

 

PA4

LCD D4

 

PA5

LCD D5

 

PA6

LCD D6

 

PA7

LCD D7

PortC

PC4

LCD HintergrundbeleuchtungLEDs mit Schalttransistor
(siehe Abbildung 2.4.1)

 

PC5

LCD Enable

 

PC6

LCD R/W

 

PC7

LCD RS

Abbildung 2.4.1.1: Ansteuerung LCDisplay

 

Drehencoder:

PortC

PC0

Drehencoder Anschl. C

 

PC1

Drehencoder Anschl. A

 

PC2

Drehencoder Anschl. E

(Drehencoder von Conrad)

 

2.4.2 Anschluß des IR-Empfängers TSOP1736

PD2/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
Taste 21: Cursor runter
Taste 22: Cursor links
Taste 23: Cursor rechts
Taste 24: Cursor hoch
Taste 25-28: Wandtaster

 

2.4.4 Beschaltung des Temperatursensors DS1820

 

 

2.4.5 Beschaltung DCF77-Empfangsmodul

AVR-Portpin PD2/INT0 - Pin 4 des Moduls

 

2.4.6 Anschaltung I2C-Bus

PortC

PC1

SDA
 

PC2

SCL

 

 

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.


(Fotos Buskoppler v2)

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.


(Layout Buskoppler v2; Eagle-Board im Downloadbereich)

 

2.6 Peripherie für Buskopplerhardware v.2x (auf ATmega163-Basis)

2.6.1 RS232-Applikation

Diese RS232-Applikation ist identisch mit der unter Kap.2.3 vorgestellten Schaltung - es wurde lediglich ein kleineres Layout erstellt.


(Layout RS232 v2; Eagle-Board im Downloadbereich)