remotely controlled laboratory

49
Remotely Controlled Laboratory (RCL) Tutorial „Selbstbau eines RCL” - Versuche per Internet fernsteuern - Martin Vetter, Kaiserslautern Markus Ludwig, München Version vom 14.9.2006

Upload: others

Post on 01-Jan-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Remotely Controlled Laboratory

Remotely Controlled Laboratory (RCL)

Tutorial „Selbstbau eines RCL”

- Versuche per Internet fernsteuern -

Martin Vetter, Kaiserslautern Markus Ludwig, München

Version vom 14.9.2006

Page 2: Remotely Controlled Laboratory
Page 3: Remotely Controlled Laboratory

3

Ziel des Tutorials Über das Internet ferngesteuerte Experimente nennen wir „Remotely Controlled Laboratory“ – kurz RCL. Unter „Experiment“ verstehen wir einerseits typische Demonstrationsexperimente aus dem na-turwissenschaftlich-technischen Unterricht. Andererseits können die unterschiedlichsten Komponenten und Geräte angesprochen werden, so dass der Leser eine Anleitung erhält, seine eigenen Ideen um-zusetzen. Dieses Tutorial zeigt schrittweise den technischen Aufbau und die Programmierung einer Steuerung über das Internet, bestehend aus Webserver und Interface anhand eines sehr einfachen „elementa-ren“ RCLs. Zu Beginn des Tutorials zeigen wir einige Kriterien für die Realisierung eines über Internet bedienba-ren Versuchaufbaus. Anschließend wird unsere Konzeption für die Umsetzung entsprechend den aufgestellten Kriterien dargestellt. Die folgenden Kapitel geben eine schrittweise Anleitung zum Selbstbau eines „elementaren“ RCLs: Ansteuerung einer Lichtquelle und Abfragen eines Tasters per Webseite. Es werden alle Komponenten (Interface, Software) sowie deren Aufbau, Installation und Programmierung vorgestellt. Nach Abschluss dieses Tutorials sollte der Leser, jetzt mit den eingesetzten Technologien vertraut, direkt mit der Realisierung seines eigenen Remotely Controlled Labs beginnen können. Die vorgestellte Lösung basiert auf dem ATMEL 8bit RISC Microcontroller ATmega16, der das Expe-riment (z.B. Motoren, Spannungsquellen, Messgeräte, Sensoren...) steuert. Er kommuniziert mit Hilfe eines Null-Modem-Kabels über die serielle Schnittstelle (RS232) mit einem Webserver (Apa-che+PHP). Dies ermöglicht die Steuerung des Experiments über eine Webseite. Eine Videoübertra-gung in Echtzeit erfolgt mittels einer Webcam.

Page 4: Remotely Controlled Laboratory

4

Page 5: Remotely Controlled Laboratory

5

Leseanleitung für dieses Tutorial: Den Schaltplan sollten Sie bei jedem Schritt während des Aufbaus (Löten) des Interfaces vorliegen haben. Im Tutorial sind zwei Alternativen zum Bau des Interfaces dargestellt: auf geätzten Platinen oder auf Lochrasterplatinen.

Schaltplan S.11

„Einkaufsliste“ für die benötigten Bauteile

S.12

Platinen herstellen S.14

Interface auf Lochrasterplatine

S.23

Interface löten S.18

Programmierung des Microcontrollers

S.27

Installation des Webservers S.33

Aufbau eines „elementaren“ RCLs S.35

Erweiterungsmodule (Relais, Motor, Schalter, Lampe)

S.46

Page 6: Remotely Controlled Laboratory

6

Page 7: Remotely Controlled Laboratory

7

Prinzip des RCLs Die folgende Abbildung gibt den schematischen Aufbau eines RCLs wieder. Der Nutzer steuert das Experiment über eine Internetverbindung mit seinem Browser und kann es dabei in Echtzeit mittels einer Webcam beobachten. Der Webserver vermittelt die Eingaben des Nutzers an ein Microcontrol-ler-Interface, welches das Experiment steuert und gegebenenfalls Messgrößen liefert.

Browser WebserverInternetWebCam

Interface

Experiment

Der Nutzer benötigt zum Zugriff einen javafähigen Browser. Weitere Plugins oder zusätzliche Treiber und Programme sind nicht erforderlich. Die Internetverbindung muss das http-Protokoll, sowie Zugriffe über den Port 8080 (proxy:http) zur Übertragung der Webcam-Bilder ermöglichen. Als Webserver wird der Apache-Webserver in Kombination mit PHP eingesetzt. Diese Produkte ste-hen für unterschiedliche Betriebssysteme als Opensource-Programme zur Verfügung. Die Kommuni-kation zwischen Webserver und Interface erfolgt per Null-Modem-Kabel über die serielle RS232-Schnittstelle (z.B. COM1), welche von PHP wie eine Datei mit Schreib- und Lesebefehlen angespro-chen werden kann. Diese Schnittstelle wird bei einigen neuen Rechnern und insbesondere bei Note-books nicht mehr angeboten. Hier können USB-RS232 Adapter verwendet werden. Das Video der USB-Webcam wird mit Hilfe der Software webcamXP übertragen. Alternativ kann auch die Freeware Webcam2000 bei 1-Kamera-Lösungen eingesetzt werden. Werden mehrere Kameras benötigt, bieten sich IP-Kameras an. Weitere Details zur Videoübertragung werden in diesem Tutorial nicht dargestellt.

Page 8: Remotely Controlled Laboratory

8

Kriterien für die Verwendung bestimmter Technologien und Methoden bei der Entwicklung eines RCL Folgende Kriterien dienen uns als Maßstab bei der Auswahl der einzusetzenden Technologien und Lösungswege für den Aufbau eines Remotely Controlled Labs:

1. Anpassbarkeit an die Zielgruppe, hier naturwissenschaftlich und technisch interessierte Schü-ler der Sekundarstufe II, Lehrer und Laien

2. Flexibilität des zur realisierenden Versuchsaufbaus, um z.B. unterschiedlichste Art und Anzahl von Mess- und Stellgrößen zu unterstützen

3. hohe Benutzerfreundlichkeit: auf alle gängigen javafähigen Browsern lauffähig, keine Plugins, Treiber oder zusätzliche Software notwendig keine Probleme durch Firewalls und eingeschränkte Benutzerrechte

4. Schutz des Experiments vor Fehlbedienung und Missbrauch 5. Niedrige Kosten (Zielgruppe Schüler und Schule!) 6. Verfügbarkeit der Materialien für Privatkunden 7. Eignung für unterschiedliche Betriebssysteme 8. Stabilität der Gesamtlösung (keine Abstürze, Dauerbetrieb), geringer Wartungsaufwand 9. Geringer Programmieraufwand für Webseiten und Hardware 10. Kurze Einarbeitungszeiten beim Selbstbau eines RCLs

Page 9: Remotely Controlled Laboratory

9

Entsprechend den genannten Kriterien geben folgende Punkte einen Überblick, wie wir die Kriterien bei der Umsetzung einer RCL-Lösung realisiert haben. Die einzelnen Technologien werden in den nächsten Kapiteln detaillierter in Form einer schrittweisen Anleitung zum Nachbau vorgestellt.

1. Unsere Praxiserfahrung während der Entwicklung dieser RCL-Technologie: - Aufbau, Webseitengestaltung und Präsentation von vier RCLs im Rahmen eines Schüler-camps mit 15 Schülern - selbstständiger Eigenbau eines RCLs durch 16jährigen Schüler mit Hilfe unserer Dokumen-tation

2. Entwicklung eines frei programmierbaren Microcontroller-Interfaces, welches beliebig erwei-terbar ist.

3. Steuerung über html-Seiten, Java nur für Videobild, benötigte Ports http(80), 8080 und 8081, keine Plugins für Browser notwendig

4. Das Interface stellt dem Webserver nutzerorientierte Funktionen zur Steuerung des Experi-ments bereit (z.B. „Zähler start“ und „Zähler stopp“). Es überwacht die Zulässigkeit der Para-meter (z.B. bei einstellbaren Spannungsquellen). Somit ist kein direkter Zugriff auf die Geräte des Experiments über das Internet möglich und auch im Falle eines Hackereinbruchs besteht keine Gefahr für die Hardware.

5. Die zum Betrieb und zur Programmierung eines RCLs notwendigen Programme sind frei er-hältlich. Es ist ein PC mit Internetanschluss und eine Webcam erforderlich, sowie das Micro-controller-Interface. Die Bauteilkosten des Interfaces betragen ca. 50-100€, weiterhin wird ein Programmieradapter (ca. 40€) benötigt. Zusätzlich müssen natürlich noch die für den ge-wünschten Versuchsaufbau spezifischen Kosten berücksichtigt werden.

6. Alle Komponenten, insbesondere die elektronischen Bauteile, sind für Privatpersonen bei lo-kalen Händlern (Elektronikladen, Baumarkt) oder per Versand erhältlich. Die Software ist im Internet frei per Download verfügbar.

7. Es wird der Apache-Webserver in Verbindung mit PHP eingesetzt. Diese sind für unterschied-liche Betriebssysteme frei erhältlich. Zur Videoübertragung können übliche Webcams oder IP-Kameras eingesetzt werden.

8. Auf dem Server laufen Apache, PHP und Videoserver. Es ist kein Interface-Treiber oder zu-sätzliche Software notwendig und somit keine weiteren „Störgrößen“ für das Betriebssystem. Das Experiment wird durch das Microcontroller-Interface gesteuert, so dass PC-Abstürze nicht zu undefinierten Zuständen im Versuchsaufbau führen. Weiterhin können über eine Standby-Funktion bestimmte Komponenten des Versuchsaufbaus bei Nichtgebrauch ausgeschaltet werden.

9. Zur Erstellung der Webseite sind grundlegende Kenntnisse in PHP und html notwendig. Als Web-Programmiersprache wird PHP gewählt, da es sich hierbei um eine Interpretersprache handelt, so dass der Quellcode in den html-Seiten integriert ist. Daraus resultiert eine erheb-lich vereinfachte Wartbarkeit des Systems, da insbesondere bei hoher Fluktuationsrate der Mitarbeiter (z.B. Schulprojekt) der Quellcode stets im lauffähigen System vorliegt. Zur Pro-grammierung des Microcontroller-Interfaces stehen neben Assembler auch Basic-, Pascal- und C-Compiler bereit.

10. Mit Hilfe des vorliegenden Tutorials, sowie elementaren Programmierkenntnissen ist der Auf-bau eines eigenen ferngesteuerten Experiments innerhalb von wenigen Stunden möglich. Das Tutorial soll alle notwendigen Technologien vorstellen und eine funktionsfähige „Minimallö-sung“ bereitstellen. Auf dieser Grundlage kann der interessierte Leser sich dann schrittweise in die unterschiedlichen Richtungen, beispielsweise der Elektronik, Programmierung oder Webseitengestaltung eigenständig fortbilden, um so den von ihm angestrebten Versuchsauf-bau als RCL zu entwickeln. Sowohl zur gewählten Webprogrammiersprache PHP als auch zur verwendeten Elektronik des Interfaces (Atmel AVR 8bit RISC-Prozessor ATmega16) stehen im Internet äußerst zahlreiche, frei zugängliche und gut dokumentierte Lösungen zu den un-terschiedlichsten Anwendungen bereit, da diese Technologien auch starke Verbreitung im Hobby-Bereich besitzen.

Page 10: Remotely Controlled Laboratory

10

Microcontroller-Interface Zur Kommunikation zwischen Webserver (PC) und Experiment (Versuchsaufbau) wird ein Interface benötigt. Das im Rahmen dieses Tutorials entwickelte Interface basiert auf einem 8bit Microcontroller der Firma Atmel (Typ: ATmega16, Datenblatt: www.atmel.com). Unter einem Microcontroller kann man sich einen kleinen Computer in einem einzigen Chip integriert vorstellen, es sind Prozessor, Ar-beitsspeicher, Flashspeicher (vgl. Festplatte), Timer und Aus-/Eingabeschaltungen zusammengefasst. Der Aufbau des Interfaces ist modular gestaltet und kann flexibel an die Bedürfnisse des jeweiligen Versuchsaufbaus angepasst werden. Die so genannte „Grundversion“ besteht aus Microcontoller, Taktgeber, Spannungsversorgung und serieller Schnittstelle zur Kommunikation mit dem PC. Weiter-hin ist noch eine ISP-Programmierschnittstelle zur Programmierung des Microcontrollers integriert. Wie in der folgenden Darstellung gezeigt, gibt es also zwei „Verbindungen“ zwischen PC und Inter-face: Über die serielle RS232-Schnittstelle zwischen Webserver und Interface erfolgt die Steuerung des Versuchsaufbaus seitens des Nutzers. Über die ISP-Schnittstelle wird der Microcontroller selbst programmiert, also die so genannte Firmware des Interfaces in den Microcontroller geschrieben. Die-se Programmierung ist nur einmal notwendig und wird mit einem speziellen Programmieradapter vor-genommen (Details hierzu werden bei der Programmierung des Microcontrollers erläutert).

