Sie sind auf Seite 1von 36

11 WWW.EMBEDDED-PROJECTS.

NET ISSUE 11 I DEC 2011 I OPEN SOURCE


embedded-projects.net
JOURNAL
OPEN SOURCE SOFT-AND HARDWARE PROJECTS
www.embedded-proj ects.net
your own projects
[PROJECTS]
Eine Open-Source Zeitschrift
zum Mitmachen!
Softcore auf Spartan-3 FPGA
Laser-Pointer-Fernseher
AVR XMEGA Toolchain unter Linux
Transistortester im Eigenbau
Infrarotauslser fr Nikon Kamera
Rhrenradio im Nachbau
BGA-Lten mit dem Pizzaofen
Weihnachten
2
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
A
n
z
e
i
g
e
[ Editorial ] Benedikt Sauter
Einleitung
Weihnachtsausgabe 2011
Embedded Projects Journal - Ausgabe No. 11
Scwup !
...und scon wieder ist ein
Jahr vorbei. Wir freuen uns
die 11. Ausgabe des em-
bedded projects Journal
prsentieren zu knnen.
2011 war fr das Pro-
jekt Open-Source Zeit-
scrif ein sehr positives Jahr.
Denn seit diesem Jahr gibt es eine In-
ternetseite. Nac und nac erhalten wir
diverses Feedbac von Lesern. Darber
freuen wir uns immer besonders. Scict
gerne Eure Kommentare - ob positiv oder
kritisc an: journal@embedded-projects.
net
Bis letztes Jahr konnte man gar nict
genau sagen, wie of das Hef eigentlic
auc online gelesen wurde.
In der Summe sind es auf unserer In-
ternetseite in etwa 10.000 Online-Leser.
Von den Papierlesern sind es knappe 120
Spenden-Abos. Vielen Dank dafr. Wir
werden 2012 verstrkt auf Infoveranstal-
tungen das Open-Source Projekt prsen-
tieren und die 2500 Stc. Papier-Journals
weiterhin unter die Leute bringen :)
Gerne knnt Ihr uns natrlic anscrei-
ben, wenn Ihr eine Hausmesse, Tagung
oder einen Tag der ofenen Tr habt. Ent-
weder senden wir Euc Exemplare zum
Verteilen oder es kann auc jemand von
uns den Stand betreuen.
Was uns ebenfalls besonders freut ist,
dass wir 2012 hockartige Sponsoren
haben, und so immer mehr das Journal
auf eigene Beine stellen knnen.
Vielen Dank an unsere bis jetzt treuen
Sponsoren und natrlic auc an alle neu
dazu gekommenen.
Vielen Dank fr die Untersttzung an
alle Helfer! Vom Leser ber den Autor
bis zum Sponsor. Wir freuen uns auf das
neue Jahr 2012 mit Euc!
Benedikt Sauter und
das embedded projects Team
4
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] Softcore Implementierung auf Spartan-3 FPGA
ZPU
Softcore Implementierung auf Spartan-3 FPGA
Johannes Steudle (Projekt an der DHBW Mannheim)
Einleitung
Im Rahmen des Projekts stand ein Experimentierboard Spar-
tan-3 von Xilinx zur Verfgung. Das Spartan-3 ist ein Einsteiger-
board (siehe Abb. re.) mit einem XC3S200 FPGA (1), das sic auf
Grund der geringen Anzahl an BlocRAMs (12 Stk, entsprict
24 KB) nict unbedingt fr den Einsatz eines ansprucsvollen
Sofcore-Prozessors mit Peripherie eignet. Die wictigsten Kom-
ponenten fr das Projekt sind: eine PS/2- (2), eine VGA- (3), eine
RS-232-Scnitstelle (4), 8 Scalter (5), 8 LEDs (6), 4 Butons (7)
und 4 Siebensegment-Anzeigen (8), des Weiteren der SRAM auf
der Rcseite der Platine. Programmieren lsst sic das Board
bzw. der FPGA mitels eines JTAG-Adapters. Eine passende
Sofware - die Xilinx ISE Entwiclungsumgebung - lsst sic
kostenlos von Xilinx herunterladen. Fr das Projekt wurde die
Version 10.1 verwendet. Die Auswahl fel auf eine frei verfgba-
re Sofcore-CPU, die ZPU von yvind Harboe. Sie ist eine kleine
Stac-basierte 32 Bit CPU mit einem 8 Bit breiten Opcode. Sie hat
einen einfacen und bersictlicen Aufau und ist deshalb op-
timal fr die hier angestrebten Erweiterungen geeignet. Diese
Opensource Sofcore-CPU ist als VHDL-Projekt angelegt. Sehr
ntzlic ist die Mglickeit, Programme, die in C oder C++ ver-
fasst sind ber eine spezielle GCC-Toolcain (ZPUGCC) in einen
Mascinencode zu wandeln, den die ZPU direkt interpretieren
kann. So kann man die ZPU mitels C-Programmen steuern.
Verwendet wurde letztendlic deren Small-Variante.
Die ZPU funktioniert im Prinzip wie eine Zustandsmasci-
ne, die whrend der Abarbeitung im Wesentlicen die Phasen
Fetc (Befehl holen), Decode (Befehl decodieren) und Execute
(Befehl ausfhren) durcluf:
Fet: In diesem Zustand ldt die ZPU anhand des Program
Counters einen kompleten 32 Bit Wert aus dem Programm-
speicer. Hierbei wird der 32 Bit Wert ber die oberen 30 Bit
des Program Counters adressiert. Es ist zu beacten, dass der
Program Counter zwar eine Breite von 32 Bit hat, die eigent-
lice Adressbreite des Programmspeicers jedoc abhngig
von seiner Gre ist (s. u.). Dementsprecend kann eventuell
nict die volle Breite des Program Counters genutzt werden.
Decode: Da die Opcodes nur 8 Bit breit sind, wird anhand
der letzten zwei Bits des Program Counters entscieden, wel-
ce 8 Bit des 32 Bit breiten Speicerwertes dekodiert werden.
So adressiert der Program Counter letztendlic immer 8 Bits.
Dies ist hnlic einer in CPUs genutzten Pipeline. Pipelines
werden genutzt, um die Taktrate auf den Programmspeicer
zu reduzieren. Hier wrde durc den 32 Bit Speicerwert
die CPU mit einem 8 Bit breiten Opcode 4x scneller takten
knnen, als die maximale Taktrate des Speicers es erlaubt.
Realisiert ist die ZPU jedoc so, dass sie in jedem Fetc-Zyk-
lus auf den Speicer zugreif und einen 32 Bit Wert holt und
dann nur 8 Bit nutzt. Insofern ist die Speicerzugrifstaktrate
gleic der des Fetc-Zyklus.
Execute: Ab-
hngig vom
dekodierten
Opcode springt die ZPU in der Execution-Phase in verscie-
dene Zustnde, um die Instruktionen abzuarbeiten. Des Wei-
teren wird der Program Counter um Eins erhht.
Nac dem Fetc-State existiert zustzlic noc ein Fetc-Next-
State. Dies bedeutet, dass mindestens 4 Takte bentigt werden,
um einen Befehl abzuarbeiten. Bei der Taktfrequenz der ZPU
von 50 MHz ergibt dies eine maximale Frequenz von 12,5 MHz.
Die ZPU besitzt direkt untergeordnet eine BlocRAM-Einheit,
die sie als 32 Bit breiten Programmspeicer verwendet. Hierbei
handelt es sic um einen Dualport-BlocRAM: ber beide Ports
kann gleiczeitig auf die gleice Adresse screibend oder lesend
zugegrifen werden. Jedoc nict von beiden Ports gleiczeitig
auf die gleice Adresse screibend. Auer dem Programm ist
hier auc der Stac abgelegt, also auc der Datenspeicer. Der
Speicer hat im Moment eine Gre von 16 KB. Im VHDL-Code
entsprict die Struktur der ZPU einer Entity, die den ZPU Core
integriert und nac auen hin eine Wishbone-Anbindung zur
Verfgung stellt. Die Entity des ZPU Cores wiederum imple-
mentiert den Dualport-RAM.
5 8
3
4
6 7
Aufbau und Funktionsweise der ZPU
5
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Der Wishbone-Bus ist ein Opensource
Hardware Computerbus, ber den die
Einheiten einer integrierten Scaltung
miteinander kommunizieren knnen.
Wishbone ist ein logiscer Bus, er def-
niert also nict elektrisce Informatio-
nen. Statdessen defniert die Spezifka-
tion Signale, Taktzyklen und High- und
Low-Pegel. Dies mact es so einfac, ihn
in VHDL zu verwenden. Alle Si-
gnale sind dabei syncron zum
Taktsignal. Fr das Projekt wur-
de die 32 Bit Variante
des Wishbone-Bus
verwendet (32 Bit
Adress- und 32 Bit
Datenbreite).
Als Topolo-
gie wird der
Shared Bus
ve r we nde t ,
d.h. alle Teil-
nehmer sitzen
am selben
Adress- und
Datenbus und es existiert nur ein Master,
nmlic die ZPU. Sollten mehrere Slaves
angesclossen sein, wird anhand der
auf dem Adressbus liegenden Adresse
der entsprecende Slave aktiviert. Alle
Peripherie-Gerte sind als Slaves ange-
setzt. Ein Beispiel fr eine Verbindung
vom Master zu einem Slave ist in Abb. 2
zu sehen. Hierbei enthlt der Bloc Sys-
Con den Taktgenerator des FPGAs und
eine Verbindung zum Reset-Buton. Eine
Erklrung der Signale folgt in Tabelle
1. Beispiele fr ein Wishbone-Output-
Interface und Wishbone-Input-Interface
sind in Abb. 3 und Abb. 4 zu sehen. Im
Projekt wurden Scnitstellen fr die
zu Anfang des Artikels bescriebenen
Komponenten realisiert.
Auf www.opencores.org gibt es viele frei
verfgbare Peripherie-Gerte mit Wish-
bone-Scnitstelle zum downloaden. Die
Scnitstelle muss trotzdem meist etwas
angepasst werden. Sinnvoll ist es, einen
Baustein zu verwenden, der bereits funk-
tioniert, also in einem eigenen Projekt
getestet wurde. So kann man diese Feh-
lerquelle beim Anbinden scon einmal
aussclieen.
[ PROJECT ] Softcore Implementierung auf Spartan-3 FPGA
Die ZPU lsst sic
in C bzw. C++ pro-
grammieren. Zum
Erstellen der Quellcodes kann z.B.
Notepad++ verwendet werden. Zum
Kompilieren wird die spezielle ZPUGCC
Toolcain verwendet. Diese ist jedoc
fr Linux gedact. Zum Projekt stand nur
ein Windows-Recner zur Verfgung. Deswegen
wurde auf diesem Cygwin installiert und unter
Cygwin die ZPUGCC in Betrieb genommen.
Anspreen von Hardware: Die absolute Hardware-Adresse
kann ber Zeiger des Typs volatile int gesetzt werden. Als Wert
wird direkt die Adresse angegeben, auf die der Hardwaremul-
tiplexer im FPGA berprf. ber Dereferenzierung der Zeiger
lsst sic der Wert auslesen oder setzen.
Interrupts: Fr die Nutzung der Interrupts mssen diese zuerst
aktiviert werden. Ab dem Zeitpunkt der Aktivierung reagiert
die ZPU auf diese. Es ist ein Interrupt-Controller mit einem
Wishbone-Interface vorhanden. Zustzlic zu den Wishbone-
Signalen hat er Eingnge fr die Interrupts anderer Peripherie-
Gerte und einen Ausgang, um den Interrupt der ZPU zu set-
zen. Wenn ber letzteren der ZPU ein Interrupt mitgeteilt wird
und diese ihn annimmt (bzw. Interrupts aktiviert hat), sendet
der Controller ihr die Interruptnummer. Per Sofware kann
der ZPU mitgeteilt werden, was bei Aufreten eines Interrupt
mit diesem gemact werden soll. Dies bedeutet auc, dass der
Sofware-Programmierer wissen muss, welce Interruptnum-
mer welcem Peripherie-Gert zugeordnet ist. Mit 32 Bit Daten-
breite sind so maximal 32 Interrupts mglic, da jedes Bit einen
Interrupt prsentiert.
Kompilieren: Kompiliert wird der Quellcode mit ZPUGCC.
Hierbei wird eine .elf-Datei erstellt, die direkt in den BlocRAM
des FPGA geladen werden kann. Hierbei reict es, dem Compi-
ler die Haupt- C-Datei anzugeben, weitere Header, auc eigene
etc. bindet ZPUGCC automatisc mit ein und kompiliert sie.
Programmspeier der ZPU laden: Nac dem Erstellen der
.elf-Datei durc die Kompilierung muss der Inhalt in den Pro-
grammspeicer (BlocRAM des FPGA) geladen werden. Abhn-
gig von der Gre des Prozessorsystems und des verwendeten
FPGAs kann die Synthese des Systems sehr langwierig sein. Da-
mit nict fr jede nderung am Programmspeicer der Cores
das ganze System neu synthetisiert werden muss, wird von
Xilinx das Kommandozeilen-Tool Data2MEM in der Entwic-
lungsumgebung des ISE zur Verfgung gestellt. Dieses ist stan-
dardmig bei der Installation von Xilinx ISE dabei. Auerdem
spart man viel Arbeit, da man nict jedes Byte einzeln hinein
kopieren muss. Die Daten, die zur Konfgurierung eines FPGAs
bentigt werden und damit auc die Programme der Sofcores,
befnden sic in der so genannten .bit-Datei. In dieser .bit-Datei
kann Data2MEM ein altes Programm durc ein neues ersetzen.
Um diese Transformation durczufhren, bentigt Data2MEM
Informationen darber, wo Daten ersetzt werden sollen und
wie diese aufgeteilt werden. Diese Informationen werden im
BlocRAM Memory Map File angegeben. Aktuell stehen dem
Core 16 KB (4096 x 32 Bit Datenbreite) Programmspeicer zur
Verfgung, die in 8 BlocRAMs aufgeteilt werden. Neben dem
Memory Map File muss Data2MEM noc die ursprnglice .bit-
Datei und das Programm als .elf-File bergeben werden. Das
Ergebnis dieser Transformation ist die neue .bit-Datei mit ge-
ndertem Programmspeicer. Dieses wird dann auf den FPGA
geladen.
Abb. 1:
Spar-
tan-3
Board
Wishbone-Bus
Abb. 2: Wishbone-Bus
Programmierung der ZPU
1
2
6
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] Softcore Implementierung auf Spartan-3 FPGA
Links / Literatur
Abb. 4: Wishbone-Input-Interface Abb. 3: Wishbone-Output-Interface
Das Projekt an sic und eine ausfhrlice Dokumentation kann
von mir per Mail angefordert werden. Des Weiteren existiert ein
Artikel mit der Projektbescreibung, unter dem auc ein Down-
loadlink angegeben ist:
[1]htp://www.mikrocontroller.net/articles/ZPU:_Sofcore_
Implementierung_auf_Spartan-3_FPGA
[2]Xilinx Spartan-3 Starter Kit: htp://www.xilinx.com/
products/devkits/HW-SPAR3-SK-UNIG.htm
[3]User Guide: htp://www.xilinx.com/support/
documentation/boards_and_kits/ug130.pdf
[4]JTAG-Programmier-Adapter: htp://shop.trenzelectronic.de/
catalog/product_info.php?cPath=30&products_id=591
[5]Xilinx Entwiclungumgebung: htp://www.xilinx.com/
support/download/index.htm
[6]ZPU Download: htp://opensource.zylin.com/zpudownload.
html
[7]Projekt Lava (Multicore-Systeme auf FPGAs): htp://ess.
cs.tudortmund.de/EN/Researc/Projects/LavA/
[8]Diplomarbeit Mathias Meier: htp://ess.cs.tudortmund.de/
Teacing/Theses/2009/DA_Meier_2009.pdf
[9]Wishbone-Bus: htp://en.wikipedia.org/wiki/
Wishbone_%28computer_bus%29
[10]htp://kujo.cs.pit.edu/index.php/Wishbone_Interconnect
[11]htp://www.armadeus.com/wiki/index.php?title=A_
simple_design_with_Wishbone_bus
[12]Weitere Quellen s. Dokumentation
Gehen Sie bei uns Ihre eigenen Wege und
denieren Sie Ihren Aufgabenbereich selbst.
Wir bieten Ihnen echte, vielfltige Fach- und
Fhrungspositionen, z. B. als

