AVR-Transistortester

Allgemeines
Features
Hardware
Firmware
Konfigurations im EEPROM
Kompilieren der Firmware

Allgemeines

(größtenteils aus dem Artikel von µC.net übernommen)
Jeder Bastler kennt wohl dieses Problem: Man baut einen Transistor aus einem Gerät aus oder kramt einen aus der Bastelkiste.
Wenn die Typenbezeichnung zu erkennen ist (und sie einem bekannt ist), ist ja alles in Ordnung. Oft ist dem aber nicht so, und dann geht das Übliche mal wieder los: Typ und Pinbelegung des Transistors aus dem Internet oder einem Buch heraussuchen.
Das nervt auf Dauer natürlich ziemlich. Auch Transistoren im gleichen Gehäuse haben nicht immer die gleiche Pin-Belegung. Zum Beispiel hat ein 2N5551 eine andere Belegung als ein BC547, obwohl beide ein TO92 Gehäuse haben.
Wenn bei einem Transistor die Bezeichnung nicht mehr zu erkennen ist (oder nicht mal Google was dazu weiß), wird es mit konventionellen Methoden richtig umständlich, den Transistortypen herauszufinden: Es könnte sich um NPN, PNP, N-oder P-Kanal-Mosfet, etc. handeln.
Eventuell hat das Bauteil auch noch eine Schutzdiode intern. Das macht die Identifizierung noch schwieriger.
Durchprobieren per Hand ist also ein recht zeitraubendes Unterfangen.
Warum soll man das nicht per Mikrocontroller erledigen lassen? So ist dieser automatische Transistortester entstanden.

Features

* Automatische Erkennung von NPN und PNP-Transistoren, N-und P-Kanal-MOSFETs, Dioden (auch Doppeldioden), Thyristoren, Triacs und auch Widerständen und Kondensatoren.
* Automatische Ermittlung und Anzeige der Pins des zu testenden Bauteils
* Erkennung und Anzeige von Schutzdioden bei Transistoren und MOSFETs
* Ermittlung des Verstärkungsfaktors und der Basis-Emitter-Durchlassspannung bei Transistoren
* Messung der Gate-Schwellspannung und Gatekapazität von Mosfets
* Anzeige der Werte auf einem Text-LCD (2*16 Zeichen)
* Dauer eines Bauteil-Tests: Unter 2 Sekunden (Ausnahme: größere Kondensatoren)
* Ein-Knopf-Bedienung; automatische Abschaltung
* Stromverbrauch im ausgeschalteten Zustand: Unter 20 nA

Hardware

Es gibt zwei Versionen der Schaltung.
Eine verfügt über eine automatische Abschaltung ca. 10s nach Test-Ende. Damit ergibt sich eine komfortable Ein-Knopf-Bedienung bei vernachlässigbarem Standby-Stromverbrauch.
Der Schaltplan:
http://www.mikrocontroller.net/wikifiles/f/f0/Schaltplan_transistortester.png
Der linke Teil der Schaltung ist für die automatische Abschaltung zuständig. Mit 3 Transistoren und ein paar Widerständen und Kondensatoren ist es ein gewisser Schaltungsaufwand.

Wird auf dieses Feature verzichtet, wird die Schaltung deutlich kleiner:
http://www.mikrocontroller.net/wikifiles/7/76/Transistortester_ohne_Abschaltung.png
Der Tester wird hier über Schalter S2 ein- und ausgeschaltet. Über den (optionalen) Taster S1 kann ein neuer Testvorgang gestartet werden, ohne den Tester über S2 aus- und wieder einschalten zu müssen.

Firmware

Der Ordner "ATMega8" enthält die kompilierten Programme für den ATMega8.

Die Datei TransistorTestNew.hex muss in den Flash programmiert werden

Die Datei TransistorTestNew_[Sprache].eep muss ins EEPROM. Das bitte nicht vergessen!

Die Firmware ist bisher in 3 Sprachen verfügbar: Deutsch, Englisch und Polnisch. Um die Sprache auszuwählen, muss die entsprechende .eep-Datei ins EEPROM programmiert werden.
Die Datei TransistorTestNew_binary.eep (nur bei ATMega8) ist vom Inhalt her identisch mit der TransistorTestNew.eep.
Sie enthält die EEPROM-Daten im Binärformat und nicht im Intel Hex-Format. Das ist besser, um Änderungen daran vorzunehmen.


Konfiguration im EEPROM