TaktgeneratorISPProgrammier-schnittstelle

Spannungs-versorgung

RS232SerielleSchnittstelle

Mikrocontroller I/O-Elektronikz.B.Relais,Treiber,Verstärker

PC

Experiment

Interface

Programmiersprache

WebServer - PHP

Der Versuchsaufbau selbst kann teilweise direkt mit dem Microcontroller verbunden werden. Meist ist jedoch noch eine spezielle Elektronik je nach Versuchsaufbau notwendig. So müssen z.B. zum Schal-ten größerer Leistungen Relais oder andere Treiber-Bausteine verwendet werden. Diese können di-rekt auf der Interface-Grundversion aufgebaut werden. Einige typische Erweiterungen, wie z.B. für Motoren, Lampen, Taster usw. werden später in diesem Tutorial gezeigt. Einige Eckdaten zu den Spezifikationen des eingesetzten Prozessors:

• 16MHz RISC-Prozessor mit 131 Instruktionen – meist 1-2 Taktzyklen / Instruktion • 16K Bytes In-System Self-Programmable Flash, 512 Bytes EEPROM, 1K Byte internes SRAM • 32 programmierbare Eingänge/Ausgänge • Zwei 8-bit Timer/Zähler, ein 16-bit Timer/Zähler • Vier Pulsweitenmodulationsausgänge • acht 10-bit A/D-Wandler • programmierbare USART (serielle Schnittstelle) • Master/Slave SPI Interface • I2C Interface • externe und interne Interrupts

Details und technische Spezifikationen zur Beschaltung und Programmierung des Microcontrollers finden Sie im Datenblatt des ATmega16 (www.atmel.com). Dieses enthält alle Herstellerinformationen zu diesem Chip und ist äußerst hilfreich bei der Erweiterung der Interface-Grundversion.

Page 11: Remotely Controlled Laboratory

11

Interface - Schaltplan Die Schaltung ist für die Verwendung eines 12V Gleichspannung Universal-Steckernetzteils konzipiert. Der Spannungsregler (L7805) liefert die für den Microcontroller notwendige Spannung von 5V. Die 12V Spannung (Ub) kann im Interface direkt zur Ansteuerung von Relais oder auch zur Versorgung kleiner Motoren verwendet werden. Bei Bedarf können auch höhere Eingangsspannungen (z.B. 24V für Schrittmotoren) angelegt werden. Beachten Sie hierbei jedoch das Datenblatt des L7805 (Kühlung, max. Spannung). Der Microcontroller kann über den externen Quarz (hier 11,0592MHz, max. 16MHz) mit unterschiedli-chen Geschwindigkeiten getaktet werden. Der IC Max232 ist ein Pegelwandler, der die +5V der seriel-len Schnittstelle des Microcontrollers an die ±15V der seriellen Schnittstelle des PCs anpasst.

IC 40-polig

ISP-St

ecke

r

100kOhm

+5V

33pF

33pF11,0592 Mhz

Quarz

COM

IN OUTSpannungsregler

+ +

SB140

470µF 100µF100nF100nF

Hohlstecker+Ub

+5V

2

1

6

16+

+

+

+

+

10µF

10µF

10µF10µF

10µF

IC 16-polig

4,6,8,10

1MISOMOSI

RESETSCK

RXTX

2

579

9876

+5V

11, 31

12

13

3

45

+5V+5V

11, 13, 15

5

2

78

7

14

9p Su

b-D St

ecke

rRS

232

+5V

L7805

ATmega 16

MAX 232

109

15

10Spule100µH

100nF 100nF

optional für A/D-Wandler

30

14

Möchten Sie die internen A/D-Wandler des ATmega16 nutzen, sollten Sie zusätzlich die Spule 100µH mit den beiden 100nF Kondensatoren bestücken.

Page 12: Remotely Controlled Laboratory

12

„Einkaufsliste“ für die benötigten Bauteile Folgende Liste enthält alle für die Grundversion erforderlichen Bauteile. Weiterhin finden Sie die Be-stellnummern der Firma reichelt elektronik (www.reichelt.de). Dies ist ein Elektronik-Versender, der Privatpersonen beliefert. Auch die Firma Conrad Elektronik (www.conrad.de) liefert an Privatpersonen und bietet zusätzlich einen 24h-Service. Anzahl Bauteil Best.-Nr. Reichelt

Stand Katalog 1/2006 Bauteile Grundversion 1 9-poliger Sub-D Stecker, gewinkelt, Leiterplattenmontage D-SUB ST 09EU 1 IC Sockel 40-polig GS 40P 1 IC Sockel 16-polig GS 16P 1 2x10-polige Stiftleiste 2-reihig, gerade, RM 2,54 SL 2X10G 2,54 1 Hohlstecker-Buchse 2,1mm, gewinkelt, Lötfahnen HEBW21 2 Kondensator Kerko 33pF Kerko 33p 3 Vielschicht Keramik Kondensator 100nF Z5U-2,5 100n 5 Elektrolyt Kondensator 10µF, 35V RAD 10/35 1 Elektrolyt Kondensator 100µF, 16V RAD 100/16 1 Elektrolyt Kondensator 470µF, 25V RAD 470/25 1 Quarz 11,0592 MHz 11,0592-HC49U-S 1 Diode SB140 SB 140 1 ATMega16 40-polig DIL-Gehäuse ATMega16-16 DIP 1 MAX232 16-polig DIL-Gehäuse MAX232CPE 1 Widerstand 1/4Watt 100kOhm Metall 100k 1 Spannungsregler 7805, 5V 1A µA 7805 1 Kühlkörper für TO220-Gehäuse V FI356 „elementares“ RCL 1 Taster Taster 3301 1 LED rot, 2mA LED 5mm 2MA rt 1 Widerstand 1,8 kOhm Metall 1,8K Gehäuse, Montage, Netzteil 1 Steckernetzteil 12V, 1000mA SNT1000 1 Nullmodemkabel (9pBuchse/9pBuchse) AK143 Gehäuse + Befestigungsschrauben 1 Schraube M3x10 für Kühlkörper SZK M3x10mm 2 Mutter M3 SK M3 Werkstattbedarf Elektronik-Lot + Lötkolben mit feiner Spitze

Page 13: Remotely Controlled Laboratory

13

Wärmeleitpaste, Sekundenkleber 1 ISP-Programmiergerät von Atmel AT AVR ISP zum Anschluss eines LCD-Displays 1 Widerstand 12kOhm Metall 12K 1 Widerstand 1kOhm Metall 1K zur Verwendung des eingebauten Analog/Digitalwandlers 1 Spule 100µH SMCC100µ 2 Vielschicht Keramik Kondensator 100nF Z5U-2,5 100n zum Anschluss von Peripherie 1 10-poliges Flachbandkabel 3m AWG 28-10G 3m 1 14-poliges Flachbandkabel 3m AWG 28-14G 3m 1 40-polige Stiftleiste 1-reihig, gerade, RM2,54 SL 1x40G 2,54 6 10-poliger Wannenstecker, RM 2,54, stehend WSL 10G 2 14-poliger Wannenstecker, RM 2,54, stehend WSL 14G 6 10-poliger Pfostensteckverbinder PFL10 2 14-poliger Pfostensteckverbinder PFL14

Page 14: Remotely Controlled Laboratory

14

Platinen herstellen In diesem Kapitel erfahren Sie, wie eigene Platinen hergestellt werden können. Zuerst werden die benötigten „Zutaten“ vorgestellt, anschließend wird beschrieben, wie Sie Ihr Layout auf die Platine übertragen (belichten) und diese dann ätzen. Dabei wird alles überflüssige Kupfer entfernt, so dass nur noch die gewünschten Leiterbahnen übrig bleiben. Benötigte „Zutaten“:

• Belichtungslampe (Nitraphot Lampe): Diese Lampe wird speziell für Belichtungszwecke her-gestellt und strahlt einen besonders hohen UV- Anteil ab. (z.B. Conrad: 529141)

• Zwei Glasplatten zur besseren Auflage der Folie beim Belichten mit den Mindestabmessun-gen von 160mm*100mm. (z.B. aus alten Bilderrahmen)

• Tintendrucker oder Laserdrucker mit passender Transparentfolie • Fotobeschichtetes Basismaterial (=Platinen, deren Kupferschicht mit lichtempfindlichem

und säurefestem Lack abgedeckt ist) aus Epoxidharz mit den Maßen 160mm*100mm mit ei-ner Dicke von 1,5mm. (z.B. Conrad: 529249)

• Entwickler (Reichelt: Entwickler 10g) • Ätzmittel: hier stehen drei verschiedene Chemikalien zur Auswahl:

o Eisen(III)Chlorid hat den Vorteil, dass der Ätzvorgang recht schnell von statten geht: Je nach Temperatur und Badbewegung sollte die Platine nach 5 Minuten fertig sein. Hier muss das Bad nicht unbedingt erwärmt werden. Zimmertemperatur reicht normalerweise aus. Leider sind die entstehenden Dämpfe schleimhautreizend und so aggressiv, dass sich auf Metallgegenständen Rost bilden kann. Sollte etwas Flüssigkeit auf Textilien trop-fen, bleiben gelbe Flecken oder sogar Löcher zurück. (z.B. Conrad: 528722)

o Ammoniumpersulfat wird nicht trüb, hat aber den Nachteil, dass es mit der Zeit kristalli-siert.

o Wir haben Natriumpersulfat verwendet, denn auch nach mehrfacher Nutzung bildet sich keine Trübung, wodurch der Ätzstatus leichter zu erkennen ist. Es kristallisiert nicht aus. Der Ätzvorgang dauert ca. 40 Minuten. (z.B. Conrad: 529257 )

• Zwei Glasflaschen (1l) zur Lagerung der Ätz- und Entwicklerlösung. • Säurebeständige Plastikwanne (z.B. Conrad: 530247) • Trichter, • Kunststoffpinzette zum Entnehmen der Platine aus dem Bad • Holzspatel • Aceton • Thermometer bis 100°C • (Stand-)Bohrmaschine (Dremel, Proxxon o.ä.) mit 0,8 mm, 1,5 mm und 3mm Bohrer

Belichtungsvorlage auf Transparentfolie drucken Das Bild zeigt die gewünschten Leiterbahnen des Interfaces (Platinen-Layout). Bevor Sie das Layout drucken, wählen Sie bitte unter den Ein-stellungen des Druckers die höchste Qualität und das Papier-profil „high glossy film“, damit die Farbschicht ausreichend dick gedruckt wird. Die Dichte des Farbauftrags entscheidet maß-geblich über die Qualität der Platine: Sollte die Farbschicht leicht lichtdurchlässig sein, werden die Konturen der Bahnen nicht sauber herausgeätzt, oder sie verschwinden komplett. Legen Sie die Folie exakt an den Anschlag des Papiereinzu-

Page 15: Remotely Controlled Laboratory

15