! Entwicklungsingenieur (m/w)
Software oder Elektronik-Hardware

Standort: Karlsruhe

! Projektleiter (m/w) Elektronikentwicklung
Embedded Systems / Displayentwicklung

Standort: Ingelngen

Wachsen Sie mit uns an verantwortungs-
vollen Aufgaben in einem zukunfts-
sicheren Familienbetrieb, in einer Region,
in der auch Ihre Familie wachsen kann.
Haben wir Sie berzeugt? Dann ber-
zeugen Sie uns mit Ihrer Bewerbung.
Sie wollten nach Ihrem Abschluss
unbedingt bei einem Grounter-
nehmen arbeiten? Nun sind Sie als
einer unter vielen nur fr wenige
Details zustndig. Starre Verant-
wortlichkeiten lassen Ihnen nicht
die Freirume, die Sie von Ihrer
Position erwarten. Es wird Zeit ber
einen Wechsel zu Brkert nachzu-
denken!
Brkert ist mit 2.100 Mitarbeitern
in 35 Lndern eines der weltweit
fhrenden Unternehmen fr
Mess-, Steuer-, und Regeltechnik.
Gleichzeitig sind wir ein Familien-
unternehmen mit starken Wurzeln
und Werten. Eine seltene Kombi-
nation aus Globalitt und starken
Traditionen. Sie macht die
Faszination Brkert aus.
Keine Lust mehr
auf kleine Jobs
bei groen
Firmen?
Brkert Fluid Control Systems
Human Resources | Simone Kuner
Christian-Brkert-Strae 13-17
74653 Ingelngen
Telefon 07940/10-91212
simone.kuner@buerkert.com
www.buerkert.com
RST _ I Synchrones Resetsignal
CLK _ I Synchrones Taktsignal
ADRO0, ADR _ I0 32 Bit Adressbus
DAT _ O0, DAT _ I0 32 Bit Datenbus fr Daten
vom Master zum Slave
DAT _ I0, DAT _ O0 32 Bit Datenbus fr Daten
vom Slave zum Master
WE _ O, WE _ I WE kennzeichnet, ob der
aktuelle Buszyklus ein
Schreib- oder Lesezyklus
ist. WE ist negiert whrend
des Lesezyklus
SEL _ O, SEL _ I 4 Bit breiter Selectbus.
Jedes Bit aktiviert ein Byte
aus dem bermittelten 32 Bit
Datenwort. Beispielsweise
fr SEL _ O = 1111 sind alle
32 Bit aktiviert, fr SEL _ I
= 0011 nur die unteren 16
Bit.
STB _ O, STB _ I STB zeigt einen gltigen
Datentransferzyklus an. Wird
vom Master gesetzt, um an-
zuzeigen, dass eine gltige
Adresse auf dem Adressbus
liegt.
ACK _ I, ACK _ O ACK markiert das Ende eines
Busuyklus durch einen Sla-
ve, also Write complete oder
Read-Daten vorhanden.
CYC _ O, CYC _ I Defniert den Beginn und das
Ende eines Buszyklus. Der
Master setzt das Signal um
einen neuen Bustransfer zu
initiieren
TAGN _ O,
TAGN _ I
Der Tag-Bus wird in diesem
Projekt nicht genutzt
Tabelle 1: Signale des Wishbone-Bus
7
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Gehen Sie bei uns Ihre eigenen Wege und
denieren Sie Ihren Aufgabenbereich selbst.
Wir bieten Ihnen echte, vielfltige Fach- und
Fhrungspositionen, z. B. als

! Entwicklungsingenieur (m/w)
Software oder Elektronik-Hardware

Standort: Karlsruhe

! Projektleiter (m/w) Elektronikentwicklung
Embedded Systems / Displayentwicklung

Standort: Ingelngen

