Einleitung

Dieses Buch stellt eine Schritt für Schritt Anleitung dar, mit Hilfe derer ein Reaktivlicht aufgebaut werden kann. Es beruht dabei auf dem Kochbuch. Der Anwender sollte Grundkenntnisse in der Elektronik und der Programmierung mitbringen.

Warnhinweis

Diese Anleitung erhebt keinen Anspruch auf Vollständigkeit und Richtigkeit. Jeder, der die hier angegebene Schaltung nachbaut und programmiert, tut dies auf eigene Verantwortung. Was vielen wahrscheinlich nicht klar ist: Ihr bastelt an einem offenen PC rum. Eure Schaltung ist direkt mit der Hauptplatine verbunden. Von der Einkopplung von Störungen und unangepassten Leitungswiderständen abgesehen (ist bei dieser älteren Schnittstelle nicht so wild) kann ein Kurzschluss zwischen einer Signal- und Masseleitung der parallelen Schnittstelle ernsthafte Folgen für den Rechner haben. Also sollte jeder, der keine Erfahrungen auf dem Gebiet der Elektrotechnik hat, im eigenen Interesse sich zuerst eine Tasse Tee und einen bequemen Sessel besorgen und die Anleitung komplett durcharbeiten. Die meisten Probleme lösen sich dadurch automatisch.

Bestelldaten

Hier sind die Bestelldaten der benötigten Bauteile bei Reichelt angegeben. Wer der Meinung ist, trotz der Liste Hilfe zu benötigen, darf mich gerne kontaktieren. Gegen Übernahme der Portokosten bin ich bereit, Euch die benotigten Bauteile zum Unkostenpreis zu überlassen.

Bauteil Reichelt
ATtiny 13A-PU
Sockel DIL 8-polig
ATTINY 13A-PU
GS8
Widerstand 56 Ohm
Widerstand 220 Ohm
Widerstand 1 MOhm
1/4 W 56 Ohm
1/4 W 220 Ohm
1/4 W 1 M
Kondensator 100 nF MKS-2 100N
Leuchtdiode grün 13000 mcd
Leuchtdiode weiß 18000 mcd
LED 5-13000 GN
LED 5-18000 WS
SUB-D Stecker 25 polig
Kappe für Stecker
D-SUB ST 25
KAPPE CG25G
Fotowiderstand A 905014
A 906014

Programmieradapter

Zum Überspielen des Programms auf den Microcontroller ist ein Anschluss an einen PC notwendig. Am einfachsten geschieht das Programmieren über die parallele Schnittstelle.

adapter_lpt

Programmieradapter für die parallele Schnittstelle.

X1 ist ein 25-poliger SUB-D-Stecker, der an die parallele Schnittstelle des PCs angeschlossen wird. IC1 ist der zu programmierende Microcontroller. Ferner werden noch zwei Widerstände mit dem Wert 220 Ohm benötigt. Die Versorgungsspannung erhält der Microcontroller über eine externe Spannungsquelle. Das Kabel zum PC sollte möglichst kurz und abgeschirmt sein, damit keine Störungen in die Leitungen einkoppeln. Sofern Pin 1 nicht genutzt wird und die Pins 5, 6 und 7 nicht auf feste Potentiale gezogen oder untereinander verbunden werden, kann der Programmieradapter in die Schaltung des Reaktivlichts integriert werden. So entfällt ein Umstecken des ICs bei der Programmierung.

Programmiersoftware

Für die Programmierung des Microcontrollers sind verschiedene Programme auf dem Markt. Hier wird das Programm Bascom AVR mit dem parallelen Programmieradapter benutzt. Eine kostenlose Demoversion, bei der der Codeumfang auf 4 kB begrenzt ist, ist im Internet verfügbar.

Voraussetzungen

Benötigt wird ein PC mit einer parallelen Schnittstelle (Druckerschnittstelle), der parallele Programmieradapter und die Programmierumgebung, mit der die Programme geschrieben und auf den Prozessor übertragen werden können. Die parallele Schnittstelle muss im BIOS des Rechners auf ECP+EPP (In- und Output) eingestellt werden. Hier eine Beispieleinstellung:
Onboard Parallel Port: 378/IRQ7
Parallel Port Mode: ECP+EPP
ECP Mode Ust DMA: 3
Parallel Port EPP Type: EPP1.7

Bedienung von Bascom AVR

Alle Angaben basieren auf die Programmversion 1.11.8.3. Neuere Versionen können davon abweichen.

Zu Beginn wird Bascom AVR gestartet und im Menü File mittels New ein neues Programmfenster erstellt. Danach werden der Programmieradapter und die Chip-Parameter eingestellt. Dazu wird im Menü Options der Eintrag Programmer ausgewählt. Nun wird der Reiter Compiler und darin der Reiter Chip aufgerufen. Im Drop-Down-Menü Chip wird der Eintrag attiny13.dat ausgewählt und in die darunterliegenden Felder folgende Werte eingetragen:
HW Stack = 2
Soft Stack = 8
Framesize = 24
Anschließend werden die Werte durch Klicken auf Default gespeichert.

bascomavr0

Einstellen der Chip-Parameter.

Danach wird im Reiter Programmer im Drop-Down-Menü Programmer der Eintrag Universal MCS Interface ausgewählt. Im Reiter Universal wird als Programmer WinAVR and SP12 ausgewählt. Anschließend wird der Dialog durch Klicken auf OK geschlossen.

bascomavr1

Einstellen des Programmieradapters.

Als nächstes werden die Fuse-Bits eingestellt. Dies sind Speicherzellen, die das Grundverhalten des Microcontrollers festlegen. Dazu klickt man in der Icon-Leiste auf den kleinen grünen IC-Sockel und wählt den Punkt Manual Program aus.