ges und achten Sie darauf, dass die Folie kein seitliches Spiel hat. Die Folie darf nicht berührt werden, da sonst die Trägerschicht abgelöst wird und die Tinte nicht mehr haften kann. Drucken Sie das Layout aus. Die Folie sollte einige Zeit trocknen, damit die Tinte nicht verwischt. Halten Sie die bedruckte Folie gegen eine Lichtquelle und prüfen Sie, ob Licht durch die schwarzen Bahnen hindurch scheint. Falls dies der Fall ist, sollte unbedingt eine zweite Tintenschicht aufgedruckt werden. Dazu muss die Folie an exakt der gleichen Position im Einzug des Druckers liegen, damit der zweite Druck genau über dem ersten liegt. Drucken Sie Notfalls auch ein drittes mal auf die Folie, damit das Ergebnis einwandfrei wird. Schneiden Sie die Folie so zurecht, dass nur der gewünschte Ausschnitt übrig bleibt. Belichten des Basismaterials Befestigen Sie die Belichtungslampe ca. 20 cm über einer hitzebeständigen Arbeitsoberfläche. Legen Sie eine der beiden Glasplatten unter die Lampe. Entfer-nen Sie die Schutzfolie des Basismaterials, legen Sie dieses auf die Glasplatte und positionieren Sie die Belichtungsfolie darauf (siehe Skizze). Dies sollte möglichst in einem leicht abgedunkelten Raum ge-schehen, um eine ungewollte Belichtung zu verhin-dern. Legen Sie die zweite Glasplatte auf die Folie. Stellen Sie sicher, dass die Folie dabei nicht verrutscht und nicht versehentlich spiegelverkehrt aufgelegt wur-de. Die Schrift muss lesbar sein. Schalten Sie die Lampe für sieben Minuten ein und legen Sie anschließend die belichtete Platine mit der Kupferschicht nach unten an einen abgedunkelten Ort. Achtung! Die Lampe erwärmt sich sehr stark! Sie darf auf keinen Fall Erschütterungen jeglicher Art ausgesetzt werden. Lassen Sie die Lampe nach dem Betrieb mindestens fünf Minuten auskühlen, bevor sie erneut in Betrieb genommen, bzw. abgebaut wird, da ansonsten der Glühdraht Schaden nimmt. ACHTUNG: Sicherheitshinweise beachten!! In den folgenden Arbeitsschritten kommen ätzende und toxische Stoffe zum Einsatz! Verwenden Sie unbedingt eine Schutzbrille und Schutzhandschuhe! Lesen und befolgen Sie die Sicherheitshinweise auf den jeweiligen Chemikalien. Sollten Textilien mit den Stoffen in Berührung kommen, waschen Sie diese umgehend aus, da sonst Bleichflecken oder sogar Löcher entstehen können! Entwickeln der Platine Zunächst müssen Sie die Entwicklerlö-sung herstellen. Messen Sie dazu die auf der Verpackung angegebene Menge Wasser ab, füllen es in eine der beiden Flaschen und lösen darin das Granulat (10gr NaOH für einen Liter Wasser) auf. Zum Entwickeln sollte die Lösung eine Temperatur von etwa 30°C haben. Am besten lässt sich die Flüssigkeit in einem Wasserbad erwärmen. Füllen Sie die Plastikwanne halbvoll mit der Entwicklerlösung. In die Lösung legen Sie die zuvor belichte-te Platine. Das Bad bzw. die Platine muss kontinuierlich bewegt werden.

Page 16: Remotely Controlled Laboratory

16

Nach spätestens 2 Minuten muss das Abbild der Leiterbahnen vollständig erkennbar sein. Ist dieser Zustand erreicht, nehmen Sie die Platine sofort aus dem Bad, da bei zu langer Entwicklung die unbe-lichtete Fotoschicht angegriffen wird. Anschließend ist ein gründliches Abspülen der Platine unter flie-ßendem Leitungswasser notwendig. Gießen Sie die Lösung zurück in die Flasche und waschen Sie die Wanne aus. Die Flasche muss fest zugeschraubt werden, da andernfalls die Wirkung des Entwick-lers verloren geht. Tipp: Falls einige Bahnen durch zu starkes Entwickeln blass geworden, oder ver-schwunden sind, lassen sie sich mit einem feinen Lackstift korrigieren (z.B. Edding 780). Ätzen der Platine Stellen Sie die Säurelösung her. Wir empfehlen Natriumpersulfat. Natriumpersulfat löst sich endotherm, d.h. das Wasser kühlt sich beim Lösungsvorgang ab. Allerdings darf die Wassertemperatur 60°C nicht übersteigen, da sich der Stoff sonst zersetzt und seine Ätzwir-kung verliert. 250gr pro Liter Wasser sind zu empfehlen. Erwärmen Sie das Wasser auf 40°C und lösen sie das Natriumpersulfat darin auf. Eventuell muss die Lösung danach nochmals erwärmt wer-den, damit eine optimale Ätztemperatur von 40-45°C erreicht wird. Eisen(III)Chlorid: Pro Liter Wasser werden 250gr Granulat benötigt. Es löst sich auch bei Zimmertem-peratur gut auf. Um die größtmögliche Ätzwirkung zu erzielen, sollte das Wasser eine Temperatur von 40°C haben, bei Zimmertemperatur dauert der Ätzvorgang etwas länger. Ammoniumsulfat löst sich ebenfalls endotherm. Pro Liter Wasser empfehlen wir 230gr Ammoniumsul-fat. Erwärmen Sie das Wasser auf ca. 70 – 80°C und lösen sie das Pulver darin auf. Danach hat die Flüssigkeit eine Temperatur von 50°C – ideal zum ätzen. Achtung! Da die Temperatur der Flüssigkeit beim Einfüllen in die Flasche oder durch das Aufwärmen in einem Wasserbad sehr hoch ist, kommt es nach dem Abkühlen zu einem Druckabfall in der Fla-sche, was zur Implosion führen kann. Bohren Sie ein kleines Loch in den Flaschendeckel der Säurelö-sung, damit ein Druckausgleich stattfinden kann! (NICHT bei der Entwicklerlösung!) Befüllen Sie die Wanne zur Hälfte mit der Ätzlösung. Legen Sie die Platine hinein. Je nach verwende-tem Ätzmittel, der Bewegung des Bades oder der Platine mit dem Holzspatel und der Temperatur des Bades dauert der Vorgang einige Minuten bis eine ¾ Stunde. Nehmen Sie die Platine anschließend aus dem Bad und spülen sie gründlich unter fließendem Wasser ab, um ein Nachätzen zu verhindern. Füllen Sie die Ätzlösung zurück in die Flasche und reinigen Sie die Ätzwanne mit viel Wasser.

Page 17: Remotely Controlled Laboratory

17

Entfernen der Fotoschicht: Tränken Sie etwas Watte mit Aceton und entfernen Sie den Rest der Fotoschicht auf den Leiterbah-nen. Umweltgerechte Entsorgung verbrauchter Chemikalien: Sollten die Flüssigkeiten verbraucht sein oder nicht mehr benötigt werden, dürfen sie auf keinen Fall über das Abwasser entsorgt werden. In manchen Städten gibt es Giftmobile, die in bestimmten Zeit-räumen Chemikalien entgegennehmen und fachgerecht entsorgen. Man kann aber auch bei der örtli-chen Abfallentsorgung nachfragen. Bohren der Platine Bohren Sie zum Schluss noch die Löcher für die Bauteile. Die jeweilige Größe wird durch das Layout ersichtlich.

Page 18: Remotely Controlled Laboratory

18

Interface löten Das hier vorgestellte Layout ist etwas größer als das genormte Europakarten-Format. Wenn Sie die Platine selbst herstellen, ist es eventuell vorteilhaft, wenn Sie dennoch eine Platine im Europa-Format wählen und das auf dem folgenden Bild sichtbare Layout etwas versetzt belichten. Dann fehlen einige Reihen des Lötaugenrasters, welches für Erweiterungen frei zur Verfügung steht – dies sollte in den meisten Fällen kein Nachteil sein. Kupfer-Seite: Auf dieser Seite werden die Bauteile angelötet.

Bestückungsseite: Hier werden die Bauteile eingesteckt.

Page 19: Remotely Controlled Laboratory

19

Fertig bestückte Platine:

Abgebildet ist die Grundversion mit zusätzlichen Buchsen und Stiftleisten. Der Microcontroller ist noch nicht in seinen Sockel eingesteckt. Rechts neben der 40-poligen IC-Fassung sind optionale Komponenten (2 Kondensatoren, Spule, 2 Widerstände) für A/D-Wandler und LCD-Display montiert. Der folgende Bestückungsplan gibt einen schematischen Überblick. Auch hier sind gegenüber der Grundversion zusätzliche Komponenten eingezeichnet. Alle Bauteile rechts neben dem IC ATmega16 sind optional. Die Spule, sowie die beiden benachbarten Kondensatoren werden nur benötigt, wenn man die integrierten Analog/Digital-Wandler des Microcontrollers benutzen möchte. Weiterhin ist mit den Widerständen (1k, 12K) ein Spannungsteiler zur Kontrasteinstellung eines LCD-Displays bereits integriert. Diese Widerstände müssen also ebenfalls nur bei Bedarf bestückt werden, ebenso die Ste-cker und Sockel für die Treiber ICs (ULN2803) für z.B. Lampen oder kleine Motoren.

ATmega 16

oder ATme

ga 32

Brücke

L7805

1

11,0592 MHz

100nF

100nF

2x100nF

100nF

470µF

1N4007

DC_IN

10µF

10µF

10µF

10µF

10µF

MAX232

ISP-Stecker

100k

33pF33pF

100µF

GND

GND

GND

GND

+Ub

+Ub

+5V

+5V

+5V

100µH

12k

1k

JMP2

JMP1

PortA

PortD PortC

PortB

RS232

+++

+

+

+

+

+

z.B. ULN2803

z.B. ULN2803

Kühlkörp

er

optionale Komponenten

Bestückungsplan

Page 20: Remotely Controlled Laboratory

20

Im Folgenden werden die benötigten Bauteile vorgestellt. Es ist empfehlenswert, die Bauteile auch in dieser Reihenfolge einzulöten. Die Beschreibung der Einbaupositionen und Orientierung der Bauteil bezieht sich auf die beiden vorangehenden Abbildungen (Bestückungsplan und Foto). Stromversorgungsbuchse – Hohlstecker 2,1mm

Diese Buchse sollte mit etwas Sekundenkleber vor dem Löten auf der Platine fixiert werden, da sie später mechanischen Belastungen ausgesetzt ist. Eventuell müssen die Löcher in der Platine mit einer runden Schlüsselfeile etwas aufgeweitet werden. Bitte VOR dem Auftragen des Sekundenklebers prüfen. Es kann auch wahlweise die 2,5mm-Version der Buchse verwendet werden.

RS232 Datenstecker

Der 9-polige Sub-D-Stecker sollte ebenfalls mit Sekundenkleber vor dem Löten fixiert werden. Zur besseren Stabilität bitte alle Beinchen und die Befestigungsstifte anlöten. Dieser Stecker wird später mit einem NULL-Modemkabel mit der seriellen Schnittstelle (z.B. COM1) des PCs verbunden.

Diode – SB140

Ein Ring (hier links, weiß) an einer Seite der Diode zeigt die Durch-lass- bzw. Sperrrichtung der Diode an. Die Position des Ringes entspricht der Position des Balkens im Schaltungssymbol. Auf der Platine muss der Ring auf der von der Stromversorgungsbuchse entfernten Seite liegen.

Drahtbrücke Auf der Platine muss VOR der Montage des 40-poligen IC-Sockels

eine Drahtbrücke UNTER diesem eingelötet werden. Hier bietet es sich an, nach Einlöten der Diode, deren Beinchen zu kürzen und die so gewonnen Drähte zu verwenden.

IC-Fassungen

Die 16-polige und 40-polige IC-Fassungen besitzen eventuell eine Markierung für Pin1 (z.B. Kerbe in der Stirnseite, Punkt, Pfeil…). Diese sollte bei beiden Fassungen nach oben zeigen, also zum nächstliegenden Rand der Platine. Somit kann dies später eine Hilfe zur richtigen Montage der ICs sein. Die ICs selbst sollten noch nicht eingesteckt werden.

Programmierschnittstelle (ISP)

Diese doppelreihige Stiftleiste dient der Programmierung des Mic-rocontrollers mit dem AVR-ISP-Programmer (ISP: In System Pro-gramming). Sie wird mit den kurzen Beinchen eingelötet, so dass auf die langen Stifte der Programmieradapter gesteckt werden kann.

Widerstand 100k

Der 100k-Ohm Widerstand wird rechts neben der ISP-Stiftleiste eingelötet.

Page 21: Remotely Controlled Laboratory

21

Kondensatoren: Elkos