Wachsen Sie mit uns an verantwortungs-
vollen Aufgaben in einem zukunfts-
sicheren Familienbetrieb, in einer Region,
in der auch Ihre Familie wachsen kann.
Haben wir Sie berzeugt? Dann ber-
zeugen Sie uns mit Ihrer Bewerbung.
Sie wollten nach Ihrem Abschluss
unbedingt bei einem Grounter-
nehmen arbeiten? Nun sind Sie als
einer unter vielen nur fr wenige
Details zustndig. Starre Verant-
wortlichkeiten lassen Ihnen nicht
die Freirume, die Sie von Ihrer
Position erwarten. Es wird Zeit ber
einen Wechsel zu Brkert nachzu-
denken!
Brkert ist mit 2.100 Mitarbeitern
in 35 Lndern eines der weltweit
fhrenden Unternehmen fr
Mess-, Steuer-, und Regeltechnik.
Gleichzeitig sind wir ein Familien-
unternehmen mit starken Wurzeln
und Werten. Eine seltene Kombi-
nation aus Globalitt und starken
Traditionen. Sie macht die
Faszination Brkert aus.
Keine Lust mehr
auf kleine Jobs
bei groen
Firmen?
Brkert Fluid Control Systems
Human Resources | Simone Kuner
Christian-Brkert-Strae 13-17
74653 Ingelngen
Telefon 07940/10-91212
simone.kuner@buerkert.com
www.buerkert.com
8
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Einen Prinzip-Fernseher wollte ic scon immer einmal
konstruieren. Reizvoll daran ist, dass unter anderem Aspekte
der Optik, Elektronik und Mecanik zusammenfieen. Nict
das perfekte, sondern ein rein zum Experimentieren gedactes
Gert war hier das Ziel - auc volle Aufsung kein Muss. Der
Fernseher sollte mit Transistoren aufgebaut sein, keine teuren
Komponenten bentigen und ohne Vakuum, Hocspannung,
Pixel-Matrix auskommen. LASER-Pointer sind mitlerweile rect
billig geworden. Sollte da nict etwas mit bewegten Spiegeln zu
macen sein? Eine Internet-Suce bringt Beispiele realisierter
Bauformen zutage - z.B. unter dem Begrif mecanisces Fern-
sehen: Spiegelrad Weiller (1889), Spiegelscraube Okolicsanyi
(1927), Spiegelkranz Mihaly (1933), Scneider TV (1993).
Verwendete Teile aus dem Computerbereich:
1. Difusionsfolie aus einem Notebook-Display
2. Motor mit Hexagonspiegel aus einer Drucker-Laser-Einheit
3. Schrittmotor aus einem Drucker
4. Festplattenmotor als Lager und Sensor
5. Antriebslager aus Floppylaufwerk
6. LASER-Pointer
[ PROJECT ] Experimenteller Laser-Pointer-Fernseher
Experimenteller Laser-Pointer-Fernseher
Wenn man den Raum abdunkelt, kann man fernsehen
Georg Zimmermann < Zimmermann@Biologie.Uni-Osnabrueck.de >
Meine Motivation
Das eigentlice Display besteht
aus einer Difusionsfolie aus
einem Notebook-Display. Der
Lictstrahl eines LASER-Pointers
erzeugt das Bild, indem dieser
mit der Helligkeitsinformation
aus dem Videosignal moduliert und durc bewegte Spie-
gel vertikal und horizontal abgelenkt wird (Abb. 2). Dies
ist vergleicbar mit der Bilderzeugung beim Rhrenfernseher
durc Modulation und Ablenkung des Elektronenstrahls.
Das Ergebnis
Abb. 1: Das Ergebnis:
Breite x Hhe = ca.
(9cm x 7cm)
Raumbedarf des Aufaus: Breite x Tiefe x Hhe = 120 cm x 50 cm x 50 cm
Abstand LASER-Drucker-Hexagonspiegel <-> Spiegeltrommel : ca. 35 cm
Winkel des Hexagonspiegels zur Waagerechten: ca. 30
Ohne Zylinderlinse (Bild unter Das Ergebnis (Abb. 1)):
Bild - Breite x Hhe ca. (9 cm x 7 cm)
Abstand Spiegeltrommel <-> Displayfolie: ca. 5 cm
Beispiel mit Zylinderlinse:
Bild - Breite x Hhe: ca. (14 cm x 11 cm)
Abstand Spiegeltrommel <-> Zylinderlinse: ca. 5 cm
Abstand Trommel <-> Displayfolie: ca. 31 cm
Abb. 2: Der Ge-
samtaufbau
9
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
To the Roots - Anschalten, Hochfahren und Zuschalten des Synchronsignals
Nac dem Anscalten luf der Motor fr die vertikale Ablen-
kung an und geht selbststndig in den Syncronlauf (250 RPM).
Der Motor fr die horizontale Ablenkung luf kurz nac dem
Einscalten mit einer konstanten, geringen Drehzahl - wenn
nict, hilf gefhlvolles Anstoen. Dann ist er zum Hocfahren
bereit. Durc das Sclieen eines weiteren Scalters wird der
Motor fr die horizontale Ablenkung in die Nhe des Fangbe-
reics hocgefahren. Die Gescwindigkeitszunahme (Laden ei-
nes Kondensators) ist so bemessen, dass der Motor dem immer
scneller werdenden Drehfeld noc folgen kann. Wenn der Mo-
tor warmgelaufen ist, dreht man ihn mit einem Potentiometer
in den Fangbereic. Dann kann das Horizontal-Syncronsignal
zugescaltet werden. Der Motor scwingt sic ein (Drehzahl
= 19531.25 RPM), und das Bild kommt zum Stehen (Wie ruhig
das Bild ist, hngt unter anderem davon ab, ob der Motor die
Betriebstemperatur erreict hat, wie gut die Controllerfrequenz
im Syncron-Bereic liegt, u.a. ...).
Lets do Retronik (Retro-Elektronik)
Alle Scaltungen sind diskret realisiert (nur Transistoren, Dio-
den, Widerstnde, Kondensatoren und Spulen). Auc sind die-
se nict mit Platinen aufgebaut, sondern die einzelnen Bauteile
sind mit verzinktem Draht - dieser ist gut ltbar - verbunden,
und zwar so, dass jede Scaltung einem gezeicneten Scaltbild
sehr nahe kommt. Die Absict: Stromverlufe bzw. Spannungs-
zusammenhnge knnen so sehr gut berscaut und auc ein-
zelne Bauteile leict ab- und angeltet werden. Es geht eben
nict um Perfektion, sondern ausdrclic um die grtmg-
lice Bastelfreiheit. Eine weitere Herausforderung war, fr jede
der hier enthaltenen Aufgabenstellungen die einfacste noc
funktionierende Lsung zu fnden - mit so wenig Bauteilen wie
irgend mglic. Dadurc kommt jede Scaltung jeweils auc ei-
ner Prinzipscaltung so nahe, wie es nur geht, was dem
Verstndnis sehr und der Experimentierfreudigkeit so-
wieso entgegenkommt. Dementsprecend wurden auc
nur zwei Transistortypen verwendet, die Komplemen-
trpaare BC547B/BC557B und TIP120/TIP125.
Billig-LASER-Pointer (rot), Befestigung dreh- sowie hhenver-
stellbar; 1 LASER-Pointer -> 1/8 Aufsung vertikal (Abb. 3).
Optional: Erhhung der Aufsung und Intensitt durc Ver-
wendung mehrerer LASER-Pointer, im 120 -Kreisbogen je um
15 versetzt:
2 LASER-Pointer -> 1/4 Aufsung vertikal
8 LASER-Pointer -> volle Aufsung vertikal
Die einzelnen LASER-Pointer so zu justieren, dass alle Zeilen
rictig liegen, erfordert allerdings viel Fingerspitzengefhl.
Eine entsprecende feinmecanisce Untersttzung zu konstru-
ieren ist eine interessante Aufgabe scon fr sic. Fr den An-
fang empfehlt sic jedenfalls erstmal das Handling mit einem
LASER-Pointer
Video-Signal: gelbe Leitung links
Kontrasteinstellung: Poti Mite links
Helligkeitssteller fr zwei LASERPointer
[ PROJECT ] Experimenteller Laser-Pointer-Fernseher
Abb. 4: Videosignal-Verstrker
Abb. 3: Laserpointer
Motor mit Hexagon-Spiegel aus
Drucker-LASER-Einheit;
Elektronik entfernt, da
nict bentigt
Abb. 5: Horizontalab-
lenkung - Motor und
Spiegel
Die Komponenten
10
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
(1) Horiz.-Sync.-
Separator, Sync.-
Z u s c h a l t e r ,
Rechteckoszi l-
lator, Video-Si-
gnal: graue Lei-
tung oben links
(2) Dekoder
(3) H-Brce
(4) Zuscaltung-
Hochfahr-Kon-
densator und
Drehzahl-Fein-
tuning
Scritmotor aus
Drucer (Abb. 7)
Mi krosc hr i t t be-
trieb (Sin./Cos.) mit
Phasenscieber
Indirekte mecanisce Kopplung mit
Scraubenfeder
Abb. 8: Horizon-
tal-Ablenkung -
Controller
Trommel mit 12 Spiegeln (Eigenbau, Abb. 6)
Lnge 9 cm, Durcmesser 6 cm
Lagerung rects: Antriebslager aus Floppylaufwerk
Lagerung links: Festplatenmotor und gleiczeitig Sensor. Die An-
sclsse dieses Motors liefern, da er hier Generator spielt, Informa-
tionen ber z.B. Drehzahl, Laufruhe oder die Syncronitt mit dem
Videosignal - am Oszilloskop scn anzuscauen.
Abb. 6:
Vertikal-
Ablenkung
- Spiegel
Abb. 7:
Vertikal-
Ablenkung
- Antrieb
4
1
2
3
11
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] Experimenteller Laser-Pointer-Fernseher
Optional Zylinderlinse fr greres Bild (Abb. 10)
Eine Abstandsvergrerung zwiscen Displayfolie und Trommel ergibt ein greres
Bild. Hierbei muss allerdings das Hhen- Breitenverhltnis durc eine Zylinderlinse
angepasst werden. Da der LASER-Strahl durc die Zylinderlinse eine Konvergenz er-
fhrt, entsteht fr ihn hinter der Linse ein Focus. Der Maximalabstand (=maximale
Bildgre) liegt damit im Focus des LASER-Pointer-Strahls, in grerem Abstand wird
das Bild unscarf. Beeinfussen lsst sic die Focuslage durc Verstellen des Kollima-
tors im LASER-Pointer. Ein Kompromiss zwiscen Bildscrfe und Bildgre ergibt
etwa eine 1.5-face bis maximal doppelte Gre des Bildes unter Das Ergebnis.
Wassergefllte Zylinderlinse, Dice ca. 4 cm, Hhe ca. 8 cm
Plane Seite aus Plexiglas
Gekrmmte Seite aus Radierfolie, Form per Nherungsrecnung ermitelt (Ellipsen-
form) -> Ausdruc als Vorlage,
Aluminiumbnder handgebogen, eins innen, eins auen,
Radierfolie zwiscen den beiden Aluminiumbndern in Form gehalten, verscraubt
Dictungsmitel: Silikon
Abb. 9: Vertikalablenkung - Controller
Abb. 10: Wassergefllte Zylinderlinse
Video-Signal -> rote Klemme
ganz links
Vert.-Sync.-Separator, Rect-
ecoszillator, Impulsformer,
Gegentaktverstrker
Literatur / Links
[1]Weiterfhrende Informationen direkt vom Autor: zimmermann@biologie.uni-osnabruec.de
[2]Webseite im Aufau: www.mightbemoving.de
[3]Umfassender berblic ber die Fernsehgescicte: htp://fernsehmuseum.info/gescicte01.html
12
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] AVR Xmega Toolchain
AVR Xmega Toolchain
Erfahrungsbericht und Zusammenfassung
Christian Rother
AVR Xmega Toolchain
Um eigene Programme fr den XMEGA
unter Linux zu kompilieren sind binu-
tils, avr-gcc und avr-libc unerlsslic.
Auc wird mit hoher Wahrsceinlickeit
die Sofware avrdude bentigt, um da-
mit, in Kombination mit einem Program-
miergert, den XMEGA zu Programmie-
ren. Diese Sammlung von Tools wird hier
im Folgenden als Toolcain bezeicnet
und dieser Artikel bescreibt, wie diese
kompiliert werden knnen. Aber genug
der einfhrenden Worte...
Die Vorbereitungsschritte
GNU-Binutils
Der GNU-GCC Kompiler
Dieser Artikel ist aus einer Zusammenfassung entstanden und stellt meine gesammelten Erfahrungen dar. Diese knnen dem einen
oder anderen vielleicht als Hilfestellung dienen, sollte er sich dafr entscheiden, sich selbst eine Toolchain zu erstellen. Der Artikel
stellt keinerlei Ansprche auf Vollstndigkeit.
Den Anfang macen wir mit mit den
GNU-Binutils. Die GNU-Binutils stellen
eine Sammlung von Programmierwerk-
zeugen fr die Manipulation von Objekt-
code in Objektdateien bereit. Wir Holen
uns die Binutils 2.20.1, da fr die hhere
Version noc keine Patces bereitstehen.
[ $ cd ~/toolchain ]
$ wget ftp://ftp.gnu.org/gnu/
binutils/binutils-2.20.1.tar.
bz2
$ tar xvf binutils-2.20.1.tar.
bz2
$ cd binutils-2.20.1
Die Atmel Patces knnen in rictiger
Reihenfolge mit nacfolgender Kom-
mandozeile angewendet werden:
$ fnd ../ -name *binutils*.
patch | sort | while read X;
do patch -p0 < $X; done
Dies sollten - von kleinen Ofsets mal
abgesehen - keine Probleme geben. So
dass wir mit der Erstellung eines Objekt-
verzeicnisses weitermacen knnen.
Diese von den Binutils Programmierern
empfohlene Bauweise soll unsere Source
Dateien vor Verunreinigung sctzen:
$ mkdir obj-avr
$ cd obj-avr
Nun Knnen wir confgure anscmei-
en, um ansclieend mit einem make
den Bauprozess zu starten.
$ ../confgure --target=avr
--prefx=$PREFIX --disable-
nls
$ make
Wenn dies alles Funktioniert hat knnen
wir nun die Dateien, im ber PREFIX
mitgegebenen Verzeicnis, installieren.
Fr make install bentigen wir Root
Recte, deshalb lautet der Befehl:
$ sudo make install
Der ncste Scrit ist der GNU-GCC.
Die Vorgehensweise ist nahezu Identisc
mit der Vorgehensweise bei den Binu-
tils. Hier sollte angemerkt werden, dass
man sic einiges an Donwload- und Bau-
zeit sparen kann, indem man sic nict
das Gesamtpaket GCC sondern nur den
GCC-Core herunterldt. Dieser ist fr
die meisten Anwendungen vollkommen
ausreicend. Hier wird nun aber im Fol-
genden vom Gesamtpaket ausgegangen.
Die Scrite drfen sic nur marginal
untersceiden.
$ cd ~/toolchain
$ wget ftp://ftp.gnu.org/gnu/
gcc/gcc-4.5.1/gcc-4.5.1.tar.
Wir legen im Benutzerverzeicnis einen
Ordner Namens toolcain an und betre-
ten diesen.
$ mkdir ~/toolchain
$ cd ~/toolchain
Die aktuellen Patces fr die GNU-
Toolcain holen wir uns nun von Atmel
mit nacfolgendem Befehl.
$ wget http://distribute.
atmel.no/tools/opensource/
as5-beta/avr8-gnu-toolchain-
3.2.0.255-source.zip
Wir knnen diese dann auc gleic mit
unzip entpacen.
$ unzip avr8-gnu-toolchain-
3.2.0.255-source.zip
Grundstzlic waren das die Vorberei-
tungsscrite, die wir trefen mussten.
Jetzt beginnen wir mit den einzelnen
Tools unserer Bau-Kete.
$sudo apt-get install patch
build-essential texinfo bi-
son fex libusb-dev
13
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
GNU Multiple Precision Library (GMP)
MPFR Library
MPC Library
[ PROJECT ] AVR Xmega Toolchain
AVR LIBC
Ist eine Bibliothek zum Recnen mit
Gleitkommazahlen beliebiger Genau-
igkeit. Die aktuelle Version wurde von
htp://www.mpfr.org/ heruntergeladen.
$ wget http://www.mpfr.org/
mpfr-current/mpfr-3.0.1.tar.
bz2
$ tar xvf mpfr-3.0.1.tar.bz2
$ mv mpfr-3.0.1 mpfr
bz2
$ tar xvf gcc-4.5.1.tar.bz2
$ cd gcc-4.5.1
Um den Bau des Gesamtpakets zu er-
mglicen bentigen wir noc ein Paar
Bibliotheken, welce wir in dem GCC
Unterverzeicnis des Toolcainordners
platzieren knnen. Sie werden dann au-
tomatisc mit gebaut. Es auc mglic,
diese von der Standard-Repository ihrer
Distribution herunter zu laden. Ic ziehe
es jedoc vor, die aktuellen Versionen
selbst zu bauen. Zumal wir sie dazu le-
diglic innerhalb des GCC Verzeicnis
platzieren mssen. Den Rest erledigt
dann confgure fr uns.
Die GMP ist unsere erste Bibliothek, sie
ermglict arithmetisce Funktionen fr
beliebig groe Zahlen und wird wie folgt
heruntergeladen und entpact:
$ wget ftp://ftp.gmplib.org/
pub/gmp-4.3.2/gmp-4.3.2.tar.
bz2
$ tar xvf gmp-4.3.2.tar.bz2
$ mv gmp-4.3.2 gmp
Ist eine Bibliothek zum Recnen mit
Komplexen Zahlen. Nacstehende Kom-
mandos sollten bekannt vorkommen ;) :
$ wget http://www.multipre-
cision.org/mpc/download/mpc-
0.9.tar.gz
$ tar xvf mpc-0.9.tar.gz
$ mv mpc-0.9 mpc
Nun zurc zum GCC, die Atmel Patces
werden mit nacstehender Kommando-
zeile angewandt:
$ fnd ../ -name *gcc*.patch
| sort | while read X;do patch
-p0 < $X;done
Dann bentigen wir noc einen Patc,
da sic im gcc 4.5.1 ein Fehler befndet.
Dieser Bug trgt die Nummer: 45261. Der
Patc kann unter htp://gcc.gnu.org/bug-
zilla/show_bug.cgi?id=45261 herunterge-
laden werden:
[ $ cp ~/Downloads/
gcc _ 45261 _ fx _ 2.patch . ]
Je nac Speicerort, hier im GCC Ver-
zeicnis, wird er dann wie bescrieben
angewendet:
$ patch -p1 < gcc _ 45261 _
fx _ 2.patch
Dies sollte abgesehen von einigen Ofsets
funktioniert haben, so dass wir dann mit
dem Kompilieren beginnen knnen.
Auc beim GCC erstellen wir vorerst ein
Obj-Verzeicnis:
$ mkdir obj-avr
$ cd obj-avr
Auc im ncsten Punkt sceint ein Feh-
ler enthalten zu sein, denn anders als
bei anderen Versionen, hat dieser GCC
whrend des kompilieren Probleme die
GMP Bibliothek zu fnden. Wir helfen
also ber die Parameter --with-gmp-
include=$(pwd)/gmp und --with-gmp-
lib=$(pwd)/gmp/.libs nac.
Wieder bergeben wir confgure /usr/
local/avr durc eine PREFIX Variable,
oder eben hndisc. Dann bestimmen
wir mit --target=avr unser Zielsystem.
Ansclieend deaktivieren wir dann
noc den Native Language Support
(NLS) und die Laufzeitbibliotheken fr
Stac-Smashing-Protection (SP), da
diese nict bentigt werden.
$ ../confgure --prefx=$PREFIX
--target=avr --enable-
languages=c,c++ --disa-
ble-nls --disable-libssp
--with-gmp-include=$(pwd)/gmp
--with-gmp-lib=$(pwd)/gmp/.
libs
Nun knnen wir den Bauprozess starten:
$ make
Fr das Installieren des GCC bentigen
wir wieder Root Recte, weshalb wir uns
nacfolgender Kommandozeile bedie-
nen:
$ sudo make install
Nun ic denke, die Vorgehensweise ist
bekannt. Wir holen uns zuerst die neues-
te Version, entpacen diese, betreten das
Verzeicnis:
$ cd ~/toolchain
$ wget http://download.sa-
vannah.gnu.org/releases/avr-
libc/avr-libc-1.7.1.tar.bz2
$ tar xvf avr-libc-1.7.1.tar.
bz2
$ cd avr-libc-1.7.1
Als ncster Scrit wrde nun das An-
wenden der von Atmel zur Verfgung
gestellten avr-libc Patces an der Reihe
sein. Seltsamerweise fhrt dies jedoc zu
14
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] AVR Xmega Toolchain
AVRDUDE
C auf XMEGA
Das gute alte Blinklicht ...
Kompilerfehlern. Bei Recerce auf The-
men bezogenen Mailinglisten habe ic
herausgefunden, dass die Patces nict
bentigt werden und deshalb getrost
weggelassen werden knnen. Bei die-
ser Recerce wurde ic auc auf einen
dringliceren Patc hingewiesen. Nac-
zulesen auf htps://savannah.nongnu.
org/bugs/?32698. Angewandt direkt auf
die Zieldatei, deshalb mit der Komman-
dozeile:
$ cp ~/Downloads/power.patch
.
$ patch include/avr/power.h <
power.patch
Um auf die rictigen Bibliotheken zuzu-
greifen erneuern wir die Links und den
Cace zu den Libs mit:
$ sudo ldconf g
Nun zurc zur Routine. Objektver-
zeicnis kreieren, betreten und confgu-
re starten:
$ mkdir obj-avr
$ cd obj-avr
$ ../conf gure --pref x=$PREFIX
--build=`./config.g uess`
--host=avr
Ansclieend den Bauprozess an stup-
sen mit make.
$ make
Beim Ansclieenden make install gab
es nun erneut einen Fehler. Ansceinend
unterscied sic die PATH Variable bei
Ausfhrung mit sudo von der ohne Root
Recten. Nacfolgend ist der Lsungs-
weg bescrieben, wie ic das Problem
umgehen konnte.
$ sudo -s -H
# export PATH=$PATH:/usr/lo-
cal/avr/bin
# make install
# exit
Erheblic Ereignisloser gestaltete sic der
Bauvorgang des avrdude. Die unten ge-
nannten Befehle sollten keiner weiteren
Erklrung bedrfen:
$ cd ~/toolchain
$ wget http://download.savan-
nah.gnu.org/releases/avrdude/
avrdude-5.10.tar.gz
$ tar xvf avrdude-5.10.tar.gz
$ cd avrdude-5.10
$ ./conf gure --pref x=$PREFIX
$ make
$ sudo make install
Noc ein paar Worte zu C und XMEGA.
Das Ansprecen der Register des XME-
GA untersceidet sic von dem frherer
Controller der Atmega Serie. Guter Rat
allerdings, ist noc relativ scwer zu
fnden. Natrlic dient die Documents
Spalte der Atmel Hompage als erste und
unerlsslice Anlaufstelle.
Zu fnden ist diese unter der Rubrik Pro-
ducts Microcontroller Atmel AVR 8-
and 32-bit AVR XMEGA Documents.
Sie bieten einige Anwendungsbescrei-
bungen und Codebeispiele bestimmter
XMEGA Funktionen. Der Code liest sic
aber relativ zh, wenn man wie ic ledig-
lic beispielbezogene Codestce suct,
die einem die nderungen der Register-
ansprace nher bringen.
Als besonders erfreulic fand ic dem-
zufolge die Zusammenfassung unter
dem Link: htp://www.stromfo.de/do-
kuwiki/doku.php?id=xmega-c-tutorial.
Sie stellt eine kompakte Zusammenstel-
lung dar, die gut als Nacsclagewerk
fr die ersten Gehversuce dienen kann.
Wenn auc das Kapitel USART bei Ent-
stehung dieses Artikels fehlte.
Die Dokumente Xmega A1 Device
Datasheet mit dem sclicten Na-
men doc8067.pdf (htp://www.atmel.
com/dyn/resources/prod_documents/
doc8067.pdf)
Und vor allem das Dokument Xmega A
Manual mit dem Namen doc8077.pdf
(http://www.atmel.com/dyn/resources/
prod_documents/doc8067.pdf) drfen
wohl als Nacsclagewerk jedes Pro-
grammierers dienen.
Besonders sclict und deshalb idealer Einstiegspunkt. Die includes belie ic bei der ersten Demo ganz klassisc.
#include <avr/io.h>
#def ne F _ CPU 32000000UL
#include <util/delay.h>
Die Konfguration des Oszillator stellte dann die erste Herausvorderung dar, da sic doc einiges gendert hat.
int main(void)
{
//Oszillator auf 32Mhz stellen
15
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] AVR Xmega Toolchain
Literatur / Links
[1]Atmel Patc fr Toolcain: htp://distribute.atmel.no/tools/opensource/as5-beta/avr8-gnu-toolcain-3.2.0.255-source.zip
[2]GCC: fp://fp.gnu.org/gnu/gcc/gcc-4.5.1/ gcc-4.5.1.tar.bz2
[3]Binutils: fp://fp.gnu.org/gnu/binutils/binutils-2.20.1.tar.bz2
[4]GMP Library: fp://fp.gmplib.org/pub/gmp-4.3.2/gmp-4.3.2.tar.bz2
[5]MPFR Library: htp://www.mpfr.org/mpfr-current/mpfr-3.0.1.tar.bz2
[6]MPC Library: htp://www.multiprecision.org/mpc/download/mpc-0.9.tar.gz
[7]AVR libc : htp://download.savannah.gnu.org/releases/avr-libc/avr-libc-1.7.1.tar.bz2
OSC.CTRL |= OSC _ RC32MEN _ bm;
// Warten bis der Oszillator bereit ist
while(!(OSC.STATUS & OSC _ RC32MRDY _ bm));
Mit Hilfe des Confguration Change Protection Registers sctzt Atmel den XMEGA vor unerwnscter Fehlkonfgura-
tion. Ein Screiben von 0xD8 entfernt fr 4 Taktzyklen den IO Protection Screibscutz, dann bernehmen wir unsere
nderungen mit Hilfe des Cloc Control Registers.
//Conf guration Change Protection Register
CCP = 0xD8;
//Select 32Mhz OSC
CLK.CTRL = (CLK.CTRL & ~CLK _ SCLKSEL _ gm) | CLK _ SCLKSEL _ RC32M _ gc;
Letztendlic stellen wir das Register, an dem unser Blinklict angesclossen ist, auf Ausgang und lassen die LED in einer
Endlosscleife Blinken.
PORTA.DIR = 0xFF;
while (1){
PORTA.OUTTGL = 0xFF;
_ delay _ ms(100);
}
}
16
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Jeder Bastler kennt wohl dieses Problem:
Man baut einen Transistor aus einem
Gert aus oder kramt einen aus der Bas-
telkiste. Wenn die Typenbezeicnung
zu erkennen ist (und sie einem bekannt
ist), ist ja alles in Ordnung. Of ist dem
aber nict so, und dann geht das blice
mal wieder los: Typ und Pinbelegung des
Transistors aus dem Internet oder einem
Buc heraussucen. Das nervt auf Dauer
natrlic ziemlic. Auc Transistoren im
gleicen Gehuse haben nict immer die
gleice Pin-Belegung. Zum Beispiel hat
ein 2N5551 eine andere Belegung als ein
BC547, obwohl beide ein TO92 Gehuse
haben. Wenn bei einem Transistor die
Bezeicnung nict mehr zu erkennen ist
(oder nict mal Google was dazu wei),
wird es mit konventionellen Methoden
rictig umstndlic, den Transistortypen
herauszufnden: Es knnte sic um NPN,
PNP, N-oder P-Kanal-Mosfet, etc. han-
deln. Eventuell hat das Bauteil auc noc
eine Scutzdiode intern. Das mact die
Identifzierung noc scwieriger. Durc-
probieren per Hand ist also ein rect zeit-
raubendes Unterfangen.
Warum soll man das nict per Mikrocon-
troller erledigen lassen? So ist dieser au-
tomatisce Transistortester entstanden.
[ PROJECT ] AVR-Transistortester
AVR-Transistortester
Markus Frejek
Grundstzliches
1)Automatisce Erkennung von NPN
und PNP-Transistoren, N-und P-Ka-
nal-MOSFETs, Dioden (auc Doppel-
dioden), Thyristoren, Triacs und auc
Widerstnden und Kondensatoren.
2)Automatisce Ermitlung und Anzei-
ge der Pins des zu testenden Bauteils.
3)Erkennung und Anzeige von Scutz-
dioden bei Transistoren und MOS-
FETs.
4)Ermitlung des Verstrkungsfaktors
und der Basis-Emiter-Durclass-
spannung bei Transistoren.
5)Messung der Gate-Scwellspannung
und Gatekapazitt von Mosfets.
6)Anzeige der Werte auf einem Text-
LCD (2x16 Zeicen).
7)Dauer eines Bauteil-Tests: Unter 2
Sekunden (Ausnahme: grere Kon-
densatoren).
8)Ein-Knopf-Bedienung; automatisce
Abscaltung.
9)Stromverbrauc im ausgescalteten
Zustand: < 20 nA .
Selbstleitende FETs (z. B. JFETs) wer-
den mitlerweile auc untersttzt. Bei
Leistungs-Thyristoren und -Traics kann
es auc zu Problemen kommen, wenn
der Teststrom (ca. 7 mA) unter dem Hal-
testrom liegt. MOSFETs und Transistoren
wurden aber in meinen Tests immer kor-
rekt erkannt.
Der Messbereic fr Widerstnde liegt
bei etwa 2 Ohm bis 20M Ohm, dect also
die meisten Widerstandswerte ab. Die
Genauigkeit ist aber nict sehr hoc.
Kondensatoren knnen von ca. 0,2nF bis
gut 7000F gemessen werden. Oberhalb
von rund 4000F wird die Genauigkeit
aber zunehmend sclecter. Prinzipbe-
dingt dauert die Messung groer Kon-
densatoren auc rect lange, eine Mess-
dauer bis zu einer Minute ist normal.
Features
Es empfehlt sic, den Scaltplan in ei-
nem weiteren Browserfenster zu fnen,
um die folgenden Bescreibungen nac-
vollziehen zu knnen.
Als Mikrocontroller wurde der ATMega8
gewhlt. Er verfgt ber mehr als genug
Flash und RAM. Auerdem hat er genug
Portpins und ist sehr preisgnstig. Der
Transistortester wird mit einer 9V-Bloc-
Baterie betrieben. Die 5V-Betriebsspan-
nung fr den AVR wird ganz konventio-
nell mit einem 78L05 erzeugt. Am Port B
des ATMega8 sind versciedene Wider-
stnde angesclossen: Je Transistor-Pin
ein groer (470 k) und ein kleiner (680
Ohm). Hiermit knnen zwei versciede-
ne Stromstrken auf den zu testenden
Pin gegeben werden. Die Widerstnde
sind mit ADC0 , ADC1 und ADC2 ver-
bunden. An diese Pins wird auc der
zu testende Transistor angesclossen.
Der linke Teil der Scaltung (mit den 3
Transistoren) ist fr die automatisce
Abscaltung zustndig. Dazu spter
mehr. An den ersten Pins von Port D ist
das LCD angesclossen. Es handelt sic
dabei um ein 2x16 Zeicen Text-LCD mit
HD44780-kompatiblem Controller.
Es ist zu beacten, dass die Test-Eingn-
ge keine Scutzbescaltung haben. Eine
Scutzbescaltung wrde vermutlic
auc die Messergebnisse verflscen. Es
sollten also keinesfalls Bauteile, die noc
in eine Scaltung eingebaut sind, getestet
werden. Sonst knnte der ATMega8 be-
scdigt werden.
Bezugsquelle fr Platinen: IT-WNS
(Doppelseitige Platine)
Dateien zum Selbsttzen: (Artikel-
Link, einseitige Platine)
Hardware
17
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] AVR-Transistortester
Der Test des Transistors funktioniert nac einem einfacen aber
efektiven Prinzip: Es werden zuncst mal alle secs Kombina-
tionsmglickeiten fr die Pins durcprobiert. Hierfr werden
die Pins entweder ber den 680 Ohm Widerstand auf + oder fest
auf Masse gelegt oder ganz freigelassen. Es ergeben sic folgen-
de secs Mglickeiten:
Testablauf
Abb. 1: Schaltplan mit
Abschaltung
Zustand Pin 1 Zustand Pin 2 Zustand Pin 3
1. Mglichkeit + - frei
2. Mglichkeit + frei -
3. Mglichkeit frei - +
4. Mglichkeit frei + -
5. Mglichkeit - frei +
6. Mglichkeit - + frei
Anzeige
18
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] AVR-Transistortester
Fr jede Kombinationsmglickeit wird berprf, ob zwiscen
dem + Pin und dem -Pin Durcgang herrsct. Hierfr wird mit
den ADCs die Spannung am + Pin ermitelt. Falls Durcgang
besteht und die abfallende Spannung im Bereic zwiscen 0,2 V
und 4 V liegt, wird von einer Diode zwiscen den betrefenden
Pins ausgegangen. Dieses Ergebnis wird gespeicert. Der Test
wird dadurc natrlic nict abgebrocen, da dieses Ergebnis
auc bei einem Transistor eintreten kann und wird (ein Transis-
tor hat zwei pn-bergnge, also 2 Dioden).
Falls kein Durcgang herrsct, wird der bisher frei gelasse-
ne Pin ber 680 Ohm auf Masse gelegt. Falls jetzt Durcgang
besteht, muss es sic um einen pnp-Transistor oder p-Kanal-
MOSFET handeln. In diesem Fall wird der Pin (es handelt sic
dann um die Basis) ber den 470 k Widerstand auf Masse gelegt.
Jetzt wird die Spannung zwiscen dem +Pin und -Pin (Kollektor
und Emiter) gemessen und zwiscengespeicert. Daraus kann
nacher der Verstrkungsfaktor und die rictige Anscluss-
belegung errecnet werden. Ein Transistor funktioniert nmlic
auc falsc herum (also bei einem pnp-Transistor Kollektor
auf Plus), allerdings ist der Verstrkungsfaktor deutlic gerin-
ger. Wenn hingegen immer noc kein Durcgang zwiscen
dem positiven und negativen Pin herrsct, wird der anfangs
frei gelassene Pin ber 680 Ohm auf Plus gelegt. Besteht nun
Durcgang, handelt es sic um einen npn-Transistor, einen n-
Kanal-MOSFET oder einen Thyristor/Triac. Der weitere Ablauf
entsprict dem bei pnp. Der anfangs frei gelassene Pin wird
dann allerdings nocmal hocohmig gescaltet. Wenn das Bau-
teil dann immer noc leitet, ist es ein Thyristor oder Triac.
Durc die 680 Ohm-Widerstnde ist der mglice Strom aller-
dings rect gering (max. ca. 7,4 mA). Wenn der Haltestrom des
Thyristors oder Triacs ber diesem Wert liegt, wird das Bauteil
als npn-Transistor erkannt. Das drfe bei vielen Leistungsthy-
ristoren oder -triacs der Fall sein. Eine Verkleinerung der Test-
widerstnde (fr mehr Strom) wre zwar mglic, erhht aber
auc das Risiko, sehr empfndlice Transistoren zu zerstren.
Die Untersceidung zwiscen Transistor und MOSFET ist nict
scwer: Bei einem Transistor fiet Basisstrom. Somit wird der
Basis-Anscluss zum Emiter hin gezogen. Bei einem MOS-
FET passiert das natrlic nict. Das lsst sic dann leict ber
den angesclossenen ADC ermiteln.
Zur Messung der Gate-Scwellspannung von N-Kanal-An-
reicerungs-Mosfets wird Source fest auf Masse gelegt. Drain
wird ber einen 680-Ohm-Widerstand gegen Plus gelegt und
Gate wird ber einen 470kOhm Widerstand gegen Plus gelegt.
Dann wartet der Tester, bis der Mosfet scaltet, also der Drain-
Anscluss auf logisc 0 geht. Nun wird die am Gate anliegende
Spannung gemessen. Das ist etwa die Gate-Scwellspannung.
Zur dann folgenden Messung der Gatekapazitt werden Gate,
Drain und Source fest gegen Masse gelegt. Das entldt das Gate
komplet. Dann wird das Gate ber 470kOhm gegen Plus ge-
legt, Drain und Source bleiben auf Masse. Nun wird in einer
Scleife die Zeit gemessen, die vergeht bis der Gate-Anscluss
auf logisc 1 geht. Das passiert bei rect genau 3,6V, wenn der
AVR mit stabilen 5V versorgt wird. Das sind 72% der Betriebs-
spannung. Somit ergibt sic recnerisc eine Zeitkonstante von
1,28 Tau (1,28 R*C). Da R mit 470kOhm bekannt ist, lsst sic
daraus C, also die Gatekapazitt, berecnen. Der reale Faktor
fr die Berecnung weict etwas davon ab und kann per Defne
im Sourcecode angepasst werden.
Die Messung der Gate-Kapazitt ist, wie auc die Messung der
Gate-Scwellspannung, ohnehin nict besonders genau. Fr
eine Absctzung und den groben Vergleic versciedener
Mosfets sind diese Funktionen aber braucbar. Der Ablauf der
Gate-Scwellspannungs und -Kapazittsmessung fr P-Kanal-
Anreicerungs-Mosfets ist identisc mit dem oben bescriebe-
nen Ablauf fr N-Kanal-Mosfets. Nur kehren sic alle Polatit-
ten um und die Zeitkonstante fr die Gatekapazitt ndert sic.
Fr die Messung von Widerstnden wird aus einem der inter-
nen Widerstnde (680 Ohm oder 470kOhm) und dem Prfing
ein Spannungsteiler aufgebaut. Die Spannung am Mitelpunkt
des Teilers wird gemessen, einmal mit dem 680Ohm und ein-
mal mit dem 470kOhm-Widerstand. Daraus lsst sic der Wider-
standswert des Prfings berecnen.
Dieses Messverfahren hat das Problem, dass die Genauigkeit
stark vom Widerstandswert des Prfings abhngt.
Am genauesten ist die Messung, wenn der Prfing etwa den
gleicen Widerstandswert wie einer der internen Widerstnde
hat, also 680 Ohm oder 470kOhm. Dann hat der Spannungstei-
ler ein Verhltnis von etwa 1:1. Eine kleine nderung des Wi-
derstandswerts des Prfings ndert hier die Spannung in der
Mite des Teilers rect stark.
Mit dem internen 680Ohm-Widerstand ergibt sic mit einem
600-Ohm-Prfing eine Teilerspannung von 2,34V; mit einem
800-Ohm-Prfing sind es 2,7V. Eine Erhhung des Prfings
um 33% erhht also die Spannung hier um immerhin 0,36V, er-
hht also den ADC-Wert um 74.
Bei einem 6-Ohm-Prfing dagegen sind es 0,044V in der Mit-
te des Teilers, bei 8 Ohm sind es 0,058V. Hier steigt der Wider-
standswert ebenfalls um 33%. Die Spannung in der Teilermite
erhht sic aber nur um 0,014V, was den ADC-Wert um gerade
mal 2 bis 3 erhht.
brigens wird jeder Prfings-Widerstand sowohl mit dem
470kOhm-Widerstand als auc mit dem 680Ohm-Widerstand
vermessen. In der Auswertung wird dann das genauere Ergeb-
nis verwendet, also das Ergebnis, bei dem die Teilerspannung
nher am Optimalwert von 2,5V liegt.
Der gesamte Messbereic liegt bei etwa 5 Ohm bis 910kOhm.
Im Bereic unter 20 Ohm ist die Messung sehr ungenau, Abwei-
cungen von 10-20% knnen scon vorkommen.
Nict besonders genau ist auc der Bereic von ca. 20 bis 100
Ohm. Zudem ist auc der Bereic von ca. 10-50kOhm nict ric-
tig genau, weil dafr keiner der zur Verfgung stehenden Mess-
widerstnde (680 Ohm oder 470kOhm) gut geeignet ist.
Wenn in dem Tester przise Widerstnde (Metallscict mit
<=1% Toleranz) verbaut werden, drfen +/-3% Abweicung ber
den gesamten Messbereic aber macbar sein. Damit ist die Wi-
derstands-Messfunktion natrlic keine Konkurrenz zu einem
guten Multimeter, aber durcaus passabel.
Die Messung von Kondensatoren ist von der Messung der rest-
licen Bauteile getrennt. Das bedeutet, dass sie eine eigenstn-
dige Messfunktion besitzt, die in allen 6 Pin-Kombinationen auf
das Vorhandensein eines Kondensators prf. Das ist ntig, weil
sic die Messungen sonst gegenseitig stren wrden.
Das Vorhandensein eines Kondensators wird folgendermaen
geprf: Einer der beiden Pins wird fest auf Masse gelegt, der
andere ber 470kOhm auf Masse.
... zu den Messungen
19
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] AVR-Transistortester
Das ermitelte Testergebnis wird auf dem LCD darge-
stellt. In der ersten Zeile links wird der erkannte Bau-
teiltyp angezeigt. Folgende Bauteile werden bis jetzt
erkannt:
Je nac Bauteil werden noc weitere Daten angezeigt:
Pin-Namen und Pin-Belegung
Verstrkungsfaktor hFE und Basis-Emiter-Durc-
lassspannung (bei Bipolartransistoren)
Gate-Scwellspannung und Gate-Kapazitt(bei
Anreicerungs-MOSFETs)
Durclassspannung (bisher nur bei einfacen Dio-
den, nict bei Doppeldioden u..)
Bei Transistoren: Anzeige, ob eine Scutzdiode
vorhanden ist (durc ein kleines Dioden-Symbol)
Widerstandswert bei Widerstnden und Kapazitt
bei Kondensatoren
Da bei den meisten JFETs Drain und Source gleicwer-
tig sind, knnen diese Ansclsse nict erkannt wer-
den. Es kann also vorkommen, dass Drain und Source
bei JFETs vertausct angezeigt werden.
Darstellung auf dem LCD
Abb. 2: Transistortes-
ter im Gehuse
Abb. 3: Ausfhrung
als Einschub fr ei-
nen 19-Baugruppen-
trger, versorgt ber
einen Netztrafo, ohne
Abschaltautomatik
Nac einer kurzen Zeit wird die Spannung an dem
Pin, der ber 470kOhm auf Masse liegt gemessen
und der Wert wird gespeicert. Nun wird die-
ser Pin fr 10ms ber 680 Ohm auf Plus gelegt.
Nacher wird wieder die Spannung gemessen.
Wenn sie um mindestens ca. 10mV gestiegen ist,
wird davon ausgegangen, dass ein Kondensator
vorhanden ist. Das legt auc die maximal mess-
bare Kapazitt von ca. 7350F fest (680 Ohm las-
sen an 5V 7,35mA fieen, was einen Kondensa-
tor von 7350F in 10ms um 10mV ldt).
Falls die Spannung nict hinreicend angestie-
gen ist, wird der Test mit dem Ergebnis Kein
Kondensator abgebrocen. Ist die Spannung
hingegen angestiegen, wird der Kondensator
wieder vollstndig entladen. Dann wird die
Kapazitt gemessen, genau nac dem gleicen
Prinzip wie bei der Messung der Gatekapazitt
bescrieben.
Zuncst erfolgt die Messung mit dem 680 Ohm
Widerstand. Falls die Zeit, bis der Pin umscal-
tet sehr gering ist (geringe Kapazitt), wird mit dem 470kOhm
Widerstand erneut gemessen. Falls auc da die Zeit, bis der Pin
umscaltet sehr gering war, wird die Messung abgebrocen.
Damit ist die untere Grenze des Messbereices von ca. 0,2nF
festgelegt. Das drfe ein sinnvoller Wert sein, sonst knnen Ka-
pazitten des Prfabels o.. scon flsclicerweise zur Erken-
nung eines (nict vorhandenen) Kondensators fhren.
War die Messzeit im vorgegebenen Bereic, wird der Kondensa-
tor als gefundenes Bauteil gespeicert. Die gemesene Zeit wird
mit den (per Defne festlegbaren) Faktoren in eine Kapazitt
umgerecnet, die dann in nF bzw. F angezeigt wird. Auc hier
ist die Genauigkeit nict berragend hoc, bis zu 10%
Abweicung sind mglic. Fr die ungefhre Bestim-
mung der Kapazitt ist es aber ausreicend.
Nacdem die genannten Messungen fr alle secs
Kombinationsmglickeiten der Pins gemact wur-
den, geht es an die Auswertung:
1)Bei Bipolartransistoren muss - wie gesagt, die
rictige Belegung von Kollektor und Emiter an-
hand des Verstrkungsfaktors bestimmt werden
2)Wurden bei einem Bipolartransistor drei Dioden
oder bei einem MOSFET
eine Diode gefunden,
besitzt das Bauteil eine
Scutzdiode. Das wird
durc ein kleines Dioden-
Symbol rects unten im
LCD dargestellt
3)Wenn mehrere Dio-
den, aber kein Transistor
erkannt wurden, wird die Stel-
lung der Dioden zueinander ber-
prf, um den Bauteiltyp und die
Pin-Belegung zu ermiteln (Dop-
peldiode mit Common Anode/Ca-
thode, zwei Dioden in Serie, zwei
Dioden antiparallel)
Das Ergebnis wird dann auf dem LCD
dargestellt. Dann scaltet sic der Tes-
ter nac ca. 10 Sekunden automatisc
ab.
Bauteil Display-Anzeige
NPN-Transistor NPN
PNP-Transistor PNP
N-Kanal-Anreicherungs-MOSFET N-E-MOS
P-Kanal-Anreicherungs-MOSFET P-E-MOS
N-Kanal-Verarmungs-MOSFET N-D-MOS
P-Kanal-Verarmungs-MOSFET P-D-MOS
N-Kanal-JFET N-JFET
P-Kanal-JFET P-JFET
Thyristor Thyristor
Triac Triac
Doppeldiode, gemeinsame Anode Doppeldiode CA
Doppeldiode, gemeinsame Kathode Doppeldiode CC
2 antiparallele Dioden 2 Dioden
2 Dioden in Serie 2 Dioden
einfache Diode Diode
Widerstand Widerstand
Kondensator Kondensator
20
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Eine Untersceidung zwiscen bipolaren
Kondensatoren und gepolten Elkos war
ursprnglic geplant. Elkos entladen sic
nmlic scneller, wenn sie in die falsce
Rictung aufgeladen werden. Allerdings
ist dieser Efekt bei Spannungen von 5V
und Messzeiten von ein paar 100ms fast
unmessbar gering, daher ist diese Erken-
nung nict mglic.
Am einfacsten wre es natrlic, den
AVR nac Abscluss des Tests einfac
in den Power-Down-Mode zu versetzen
und einfac per Taster beim ncsten Test
wieder aufzuwecen. Der AVR brauct in
diesem Modus unter 0,3 A. Da wrde
die Baterie fast ewig halten. Da der Tes-
ter aber stabile 5 V brauct, kommt man
um einen Spannungsregler nict herum.
Hier haben wir auc scon das Problem:
Der Spannungsregler luf munter wei-
ter, auc wenn der AVR sclf, und ver-
brauct dabei gar nict so wenig Strom:
Ein 78L05 brauct ca. 3 mA. Das wrde
die Baterie in gerade mal einer Wo-
ce leeren. Selbst der sparsame LP2950
brauct noc 75 A. Da wrde die Bate-
rie auc nur neun Monate halten. Scon
besser, aber alles andere als ideal.
Es gibt aber noc eine bessere Mglic-
keit: Den Strom mit einem pnp-Transistor
in der Plus-Leitung (T3) scalten. Hiermit
liegt der Standby-Strom bei gerade mal
~10 nA (0,01 A oder 0,00001 mA). Eine 9
V Baterie mit 500 mAh wre damit the-
oretisc erst nac ber 5000 Jahren leer.
Das sollte wohl reicen...
Bescreibung dieser Scaltung:
Im Ruhezustand wird die Basis von T3
ber den Widerstand R10 auf Plus gelegt.
Der Transistor ist damit gesperrt und die
Scaltung nict in Betrieb. Wird jetzt aber
der Taster S1 gedrct, wird die Basis von
T3 ber R7 und die BE-Strece von T2 auf
Masse gelegt. Damit leitet T3 und die
Scaltung bekommt Betriebsspannung.
Somit wird auc der AVR aktiv. Seine
erste Aktion ist es, den Portpin PD6 (Pin
12) auf Plus zu legen. Damit bekommt
der Transistor T1 Basisstrom und be-
ginnt zu leiten. Dieser lsst nun ber R7
und LED1 den Basisstrom von T3 fieen.
Der Taster kann jetzt wieder losgelassen
werden. 10 Sekunden nac Abscluss des
Tests legt der AVR die Basis von T1 wie-
der auf Masse. Damit sperrt T1, T3 erhlt
keinen Basisstrom mehr, sperrt auc und
scaltet die Betriebsspannung wieder
ab. Der Transistortester ist damit wieder
ausgescaltet. Transistor T2 leitet, wenn
der Taster gedrct ist. Er ist an PD7 (Pin
13) an dem AVR angesclossen. Damit
merkt der Controller, wenn die Taste im
Betrieb erneut gedrct wird, und star-
tet den Testzyklus neu. Das ist sinnvoll
wenn man mehrere Transistoren hinter-
einander testen mcte. Sonst msste
man jedesmal warten, bis sic der Tester
wieder automatisc abgescaltet hat (ca.
10s). R9 und C2 sollen eventuelle Strun-
gen unterdrcen. Sonst kann sic der
Transistortester auc unerwnscterwei-
se durc elektromagnetisce Strungen
einscalten. LED1 dient dazu, die Span-
nung an S1 auc im Betrieb hoc genug
zu halten um T2 aufzusteuern: Wenn T1
gescaltet ist, liegt dessen Kollektor qua-
si auf Masse. Die Spannung am Kollektor
reict dann nict mehr aus, um beim er-
neuten Drcen der Taste den Transistor
T2 zu scalten. Anstelle der LED knnen
auc zwei normale Dioden (1N4148 ..)
in Reihe benutzt werden.
Die Widerstnde R11 und R12 dienen
zum Messen der Bateriespannung. Bei
zu geringer Bateriespannung wird dann
eine entsprecende Meldung (Baterie
leer) auf dem LCD angezeigt. (Abb. 5)
In dem Thread zum Artikel wurde mehr-
fac der Wunsc geuert, den Transis-
tortester ohne die automatisce Abscal-
tung aufzubauen. Statdessen wird dann
ein einfacer Scalter verwendet. Das
spart eine ganze Menge Bauteile ein.
Die Sofware muss dafr nict gendert
werden. Taster S1 ist optional, wenn die
automatisce Abscaltung nict einge-
baut wird.. Damit kann man einen neuen
Testzyklus starten, ohne den Tester dafr
aus- und wieder einscalten zu mssen.
Wer das nict bentigt, kann ihn einfac
weglassen. Actung: Der Taster ist natr-
lic nur optional, wenn der Tester ohne
die automatisce Abscaltung aufgebaut
wird!
Automatische Abschaltung
In dem zum Download bereitstehen-
den Arciv ist eine fertig kompilierte
Firmware-Version fr den ATMega8 und
eine kleinere fr den ATMega48, sowie
der komplete Quellcode enthalten. Die
Version fr den ATMega48 hat folgende
Features nict:
Erkennung von Widerstnden und
Kondensatoren
Messung der Gatekapazitt von An-
reicerungs-Mosfets
Messung der Basis-Emiter-Spannung
von Bipolartransistoren
Fr diese Features bietet der ATMega48
einfac nict genug Platz.
Fr Selbstkompilierer: Um zwiscen
der Version fr den ATMega8 und AT-
Mega48 zu wecseln, einfac in den
Projektoptionen oder im Makefle den
AVR-Typen entsprecend ndern. ber
#ifdef-Blocs werden dann automatisc
die (vom Platz her) nur auf dem ATMe-
ga8 mglicen Features aktiviert bzw.
deaktiviert. Es wird aber dringend da-
von abgeraten, den Tester mit dem AT-
mega48 aufzubauen: Dieser Controller
ist kaum billiger als der ATMega8, und
die Firmware fr diesen wird kaum noc
weiter gepfegt, weil sie (verstndlicer-
weise) ohnehin kaum verwendet wird;
auerdem bietet der Controller auc fr
Programm-Verbesserungen gar keinen
Platz mehr.
Ic wrde es scn fnden, wenn ihr
gefundene Fehler in der Sofware oder
Verbesserungsvorsclge in den Forums-
Thread zum Artikel screibt.
Infos zur Software
Falls berhaupt nicts auf dem Display
anzeigt wird, sollten folgende Dinge
berprf werden:
Sind alle Verbindungen zum LCD
rictig angesclossen?
Sind die Fusebits des ATMega8/AT-
Mega48 rictig gesetzt (interner Os-
zillator mit 1MHz)?
Wurde die .eep-Datei ins EEPROM
Fehlersuche
[ PROJECT ] AVR-Transistortester
21
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[1]htp://www.reicelt.
de/?ARTICLE=81766 Dieses Gert hat
mic auf die Idee gebract, sowas
selbst zu bauen
[2]htp://www.mikrocontroller.net/
topic/131804 Thread zum Artikel
Hinweis: Die Entwiclung fndet jetzt in
einem SVN-Arciv stat. Dort fnden sic
auc Extras (z. B. Platinenlayouts). Wer
sicer gehen will, eine aktuelle Version
zu erhalten, sollte also entweder das Ar-
civ auscecen oder den Snapshot her-
unterladen, der maximal einen Tag alt ist.
Firmware inkl. Scaltplan und Sourceco-
de: Es sind fertig kompilierte Programme
fr den ATMega8 und ATMega48 enthal-
ten. Die Mega48-Version hat nict alle
Features, wie unter Infos zur Sofware
bescrieben (Actung: Mglicerweise
veraltet.)
Download-Site, wo die gewnscte
Display-Sprace und weitere Optionen
ausgewhlt werden knnen (empfohlene
Download-Quelle)
aktueller Arciv-Snapshot
SVN Arciv (online browsen)
SVN Arciv
[3]Von htp://www.mikrocontroller.
net/articles/AVR-Transistortester
(Kategorie: AVR-Projekte)
Links / Downloads
[ PROJECT ] AVR-Transistortester
Abb. 4: Schaltplan
ohne Abschaltung
des Controllers gefasht?
Hat das LCD einen HD44780-kompa-
tiblem Controller?
Handelt es sic mglicerweise um
ein Hoctemperatur-LCD? Diese
braucen nmlic eine negative Kont-
rastspannung.
Testweise auc mal R14 berbrcen.
Dieser Widerstand muss ohnehin an
das verwendete LCD angepasst wer-
den, um einen guten Kontrast zu er-
halten (ggf. ein Poti verwenden).
Sollte auf einem 2x16 Display nur eine
Zeile als Kltzcen dargestellt werden
und in der zweiten Zeile gar nicts, dann
ist bei Anscluss mitels Adapterkabel
die Verbindung komplet verdreht (Pin
1 der Platine also auf Pin 16 des LC-
Displays). Es kann aber auc ein Fehler
bei der Display-Initialisierung vorliegen
(abweicend von HD44780). Das sind
aber nur 2 von mehreren weiteren Mg-
lickeiten. Falls Bauteile nur mit einer
bestimmten Reihenfolge der Ansclsse
an den Test-Pins rictig erkannt werden,
ein Bauteil erkannt wird obwohl gar
keins angesclossen ist oder Daten wie
der Verstrkungsfaktor bei versciede-
nen Ansclussreihenfolgen stark von-
einander abweicen, sollte die Platine
auf Ltbrcen, sclecte Ltstellen o..
berprf werden. Zwiscen den Test-
Pins sollten auc keine Flussmitelreste
verbleiben. Flussmitel ist meist auc ge-
ringfgig leitfhig. Da die verwendeten
Teststrme sehr gering sind, kann auc
der ber das Flussmitel fieende Strom
zu einer Verflscung des Ergebnisses
fhren.
22
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Innenansict - Ja, das ist ein SOP
Controller, wo eigentlic ein
DIP Controller sein soll-
te - ic hate keine
mehr brig und der
letzte ist durc einen
kleinen Fehler gestor-
ben ;-)
Whrend eines Mo-
ments der Langeweile
habe ic mic dazu entscie-
den, eine Infrarot-Fernbedienung
fr meine Nikon Digitalkamera zu bauen.
Dabei stellte sic heraus, dass es sic dabei
um ein extrem einfaces Projekt handelt,
perfekt, wenn man einen Tag lang nicts
zu tun hat. Die Fernbedienung hat eine Rei c h-
weite von mindestens 15 - 20 Meter, mehr konnte ic bis-
lang nict testen. Die Fernbedienung besteht hauptsclic
aus einem Mikrocontroller, der per Knopfdruc mit Strom
versorgt wird. Daraufin wird eine Infrarot-LED mit einer Frequenz von ca. 38kHz
angesteuert, die ein bestimmtes Leuctmuster an die Kamera sendet. Die Fernbedie-
nung ist funktionsgleic zu Nikons ML-L3 und funktioniert somit mit einer vielzahl
von Nikon Kameras.
Trenz_Ad_69x297.indd 1 8/22/11 10:16:36 AM
A
n
z
e
i
g
e
[ PROJECT ] Infrarot Auslser
Infrarot Auslser fr Nikon
Kameras
Martin Matysiak <kaktus621@googlemail.com>
Einleitung
Fr die Fernbedienung wird nur eine
geringe Anzahl an Bauteilen bentigt.
Wer fers mit Elektroniscen Scaltun-
gen bastelt, wird vermutlic alle Bau-
teile lagernd haben. Nacfolgend eine
genaue Aufistung:
Plastikgehuse fr die Scaltung
(am besten ein Fernbedienungsge-
huse wie in Abb. 1 gezeigt)
Ein Stc Loc- oder Streifenraster-
platine
1x Atmel ATTiny13 Mikrocontroller
1x 8 MHz Quarzoszillator
1x 3V Knopfzelle (z.B. CR2032, vor-
zugsweise mit Ltfahnen)
1x Taster
1x Infrarot-LED
1x ca. 1 bis 2 Ohm Widerstand
1x 100 Ohm Widerstand
1x 10 kOhm Widerstand
1x BC547 NPN Transistor (oder qui-
valentes Modell)
2x 100 nF Kondensator
Theoretisc sollte die Fernbedienung
auc mit dem internen Oszillator funk-
tionieren. In der Praxis erwies sic der
Einsatz eines externen Quarzoszillators
allerdings deutlic zuverlssiger. Der
Scaltplan der Fernbedienung ist in
Abb. 3 zu sehen.
Hardware
Abb. 1: Platine
Vorderseite
23
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] Infrarot Auslser
Stellenausschreibungen
Auf Jobsuche?
Dann besuchen Sie unseren Online-Stellenmarkt
journal.embedded-projects.net/stellenmarkt
?
Ic werde hier kein Platinenlayout zur Verfgung stellen, da
das Layout stark von der Wahl der Bauteile und des Gehuses
abhngt. Auerdem habe ic nict erwhnt, ob ic DIP oder
SMD Bauteile verwendet habe - suc Dir einfac die Form aus,
die Dir am besten passt! Ic persnlic habe eine Miscung aus
beidem verwendet, da ic nur Bauteile verwenden wollte, die
ic bereits lagernd hate.
Schaltplan
Software
Bevor ic den eigentlicen Quellcode vorstelle, mcte ic ein
paar Worte ber das Protokoll verlieren, welces die Fernbedie-
nung einsetzt:
Das Infrarot-Signal wird mit einer Frequenz von etwa 38,4
kHz moduliert. Das bedeutet, wenn die LED an ist,
leuctet sie nict durcgehend, sondern blinkt 38400
mal in der Sekunde. Weiterhin muss die LED zwei
mal in einem ganz bestimmten Muster leucten
(mit einer Pause von 63ms), damit sie von der Ka-
mera erkannt wird. Im Quellcode nenne ic dieses
Muster burst. Glclicerweise haben sic bereits
einige Leute mit dieser Thematik befasst und das
Signal der Original-Fernbedienung genaustens ana-
lysiert. Ic habe die Daten von BigMikes Webseite [1]
genommen.
Der Quellcode fr den Mikrocontroller ist relativ simpel. Da der
Scalter einfac die Stromversorgung aktiviert und nict etwa
als digitaler Eingang agiert, ist das einzige, was der Controller
tun muss, direkt nac dem Start das rictige Muster auszuge-
ben. Diese Tatsace spiegelt sic in der extrem kurzen Haupt-
methode wieder:
int main(void) {
// Initialize port
DDRB |= (1 << IO _ IR);
burst();
_ delay _ ms(63);
burst();
while(1) {}
}
Das war einfac, nict wahr? Viel interessanter ist die burst Me-
thode:
#def ne F _ CPU 8000000UL

