|
Die
zweilagig
entflochtene Leiterplatte im Europaformat stellt ein universell einsetzbares und relativ
preiswertes Mikrocontrollersystem dar, welches als Basis für
verschiedenste Anwendungen auf dem Gebiet der Regelungs- und
Steuerungstechnik dient. Die verwendeten passiven und aktiven Bauteile
sind in gut sortierten Elektronikläden erhältlich. Die Platine eignet
sich dadurch hervorragend für den Nachbau. Das System lässt sich über die Steckerleisten
beliebig erweitern, wodurch ein Höchstmaß an Flexibilität erreicht
wird.
Herzstück dieser Platine ist der 8bit-Mikrocontroller 80C537 von Siemens.
Der SAB80C537 ist ein High-End-Derivat der 8051-Familie. Er besitzt 2KB internes
RAM und ist mit einem 8(10)-Bit-A/D-Wandler mit zwölf Eingängen , drei
16-Bit-Timer/Counter sowie einer Capture-/Compare-Einheit ausgestattet. Des
weiteren besitzt er eine mathematische Coprozessor-Einheit, zwei serielle
Voll-Duplex-Schnittstellen, 7 digitale I/O-Ports, 14 Interrupt-Quellen und einen
Energiesparmodus. Der Mikrocontroller arbeitet mit einer maximalen Taktfrequenz von
16 MHz. Alternativ kann der SAB80C517A mit internem 32 KB ROM bestückt
werden, welcher maximal mit 18 MHz getaktet werden kann.
|
|
Abbildung1 Mikrocontrollerplatine
|
Auf
dem Board ist der Adress-/Datenbus sowie alle freien Portleitungen auf
Steckerleisten herausgeführt. Zudem besitzt es einen Steckplatz für den
Anschluss eines alphanumerischen Displays mit 1*16 bis 4*20 Zeichen. Der
Kontrast des Displays kann über einen Trimmpotentiometer geregelt werden.
Die Platine wird von einem Netzteil mit 9V Wechselspannung versorgt und
besitzt eine typische Stromaufnahme von 120mA (inkl.
Hintergrundbeleuchtung des LCDs). Die 5V-IC-Versorgung wird mit einem
Festspannungsregler vom Typ 7805 erzeugt. |
Schaltplan
|
Es wurde im
wesentlichen die Standardbeschaltung des SAB80537 übernommen:
Extern ist dem Mikrocontroller ein 32 KB großes SRAM
vom Typ 62256
für
Daten und das Flash-Eeprom AM29F010 mit einer Kapazität von 128 KB
für den Programmcode spendiert. Sie sind an den Port0 und Port2 des
Controllers über das Adresslatch 74573 angeschlossen. Die
Adressdekodierlogik für die beiden Speicherbausteine und das LC-Display sowie
die Erzeugung der Chip-Select-Signale wird mit Logikbausteinen der 74er-TTL-Familie
realisiert. Eine Pufferbatterie verhindert
den Verlust des Speicherinhaltes des SRAMs beim Abschalten
der Versorgungsspannung. Der
Resetpin des 80C537 ist low-aktiv. Er wird für den Power-On-Reset
standardmäßig mit einem RC-Glied beschaltet.
Das Board besitzt zwei
serielle Schnittstellen, eine RS-232-Schnittstelle und eine
RS-485-Schnittstelle zur Überbrückung von größeren
Verbindungsstrecken. Die Pegelumwandlung für die RS-232-Schnittstelle (V.24) übernimmt der Baustein MAX232 von Maxim, die der
RS-485-Schnittstelle das Treiber-IC MAX485. Die Platine besitzt zudem zwölf
gemultiplexte Analogeingänge (0..5V) mit 8(10) Bit Auflösung.
Das
Mikrocontrollerboard ist zum Zweck einer erhöhten Funktionssicherheit mit dem Spannungsüberwachungsbaustein MAX807 ausgerüstet. Dieser
verhindert beim Ausschalten der Versorgungsspannung den unkontrollierten Zugriff
des Mikrocontrollers auf das extern angeschlossene RAM und führt einen Power-On-Reset des
Mikrocontrollers durch. Gleichzeitig überwacht er die Betriebsspannung und die
Batteriespannung. Die Aufgaben des MAX807 sind im einzelnen:
|
Programm-Download
|
Im
Flash-Eeprom befindet sich ein Bootladerprogramm, das die Programmierung
des Boards über die serielle Schnittstelle eines PCs ermöglicht. Um Verbindung mit dem Board aufzunehmen, wird ein
Terminalprogramm (z.B. das Hyperterminal von Windows oder das
Freeware-Terminalprogramm TeraTermPro)
gestartet. Das Protokoll des COM-Ports muss mit den
Einstellungen "19200 Baud, N, 8, 1, no Flow-Control" konfiguriert
werden.
Hält man die
Programmiertaste gedrückt und betätigt den Reset-Knopf, so startet der
Mikrocontroller aus den oberen 64KB des Flash-Eeproms, wo sich das Bootladerprogramm
befindet. Dieses Programm meldet sich über die RS232-Schnittstelle des
Boards. Beide Taster können nun losgelassen werden. Über eine Menüsteuerung kann die
Firmware in Form einer Intel-Hex-Datei vom Terminalprogramm über die
serielle Schnittstelle in die unteren 64 KB des Eeproms programmiert werden. Es
können ebenso einzelne Speicherbänke gelöscht sowie Statusinformationen
des Flash-Eeproms abgerufen werden. Ist
der Download abgeschlossen, kann durch Betätigung des Reset-Tasters die Software
gestartet werden. Das Bootladerprogramm befindet sich stets in Bank1 und kann
nicht gelöscht werden. Es wurde vollständig in Assembler entwickelt.
Die
Programmierung über die serielle Schnittstelle des PCs hat den Vorteil,
dass das Flash-Eeprom zum Laden des Programmcodes nicht vom Board entfernt
werden muss und demnach kein Eeprom-Programmiergerät erforderlich ist.
|
|
In
das Liquid Crystal Display (LCD) integriert sind eine LCD-Punkt-Matrix,
ein Grafikcontroller, ein Anzeigenspeicher sowie die Ansteuerlogik. Das
verwendete LCD besitzt 20*4 Zeichen und ist an den Adress-/Datenbus des
Mikrocontrollers angeschlossen. Es kann über zwei Register, einem
Befehls- und einem Datenregister, gesteuert werden. Diese sind in den
Adressraum des Mikrocontrollers eingeblendet und können wie externer
Speicher angesprochen werden. Im Prinzip wird zuerst die Position eines
Zeichens auf dem Display in das Befehlsregister des Grafikcontrollers
geschrieben und anschließend das darzustellende
|
Abbildung 2 LCD-Modul mit 20x4 Zeichen |
|
Zeichen im Datenregister
abgelegt.
Der Grafikcontroller besitzt einen umfangreichen Befehlssatz zur
Steuerung des Displays. |
Bootladerprogramm
|
Das Mikrocontrollerboard besitzt 3
Betriebsmodi, die in folgender Tabelle dargestellt sind. Sie lassen sich
über zwei Portpins, die mit M1 und M0 bezeichnet sind, auswählen. M1 ist
direkt mit der Programmiertaste verbunden und wird durch Betätigung auf 0
geschaltet, um das Bootladerprogramm zu starten. Wird beim Reset die
Programmiertaste nicht gedrückt, sind die Portleitungen M1 und M0
standardmäßig auf 1, und der aktuelle Programmcode, der über die
serielle Schnittstelle geladen wurde, wird ausgeführt. Der Modus 00 wird
nur vom Bootladerprogramm verwendet und dient dem Programmieren des
Flash-Bausteins. Hierzu muss das Flash AM29F010 vom Codespeicher in den
Datenspeicher des Mikrocontrollers gemapped werden. Das Bootladerprogramm
muss sich dazu zunächst in das SRAM kopieren, wovon es letztendlich die
Programmierung des Flash über die RS-232-Schnittstelle vornimmt. Es
benötigt dafür die unteren 16KB des 32KB großen SRAMs. Die oberen 16KB
stehen für die Datenspeicherung frei zur Verfügung. Durch die Pufferung
des SRAMs bleiben sie auch nach der Trennung vom Netz erhalten.
M1 |
M0 |
Modus |
0 |
0 |
in
diesem Modus kann das Programm in das Flash-Eeprom programmiert werden |
0 |
1 |
das
Bootladerprogramm, das sich in Bank1 (obere 64KB des Flash)
befindet, wird gestartet |
1 |
0 |
-- |
1 |
1 |
User-Programm
wird aus Bank0 (untere 64KB des Flash) gestartet |
Im folgenden ist die Logik für die
verschiedenen Speichermodelle angegeben. Sie erzeugt die einzelnen
Chip-Select-Signale sowie Lese- und Schreibleitungen für das Flash, das
SRAM und den I/O-Bereich. Für diese Adressdekodierlogik
werden 6 AND-Gatter, 8 ODER-Gatter sowie 4 Inverter benötigt. Um auf die
Programmierung eines PLDs zu verzichten, wurde diese Logik mit Logik-ICs
der 74er Serie aufgebaut.
/CS_FLASH = A15 & (M1
& M0)
/RD_FLASH = (/PSEN v M0)
& (/RD v M0)
/WR_FLASH = /WR v M0
/CS_RAM = A15
/RD_RAM = (/PSEN v M1) & (/RD v
M0)
/WR_RAM = /WR v M0
/CS_IO = A15
/RD_IO = (/PSEN v M0) &
(/RD v M0)
/WR_IO = /WR v M0
E_LCD = (/RD_IO
& /WR_IO) v /CS_LCD
A16_FLASH = M1
& M0 |
Ein
"/" vor den Signalnamen bedeutet, dass diese Signale low-aktiv
sind.
|
Stückliste
|
Menge |
Bauteil |
Typ |
Gehäuse |
Bezeichnung |
1 |
Flash-Eeprom |
29F010 |
DIP32 |
U12 |
1 |
SRAM
32K*8 |
62256 |
DIP28 |
U13 |
1 |
1 aus 8 Demultiplexer |
74HC138 |
DIP16 |
U14 |
1 |
Adress-Latch |
74HC573 |
DIP20 |
U10 |
1 |
Hex-Inverter |
74HCT04 |
DIP14 |
U2 |
1 |
Spannungsregler
5V/1.5A |
7805 |
78XXV |
U6 |
1 |
80C517A_1 |
80C517A |
SOC_PLCC84_P |
U11 |
1 |
Lithium-Batterie |
3V |
BATCR2032PCB |
B1 |
1 |
Diode |
1N4001 |
DIOD1 |
D1 |
1 |
Elektrolytkondensator |
47µ |
ELKO5R2_5 |
C8 |
1 |
Flachbandbuchse 14-polig |
LC_Display |
FKV14SN |
J5 |
1 |
Flachbandbuchse
24-polig |
I/O-Ports |
FKV24SN |
J4 |
1 |
Flachbandbuchse
28-polig |
externe Peripherie |
FKV30SN |
J7 |
1 |
3-fach
Jumper |
HDR_3 |
HDR1X3 |
J2 |
1 |
Flachbandbuchse
34-polig |
I/O & Analog |
FKV34SN |
J6 |
1 |
2*2-fach
Jumper |
Versorgung |
HDR2X2 |
J1 |
1 |
3-fach
Jumper |
JP_3 |
HDR1X3 |
JP3 |
1 |
RS485-Schnittstelle |
SP485CS |
DIP8 |
U5 |
1 |
RS232-Schnittstelle |
MAX232 |
DIP16 |
U9 |
1 |
Spannungsüberwachung |
MAX807 |
DIP16 |
U1 |
1 |
Potentiometer |
10K |
TRIPOT10X5H |
R5 |
1 |
2-fach Pfostenstecker |
HDR_2 |
MKDS3_2RMI |
J3 |
1 |
Widerstand |
10K |
RES12 |
R3 |
1 |
RS232-Buchse |
DB9 |
DB9SL |
ST1 |
1 |
2-fach Jumper |
Prog.-Taste |
HDR1X2 |
SW3 |
1 |
2-fach Jumper |
Reset-Taster |
HDR1X2 |
SW1 |
1 |
2-fach Jumper |
SW_SPST |
HDR1X2 |
SW2 |
1 |
Quarz |
18MHz |
QUARZ_HC49 |
X1 |
11 |
Kondensator |
100n |
CRM5A |
C2,C12,C13,C5,C6,C7,
C18,C19,C20,C1,C11 |
2 |
74HCT08 |
74HCT08 |
DIP14 |
U7,U8 |
2 |
74HCT32 |
74HCT32 |
DIP14 |
U3,U4 |
2 |
Kondensator |
22p |
CRM5A |
C14,C16 |
2 |
LED |
gelb u.
grün |
LED3R2_5V |
D3,D2 |
2 |
Widerstand |
2.3K |
RES12 |
R4,R6 |
2 |
Widerstand |
560 |
RES12 |
R1,R2 |
5 |
2-fach Jumper |
JP_2 |
HDR1X2 |
JP1,JP2,JP4,JP5,JP6 |
7
|
Elektrolytkondensator |
10µ |
ELKO5R2_5 |
C3,C4,C15,C17,C9,C10,C21 |
1 |
Platine |
zweiseitig |
|
|
4
|
Abstandshalter |
1mm |
|
|
1 |
PLCC84-Sockel |
|
|
|
1 |
LCD-Modul |
20x4 LED |
|
|
1 |
IC-Sockel |
32 polig |
|
|
|
|
Schaltplan und Layout
des Mikrocontrollerboards liegen als Ultiboard-Dateien (Ultimate
Technology) vor und stehen hier zum Download zur Verfügung.
Sie
können auch als PDF-Dateien heruntergeladen werden:
Mikrocontrollerplatine_Schaltplan.pdf
Mikrocontrollerplatine_Layout.pdf
Für die Programmierung des
Bootladerprogramms in den Flash-Speicher AM29F010 war die Entwicklung eines
Eeprom-Programmiergerätes
notwendig.
Beispielprogramme für die
Displayansteuerung, die Programmierung der seriellen Schnittstelle sowie
das Einlesen der Analogkanäle finden Sie
Beispiele
Die Mikrocontrollerplatine kommt im
Lichtmischpult zum Einsatz, allerdings wird dort der SAB80C517A verwendet.
Die Kosten für den Selbstbau dieser Platine können auf diesen Seiten
nachgeschlagen werden, wobei das Material zum Entwickeln und Ätzen der
Leiterplatte nicht mit einbezogen wurde.
zurück
© 2000,
Ralph Bräumer
|
|