Bei den verwendeten Elektrolyt-Kondensatoren ist die Polung zu beachten (langes Beinchen = Plus-Pol). Weiterhin ist auf den Kon-densatoren ein weißer Streifen mit „Minus“-Zeichen aufgedruckt. Die Kondensatoren sollten eine Spannungsfestigkeit von mindes-tens 16V, besser 25V besitzen. Auf der Kupferseite der Platine zeigt die Form der Lötaugen die Polung an: rundes Lötauge Plus, quadratisches Lötauge Minus. Der 470µF Kondensator wird mit dem weißen Streifen in Richtung Stromversorgungsbuchse direkt unter diese montiert. Der 100µF Kondensator sitzt direkt unter der 16-poligen IC-Fassung. Sein weißer Streifen (Minus-Pol) zeigt in Richtung Strom-versorgungsbuchse. Vier der 10µF Kondensatoren werden links neben der 16-poligen IC-Fassung montiert. Deren Polung ist wie folgt: Unterster Konden-sator Minus nach oben, nächster Kondensator Minus nach unten, die beiden oberen Kondensatoren mit Minus nach oben. Ein weiterer 10µF Kondensator wird rechts neben die 16-polige IC-Fassung gelötet. Sein „Minus-Streifen“ zeigt nach unten.

Keramik-Kondensatoren

Die beiden 33pF-Kerkos (Keramik-Kondensatoren) werden direkt nebeneinander rechts neben die 16-polige IC-Fassung gelötet. Zwei 100nF-Kondensatoren werden unter dem 470µF-Elko eingelö-tet, ein weiterer mittig an der linken Seite der 40-poligen IC-Fassung. Die beiden Kondensatoren rechts neben der 40-poligen Fassung müssen in der „Grundversion“ nicht bestückt werden. Die Beschriftung „104“ bedeutet 10e4pF = 100nF.

Quarz

Als Quarz wird ein 11,0592 MHz – Typ verwendet. Bei dieser Fre-quenz ist eine fehlerfreie Kommunikation über RS232 mit 9600Baud möglich. Für den ATmega16 können Quarze bis 16MHz eingesetzt werden. Details siehe Datenblatt. Der Quarz wird direkt rechts neben die beiden 33pF-Kerkos gelötet. Die Orientierung spielt keine Rolle.

Spannungsregler L7805

1. Mutter

2. Mutter

Schrau

be

L7805

Platine

KühlkörperWärmeleitpaste

Beinchen

Löten

Der Spannungregler L7805 (Bild links) erzeugt eine stabilisier-te Spannung von 5V. Es ist empfehlenswert einen Kühlkörper (Bild rechts) zu verwenden. VOR dem Einlöten: Zwischen Spannungsregler und Kühlkörper sollte etwas Wär-meleitpaste aufgetragen werden. Dann werden die beiden FEST mit einer Schraube M3x10 und einer Mutter ver-schraubt. Die über die Mutter hinausragende Schraube kann dann durch ein passendes Loch der Platine gesteckt und durch eine weitere Mutter an dieser befestigt werden. Die Beinchen des Spannungsreglers sind um 90° passend abzu-biegen.

Page 22: Remotely Controlled Laboratory

22

Funktionskontrolle VOR Einsetzen der ICs Bitte prüfen Sie insbesondere die Ausrichtung der Elektrolyt-

Kondensatoren (Elkos). Sind alle Beinchen angelötet? Hat das Lötzinn an den Beinchen und der Platine guten Kontakt? Sind eventuell zwei benachbarte Beinchen unbeabsichtigt durch Lötzinn verbunden? ALLE Lötungen nochmals genau prüfen (Tipp: Lupe)! Probeweise 12V-Versorgungsspannung einstecken: Am 100nF-Kondensator links mittig der 40-poligen IC-Fassung müssen 5V anliegen. Versorgungsspannung von der Platine wieder trennen.

Einsetzen der ICs MAX232 und ATmega16

Die „Nuten“ (Pfeile im Foto links) auf den IC-Gehäusen müssen nach oben zeigen, d.h. Pin1 ist bei beiden ICs (hier im Foto) links unten und auf der Platine oben links. Sollten die Beinchen der ICs nicht in die Fassung passen, da die Fassung scheinbar zu schmal ist, den IC seitlich mit einer Bein-chen-Reihe flach auf den Tisch legen. Den IC-Körper links und rechts greifen und Beinchen durch leichten Druck biegen. Sind einzelne Beinchen durch den Transport verbogen, diese vorsichtig mit einer kleinen Flachzange richten.

Zum Anschließen weiterer Komponenten sind auf der Platine vier Wannenstecker und vier Stiftleisten vorgesehen. Die vier Stiftleisten sind mit den 8 Pins der entsprechenden Ports verbunden, so dass hier direkt die 32 I/O-Anschlüsse des ATmega verfügbar sind. Drei der vier Wannenstecker (Port A, B und D) sind 10polig ausgeführt. Hier sind zusätzlich +5V und Masse verfügbar. Der 14polige Wannenstecker von Port C ist zum direkten Anschluss von Standard-LCD-Displays vorgesehen. Er besitzt zusätzlich einen Spannungsteiler mittels zweier Widerstände zum Einstellen des LCD-Kontrasts, sowie zwei Steuerleitungen, die mit Port D verbunden sind:

1 2

1 2 Port A, Port B, Port D1: GND2: +5V3..10 : Pin 0 .. Pin 7

1: GND2: +5V3: Kontrast für LCD-Display4: LCD-RS (PinD.5)5: GND6: LCD-CS (PinD.4)7..14: PinC.0 .. PinC.7

Port C

Page 23: Remotely Controlled Laboratory

23

Interface auf einer Lochrasterplatine Dieses Kapitel gibt eine schrittweise Anleitung, wie Sie die Grundversion des Interfaces auf eine Loch-rasterplatine aufbauen können. Diese Lochrasterplatinen gibt es als Fertigprodukt zu kaufen. Werkzeuge: Neben den im vorhergehenden Kapitel aufgelisteten elektronischen Bauteilen benötigen Sie:

• Eine Lochrasterplatine im Euro-Format (160mm x 100 mm) mit dem Rastermaß 2,54mm und Lötpunkten. Es gibt diese Platine in einer Epoxid- und in einer Hartpapierausführung. Die Löt-augen auf der Epoxidvariante halten größeren mechanische Belastungen stand und lösen sich bei eventuellen Korrekturarbeiten nicht so leicht ab. Für Lötanfänger ist diese Epoxidvari-ante zu empfehlen. Wir haben in diesem Beispiel eine Hartpapierplatine verwendet.

• Einen Meter isolierte Kupferlitze mit einer Querschnittsfläche zwischen 0,01mm² und 0,2 mm².

• Sekundenkleber • Lötkolben mit feiner Spitze. (z.B. Meißel-

form 2mm breit) • Lötzinn (zwischen 0,8mm und 1,0mm im

Durchmesser) • Lötzinnabsauger • evtl. einen Schwamm um den Lötkolben

zu reinigen • Zangen • Multimeter • Bohrmaschine, z.B. Dremel, Proxxon o.ä. mit 0.8mm Bohrer

Für Lötanfänger einige Infos zum Umgang mit Lochrasterplatinen: Die Lochrasterplatine wird oft in Labors oder bei Elektronikern eingesetzt. Bauteile lassen sich beliebig platzieren, es müssen keine Löcher gebohrt werden und Fehler in der Schaltung lassen sich ohne großen Aufwand beheben. Die Bauteile werden von oben eingesteckt, so dass die Beinchen auf der Seite der Lötaugen heraus-stehen. Hilfreich beim einlöten ist ein kleiner Schraubstock, so dass man die Bauteile auf einer Seite festhalten kann, während man auf der anderen Seite lötet. Manchmal wird empfohlen, die Beinchen nach außen zu biegen, so dass das Bauteil nicht herausfallen kann, dann wird ein späteres Auslöten jedoch etwas schwieriger. Nach dem Einlöten müssen die überstehenden Beinchen gekürzt werden. Die Bauteile lassen sich auf verschiedene Weisen miteinander verbinden:

• Reste der Beinchen: Nachdem die ersten Bauteile eingelötet sind, muss man die überstehen-den Beinchen auf der Rückseite mit einer Zange abzwicken. Die anfallenden Drahtstückchen können dann zum Verbinden der Beinchen für kurze Strecken genutzt werden. Hier muss man aufpassen, dass sich die Drähte nicht überkreuzen.

• Lötaugen mit Lötzinn überbrücken: Dazu ist allerdings etwas Feingefühl notwendig. • isolierte Litzen: Die „sicherste“ Methode. Kabel werden auf die entsprechende Länge gekürzt,

dann abisoliert und zum Schluss festgelötet. • Kupferlackdraht: Hier entfällt das Abisolieren. Die dünne Isolierschicht löst sich beim erhitzten

durch den Lötkolben ab.

Page 24: Remotely Controlled Laboratory

24

Platine bestücken Für die folgenden Schritte sollten Sie unbedingt den Schaltplan vorliegen haben, da Sie diesem ent-nehmen, welche Bauteile wie zu verbinden sind. Zunächst müssen ein paar Modifikationen vorgenommen werden, denn die Pins der Sub-D Buchse sind so angeordnet, dass sie nicht in das Raster der Platine passen. Die Befestigungslaschen stören, da es keine Möglichkeit gibt, sie stabil an der Platine festzulöten. 1. Entfernen Sie die Laschen und die Pins, die durch die Schaltung nicht beansprucht werden.

Übrig bleiben folgende Pins, der Pin links oben passt jedoch nicht in das 2,54mm Raster

Die Laschen lassen sich am besten mit der Kneifzange entfernen.

Bohren Sie ein Loch für den einzelnen Pin in die Platine. Dieses muss zwischen zwei der vielen vorgebohrten Löchern liegen, damit die Buchse in das Raster passt. Folgende ungefähre Position ist zu empfehlen:

Testen Sie ob sich alle 4 Pins in die Platine stecken lassen. Erst dann geben Sie einige Tropfen Se-kundenkleber auf die Unterseite der Buchse und drücken Sie diese fest auf die Platine, so dass alle Pins auf der Seite mit den Lötaugen zu sehen sind. Warten Sie bis der Kleber ausgehärtet ist und löten Sie die Pins an der Unterseite fest.

Montage der Stromversorgungsbuchse: Es müssen drei schmale, längliche Löcher gebohrt werden. Regeln Sie dazu die Geschwindigkeit der Bohrmaschine hoch und drücken Sie den Bohrer sanft gegen das Material. Achtung! Die feinen Bohrer brechen sehr leicht. Anschließend kleben Sie die Buchse ebenfalls an und löten sie fest. Hier kann viel Lötzinn verwendet werden.

Stecken Sie nun die IC-Fassungen auf die Platine. Die Einker-bungen müssen zum oberen Platinenrand zeigen. Achten Sie darauf, dass die Fassungen direkt auf der Platine anliegen. Löten Sie zunächst nur die äußeren 4 Pins ein und anschlie-ßend die Übrigen.

Page 25: Remotely Controlled Laboratory

25

Jetzt werden die 10µF Elkos bestückt. Diese werden nach dem folgenden Schema mit dem 16pol. IC Sockel verbunden: Die blauen Punkte stehen für einen Minuspol, die roten Punkte markieren einen Pluspol. Die Polarität muss unbedingt beach-tet werden, da die Kondensatoren sonst Schaden nehmen oder im schlimmsten Fall sogar explodieren können. Den Pluspol erkennen Sie daran, dass das Beinchen etwas länger ist als das Beinchen des Minuspols. Meistens ist der Minuspol auch auf dem Gehäuse markiert. Löten Sie die Beinchen an den Lötpunkten der Platine fest und kürzen Sie anschließend die abstehenden Drähte. Verbinden sie nun die Elkos mit der IC-Fassung nach der obigen Skizze. Dazu können Sie entweder die Kupferlitze oder die abge-schnittenen Beinchen der Kondensatoren verwenden.

Bauen Sie den Quarz, welcher den Prozessor mit dem Takt versorgen wird, ein. Die Beinchen des Quarzes müssen mit Pin 12 und 14 der 40pol IC-Fassung verbunden werden. An-schließend löten Sie hinter jedes Beinchen des Quarzes je einen der 33pF Kondensatoren ein. Verbinden Sie die Kon-densatoren mit dem Quarz. Hier können wieder die abge-schnittenen Beinchen als Verbindung dienen.

Bauen Sie die Diode ein und verbinden Sie sie mit dem Plus-Pol der Strombuchse. Sie soll verhindern, dass eine verkehrt gepolte Spannungsquelle die Bauteile auf dem Interface zer-stört, denn Sie leitet nur in eine Stromrichtung. Beachten Sie aus diesem Grund bitte unbedingt die richtige Polung der Dio-de! Die weiße Markierung am Gehäuse, die so genannte Ka-thode muss von der Netzteilbuchse wegzeigen.