// DO NOT USE PB3! PIN IS USED AS CLOCK INPUT!
#def ne IO _ IR PB4

#def ne LED _ ON() PORTB |= (1 << IO _ IR)
#def ne LED _ OFF() PORTB &=~(1 << IO _ IR)

// Length of a clock in microseconds (ca.
38,4kHz)
#def ne CLOCK _ DURATION 9

// Number of clocks per data burst
#def ne BURST _ LENGTH 3088

#include<avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>

// Clock-counts at which the LED state has to
be toggled
// The values are determined by experimenting,
they work
// with a 8MHz crystal oscillator
24
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] Infrarot Auslser
const uint16 _ t thresholds[8] = {2,164, 2564,
2597, 2727, 2760, 3054, 3087};

// Sends a single data burst (two of them are
needed)
void burst() {
uint16 _ t clock = 0;
uint8 _ t current _ threshold = 0;
uint8 _ t status = 0;

while(clock++ < BURST _ LENGTH) {
if (clock == thresholds[current _ threshold])
{
status ^= 1;
current _ threshold++;
}

if (clock & status) {
LED _ ON();
} else {
LED _ OFF();
}

_ delay _ us(CLOCK _ DURATION);

LED _ OFF();
return;
}
Nun, was passiert hier?
Ein Durclauf der while-Scleife bentigt ungefhr 13 Mikro-
sekunden, wodurc die Modulationsfrequenz von 38.4 kHz er-
reict wird. Whrend jeder Iteration wird ein Zhler inkremen-
tiert. Dieser Zhler entsprict der Anzahl der bisher erfolgten
Takte. Pro Durclauf wird er mit einem Array von Scwellwer-
ten verglicen. Wird ein Scwellwert erreict, scaltet der LED
Zustand von an auf aus oder umgekehrt (wobei an wie
vorhin erwhnt Blinken mit 38.4 kHz bedeutet).
Damit die LED also wirklic leuctet, mssen zwei Bedingun-
gen gelten:
Der aktuelle Takt ist ungerade (dadurc wird das Blinken
mit Modulationsfrequenz erreict)
Der Zustand der LED ist an
Auc wenn die status Variable ein 8-bit Integer ist, verwende
ic nur das niederwertigste Bit zur Indikation des Zu-
standes. Der Zhler wird bei jedem Scleifen-
durclauf inkrementiert, das heit,
dass das niederwerigste
Bit des Zhlers bei je-
dem Durclauf zwi-
scen Null und Eins
springt. Nun kann
man einfac die bei-
den Variablen UND-
verknpfen - wenn
das Ergebnis der Ver-
knpfung eine Eins
ist, heit es, dass beide Be-
dingungen erfllt sind und
die LED leucten kann.
Links / Literatur
[1]www.bigmike.it/ircontrol
Abb. 3: Schaltplan
Abb. 2: Platine Rck-
seite im Gehuse
25
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] CMake
[ PROJECT ] Rhrenradio im Nachbau
Rhrenradio im Nachbau
Markus Musielak mars@augusta.de
Eine Kiste voll Material ...
Vor Jahren baute ic einen Stereo-Rhrenverstrker und
einen Synthesizer, den ic vor etwa einem Jahr in einem
19-Gehuse umbaute. Weil ic einem Ex-Elektronikbast-
ler eine alte Gebraucsanleitung kopierte, bekam ic eine
ganze Kiste versciedener Kleingerte und Material. Dar-
unter einige Teile aus einem SABA-Radio . Daraufin kam
mir die Idee ein Rhrenradio (siehe Abb. 1) naczubauen,
trotz Synthesizertuner, Internet- und Satellitenradio.
Als Gehuse dient eine Holzkiste aus dem Baumarkt.
Um Strstrahlungen zu vermeiden muss man im In-
neren mit Alufolie o.. auskleiden. Man kann auc
das Gehuse komplet aus Blec bauen.
Hier eine Skizze (Abb. 2), wie man es aufauen kann:
Die Bedieneinheit besteht aus einem Senderknopf auf
einem Lufdrehko (Abb. 3 rects), einem Lautstrke-
knopf, einem Vorreglerknopf fr die Giterspannung
des Miscsystems, Einscaltknopf und einem Um-
scalter fr die Frequenzbereice LW, MW und evtl.
KW (nict in der Scaltung vorhanden). Zur Betrieb-
sanzeige dienen 7V Skalenlmpcen (Abb. 3 li.). Ein
Umscalter fr die Frequenzbereice LW, MW und
evtl. KW (nict in der Scaltung vorhanden). Zur Be-
triebsanzeige dienen 7V Skalenlmpcen (Abb. 3 li.).
Die Rhren sind typisce Rundfunkrhren (Abb. 4),
die noc leict zu bescafen sein sollten. Als Aus-
steuerungsanzeige habe ic noc einen Magiscen
Fcer EM 80 gefunden (Abb. 4 re. vorne).
Die Woodware
Abb. 1: Rhrenradio Selbstbau
Abb. 3: Luft-
drehko (re.),
Umschalter
(li.), Skalen-
lmpchen (li.)
Abb. 2: Audion Kleinsuperhet Ltaufbau (Quelle Link 1)
Die Schaltung
In Abb. 8 ist der Scaltplan dargestellt. Das Netzteil
besteht aus einem umscaltbaren Netztransformator,
Gleicricter und Siebelko C32 A/B fr die Betriebsa-
nodenspannung + 235 V. Die Rhrenfden haben die
blice Heizspannung von 6,3 Volt. Fr die Vorrege-
lung der Misc- und Oszillatorrhre ECH81 R wird
noc -0,8V bis -28V bentigt, wo auc das HF der Fer-
ritantenne ankommt, um eine bersteuerung bei Orts-
sendern zu vermeiden. S1 ist der Mehrfacumscalter
zwiscen Mitel- und Langwelle mitsamt der zugeh-
rigen Filterkreise. Der Giterkreis der NF-Pentode EF86
R2 arbeitet als Diodendemodulator und ersceint
an der Anode die HF- und NF-Spannung in Abhngigkeit ihrer unter-
sciedlicen Auenwiderstnde spannungsverstrkt. L6/L7 dient als
ZF-Bandflter. Fr eine Rckopplung ist C20, C21 und L8 zustndig.
Das Nf-Signal luf dann ber R14, C26 zum Lautstrkeregler R15. Die
A
n
z
e
i
g
e
Leistungsendpentode EL84 R3 mact 4 - 5W (reict fr Zimmerlautstrke) und
geht auf den Ausgangsbertrager zum Lautsprecer. Weil Rhren hocohmige
Bauelemente sind und Lautsprecer niederohmig (blic 4 16 Ohm), bentigt
man einen Niederfrequenz-Transformator (also Ausgangsbertrger) mit guter
Bandbreite und idealerweise Lufspalt, um Verzerrungen zu vermeiden.
Abb. 4: Rh-
ren + Anzeige
EM 80
Abb. 5: Audion Kleinsuperhet Stckliste (Quelle Link 1)
27
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] Rhrenradio im Nachbau
Literatur / Links
[1]Artikel: htp://www.jogis-roehrenbude.de/
Bastelscule/Funkscau-Nostalgie-Radio/
Funkscau-Audion.htm
[2]Rhrenladen Frag Jan Zuerst: htp://www.
die-wuestens.de/dindex.htm
[3]Rhren bei Pollin: htp://www.pollin.de/shop/p/
MDk4OTk4/Bauelemente_Bauteile/Aktive_
Bauelemente/Roehren_Roehrenfassungen.html
[4]Funktionsweise von Rhren: htp://www.
elektronikinfo.de/strom/roehren.htm
Wer Lust hat jetzt mitma-
chen! Herbst und Winter
ist Zeit zum basteln. Aber
immer dran denken:
Vorsicht Hochspannung !
Und
Vorsicht Verbrennungsge-
fahr !
Abb. 6: Audion Kleinsuperhet Spulendaten (Quelle Link 1)
Abb. 8: Audion Su-
perhet Schaltplan
(Quelle Link 1)
Abb. 7: Innenaus-
bau Radio
Aktueller Status
Aktuell funktioniert das Netzteil und der Verstr-
kerteil (EL84, A und LS). In Abb. 7 sieht man die
momentane interne Verkabelung. In Abb. 5 ist die
Stcliste abgedruct und in Abb. 6 die tecniscen
Daten der Spulen.
28
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Abb. 1: Ofen mit
Steuerung
Zurc zu den Anfngen... als ic mit der Elektronik so langsam
begonnen hate, habe ic Sonntags einmal eine Adapterplatine
fr einen TQFP getzt. Natrlic wollte ic diesen direkt lten,
hate jedoc nur einen katastrophalen Ltkolben zur Hand. Was
ic jedoc komiscerweise da hate, war eine SMD-Pasten Sprit-
ze aus Kunststof. Kurzerhand habe ic eine Wurst SMD Paste
auf jeder Seite hingebazelt und das ganze ansclieend in
den Kcenofen bei 230 Grad gelegt. Man muss von auen sehr
gut auf die Ltstellen scauen. Wenn die Paste zu scmelzen
beginnt und scn um die Beincen verfiet sieht man das. So-
bald also die Paste silbern glnzt und gut verfossen ist scnell
die Ofentre zum Abkhlen fnen. Das mit dem Ofen musste
ic leider scnell wieder aufren, als herausgefunden wurde
was ic dort mace, denn die Platinen sollte
man ja nict im selben
Ofen bacen wie sei-
ne Pltzcen... Aber
diese Erfahrung,
dass das SMD-Paste Lten einfacer geht als gedact hate ic
jedoc gemact.
Auf der Suce nac einer sinnvollen Alternative fr den Lt-
kolben war mir nun klar was ic braucte. Relativ scnell bin
ic dann auf das Refow-Kit von PCB-Pool gestoen. Das ist im
Wesentlicen ein einfacer Pizza-Ofen, wie es Ihn regelmig
in jedem Supermarkt fr z.T. ab 20 bis 30 EUR gibt. Zustzlic
zum Ofen gibt es auc noc eine Steuerung. Man stect die
Steuerung in eine 230V Stecdose, stect in die Steuerung wie-
derum den Stecer des Ofens und scaltet am Ofen die Zeit-
scaltuhr auf mindestens 30 Minuten (am besten aber gleic auf
Ansclag), dann Ober- und Unterhitze (gleiczeitig) einstellen
und den Temperaturregler auf das Maximum. In den Ofen legt
man noc den Temperatursensor der Ofensteuerung, der idea-
lerweise mit Draht auf Platinenmaterial befestigt ist. Auf die-
se Weise misst man die Temperatur sozusagen genau auf der
gleicen Hhe ber der Platinenoberfce wo spter auc die
Paste an die Beincen und Kontakte der bestcten Platine
fieen soll.
Das Wesentlice ist aber beim Lten mit dem Ofen und die-
ser Steuerung nict der Ofen. Auc nict die Steuerung und
ebenfalls nict der Temperatursensor. Darauf knnte ic jetzt
wieder verzicten. Sondern das Verfahren: Ofen brutal auf 230
Grad aufeizen lassen, Platine einlegen und scauen bis das
Ltzinn scmilzt und dann scnell die Ofenklappe fnen. So
spart man sic z.B. zuncst den Temperatursensor und die
Steuerung. Das kritiscste in meinen Augen beim Lten mit
dem Ofen sind die SMD-Pastenscablonen, die SMD-Paste und
das Aufragen der Ltpaste mit einem Rakel bzw. etwas gera-
dem. Wenn man das gut heraus hat, klappt jede Platine fr we-
nige Stczahlen tadellos.
[ PROJECT ] BGA Lten mit dem Pizzaofen
BGA Lten mit dem Pizzaofen
Ein Projekt mit Vorgeschichte
Benedikt Sauter < sauter@embedded-projects.net >
Die Vorgeschichte
Seit nun ca. 8 Monaten - muss ic gestehen - nehme ic den Lt-
kolben immer seltener in die Hand. Frher habe ic komplete
Prototypen bis zur Baugre 0402 - wenn es denn sein musste
- von Hand bestct. Den meisten sage ic immer: man muss
davor keine Angst haben. Mit Ltlitze und of einer extra La-
dung Ltzinn und dem ein oder anderen krfigen Sclag auf
den Tisc um das Zuviel auc wieder loszuwerden, verhilf man
sic zu sehr guten Ltstellen. Anfang dieses Jahres hate ic
dann zum ersten Mal einen fast 100 poligen Stecer mit einem
Raster von 0,5 mm zu lten. Da hrt dann doc der Spa auf, vor
allem musste diese Scaltung auf Grund eines Aufrags laufen
und konnte Notfalls nict in der Scublade verscwinden.
Alternative zum Ltkolben ?
Lpaste auftragen
Die erste Frage stellt sic natrlic: Woher kriegt man eine
Ltpasten Scablone und was ist das berhaupt? Ganz ein-
fac, eine Ltpasten Scablone oder Pastenmaske ist ein
dnnes Blec ca. 150 um auf dem berall Lcer bzw. klei-
ne Rectece sind wo Pads von Bauteilen spter mit der Plati-
ne verltet werden sollen (siehe Abb. 2). In Eagle ist das Lay-
er 31 tcream und 32 bcream. Diese Layer sollte man ab jetzt
immer sehr gut kontrollieren. Dazu aber nacher noc mehr.
Mit dieser Vorlage (der Pastenmaske) kann man die Ltpaste auf
die Platine drucen im Prinzip ist das wie beim Siebdruc.
Man rictet die Maske scn auf den Pads der Platine aus. Dies
muss man von oben mit den Augen oder ggf. einer Lupe kon-
trollieren. Wenn alle Pads scn sictbar sind kann man die
Scablone mit Klebestreifen am oberen Rand auf einer Unter-
29
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
lage festkleben (z.B. Platinenmaterial,
Hartfaserplate von einem alten Bil-
derrahmen, etc. mindestens Din A4).
Zuvor sollte man die Platine auf der
Unterlage mit kleinen Stcen aus
gleic hohem Material wie die Pla-
tine selbst (z.B. alten Platinen, am
besten winkelfrmig), so dass diese
nict mehr verrutsct.
Ansclieend nimmt man sic die
Ltpaste. Idealerweise lagert man
diese khl und nimmt sie direkt
vor dem Lten heraus und rhrt
dann knappe 15-30 Sekunden mit
einem Spatel, bis sie scn ge-
scmeidig ist. Verteilt wird die
Paste auf einer Seite der Maske,
indem man eine dice Wurst - ca.
5-8 mm Durcmesser (siehe Abb. 5) - ber eine ganze Scab-
lonenseite unterhalb des Malerkrepps aber ber den Pads
zieht. Welce Seite man verwendet fndet man nac und nac
heraus. Of beginne ic gerne mit der Seite mit den feineren
Pads und ende bei den greren. Mancmal bietet es sic
auc an, eher von der scmaleren als von der lngeren Seite
zu beginnen, weil dann die Pasten-Wurst nict so lang sein
muss und man auerdem mit dem Rakel (einface Metallsca-
ber aus dem Baumarkt ab ca. 1 EUR - die gehen prima) besser
Druc auf einer kleinen Stelle als ber eine lange Seite erhlt.
Ist die Pastenwurst also bereit und man ist sic klar, von wo aus
man mit dem Rakel ziehen mcte (an dieser Kante muss die
Scablone auc festgeklebt sein), sollte man die Platine scn
vor sic ausricten und bequem sitzen, denn jetzt kommt der
aller kritiscste Moment. Man muss mit gengend Druc die
Paste ber die Scablone gleicmig ziehen, so dass die Pas-
te nict obenauf der Scablone in Scmierresten zurc bleibt,
aber auc jedes Pad-Loc scn mit
der Paste gefllt ist. Man darf nict zu
of herumdrcen, sonst versciebt
man jedes mal die Scablone etwas
und die Paste verscmiert sic an den
Rndern und luf weiter zwiscen
Scablone und Platine. Im gnstigs-
ten Fall zieht man die Paste mit einem
Mal sauber ber die gesamte Seite.
Am Anfang brauct man ein paar
Versuce. Das mact aber gar nicts.
Mit dem Rakel kann man ganz vor-
sictig die Paste von der Platine wie-
der nehmen, die Scablone gut rei-
nigen. Ic nehme hierfr Platinenreiniger aus der Sprhdose
mit einer Brste vorne dran und einem Scwung Papiertcer.
Die Platine kann man auc nocmal scnell mit den Tcern
und dem Reiniger von der verscmierten Paste befreien. Ist die
Platine einmal erfolgreic bedruct, legt man dieser am besten
ein paar Meter ganz weit weg, wo man nict aus versehen dran
kommt. Auc das wird jedem zwiscendurc passieren :-).
Zur Frage: Woher bekommt man diese Maske? Es gibt viele An-
bieter im Internet, die solce Pastenmasken ab ca. 25 EUR und
teurer anbieten. Man muss aufpassen, viele bieten sehr gute
Industriequalitt fr einen Druc von einigen 1000 Platinen
und mehr an, aber das brauct man ja nict. Letztens habe ic
bei htp://www.bilex-lp.com welce bestellt. Dort kosten Sie 25
EUR + 9 EUR Versand. Die Qualitt war super. Was ic meistens
jedoc mace, ic bestelle die Platine bei PCB-Pool, dort kann
man immer die Maske kostenlos mit bestellen. Man darf nur
nict vergessen in der Bestellung den Haken FreeStencil an zu
klicen. Bei den meisten Platinenherstellern kann man die Sca-
blonen immer kostenpfictig zur Platine gleic mit bestellen.
Checkliste: Schablonen-Daten
Bevor man die Scablone bestellt, sollte man aber zuvor einen
Blic auf die entsprecenden Layer werfen. Aber auc hier be-
kommt man nac und nac Erfahrungen. Ic habe einmal meine
wictigsten notiert:
Sind die Lcer der Pastenmaske etwas kleiner als das
Kupferpad? Das ist wictig, denn wenn die tcream und
bcream Lcer gleic gro oder zu eng aneinander sind, be-
steht die Gefahr, dass beim Drucen zu viel Paste auf dem
Pad stehen bleibt und
auc darber hinaus-
luf. Nac dem Lten
im Ofen hat man dann
hufg Ltbrcen zu
anderen Pads (z.B. bei
SMD-Bucsen, im Ver-
gleic zu Chips sind
diese aber noc relativ
unkritisc und leict zu
beheben).
Hat ein Chip ein Expo-
sed-Pad (siehe Abb. 3)
(unter dem Chip eine
Metallfce), sollte man an dieser Stelle
auf der Platine lieber eine kleine
Matrix von Rectecen anord-
nen, sonst hat man scnell
viel zu viel Ltzinn unter
dem Chip. Mance macen auc in die Mite eine Durckon-
taktierung, so dass dort berfssiges Ltzinn abfieen,
bzw. man spter auc einfacer den Baustein wieder entfer-
nen kann.
Abb. 3: QFN
Abb. 2: Schablone
fr die Ltpaste
Abb. 4: Stoppmaske
[ PROJECT ] BGA Lten mit dem Pizzaofen
30
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] BGA Lten mit dem Pizzaofen
Zum Kernpunkt des Artikels
Abb. 5: BGA von unten
Abb. 8: Ltpaste
Abb. 7: Ltpaste
Abb. 6: Schablone und Platine beim Rakeln auf einer Me-
tallunterlage. Gut zu sehen ist hier die Pastenwurst
Nict zu vergessen ist auc, dass man bei normalerweise ca.
150um dicem Blec (mit etwas kleineren Lcern als die
Pads) an mancen Stellen nict pltzlic sogar zu wenig Lt-
paste pro Pad hat. Hat man diceres Blec muss man aber
unbedingt die Lcer nocmals verkleinern, sonst ist das
zu viel Ltpaste. Hat man hingegen dnneres Blec, muss
man sie entsprecend wieder vergrern, wobei hier dann
beim Drucen die Gefahr vom verscmieren wieder steigt.
Klingt scwieriger als es ist. Bei etwas greren Bauteilen
wie Bucsen, Quarzen, Spulen ist dies nict ganz so kritisc
und funktioniert meist auc ohne Probleme. Im Notfall kann
man diese Teile ja noc mit Litze nac bearbeiten. Man sollte
deshalb zu Beginn ersteinmal langsam den Scwierigkeits-
grad steigern und nict gleic zu Anfang alle kritisceren
Chip- und Bauteil-Sorten auf einer Platine gleiczeitig ver-
einen.
Meine Platinen lasse ic immer mit Ltstopplac lacieren.
Ohne Lac besteht scneller die Gefahr eine nict gewollte
Ltstelle/Ltbrce zu erhalten. Wenn man auf den Lt-
stopplac verzicten mcte, sollten die Leitungen aber so
weit wie mglic von Pads entfernt sein - bzw. idealerwei-
se ganz grade von den Pads weglaufen und auerdem nict
unbedingt parallel an andere Pads angrenzen. Immer gen-
gend Abstand! Dann kann nicts rberlaufen und man spart
sic das lstige Nacarbeiten am Prototyp.
Nac einiger Erfahrung mit
dem Lten mit Rakel und
Ofen wollte ic mic nun
an BGA Bausteine (siehe
Abb. 5) wagen.
Bei BGA Bausteinen ist ein wesentlicer Faktor der Pitc. Das
ist der Abstand von Ball zu Ball. Hier gibt es 1.00 mm, 0.8mm
oder 0.5mm. Sicerlic gibt es noc feinere, aber dafr ist der
Ofen wohl nict geeignet. Die Platine sollte immer mit Ltstopp-
lac erstellt werden - und (ganz wictig) Durckontaktierungen
im BGA dringend ber laciert sein. In Eagle stellt man das
bei DRC (siehe Abb. 4) unter dem Punkt Masks ein. Das Li-
mit muss grer als die Durckontaktierungen gestellt werden.
Dann werden diese mit Ltstopplac bedect und die Gefahr fr
ungewollte Kontakte wird drastisc minimiert. Passend fr den
BGA ist in der Pastenmaske dann ein entsprecendes Lcerras-
ter fr die Pads. Das Drucen geht auf die gleice Art und Wei-
se wie oben bereits bescrieben. Man bentigt ein wenig mehr
Zeit, bis man die Scablone auf der Platine ausgerictet hat. Das
wars aber eigentlic. Die Scwierigkeit beim BGA Baustein liegt
darin, dass man den Baustein von oben platzieren muss und je-
der Ball auf seinen Ltpastehaufen trefen muss (Abb. 7 und
Abb. 8). Dafr kann man sic aber eine kleine Hilfe in die Platine
macen. An den Ecen des BGAs fge ic kleine Markierungen
ein (siehe Abb. 9 und Abb. 10). Wictig ist, dass diese korrekt an
gegenberliegenden oder mindestens drei geraden Seiten sind.
So dass man den Baustein parallel zu den Linien auf die Platine
legen kann. Nun zum Platzieren des BGA: Wenn man den BGA
vorsictig von oben mit der Pinzete ganz locer auf die Pasten-
matrix aufegt (entsprecend der Markierung auf der Platine,
und Actung: Pin 1 nict vergessen), kann man ihn durcaus
noc mit der Pinzete auf den Pastenhufcen herum scie-
ben, ohne diese zu verscmieren. Am besten sieht man dies von
der Seite. Keine Panik, wenn der BGA mit den Balls direkt zwi-
scen den
Hufcen gelan-
det ist. Entweder
man nimmt ihn vorsictig nocmals nac oben senkrect weg,
oder man kann ihn sogar noc auf die Hufcen drauf scie-
ben. Sitzt der BGA von allen Seiten betractet perfekt auf den
Lthufcen (Kontrolle von allen Seiten von scrg unten), so
kann man ihn nun vorsictig mit der Pinzete erst mitig und
dann an den Kanten in die Paste eindrcen. Voil.
Acso ic bestce immer als erstes den BGA und spter die
Bauteile auen herum, so
hat man beim BGA platzie-
ren genug Freiheit in alle
Rictungen. Nur Vor-
sict: Nict aus Verse-
hen die Nacbarpads
verschmieren.
Am besten r-
mel hockrem-
peln :)
So - das war scon das Lten eines BGAs. Jetzt gehts genauso
weiter wie sonst. Alle restlicen Bauteile platzieren. Die Platine
vielleict etwas vorsictiger als sonst in den Ofen legen (ja nir-
gends dagegen rumpeln), Ofen anstellen, entweder die Kurve
mit der Steuerung ab-
fahren oder den Ofen
auf 230 Grad einstel-
len und den Ltpro-
zess starten. Ab jetzt
wieder kritisc auf
die Ltstellen
von den Pads
acten. Wenn
die Paste zu
scmelzen be-
ginnt sicerheitshalber nocmals mindestens
10 15 Sekunden mehr Zeit geben, denn die Balls in der Mite
vom BGA braucen natrlic etwas lnger. Nur zulange soll-
te man die Chips nict im Ofen bacen. Aber nac dem ersten
Keks hat man auc das gelernt :). Wenn man mit der automati-
scen Steuerung ltet kann man die Standardkurve verwenden
- das hat bei mir bisher gut funktioniert.
31
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
Fazit
Literatur / Links
Ic kann das Lten auf diese Art und Weise nur empfehlen. Mit einem
relativ kleinen Budget knnen erstaunlic gute Ergebnisse erzielt wer-
den, vor allem auc bei Bausteinformen, an die ic mic zuerst nict herangetraut
hate. Besonders fr einzelne Prototypen oder Kleinserien ist diese Methode bes-
tens geeignet. Sie erfordert anfangs zwar etwas Mut
und Geduld, nac einiger bungszeit sitzt der Bau-
stein aber scon beinahe auf Anhieb rictig - erstaun-
lic, wie scnell man sic so etwas feinmotorisces an-
trainieren kann :)
[1]PCB POOL htp://www.pcb-pool.com/
[2]Bilex htp://www.bilex-lp.com
[3]Elektor Stencil Mascine htp://www.youtube.com/watc?v=zGc8dwUaUVo
Abb. 10: Markierun-
gen an den Ecken
Um zu prfen wie gut das Lten klappt, habe ic eine Testplati-
ne mit einem AP7000 erstellt. Auf der Platine war der BGA, die
Stromversorgung, ein JTAG Stecer und der Quarz. Hier knnte
man jetzt mit einem JTAG-Adapter Boundary-Scan Muster er-
zeugen. Jedoc habe ic keine scnellere Lsung ohne gre-
ren Aufwand gefunden. Daher habe ic Nac-
bar-Balls miteinander verbunden. Auf diese
Weise kann mit einem einfacen C-Programm,
das man in den SRAM des AP7000 per JTAG
laden kann, die Pins naceinander als Ein- und
Ausgang scalten und sehen, ob die Ltverbin-
dungen geklappt haben. Leider kann man so nur sclect he-
rausfnden, ob sic zwei fremde Nacbarn verbunden haben.
Aber so etwas wird man sptestens beim Programmieren und
Einsatz der Pins feststellen. Man muss sic nur daran erinnern,
dass es auc das NICHT erfolgreice Lten sein kann, war-
um etwas nict funktionieren will, wie es aber funktionieren
sollte. Zeit um das Testprogramm zu implementieren hate ic
leider noc nict gefunden. In der Zwiscenzeit habe ic einen
LPC3131 samt BGA SDRAM Baustein geltet und von dort ein
Linux gestartet. Das Linux bootet soweit und daher kann ic
sagen die Verbindungen stehen. Auc hier ging es ja zuncst
zuerst um einen Prototyp.
Abb. 9: Markierun-
gen an den Ecken
Anzeige
[ PROJECT ] BGA Lten mit dem Pizzaofen
Testplatine
32
4/2011 JOURNAL - EMBEDDED-PROJECTS.NET
[ PROJECT ] Marktplatz - Die Ecke fr Neuigkeiten und verschiedene Produkte
Marktplatz / Neuigkeiten
Die Ecke fr Neuigkeiten und verschiedene Produkte
Haben Sie interessante
Produkte oder Neuig-
keiten?
Dann senden Sie uns
ein Foto, 3-4 Zeilen Text
und einen Link mit Be-
treff Marktplatz an:
j our nal @embedded-
projects.net
Die neue Version des Einmalpasswortgenerators (ehemals OpenKUBUS) mit Baterie
und Ectzeituhr ist jetzt verfgbar. Der kleine Tipptoken kann als zustzlicer Sicer-
heitsmecanismus in Kombination zu Benutzername und Passwort verwendet werden.
Das mitels Token generierte Passwort ist eindeutig dem jeweiligen USB-Stic zuzuord-
nen. Dank der neuen Ectzeituhr kann der Zugang individuell zeitlic begrenzt oder
auc komplet gesperrt werden. Nhere Infos gibt es auf der Projektseite.
Firma: embedded projects GmbH
htp://www.opencrypt.de
Einmalpasswortgenerator
Mit dem eNet-PLC Board und dem OpenSource Mikrocontroller BetriebssystemNut/OS wird
Messen, Steuern und Regeln mit Web-Interface zum Kinderspiel. Ideales Entwiclungsboard
fr das eNet-sam7X Modul z.B. als Ergnzung oder Ersatz fr herkmmlice SPS Sys-
teme.
Firma: Thermotemp GmbH
htp://www.embedded-it.de/produkte/eNet-sam7X-kit.php
Mikrocontroller-Entwicklung leicht gemacht
SIMtrace - Daten zwischen SIM Karte und Handy aufzeichnen
CANlog2 - Datenlogger
Osmocom SIMtrace ist ein protocol analyzer fr SIM/USIM Karten. Er wird zwiscen SIM-Karte und
Telefon gescaltet und leitet smtlice Kommunikation ber USB an einen gesclossenen PC weiter,
wo eine bersictlice Darstellung mitels wireshark erfolgt.
Firma : sysmocom - systems for mobile communications GmbH
htp://shop.sysmocom.de/products/simtrace
Der Datenlogger dient der automatiscen Aufzeicnung von CAN-Nacricten auf einer SD-
Card. Die Aufzeicnung erfolgt Identifer basiert. Die Dateinamen werden vom Datenlogger
automatisc generiert und setzen sic aus Da-
tum und Uhrzeit zusammen. Diese Informa-
tionen stehen intern ber eine Ectzeit-
uhr (RTC) zur Verfgung.
Firma : Wac Engineering
htp://www.wac-engineering.de/
Lttechnik, Werkzeuge und Hilfsmittel
fr SMD- und THT-Bestckung