bascomavr2

Einstellen der Fuse-Bits.

Im sich öffnenden Dialogfenster klickt man auf den Reiter Lock and Fuse Bits. Nun liest Bascom die Einstellungen der Fuse-Bits aus dem Controller
aus und zeigt sie an.

bascomavr3

Einstellen der Fuse-Bits.

Um Veränderungen an den Fuse-Bits vorzunehmen, klickt man auf die entsprechende Zeile, in der sich das gewünschte bzw. zu ändernde Bit befindet. In dem sich öffnenden Drop-Down-Menü kann daraufhin der gewünschte Wert ausgewählt werden. Folgende Einstellungen müssen hier vorgenommen werden:

Fusebit DCBA auf 1011:Int. Osc. 128 kHz; start-up time: 14 CK + 64 ms

Fusebit E auf 1:Divide clock by 8, OFF

Bitte die Einstellungen noch einmal sehr genau kontrollieren. Ist alles richtig, rechts auf Write FS klicken. Die geänderten Einstellungen werden daraufhin in den Controller geschrieben. Anschließend wird der Quellcode des Programms geschrieben. Ist dies erledigt, erfolgt die Kompilierung. Dazu im Menü Program den Punkt Compile
auswählen. Der Compiler startet nun. Enthält das Programm Fehler, wird eine entsprechende Meldung in der Fußzeile ausgegeben.

bascomavr4

Kompilieren des Programms.

Wurde das Programm erfolgreich kompiliert, kann es auf den Microcontroller übertragen werden. Dazu wird im Menü Program auf den Punkt Send to Chip geklickt. Im sich öffnenden Fenster muss dann aus dem Menü Chip der Eintrag Autoprogram aufgerufen werden. Das zuvor kompilierte Programm wird nun in den Programmspeicher des Controllers geschrieben.
bascomavr5

Übertragen des Programms.

Aufbau

EME_Schaltplan

Schaltplan des Reaktivlichtes.

In der Mitte befindet sich der Microcontroller, links davon die Spannungsversorgung. Die Schaltung benötigt eine Spannung von 3 V. Zwei Standardbatterien in Reihe geschaltet ergeben diese Spannung. Der Pluspol muss an den Pin +, der Minuspol an den Pin - angeschlossen werden. Rechts vom IC befindet sich zum einen die Helligkeitsmessung, bestehend aus R1 und dem Fotowiderstand LDR, zum anderen die LED zur Ausgabe der Blinksignale mit dem Vorwiderstand R2.

EME_Platine_Bottom

Platine Lötseite.

EME_Platine_Top

Platine Bestückungsseite.

Ein Entwurf für eine Platine ist in der Abbildung zu sehen. Bei der Bestückung ist auf die Polung der Leuchtdiode (die abgeflachte Seite bzw. das kurze Beinchen muss zum IC zeigen) und des ICs (die Einkerbung muss zum Kondensator hin zeigen) zu achten.

Programmierung

  1	$regfile = "ATtiny13.DAT"
2 $crystal = 16000
3 $hwstack = 2
4
5 Config Adc = Single, Prescaler = Auto
6 Config Portb = &B00001000
7 Portb = 0
8 Stop Ac
9 Wdtcr = &B11010011
10 Enable Interrupts
11
12 Const Schwelle = 50
13 Const Tagschwelle = 800
14 Const Zwangsimpuls = 8
15 Dim A As Byte
16 Dim Tagzaehler As Byte
17 Dim Schlafzaehler As Byte
18 Dim Ldr As Integer
19 Dim Alt As Integer
20 Dim Merker As Integer
21
22 Do
23 Reset Watchdog
24 Powerdown
25 Start Adc
26 Ldr = Getadc(2)
27 Stop Adc
28 Merker = Ldr - Alt
29 Alt = Ldr
30 If Merker > Schwelle Then
31 Gosub Blinken
32 End If
33 If Ldr > Tagschwelle Then
34 If Tagzaehler < 255 Then
35 Tagzaehler = Tagzaehler + 1
36 End If
37 Else
38 Tagzaehler = 0
39 End If
40 If Tagzaehler > 200 Then
41 Gosub Pause
42 End If
43 Loop
44
45 Blinken:
46 For A = 0 To 10
47 Portb.3 = 1
48 Reset Watchdog
49 Powerdown
50 Portb.3 = 0
51 Reset Watchdog
52 Powerdown
53 Next A
54 Alt = 1023
55 Return
56
57 Pause:
58 Wdtcr = &B11110001
59 Reset Watchdog
60 Powerdown
61 Wdtcr = &B11010011
62 Schlafzaehler = Schlafzaehler + 1
63 If Schlafzaehler = Zwangsimpuls Then
64 Portb.3 = 1
65 Reset Watchdog
66 Powerdown
67 Portb.3 = 0
68 Schlafzaehler = 0
69 End If
70 Return
71
72 End

Das Listing zeigt den Programmcode. Dieser ist in die Programmieroberfläche zu kopieren, zu kompilieren und auf den Microcontroller zu spielen. Wie dies
funktioniert, ist weiter oben erklärt. Für die Funktionsweise des Programms ist das Kochbuch zur Rate zu ziehen. Dort ist es ausführlich erklärt.

Inbetriebnahme

Nach dem Anschließen der Batterie startet das Programm automatisch. Ist es hell, verfällt der Controller in einen Schlafmodus, in dem er sich alle 64 Sekunden mit einem einzelnen Blinken meldet. Wird es dunkel, kann die Schaltung mittels einer Lichtquelle angetriggert werden. Dann blinkt sie zehn Mal zurück.