Über die Stiftleiste kann später der Programmieradapter mit dem Microcontroller verbunden werden. Kürzen Sie die Leiste mit der Kneifzange auf die Länge von 5*2 Stiften und löten Sie die Leiste ein. Der 100kΩ Widerstand verbindet Pin 9 (Reset) des Microcontrollers mit +5 V. Wir haben noch eine Drossel und zwei Kondensatoren für die Analog-Digitalwandler einge-baut.

Die Aufgabe des Spannungsreglers ist die Erzeugung einer Gleichspannung von +5 V. Dabei darf die Eingangsspannung maximal +30 V betragen und muss mindestens 2 V über der Ausgangsspannung, also in diesem Fall bei etwa 7 V liegen. Man kann dadurch am Netzteil eine Spannung von 12 V ein-stellen, erhält trotzdem die erforderlichen 5 V für die Bauteile. Die 12 V vor dem Spannungsregler lassen sich für andere Komponenten wie beispielsweise einen Motortreiber abgrei-fen, ohne dass ein zweites Netzteil benötigt wird. Der Spannungsregler, die beiden 100nF Kondensatoren, der 100µF Elko und der 470µF Elko müssen wie folgt montiert und verdrahtet werden. Achtung: Sollten Sie noch weitere Bauteile am Spannungs-regler betreiben, muss je nach Stromstärke ein Kühlkörper am Gehäuse montiert werden. Bis etwa 100mA bei 12 V Ein-gangsspannung kommt der Spannungsregler ohne Kühlkörper aus.

Page 26: Remotely Controlled Laboratory

26

Zum Schluss folgt die Verdrahtung gemäß dem Schaltplan:

So sieht die Unterseite der bestückten Lochrasterplatine aus. Sie sehen die angelöteten Beinchen der Bauteile, die durch Drähte oder Kabel gemäß dem Schaltplan miteinander verbunden sind.

Page 27: Remotely Controlled Laboratory

27

Programmierung des Microcontrollers Damit das Interface bestimmte Aufgaben übernehmen kann, müssen die dafür notwendigen Lösungs-schritte dem Microcontroller in Form eines Programms (=Firmware) mitgeteilt werden. Dieses Pro-gramm erstellen Sie mit Ihrem PC und kopieren es anschließend mit einem speziellen Programmier-adapter über die ISP-Schnittstelle des Interfaces in den Speicher des Microcontrollers (auch „schrei-ben“ oder „brennen“ genannt). ISP-Schnittstelle (InSystemProgramming) bedeutet, dass der Micro-controller in der Schaltung programmiert wird, in der er anschließend seine Arbeit verrichtet, hier unser Interface. Alternativ könnte auch der Microcontroller, also der einzelne Chip, in ein spezielles Schreib-gerät eingesetzt werden.

Im Rahmen dieses Tutorials empfehlen wir den Programmieradap-ter „AVR-ISP-Programmer“ von Atmel (ca. 40€). Er kann für fast alle Prozessor-Typen verwendet werden (auch SMD-Typen). Aller-dings müssen die Prozessoren dann in einer geeigneten Schaltung (z.B. unsere Grundschaltung des Interfaces) mit ISP-Programmierschnittstelle eingebaut sein.

Hinweis: Das STK500-Entwicklungsboard von ATMEL bietet die Möglichkeit, verschiedene Microcontroller und deren Programmie-rung mit einer kleinen Testschaltung kennen zu lernen. Es stehen unter anderem 8 Schalter, 8 LEDs und eine serielle Schnittstelle für die ersten Versuche im Umgang mit Microcontrollern bereit. Die Microcontroller können in das Board eingesetzt und dort program-miert werden.

Zur Vollständigkeit sei erwähnt, jedoch für Einsteiger nicht empfohlen: Ein solches Schreibgerät kön-nen Sie auch selbst bauen – im Internet finden Sie zahlreiche Anleitungen. Bisher gab es eine Version des AVR-ISP-Programmers, der an der seriellen Schnittstelle des PCs angeschlossen wird oder über einen USB-seriell Konverter betrieben werden kann. Derzeit ist eine Version direkt mit USB-Anschluss angekündigt, vermutlich wird er genauso wie der Vorgängertyp einzusetzen sein. Im Folgenden gehen wir davon aus, dass Sie den AVR-ISP-Programmer mit 10-poligem Programmierstecker vorliegen haben. Laden Sie sich von www.atmel.com unter PRODUCTS – Microcontrollers and DSP – AVR 8 bit RISC – Tools & Software das Programm „AVR Studio“ und installieren es auf Ihrem PC. Es dient zum Über-tragen der Programme von Ihrem PC auf den Microcontroller. Weiterhin enthält es einen Assembler incl. Entwicklungsumgebung, so dass Sie damit auch Programme erstellen können. In diesem Tutorial werden wir den Microcontroller jedoch in Basic programmieren. Hierzu laden Sie von der Seite www.mcselec.com das Programm BASCOM-AVR. Diese Demo-Version besitzt den vollen Funktionsumfang, ist jedoch auf 4k Programmcode beschränkt. Dies ist für einfache Experimen-te ausreichend. Die Vollversion kostet ca. 80€. Hinweis: Es gibt auch C-Compiler (unter anderem kostenlosen GNU-Compiler) und einen sehr guten Pascal-Compiler (www.elab.de, Demo-Version mit vollem Funktionsumfang, jedoch auch auf 4k Pro-grammcode beschränkt, Vollversion ca. 500€) Die folgenden Schritte beziehen sich auf die Verwendung von BASCOM: Es wird vorausgesetzt, dass Sie die Interface-Platine in der Grundversion vorliegen haben, bestückt mit einem ATmega16 Microcontroller und einem 11,0592MHz Quarz. Das Interface ist mit einem Nullmodemkabel mit dem PC verbunden. Der AVR-ISP-Programmer ist mit der zweiten seriellen Buchse Ihres PCs verbunden und mit dem 10-poligen ISP-Stecker des Interfaces (PIN1 zeigt zum Quarz!!). ACHTUNG: AVR-ISP-Programmer nur an Interface anschließen oder abziehen, wenn dieses stromlos ist, d.h. 12V-Netzteil darf NICHT am Interface angeschlossen sein.

Page 28: Remotely Controlled Laboratory

28

Konfiguration von Bascom Starten Sie Bascom und wählen Sie Options – Compiler. Bitte übertragen Sie folgende Einstellungen

Chip: m16def.dat HW Stack: 32 Soft Stack: 32 Framesize: 32

Baudrate 0: 9600 Frequenz: 11059200 Hz

Wählen Sie den COM-Port, an den Sie das Null-Modem-Kabel angeschlossen haben. Bitte 9600 Baud, Parity none, Databits 8 und Stopp-bits 1 einstellen. Bestätigen Sie die Änderungen mit <OK>

Programmeingabe Wählen Sie in Bascom File – New, geben Sie folgendes Programm ein und speichern Sie es unter dem Namen „rs232.bas“. Die Kommentare am Ende der Zeilen müssen nicht eingegeben werden. $regfile = "m16DEF.dat" 'Microcontroller ATmega16 $crystal = 11059200 '11.0592MHz Quarz $baud = 9600 'Baudrate 9600 Baud Dim Kommando As String * 20 'Deklaration einer Textvariable Do 'Start der Endlos-Schleife If Ischarwaiting() = 1 Then 'wurde ein Zeichen gesendet? Input Kommando 'String über RS232 lesen Print "empfangen: " ; Kommando 'String über RS232 ausgeben End If Loop 'springe zur Zeile “Do” End '(wird nie erreicht) Dieses Beispiel zeigt die Kommunikation zwischen Microcontroller und PC über die serielle Schnitt-stelle. Hierzu wird in den ersten Zeilen der Prozessortyp festgelegt, sowie dessen Taktfrequenz und die Kommunikationsgeschwindigkeit (Baud-Rate). Es wird eine Text-Variable (mit maximal 20 Zeichen) zum Zwischenspeichern der Eingaben benötigt.

Page 29: Remotely Controlled Laboratory

29

Das „Haupt“-Programm besteht aus einer Schleife, die nie beendet wird (endlos-Schleife); das Inter-face führt also immer wieder dieselben Befehle aus: Es wird geprüft, ob ein Zeichen über die serielle Schnittstelle empfangen wurde. Falls dies der Fall ist, wird ein String gelesen und zur Kontrolle wieder ausgegeben. Programm compilieren Wählen Sie Program – Compile: Ihr Programm wird in den Maschinen-Code für den Microcontroller übersetzt – es wird eine Datei „rs232.hex“ erzeugt. Gegebenenfalls weist der Compiler Sie auf (Tipp-) Fehler hin. Programm in den Microcontroller schreiben Bascom bietet die Möglichkeit die erstellten Programme (hex-Dateien) direkt in den Microcontroller zu schreiben. Leider zeigte sich jedoch, dass dies nicht immer problemlos funktioniert. Deshalb empfeh-len wir das Programm „AVR Studio“ von Atmel zu verwenden:

Nach dem Programmstart schließen Sie bitte fol-gendes Fenster mit <Cancel> und verbinden den AVR ISP-Programmer mit einer seriellen Schnitt-stelle des PCs und mit der ISP-Stiftleiste des Inter-faces. ACHTUNG: auf Orientierung achten – PIN1 zeigt nach unten rechts in Richtung Quarz.

Wenn Sie einen neuen ATmega Microcontroller erstmalig verwenden, müssen Sie diesen für Ihre Schaltung konfigurieren. Dies ist normalerweise beim Einsatz im Interface nur einmal notwendig:

Wählen Sie Tools – Program AVR – Auto Connect Es erscheint folgendes Fenster, sofern der AVR-ISP-Programmer gefunden wurde.

Page 30: Remotely Controlled Laboratory

30

Unter Fuses setzten Sie bitte die Häkchen wie abgebildet. Entfernen Sie das Häkchen in der 2. Zeile vor „JTAG...“

Setzen Sie das vorletzte Häkchen, somit wird der interne Taktgenerator des ATmega16 deaktiviert. Führen Sie die Änderungen mit <Program> aus.

Bestätigen Sie die Änderungen mit <Ja>

ACHTUNG! Ändern Sie auf keinen Fall die „LockBits“, wenn Sie sich nicht mit dem Datenblatt des ATmega16 vertraut gemacht haben. Hierdurch könnte Ihr Mic-rocontroller unbrauchbar werden.

Page 31: Remotely Controlled Laboratory

31

Wählen die Options-Seite mit Namen „Program“: Klicken Sie im Abschnitt „Flash“ auf den Knopf mit den drei Punkten <...> um eine „Input HEX File“ zu wählen.

Jetzt wählen Sie Ihr Programm „rs232.hex“ aus

Klicken Sie im Abschnitt „Flash“ auf den Button <Program> Ihr Programm wird in den Microcontroller ge-schrieben.

Page 32: Remotely Controlled Laboratory

32

Kommunikation von PC und Interface Ab jetzt führt Ihr Microcontroller das soeben geschriebene Programm aus. Er wartet also auf Eingaben über die serielle Schnittstelle. Zur Kommunikation zwischen Ihrem PC und dem Microcontroller benö-tigen Sie ein Terminalprogramm. Bei Windows ist bereits ein solches im Funktionsumfang enthalten: Start - Programme – Zubehör – Kommunikation – Hyperterminal. Auch Bascom bietet ein Terminal, welches Sie wie folgt aufrufen: Tools – Terminal emulator:

Unter Terminal – Settings stellen Sie den COM-Port Ihres PCs ein, an den Sie das Null-Modem-Kabel zum Microcontroller angeschlossen haben. Die Übertragungsrate beträgt 9600 Baud. Jetzt können Sie beliebige Texte zum Microcontroller senden und erhalten eine Antwort von diesem.

Page 33: Remotely Controlled Laboratory

33