129,
00
Pinzettensatz

19,
90
Lotpaste (bleifrei)

21,
40
Schablonendrucker
fr kleine
SMD-Schablonen

139,
00
Reflow-Controller
A
l
l
e

e
i
n
g
e
t
r
a
g
e
n
e
n

W
a
r
e
n
z
e
i
c
h
e
n

s
i
n
d

e
i
n
g
e
t
r
a
g
e
n
e

W
a
r
e
n
z
e
i
c
h
e
n

d
e
r

j
e
w
e
i
l
i
g
e
n

H
e
r
s
t
e
l
l
e
r
!
Anwenderbericht
www.reflow-kit.de/bericht
Video
www.reflow-kit.de/video
www.pcb-pool.com
PCB-POOL

ist eine eingetragene Marke der Beta LAYOUT GmbH


www.reflow-kit.de
REFLOW-KIT

ist eine eingetragene Marke der Beta LAYOUT GmbH

129,
00
FREE Stencil
bei jeder PCB Prototyp-Bestellung
EAGLE: Kalkulationsbutton

pcb-pool.com/download_button
2
0
%
R
A
B
A
T
T

!
auf Ihre erste Bestellung
[ STELLENMARKT / ANZEIGEN ]

Interesse an einer Anzeige?
info@embedded-projects.net
ElektronIk / SoftwareentwIcklung
Layout
E|70IenstleIster
8estucker / E|S0IenstleIster
|echatronIk
FIndYourEngIneer
Ist eIn personlIches
Empfehlungsnetzwerk.
FIrmen dIe ElektronIk
Experten suchen,
wenden sIch bItte
dIrekt an:

|arkus Kessler
kontakt@ndyourengIneer.de
#
J
0
4
6
Wir suchen eine/n Vertriebsingenieur/in
INELTEK GmbH, Distributor von elektronischen Bauelementen mit
besten Erfolgsvoraussetzungen fr die Zukunft.
Nach grndlicher Einarbeitung in unser Produktprogramm betreuen
Sie Kundenprojekte in ganz Bayern. Dabei beraten und untersttzen
Sie Ihre Kunden. Wir bieten Ihnen langfristige Perspektiven in einem
fhrenden Unternehmen, das fr seine Kontinuitt bekannt ist.
Ihr Prol:
- Vertriebserfahrung wre schn, aber auch Absolventen sollten
sich bewerben
- Verhandlungsgeschick, Bereitschaft zum eigenverantwortlichen
Arbeiten
- Spa am Umgang mit Menschen
- Gute Englischkenntnisse
- Reisebereitschaft
Wir freuen uns auf Ihre Bewerbung!
Bitte senden Sie Ihre Bewerbung an:
INELTEK GmbH
Zur Alten Baumschule 9
82418 Seehausen
Oder per eMail an: neudert@ineltek.com
Ein Projekt fr Leute, die den
8bit-Heimcomputern nachtrauern
www.bomerenzprojekt.de
Impressum
embedded - projects.net
JOURNAL
OPEN SOURCE SOFT- AND HARDWARE PROJECTS
embedded projects GmbH
Holzbachstrae 4
D-86152 Augsburg
Telefon: +49(0)821 / 279599-0
Telefax: +49(0)821 / 279599-20
Verffentlichung: 4x / Jahr
Ausgabenformat: PDF / Print
Auagen Print: 2500 Stk.
Einzelverkaufspreis: 1
Layout / Satz: EP
Druck: yeralarm GmbH
Titelfoto: Claudia Sauter
Alle Artikel in diesem Journal stehen
unter der freien Creativ Commons Li-
zenz. Die Texte drfen, wie bekannt
von Open Source, modiziert und in
die eigene Arbeit mit aufgenommen
werden. Die einzige Bedingung ist,
dass der neue Text ebenfalls wieder
unter der gleichen Lizenz, unter der
dieses Heft steht verffentlicht wer-
den muss und zustzlich auf den
originalen Autor verwiesen werden
muss. Ausgenommen Firmen- und
Eigenwerbung.
Dies ist ein Open Source
Projekt.
Except where otherwise no-
ted, this work is licensed un-
der http://creativecommons.
org/licenses/by/3.0
Werdet aktiv!
Das Moto: Von der Community fr die Community !
Das Magazin ist ein Open Source Projekt.
Falls Du Lust hast, Dic an der Zeitscrif durc einen Beitrag
zu beteiligen, wrden wir uns darber sehr freuen. Screibe
deine Idee an:
journal@embedded-projects.net
Regelmig
Die Zeitscrif wird ber mehrere Kanle verteilt. Der erste
Kanal ist der Download als PDF - Datei. Alle Ausgaben sind
auf der Internetseite [1] verfgbar. Diejenigen, die lieber eine
Papierversion erhalten mcten, knnen den zweiten Kanal
whlen. Man kann sic dort auf einer Internetseite [2] in eine
Liste fr die gesponserten Abos oder ein Spendenabo eintra-
gen. Beim Ersceinen einer neuen Ausgabe wird dank Sponso-
rengeldern an jeden auf der Liste eine Ausgabe des aktuellen
Journal versendet. Falls man den Versandtermin verpasst hat,
kann man das Hef auc ber einen Online - Shop [2] beziehen.
[1] Internetseite (Anmeldeformular gesponserte Abos): htp://
journal.embedded-projects.net
[2] Online - Shop fr Journal:
htp://www.embedded-projects.net
Sponsoren gesucht!
Damit wir weiterhin diese Zeitscrif fr jeden frei bereitstel-
len knnen, sucen wir dringend Sponsoren fr Werbe- und
Stellenanzeigen. Bei Interesse meldet Euc bite unter folgen-
der Telefonnummer: 0821 / 2795990 oder sendet eine E-Mail an
die oben genannte Adresse.
N
a
m
e