EEPROM-Adresse Konfigurations-Einstellung
0 Kondensator-Erkennung
1-3 Für zukünftige Verwendung
4 LSB von R_L
5 MSB von R_L
6 LSB von R_H
7 MSB von R_H
8 LSB des Kapazitäts-Umrechnungsfaktors mit R_H (für kleine Kapazitäten)
9 MSB des Kapazitäts-Umrechnungsfaktors mit R_H (für kleine Kapazitäten)
10 LSB des Kapazitäts-Umrechnungsfaktors mit R_L (für große Kapazitäten)
11 MSB des Kapazitäts-Umrechnungsfaktors mit R_L (für große Kapazitäten)
Ab 12 LCD-Strings (sollten nicht verändert werden)


Zu Byte 0 (Kondensator-Erkennung):
Der Test, ob ein Kondensator vorhanden ist, dauert relativ lange, mit über 50ms je Testvorgang ist zu rechnen
Bei allen 6 möglichen Testvorgängen ergibt das eine Verlängerung der Testdauer um ca 0,3s bis 0,5s.
Mit dem Konfigurations-Byte lassen sich die durchgeführten Tests festlegen.

Bedeutungen der Bits (7 = MSB):
7:6 Nicht verwendet

5:4 Test-Modus
00: Kondensator-Messung deaktiviert
01: Kondensator-Messung für eine einstellbare Pin-Kombination (in beide Richtungen); verlängert Testdauer um ca. 120...200ms
10: Kondensator-Messung für alle 6 Pin-Kombinationen; verlängert Testdauer um ca. 300...500ms

3:2 Erster Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01

1:0 Zweiter Pin der gewählten Pin-Kombination (0...2), nur entscheidend wenn Bits 5:4 = 01

Standard:
0b00100010 (0x22): Messung für alle 6 Pin-Kombinationen aktiviert


Zu Bytes 4 und 5:
Hier ist der genaue Wert von R_L gespeichert. Der Normwert sind 680 Ohm.
Die Angabe erfolgt in Ohm.

Standard:
Byte 4 = 0xA8
Byte 5 = 0x02


Zu Bytes 6 und 7:
Hier ist der genaue Wert von R_H gespeichert. Der Normwert sind 470000 Ohm.
Die Angabe erfolgt dividiert durch 100, also 470000 Ohm = 4700

Standard:
Byte 6 = 0x5C
Byte 7 = 0x12


Zu Bytes 8 und 9:
Hier ist der Multiplikator für die Kapazitätsmessung mit R_H (470kOhm) gespeichert.
Dieser Multiplikator ist für kleine Kapazitäten (bis ca. 0,75µF) wirksam.

Standard:
Byte 8 = 0x8A
Byte 9 = 0x01


Zu Bytes 10 und 11:
Hier ist der Multiplikator für die Kapazitätsmessung mit R_L (680 Ohm) gespeichert.
Dieser Multiplikator ist für größere Kapazitäten (ab ca. 0,75µF) wirksam.

Standard:
Byte 10 = 0x1B
Byte 11 = 0x01



Durch Anpassung der genannten Konstanten an den eigenen Aufbau kann die Genauigkeit
des Testers bei der Widerstands- und Kapazitätsmessung etwas verbessert werden.
In der Regel ist diese Anpassung aber gar nicht nötig.
Um die Konstanten anzupassen, können sie vor dem Flashen in der .eep-Datei verändert werden.
Dafür bietet sich die Datei im Binärformat an, da sich die Intel-Hex-Datei wegen ihrer Prüfsummen
ohne passenden Editor kaum bearbeiten lässt.
Diese modifizierte Datei wird dann in den AVR geflasht.
Alternativ kann man auch erst die Orignial-Datei in den AVR flashen und den EEPROM-Inhalt nun bearbeiten.
Das ist mit fast allen AVR-Programmiertools machbar.


Kompilieren der Firmware

Beim Selbstkompilieren muss nur in den Projektoptionen (für AVR Studio) oder im Makefile der Controllertyp entsprechend definiert werden.
Bei der Mega48-Version werden dann einige Features (Widerstandsmessung, Messung
der Basis-Emitter-Spannung bei Bipolartransistoren, Messung der Gatekapazität bei Anreicherungs-MOSFETS und Kapazitätsmessung)
weggelassen, um das Programm auf die erforderliche Größe zu bringen.
Die Firmware kann auch für die Controller ATMega88 und ATMega168 kompiliert werden und sollte auf diesen Controllern auch lauffähig sein (wurde aber noch nicht getestet).


Mehr Infos und technische Beschreibungen zu diesem Projekt finden Sie unter http://www.mikrocontroller.net/articles/AVR-Transistortester