Installation des Webservers Damit man auf Ihren PC mit einem Browser zugreifen und Ihre Internetseiten betrachten kann, benöti-gen Sie einen „WebServer“. Dies ist eine Software, welche Webseiten, die auf Ihrem PC gespeichert sind, für das Internet zugänglich macht. Wir empfehlen den Apache Webserver, bei dem es sich um ein kostenloses Produkt handelt, welches sowohl für Windows als auch für Linux erhältlich ist. Weiter-hin benötigen Sie PHP, eine Programmiersprache, die zusammen mit Apache arbeitet und den php-Programmcode in den Webseiten, der zur Ansteuerung des Interfaces notwendig ist, verarbeitet. Auch dieses Produkt ist für Windows und Linux frei erhältlich. Diese beiden Programme finden Sie im Inter-net zum Download, sowie zahlreiche Tutorials zu deren Installation. In diesem Tutorial greifen wir auf das Paket „xampp“ zurück, welches Apache und PHP (und einige weitere, hier nicht benötigte Produkte) in einem Paket vereint. Die folgenden Bildschirmfotos zeigen Ihnen schrittweise die Installation von xampp. Nach Abschluss der Installation ist ihr PC ein Webserver mit php-Unterstützung: Laden Sie die „Installer“-Version von xampp von der Seite www.apachefriends.org und starten Sie das Programm durch einen Doppelklick. Wählen Sie die Optionen entsprechend den folgenden Fotos: 1.

2.

3.

4.

5.

6.

Page 34: Remotely Controlled Laboratory

34

Nach der Installation finden Sie ein neues Symbol „xampp control panel“. Über dieses Programm kön-nen Sie die verschiedenen Module von xampp starten:

Für ein RCL muss NUR Apache gestartet werden. Sie können optional dieses Modul als „Service“ installieren (SVC anwählen). Dann werden diese bei jedem Systemstart automatisch gestartet. Falls Sie hier Ihre ersten Erfahrungen mit einem Webserver sammeln, empfehlen wir die Module „MySQL“, „FileZilla“ und „Mercury“ NICHT zu starten, da sie hier unnötige Angriffspunkte auf Ihr System über das Internet bieten würden. Sobald Apache gestartet ist, können Sie mit einen Browser unter http://127.0.0.1 auf Ihren eigenen PC zugreifen. Sie bekommen jetzt die xampp-Webseite angezeigt, die sich auf Ihrem PC im Ordner c:\xampp\xampp\htdocs befindet. Dieses Verzeichnis wird als „root“ bezeichnet, da auf alle darin be-findlichen Dateien und Unterverzeichnisse mit einem Browser über das Internet zugegriffen werden kann. Möchten Sie eine eigene Webseite erstellen, sollten Sie diese in diesem Verzeichnis ablegen. Hinweis zur Sicherheit: Es ist ratsam, dass Sie sich mit der Konfiguration von Apache und PHP vertraut machen, bevor Sie Ihren neu installierten WebServer mit dem Internet verbinden. Die Handbücher zu Apache und PHP werden von xampp auf Ihren PC installiert, zahlreiche Infos finden Sie im Internet (google nach Apa-che, PHP). Die wichtigsten Einstellungen (incl. Erklärung) für den Apache WebServer finden Sie in der Datei c:\xampp\xampp\apache\conf\httpd.conf. Die Konfiguration von PHP erfolgt über die Datei c:\xampp\xampp\apache\bin\php.ini. Beide Dateien können Sie mit einem Texteditor bearbeiten. Vor Änderungen sollten Sie eine „Sicherheitskopie“ beider Dateien anlegen.

Page 35: Remotely Controlled Laboratory

35

Aufbau eines „elementaren“ RCLs Ziel Aufbau eines über Internet fernsteuerbaren „Experiments“, bestehend aus einer Leuchtdiode und ei-nem Taster. Die Leuchtdiode soll an und ausgeschaltet werden, sowie deren Status abgefragt werden können. Der Status des Tasters soll ebenfalls auf der Webseite angezeigt werden. Voraussetzung

1. 1 LED (5mm, 2mA = LowCurrent), 1 Widerstand 1,8 kOhm, 1 Taster oder Schalter, 2 Wan-nenstecker (10polig) mit passendem Flachbandkabel und Buchsen

2. Grundversion des Interfaces + Null-Modem-Kabel + 12V D.C. Steckernetzteil 3. Bascom (Demo-Version) 4. AVR ISP-Programmer (mit 10poligem Programmierkabel) und Software AVR Studio 5. Apache+PHP und ein Texteditor

Mit den Punkte 2. – 5. sollten Sie nach Durcharbeiten der vorangegangenen Kapitel vertraut sein und die benötigte Hardware und Software einsatzbereit vorliegen. Es muss also nur noch die Anpassung der Interface-Grundversion an unser spezielles Experiment erfolgen.

Page 36: Remotely Controlled Laboratory

36

Schaltplan und Montage Sie sollten jetzt die Grundversion des Interfaces vorliegen haben, sowie eine LowCurrent LED (2mA-Typ), einen 1,8kOhm Widerstand und einen Schalter oder Taster. Empfehlenswert sind noch je 2 10polige Wannenstecker und passende Steckverbinder, sowie ca. 7cm 10poliges Flachbandkabel. Der Microcontroller ATmega16 besitzt 32 Ein-/Ausgänge, d.h. 32 Beinchen des ATmega16 können softwaregesteuert wahlweise als Ein- oder Ausgänge genutzt werden. In der Funktion als Ausgang kann dieser per Software an- bzw. ausgeschaltet werden, es liegen dann +5V bzw. 0V an. Die Ausgänge des Microcontrollers liefern nur geringe Ströme, die zum Betreiben einer LowCurrent LED (2mA) jedoch ausreichen. Benötigen Sie größere Ströme, sind zusätzlichen Bauelemente (Tran-sistor, Relais,...) zu verwenden. Mit den Details zu den I/O-Anschlüssen (=Eingänge/Ausgänge) des ATmega16 sollten Sie sich mit Hilfe des Datenblattes vertraut machen.

1K8

LED rotµC PortA.0(PIN40)

Schließen Sie die Leuchtdiode (LED) mit dem Pluspol (langes Beinchen) an PortA.0 (PIN40 oben rechts) des Microcontrollers an. An das kurze Beinchen löten Sie einen 1,8KOhm Wider-stand, dessen anderes Ende Sie mit der Masse (GND) verbinden.

Taster

µC PortA.1(PIN39)

Den Taster verbinden Sie mit PortA.1 (PIN39 = 2. Beinchen von oben rechts) und Masse (GND).

So könnte der Aufbau aussehen. Die LED mit Vorwiderstand und der Taster sind rechts neben dem Microcontroller im Lochrasterbereich aufge-baut. Sie wurden in diesem Fall mit einem Flach-bandkabel mit dem PortA verbunden. (Die drei Bauteile direkt rechts des ATmega16 werden nicht benötigt)

1

32

Draufsicht

Belegung des 10poligen Wannensteckers: 1: GND (Masse), im Foto oben links 2: +5V 3: PortA.0 4: PortA.1 ... 10: PortA.7, im Foto unten rechts

Page 37: Remotely Controlled Laboratory

37

Programmierung (Firmware) des Microcontrollers Das folgende Programm geben Sie bitte in Bascom ein und erzeugen durch compilieren (F7) eine hex-Datei. Diese Datei wird dann mit AVR Studio mittels des AVR-ISP-Programmers in den ATmega16 geschrieben. (Hinweis: die Kommentare in jeder Zeile müssen Sie nicht eingeben) Das Programm besteht aus zwei Gruppen: Die Zeilen 1-15 enthalten die Systemparameter, Variablen und Initialisierung der Ein-/Ausgänge. Im zweiten Teil ab Zeile 17 befindet sich das sogenannte „Hauptprogramm“. Hier werden die Benutzereingaben über die serielle Schnittstelle empfangen, interpretiert und die ent-sprechenden Anweisungen umgesetzt. 01 $regfile = "m16DEF.dat" 'Microcontroller ATmega16 02 $crystal = 11059200 '11.0592MHz Quarz 03 $baud = 9600 'Baudrate 04 05 '---[ Variables ]--------------------------------------------------------------- 06 Dim Rs232kommando As String * 10 'erst Befehlspuffer, dann Kommando 07 Dim Parameter As String * 10 'Parameter 08 Dim Str_pos As Byte 'Position von Leerzeichen, zur Trennung von Kommando und Parameter 09 10 '---[ Initialisierung ]--------------------------------------------------------- 11 Ddra.0 = 1 'PortA.0 als Ausgang für LED 12 Porta.0 = 0 'LED aus 13 Ddra.1 = 0 'PortA.1 als Eingang für Taster 14 Porta.1 = 1 'Pull-Up aktivieren 15 16 '---[ Main program loop ]------------------------------------------------------- 17 Do 'Start der Endlos-Schleife 18 19 If Ischarwaiting() = 1 Then 'Zeichen über RS232 empfangen? 20 Input Rs232kommando 'neues Kommando lesen 21 Parameter = "" 'Parameter initialisieren 22 Str_pos = Instr(rs232kommando , " ") 'Leerzeichen im Kommando suchen 23 If Str_pos > 0 Then 'falls Leerzeichen, dann in Kommando+Parameter zerlegen: 24 Incr Str_pos 'Str_pos soll jetzt auf 1.Zeichen des Parameters zeigen 25 Parameter = Mid(rs232kommando , Str_pos ) 'Parameter = Teilstring nach Leerzeichen 26 Parameter = Ucase(parameter) 'in Grossbuchstaben umwandeln, damit unabhängig von Schreibweise 27 Str_pos = Str_pos - 2 'Str_pos soll jetzt auf letztes Zeichen des Kommandos zeigen 28 Rs232kommando = Left(rs232kommando , Str_pos) 'Kommando = Teilstring vor Leerzeichen 29 Rs232kommando = Ucase(rs232kommando) 'in Grossbuchstaben umwandeln, damit unabhängig von Schreibweise 30 End If 31

Page 38: Remotely Controlled Laboratory

38

32 Select Case Rs232kommando 'Eventhandler: Interpretation der Kommandos 33 Case "?" : Print "Hilfe:" 'Hilfeseite anzeigen 34 Print "LED on - LED einschalten" 35 Print "LED off - LED ausschalten" 36 Print "LED? - zeigt Status der LED an" 37 Print "SW? - zeigt Status des Schalters an" 38 39 Case "LED" : If Parameter = "ON" Then 'LED schalten 40 Porta.0 = 1 41 End If 42 If Parameter = "OFF" Then 43 Porta.0 = 0 44 End If 45 46 Case "LED?" : If Porta.0 = 0 Then 'Status der LED ausgeben 47 Print "LED aus" 48 Else 49 Print "LED an" 50 End If 51 52 Case "SW?" : If Pina.1 = 1 Then 'Status des Schalters ausgeben 53 Print "Taster offen" 54 Else 55 Print "Taster geschlossen" 56 End If 57 58 Case Else : Print ">" ; Rs232kommando ; "< ungueltiger Befehl - weitere Infos mit ?" 'Info bei ungültigen Einga-ben 59 End Select 60 61 End If 62 63 Loop 'Endlos-Schleife: Springe zu "Do" 64 65 End 'wird nie erreicht!

Page 39: Remotely Controlled Laboratory

39