/

F
i
r
m
a
S
t
r
a

e

/

H
a
u
s
n
u
m
m
e
r
P
L
Z

/

O
r
t
E
m
a
i
l

/

T
e
l
e
f
o
n

/

F
a
x
W
i
r

m

c
h
t
e
n

a
l
s

H
o
c
h
s
c
h
u
l
e

/

A
u
s
b
i
l
d
u
n
g
s
-
b
e
t
r
i
e
b

j
e
d
e

w
e
i
t
e
r
e

A
u
s
g
a
b
e

b
e
k
o
m
m
e
n
.
B
i
t
t
e

g
e
w

n
s
c
h
t
e

A
n
z
a
h
l

d
e
r

H
e
f
t
e

p
r
o

A
u
s
g
a
b
e

a
n
k
r
e
u
z
e
n
.
I
c
h

m

c
h
t
e
n

i
m

e
m
b
e
d
d
e
d

p
r
o
j
e
c
t
s

J
o
u
r
n
a
l

w
e
r
b
e
n

o
d
e
r

e
i
n
e

S
t
e
l
l
e
n
a
n
z
e
i
g
e

a
u
f
g
e
b
e
n
.

B
i
t
-
t
e

s
c
h
i
c
k
e
n

S
i
e

m
i
r

I
n
f
o
m
a
t
e
r
i
a
l
,

P
r
e
i
s
l
i
s
t
e

e
t
c
.

z
u
.
I
c
h

m

c
h
t
e

j
e
d
e

z
u
k

n
f
t
i
g
e

A
u
s
g
a
b
e

e
r
h
a
l
t
e
n
B
i
t
t
e

f
r
e
i

m
a
c
h
e
n
e
m
b
e
d
d
e
d

p
r
o
j
e
c
t
s

G
m
b
H
H
o
l
z
b
a
c
h
s
t
r
a

e

4
D

-

8
6
1
5
2

A
u
g
s
b
u
r
g
5
1
0

Das könnte Ihnen auch gefallen