Erläuterungen zum Quelltext: Zeile 1-3: Diese Angaben teilen dem Compiler (Bascom) mit, welcher Prozessor eingesetzt wird, wie schnell dieser getaktet (Quarz) ist und mit welcher Übertragungsgeschwindigkeit die Kommunikation über die serielle Schnittstelle (RS232) mit dem PC erfolgen soll. Zeile 6-8: Es werden drei Variablen genutzt. Die Eingabe über die serielle Schnittstelle wird in „rs232kommando“ gespeichert. Es wird ein Text der Form „Kommando <Leerzeichen> Parameter“ erwartet, so dass die Variable „Parameter“ denselbigen aufnimmt. Die Variable „str_pos“ wird für die Trennung von Kom-mando und Parameter benötigt. Zeile 11-14: Mit dem Befehl ddrP.X (ddr = data direction) wird festgelegt, ob ein Beinchen als Ausgang (=1) oder als Eingang (=0) arbeiten soll. Der ATmega16 besitzt 32 Ein-/Ausgänge, die in vier Ports (P=A..D) zu je 8 Pins (X=0..7) unterteilt sind. ddrA.0 = 1 legt also das 1. Beinchen (Pin 0) von PortA als Ausgang (=1) fest. Mit dem Befehl PortA.0 =1 kann dieser Pin dann durch Zuweisen von 1 oder 0 an- bzw. aus-geschaltet werden. Im Datenblatt erfahren Sie, welches der 40 Beinchen des Microcontrollers wie bezeichnet wird (Pin-Belegung). Wird ein Beinchen als Eingang verwendet (ddrA.1 = 0), können Sie optional einen so genannten Pull-Up-Widerstand aktivieren (PortA.1=1) oder deaktivieren (PortA.1=0). Auch hierzu sollten Sie sich unbedingt mit dem Datenblatt vertraut machen. Zeile 17 und 63: Das „Hauptprogramm“ besteht aus einer endlos-Schleife, d.h. der Microcontroller verrichtet ununter-brochen seinen „Job“, so lange er mit Strom versorgt wird. Zeile 19-30: Falls ein Zeichen über die serielle Schnittstelle empfangen wurde, wird dieses und alle folgenden ge-lesen. Anschließend wird geprüft, ob der empfangene Text von der Form „Kommando <Leerzeichen> Parameter“ ist, so dass er gegebenenfalls in ein Kommando und einen Parameter zerlegt werden kann. Zeile 32-59: Dieser Abschnitt wird mit „Event-Handler“ bezeichnet. Hier wird auf die Kommandos (Events) reagiert und die entsprechenden Schritte ausgeführt, z.B. schalten LED, je nach Wert der Variablen „Parame-ter“ an- bzw. ausschalten. Zeile 46 und Zeile 52: In beiden Zeilen wird ein Wert eines Ports abgefragt. Unterschiedlich ist, dass in Zeile 46 der Status eines Ausgangs abgefragt wird (porta.0) und in Zeile 52 der Zustand eines Eingangs (pina.0). Die Anweisung IF porta.0 = 0 THEN prüft (hier ist „=“ ein Vergleich und KEINE Zuweisung!), ob zuletzt die LED ausgeschaltet (Zuweisung porta.0 = 0) wurde. Die Anweisung IF pina.1= 1 THEN liest den Status eines Eingangs. Hier kann festgestellt werden, ob der Eingang über den internen Pull-UP-Widerstand auf +5V liegt (pina.1 liefert 1) oder ob der Schalter den Eingang mit Masse (0V) verbindet (pina.1 lie-fert 0).

Page 40: Remotely Controlled Laboratory

40

Kommunikation zwischen PC und Interface Verbinden Sie das programmierte Interface per Null-Modem-Kabel mit der seriellen Schnittstelle Ihres PCs. Öffnen Sie anschließend das Terminal von Bascom (Tools – Terminal emulator) und stellen Sie unter Terminal – Settings die richtige Schnittstelle ein. Geben Sie „?“ im Terminal ein. Das Interface sollte jetzt mit einer Übersicht seiner Funktionen antwor-ten. Sie können nun beispielsweise mit „LED on“ die LED anschalten oder mit „SW?“ den Status des Tasters erfragen. Alternativ können Sie auch das Hyperterminal von Windows (Start – Programme – Zubehör – Kommunikation) verwenden. Dieses ist folgendermaßen zu konfigurieren:

Wählen Sie „neue Verbindung“ und geben Sie die-ser einen sinnvollen Namen. Später können Sie direkt durch Auswahl dieser Verbindung starten.

Wählen Sie den COM-Port, mit dem Ihr Interface per Null-Modem-Kabel verbunden ist.

Konfigurieren Sie die Schnittstelle auf 9600 Baud, 8 Datenbits, keine Parität, 1 Stoppbit und keine Fluss-steuerung.

Über das Terminal können Sie jetzt direkt mit Ihrem Interface kommunizieren, beispielsweise die un-terstützen Funktionen auflisten lassen.

Page 41: Remotely Controlled Laboratory

41

Webseite mit PHP Zum Ansteuern des Interfaces und letztendlich zum Bedienen des Versuchsaufbaus über das Internet wird eine Internetseite (html-Seite) benötigt, die dem Benutzer alle Bedienelemente des Experiments zur Verfügung stellt:

1. Es ist ein Button oder Link notwendig, den der Benutzer in seinem Browser anwählen kann und der die Information, dass er gedrückt wurde, an den Webserver sendet.

2. Der WebServer muss die Information, welcher Button / Link gedrückt wurde, empfangen und ein entsprechendes Kommando über die serielle Schnittstelle an das Interface senden.

Beide Schritte können in einer html-Datei zusammengefasst werden. Bitte speichern Sie den folgen-den Quellcode im Ordner c:\xampp\xampp\htdocs unter dem Namen „rcl.php“. Diese Datei ist eine html-Seite, welche PHP-Code (Zeilen 9-35) enthält. Damit Apache zwischen html-Seiten mit und ohne PHP-Code unterscheiden kann, müssen Seiten mit PHP-Code mit der Erweiterung „.php“ gespeichert werden.

Page 42: Remotely Controlled Laboratory

42

Programm-Code: 01 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 02 <html> 03 <head> 04 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 05 <title>elementares RCL</title> 06 </head> 07 08 <body> 09 <?php 10 if (isset($_POST['Kommando'])) //wurde bereits Kommando gesendet? 11 if( ! ( $handle = fopen( 'COM1:', 'w+' ) ) ) //Schnittstelle öffnen 12 13 throw new Exception( 'Can not access serial port', 2 ); //ohne Erfolg? 14 15 fwrite( $handle, $_POST['Kommando'] .chr( 13 ) ); //Befehl an Interface senden 16 switch ( $_POST['Kommando'] ) //Antwort von Interface auswerten: 17 case 'LED?': $tmp = fgets( $handle ); //Echo von Interface ignorieren 18 $antwort = fgets( $handle ); //Antwort des Interfaces 19 echo 'Antwort: '.$antwort; //Ausgabe auf Webseite 20 break; //switch verlassen 21 22 case 'SW?' : $tmp = fgets( $handle ); //Echo von Interface ignorieren 23 $antwort = fgets( $handle ); //Antwort des Interfaces 24 echo 'Antwort: '.$antwort; //Ausgabe auf Webseite 25 break; //switch verlassen 26 27 28 29 fclose( $handle ); //Schnittstelle schließen 30 31 else 32 `mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off`; //Schnittstellenparameter setzen 33 34 35 ?> 36

Page 43: Remotely Controlled Laboratory

43

37 <h3>Befehl senden:</h3> 38 <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> 39 <input type="hidden" name="Kommando" value="LED ON" > 40 <input type="submit" value="LED anschalten" > 41 </form> 42 <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> 43 <input type="hidden" name="Kommando" value="LED OFF" > 44 <input type="submit" value="LED ausschalten" > 45 </form> 46 <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> 47 <input type="hidden" name="Kommando" value="LED?" > 48 <input type="submit" value="LED abfragen" > 49 </form> 50 <form method="post" action="<?=$_SERVER['PHP_SELF']?>"> 51 <input type="hidden" name="Kommando" value="SW?" > 52 <input type="submit" value="Taster abfragen" > 53 </form> 54 </body> 55 </html>

Page 44: Remotely Controlled Laboratory

44

Erläuterungen zum Quelltext: Hier können wir nur auf einige zentrale Punkte eingehen. Zum Verständnis von html-Seiten oder PHP finden Sie im Internet zahlreiche Tutorials, Handbücher, Online-Hilfen. Empfehlenswert sind die Do-kumente „selfhtml“ und „selfphp“. Weiterhin finden Sie unter www.php.net ein ausführliches Online-Manual. Die Webseite zu unserem elementaren RCL entspricht dem „Standard“-Aufbau einer html-Seite (head,body), in den in der ersten Hälfte (Zeile 9-35) ein PHP-Programm eingefügt ist und in der zwei-ten Hälfte die Buttons implementiert sind. Das PHP-Programm wird auf dem Server jedesmal ausge-führt, sobald die Seite von einem Browser angefordert wird. Es wertet die Eingaben des Benutzers (welcher Button wurde gedürckt?) aus und kommuniziert mit dem Interface. Im Beispiel wird für jede Funktion des Interfaces ein Button mit Hilfe der Formularanweisung ( <form ...> ... </form>) erzeugt. Werden Daten per Button durch den Browser an den Server übertragen, so können diese auf dem Server mit PHP ausgewertet werden. Die übertragenen Variablen (=<input ...>Felder im html-Formular) stehen dann dem PHP-Programm als Variable unter dem Namen $_POST[’ <input name ...’] zur Verfügung. Zeile 10: In der ersten PHP-Zeile wird geprüft, ob überhaupt schon ein Button gedrückt wurde, d.h. ob die Vari-able $_POST[’Kommando’] bereits existiert. Beim ersten Aufruf der Webseite ist dies natürlich nicht der Fall, dann verzweigt das PHP-Programm in den else-Teil und konfiguriert über den mode-Befehl die serielle Schnittstelle. Dies ist nur einmal vor dem ersten Zugriff nötig. Zeile 11-29: Wurde bereits ein Button gedrückt, so wird in Zeile 11 die serielle Schnittstelle geöffnet, in Zeile 15 das entsprechende Kommando zum Interface geschickt, in den Zeilen 17-27 wird bei Anfragen an das Interface, dessen Antwort gelesen (fgets) und ausgegeben (echo). Anschließend wird in Zeile 29 die Schnittstelle wieder geschlossen. Beim Lesen vom Interface nach einem Schreibbefehl, muss ein „Dummy“-Lesebefehl erfolgen, da das Interface zuerst jede Eingabe, die es erhält, ähnlich einem Echo nochmals zurücksendet. Erst danach wird die eigentliche Antwort gesendet. (Dieses Verhalten ist für die Kommunikation per Terminal-Programm wichtig.) Zeile 38-53: Jeder Button wird als Formular definiert. Ausführliche Details finden Sie beispielsweise in der Anlei-tung selfhtml (mit google im Internet suchen). Auf einige Besonderheiten möchten wir dennoch hin-weisen: Die Zuweisung action="<?=$_SERVER['PHP_SELF']?>" bewirkt, dass sich diese Webseite beim Drücken eines Buttons selbst erneut aufruft. So ist sichergestellt, dass die gesendeten Daten vom php-Programm im oberen Teil der Webseite empfangen und ausgewertet werden, unabhängig davon, welchen Namen Sie der Datei geben. Die Zeile <input type = "hidden" name = "Kommando" value = "LED ON" > definiert einen verborgenen Button. Dadurch wird Variable „Kommando“ einge-führt, deren Wert („LED ON“) später von PHP in der Form $_POST['Kommando'] ausgewertet werden kann. Der Button <input type="submit" value="LED anschalten" > ist schließlich der sichtbare, den der Benutzer drücken kann.

Page 45: Remotely Controlled Laboratory

45

Inbetriebnahme des Webservers Unter Windows gibt es das Problem, dass der Webserver nach einem Neustart des Systems erst auf die serielle Schnittstelle zugreifen kann, wenn diese zuvor einmal mit dem Hyperterminal von Win-dows geöffnet und wieder geschlossen wurde. Deshalb müssen Sie zuerst wie oben beschrieben das Hyperterminal öffnen, eine Verbindung zum Interface herstellen und (wichtig!) diese Verbindung wie-der trennen, so dass Apache und PHP ab dann auf die serielle Schnittstelle zugreifen können.

Rufen Sie das XAMPP Control Panel auf und starten Sie Apache. Die Webseite „rcl.php“ sollte sich im Ver-zeichnis ..\htdocs befinden.

Öffnen Sie Ihren Browser und geben Sie die URL http://127.0.0.1/rcl.php ein. Sie „besuchen“ jetzt Ihren eigenen PC, d.h. Ihr Computer ist Server und Client zugleich.

So sieht die Webseite im Browser aus. Es wurde zuvor der Button „LED abfra-gen“ gedrückt. Sie können jetzt das Interface steuern und den Status von LED und Taster ab-fragen.

Page 46: Remotely Controlled Laboratory

46

Erweiterungsmodule (Relais, Motor, Schalter, Lampe) In den vorangegangenen Kapiteln haben Sie sich mit dem Microcontroller-Interface, insbesondere mit dessen Aufbau und Programmierung vertraut gemacht. Wenn Sie die dort erarbeitete Grundversion des Interfaces für die Steuerung eines von Ihnen individuell geplanten Versuchsaufbaus einsetzen möchten, muss es an die speziellen Anforderungen angepasst werden. Dieses Kapitel zeigt Ihnen einige Vorschläge zur Ansteuerung von üblichen Komponenten, die häufig beim Aufbau eines Expe-riments Verwendung finden. Alle Schaltungen sind modular konzipiert und sind darauf ausgelegt, direkt im Lochrasterfeld auf der Interface-Platine aufgebaut zu werden. Kurze BASCOM Programmsequenzen zeigen Ihnen, wie die Baugruppen angesprochen werden können Hinweis: Grundsätzlich sollten Sie immer die Datenblätter der verwendeten Bauteile lesen! Gleichstromverbraucher: Relais, Lämpchen,... Die Ausgänge des Microcontrollers dürfen nur mit kleinen Strömen (<10mA) belastet werden. Möchten Sie größere Ströme schalten, bieten sich Transistoren oder Relais an, wobei Relais selbst wieder mit einem Transistor angesteuert werden müssen. Folgende Schaltung demonstriert die Verwendung eines Transistors zum Schalten von 12V Gleich-spannung. Als Verbraucher wird ein Relais eingesetzt. Es können natürlich beliebige Verbraucher verwendet werden, beispielsweise ein Lämpchen, ein Elektromagnet oder ein Heizelement. Je nach benötigtem Stromfluss müssen unterschiedliche Transistormodelle verwendet werden. Der BC337 kann maximal 800mA schalten. Der Emitter des npn-Transistors (Ende mit Pfeilspitze) wird dazu direkt an Masse angeschlossen, der Verbraucher (hier Relais mit Schutzdiode) wird zwischen Versorgungspannung und Kollektor geschaltet. Die Basis wird über einen Schutzwi-derstand zur Begrenzung des Stromes mit einem Ausgang des Microcontrollers verbunden. Liefert der Microcontroller +5V, wird der Transistor leitend und „verbindet“ den Verbraucher mit Masse – er schaltet also den Verbraucher ein. In diesem Bei-spiel schaltet dann auch das Relais. Die Diode schützt den Transistor bei induktiven Verbrauchern (Spule, Relais, Mo-tor,...), indem sie die beim Ein- und Ausschalten entstehenden Induktionsspannungsspitzen ableitet. Bascom – Beispielprogramm zum Ein- und Ausschalten von PortA.0: ddrA.0 = 1 'Pin 0 von Port A als Ausgang (=1) schalten (ddr=datadirection) portA.0 = 1 'Pin 0 von Port A einschalten (d.h. +5V) portA.0 = 0 'Pin 0 von Port A ausschalten (d.h. Masse) Diese Schaltung spielt in der Praxis, insbesondere mit einem Relais als Verbraucher, eine sehr wichti-ge Rolle. Mit Hilfe des Relais können Sie (nahezu) beliebige Spannungen schalten, sowohl Gleich- als auch Wechselspannungen. Dadurch wird es möglich mit dem Microcontroller Netzspannungsgeräte zu betreiben. (ACHTUNG: beim Umgang mit Spannungen größer 40V besteht LEBENSGEFAHR. Ma-chen Sie sich unbedingt mit den entsprechenden Sicherheitsbestimmungen vertraut, ebenso mit den Richtlinien zur Erdung und zur galvanischen Trennung der Stromkreise) In dieser Schaltung werden also „zwei“ Schalter genutzt: Der Transistor schaltet das Relais und das Relais schaltet dann erst den eigentlichen Verbraucher (im Schaltbild nicht eingezeichnet). Durch die Verwendung des Relais erhalten Sie auch eine galvanische Trennung zwischen Microcontroller und den Geräten des Versuchsaufbaus. Dies ist insbesondere bei Fehlfunktionen oder Defekten der Ver-suchsapparatur notwendig, damit der Microcontroller auf keinen Fall mit Netzspannung (230V) in Kon-takt kommt.

+12V

10K BC337

1N4001

µC:PortA.0

Page 47: Remotely Controlled Laboratory

47

Sollen mehrere Verbraucher gesteuert werden, bietet sich der IC ULN2803A an. Er hat im Prinzip acht Transistoren inklusive Schutzdioden integriert und vereinigt somit acht der obigen Schaltungen in einem kleinen Gehäuse. Die Verbraucher sind zwischen der Versorgungspannung und den Pins 11-18 anzuschließen. Sie können über die Eingän-ge des ULN2803A (Pin 1-8) ein- bzw. ausgeschaltet werden. Die Schutzdioden sind auf Pin 10 zusammengefasst und müssen mit der Versorgungsspannung verbunden werden. Beispiel für gleichzeitigen Zugriff auf alle 8 Pins eines Ports ddrA = 255 'alle Pins von Port A als Ausgang schalten portA = &10101010 'jeden zweiten Pin von Port A einschalten (&x = Binärzahl) portA.7 = 0 'Pin 7 von Port A ausschalten PortA = 0 'alle Pins von Port A ausschalten Gleichstrom-Motor Einen Gleichstrommotor können Sie natürlich als Gleichstromverbraucher ansehen und ihn wie zuvor beschrieben betreiben. Bei Motoren ist es jedoch manchmal wünschenswert, die Drehrich-tung durch den Microcontroller zu ändern. Hierfür eignet sich der Treiber IC L293. Er kann zwei Mo-toren betreiben und diese unabhängig voneinan-der umpolen. In der gezeigten Schaltung sind die Enable-Eingänge des L293 auf „high“ gelegt, d.h. der Stromfluss durch Motor 1 wird nur noch durch den Zustand der Leitungen 1A und 2A bestimmt: (1A = 2A = 0: Motor aus, 1A = 1 und 2A = 0: Motor dreht sich, 1A = 0 und 2A = 1: Motor dreht sich entgegengesetzt). Der IC benötigt +5V als Span-nungsversorgung für sich selbst, die Stromquelle für die Motoren wird an PIN 8 (Vcc2) angeschlossen. Taster Um den Zustand eines Schalters oder Tasters durch den Microcontroller abzufragen, schließen Sie den Schalter wie gezeigt an. Der Kondensator ist optional und unter-drückt das Prellen des Tasters. Unter Prellen versteht man die Schwingung des mechanischen Kontaktes des Schalters, d.h. wenn ein Taster geschlossen wird, schließt dieser nicht sofort „endgültig“, sondern im Bereich von einigen Millisekunden nach dem Betä-tigen des Schalters wird der Kontakt mehrmals geschlossen, wieder geöffnet und wieder geschlossen. Beispiel zum Abfragen eines Eingangs: ddrA.0 = 0 'Pin 0 von Port A als Eingang schalten portA.0 = 1 'internen Pull-Up Widerstand aktivieren, d.h. an Pin0 liegen +5V an und beim Schließen des Schalters wird er auf 0V gezogen Print pinA.0 'Zustand des Eingangs Pin 0 von PortA auslesen Print portA.0 'Achtung Verwechslungsgefahr: Zustand des Pull-Up auslesen

123456789 10

1112131415161718µC: PortA.0

µC: PortA.1µC: PortA.2µC: PortA.3µC: PortA.4µC: PortA.5µC: PortA.6µC: PortA.7

+Ub

ULN28

03A

L293D

1234 5678

16151413121110

10k +5V

+UMotor (max 36V)

µC: PortA.0

µC: PortA.1

µC: PortA.2

µC: PortA.3

Motor 1 “+”

Motor 1 “-”

Motor 2 “+”

Motor 2 “-”

Kerko100nF Schalter

µC: PortA.0

Page 48: Remotely Controlled Laboratory

48

bipolarer Schrittmotor Für die Ansteuerung von Schrittmotoren gibt es zahlreiche Lösungen. Grundsätzlich muss zwischen unipolaren und bipolaren Schrittmotoren unterschieden werden. Unipolare können wie vier Gleich-stromverbraucher behandelt werden, die in entsprechender Schrittfolge an- und ausgeschaltet wer-den. Bei bipolaren Schrittmotoren müssen die beiden Spulen jedoch umgepolt werden. Sie könnten die Schaltung aus dem Abschnitt Gleichstrom-Motoren verwenden und mit einem L293 einen Schritt-motor ansteuern. Häufig wird auch eine Schaltung aus L297+L298 verwendet. Die hier vorgestellte Schaltung verwendet den TMC222 von Trinamic und ist nur für bipolare Schritt-motoren geeignet. In diesem IC sind ein eigenständiger Schrittmotorkontroller und ein Motortreiber integriert. Der TMC222 wird über I2C (von Atmel auch TWI genannt) vom Microcontroller angespro-chen und übernimmt dann „selbstständig“ die Steuerung des Schrittmotors. Ein Vorteil dieser Schal-tung ist der relativ geringe Programmieraufwand, da der TMC222 sich eigenständig um die richtige Ansteuerung des Schrittmotors kümmert: Der TMC222 unterstützt Beschleunigen und Abbremsen des Schrittmotors, Variation des Spulenstroms, Verwaltung der Motorposition uvm. Wir stellen hier ein Modul vor, welches Sie auf einer geätzten Platine aufbauen sollten und diese dann mit einer Stiftleiste auf die Interface-Platine stecken. Da hier ein SMD-Bauteil (TMC222) verwendet wird, können Sie diese Schaltung nicht direkt auf Lochrasterplatine bestücken. Wenn Sie das Herstel-len einer eigenen Platine vermeiden möchten, können Sie auch einen „SMD auf Rastermaß 2,54“ Adapter kaufen. Hierbei handelt es sich um eine Platine mit Lötaugen für entsprechende SMD-Bauteile und Bohrungen für eine Stiftleiste.

TMC2

22

Schaltplan des TMC222-Moduls

Ätzvorlage für die Platine (hier nicht maßstabs-gerecht!)

1 - TWI: SCL2 - TWI: SDA3 - A14 - A25 - B16 - B27 - VBAT8 - SW -VBAT9 - SW10 - SW -GND11 - GND

Anordnung der Bauteile (der TMC wird auf die Un-terseite gelötet)

Page 49: Remotely Controlled Laboratory

49

Das TMC222-Modul wird über zwei Leitun-gen an den Microcontroller angeschlossen. Wichtig ist hierbei, dass in diesem Fall die Anschlüsse PortC.0 und PortC.1 verwendet werden sollten, da der ATmega16 auf diesen Pins das I2C-Protokoll unterstützt. Weiterhin sind noch zwei Widerstände und die Versor-gungsspannung anzuschließen. Beim Schrittmotor ist darauf zu achten, dass eine Spule an die Anschlüsse 3 und 4, die andere an 5 und 6 angeschlossen werden.

Ansteuerung des TMC222 Moduls über I2C mit Bascom. Zum Verständnis der übertragenen Werte ist das Datenblatt des TMC222 notwendig. $regfile = "m16DEF.dat" $crystal = 11059200 $baud = 9600 '****Definitionen:**** Config Scl = Portc.0 'Taktleitung Config Sda = Portc.1 'Datenleitung Const Adress = &B11000000 'I2C Adresse des TMC222 Const GetFullstatus1 = &B10000001 'Kommando des TMC222 Const Resetpos = &B10000110 'Kommando des TMC222 Const Motorparameter = &B10001001 'Kommando des TMC222 Const Setposition = &B10001011 Dim Puffer(10) As Byte '****Programm:**** I2csend Adress , GetFullstatus1 'GetFullstatus1 (Initialisierung des TMC222) I2creceive Adress , 7 , Ack 'Daten in Puffer auslesen Puffer(1) = Motorparameter 'puffer auffüllen Puffer(2) = 255 'nicht belegt Puffer(3) = 255 'nicht belegt Puffer(4) = &B11110011 '1111:irun; 0011:ihold Puffer(5) = &B01110001 '0111:vmax; 0001:vmin Puffer(6) = &B00010000 '000:securepos(bit10-8); 1:shaft; '0000:acceleration Puffer(7) = 0 'securepos(bit7-0) Puffer(8) = &B00001100 '000:nicht belegt; 0:accshape; 11:stepmode; 00:nicht belegt I2csend Adress , Puffer(1) , 8 I2csend Adress , Resetpos 'aktuelle Position auf 0 setzen Puffer(1) = Setposition 'Motor bewegen Puffer(2) = 255 'nicht belegt Puffer(3) = 255 'nicht belegt Puffer(4) = &B01111111 'position(bit 15-8) Puffer(5) = &B11111111 'position(bit 7-0)´ I2csend Adress , Puffer(1) , 5 End

10K

10K

+12V+5V

7,8

12

10,11

3456

SchrittmotorPortC.0 (SCL)PortC.1 (SDA)

TMC222Modul