Datum:
Hallo, hier mal ein Projekt von mir: Ein automatischer Transistortester, gesteuert von einem ATMega8. Ich habe da auch einen Artikel dazu erstellt: http://www.mikrocontroller.net/articles/AVR-Transistortester Dieses Gerät erkennt Transistoren, Anreicherungs-MOSFETs, Dioden-Netzwerke und kleine Thyristoren und Triacs automatisch. Bei Transistoren wird auch noch der Verstärkungsfaktor angezeigt. Der Tester ermittelt auch automatisch die Anschlüsse des Transistors. Ist ein recht nützliches Gerät, finde ich. Transistoren mit unbekannten Pin-Belegungen und unbekannter Funktionstüchtigkeit hat man immer wieder. Ich habe das Gerät mit vielen Transistoren und MOSFETs erfolgreich getestet (genauer: alle, die ich versucht habe wurden auch korrekt erkannt), darunter auch Leistungstypen wie 2N3773 oder IRFP450. Verarmungs-FETs werden aber noch nicht unterstützt. Mich würden mal eure Meinungen und eventuelle Verbesserungsvorschläge dazu interessieren.
Datum:
Super Projekt, ich bin begeistert. Hier gab es zwar schon mal so einen Tester, aber ich glaube deiner unterstützt mehr Bauteile. (Daumen hoch) Da ich so etwas schon öfter benötigt habe werde ich es nachbauen. Allerdings ein wenig modifiziert: Die Stomversorgung würde ich einfach über einen (rastenden) Schalter an den Spannungsregler legen. Dies hat (für mich ) folgende Vorteile: 1. viel weniger Bauteile (es entfallen ja etliche Bauteile) 2. kleine Lochrasterplatine reicht (ist ja nicht viel drauf) 3. die automatische Abschaltung entfällt (sonst fragt man sich: wo war noch gleich "B"?) 4. die Ruhestromaufnahme ist 0mA (o.k.dein Wert ist eigentlich auch 0 :) O.K. das ist nur meine persönliche Meinung. Der Tester gehört in jede aufgeräumte Werkstatt. Vielen Dank für dieses Projekt Gruß Martin
Datum:
Ich werde das Teil auch mal nachbauen, denn die Schaltung vereint im Prinzip ja 3 Schaltungen: - Bauteil identifizieren - Belegung rausfinden - Testen Und es wurde sogar an nahezu alle Transistoren gedacht (wie die mit der Diode Emitter->Kollektor). @ Markus Hast du damit zufällig schonmal einen HOT gemessen (z.B. BU508 oder ähnliche)? Diese besitzen nämlich oft einen Widerstand zwischen Basis und Emitter, meist um die 100 Ohm. Das gleich gilt für viele größere Thyristoren.
Datum:
Markus F. wrote: > Mich würden mal eure Meinungen Schön. > und eventuelle Verbesserungsvorschläge > dazu interessieren. Der Mega8 ist gesockelt? Da die Eingänge, besonders PC0 - PC2, keine Schutzschaltung haben, würde ich das machen um ihn wenn notwendig tauschen zu können. Alternativ natürlich eine Schutzschaltung (Widerstand und BAV99 pro Pin). Ob die deiner Messmethode(n) stören würde habe ich mir nicht angesehen.
Datum:
> Hast du damit zufällig schonmal einen HOT gemessen (z.B. BU508 oder > ähnliche)? Diese besitzen nämlich oft einen Widerstand zwischen Basis > und Emitter, meist um die 100 Ohm. Nein, das habe ich noch nicht versucht. Ich schätze aber, dass ein HOT nicht vernünftig erkannt wird. Darlingtons wie den BD675 habe ich aber schon mal gemessen. Die Belegung wird korrekt erkannt, allerdings kann der Verstärkungsfaktor nicht richtig gemessen werden (wegen der internen Widerstände von B nach E). Leistungsthyristoren können damit prinzipiell nicht getestet werden, weil der maximale Teststrom bei gut 7mA liegt. Das liegt unter dem Haltestrom vieler Thyristoren. Das Bauteil wird dann fälschlicherweise als NPN-Transistor erkannt. Man könnte mit drei weiteren Widerständen noch einen weiteren Strombereich für den Test einbauen (z.B. 120 Ohm für ca. 40mA). Das dürfte für die meisten Thyristoren und Triacs als Haltestrom reichen. Damit steigt aber auch das Risiko, empfindliche Bauteile zu beschädigen. Das mit der automatischen Abschaltung habe ich eingebaut, um die Bedienung möglichst komfortabel zu machen: Transistor anschließen, Knopf drücken, Ergebnis ablesen. Aber ich gebe euch Recht, für dieses Gimmick ist es schon ein ziemlicher Aufwand. => Hannes Jaeger: Ja, in meinem Aufbau ist der Mega8 gesockelt. Eine Schutzschaltung wäre noch eine Ergänzung. Allerdings sollte man an PC0...2 keine zusätzlichen Widerstände anschließen (diese Pins werden während des Tests auch ab und zu auf Ausgang geschaltet). Widerstände würden das Messergebnis verfälschen. Denkbar wären aber z.B. eine Surpressordiode und eine 32mA-Sicherung an jedem Pin. Eigentlich sollten aber sowieso keine eingebauten Transistoren getestet werden (nur dann besteht die Gefahr einer Beschädigung). Zumindest der Verstärkungsfaktor kann da nämlich nicht vernünftig ermittelt werden. Dann könnten auch Kollektor und Emitter falsch erkannt werden.
Datum:
Warum benutzt Du nicht einfach 3* R6-Batterien und keinen Spannungsregler? Dann brauchst Du keine extra Abschaltschaltung. Stabil muß die Spannung nicht sein, es wird ja das Verhältnis Kollektorstrom zu Basisstrom gemessen. Peter
Datum:
Ich bin gerade dabei die Schaltung aufzubauen: In dem Schaltplan sind ein paar Fehler/Unschönheiten: - Du hast D0-3 anstelle von D4-7 am LCD angeschlossen - An den Reset Pin sollte man entweder einen C gegen Masse, 10k gegen 5V oder beides anschließen - Wenn du einen Widerstand zwischen GND und CONTR vom LCD einbaust, wird der Kontrast besser. Das Display das du verwendet hast, sieht aus wie das Mini Display von Pollin: Das hat normalerweise einen super Kontrast, bei dir ist es allerdings ziemlich übersteuert. Häng mal etwa 2k in die CONTR Leitung. Andere LCDs benötigen etwa 100-1k. - Ein paar 100nF in der Schaltung würden auch nicht stören.
Datum:
So einen ähnliche Apparat hatte Bernhard schon entwickelt. Beitrag "einfacher Transistortester (Assembler) ATmega8" Den habe ich nachgebaut und er funktioniert auch prima. MfG Paul
Datum:
> Du hast D0-3 anstelle von D4-7 am LCD angeschlossen Ja, stimmt. Das habe ich übersehen. Es müssen natürlich D4...7 sein, da habe ich mich vertan > An den Reset Pin sollte man entweder einen C gegen Masse, 10k gegen 5V > oder beides anschließen Auch richtig. Habe ich in meinem Aufbau nicht gemacht, könnte ich aber nochmal nachrüsten. Der Kontrast des Displays ist übrigens nicht so viel zu hoch wie es im Foto aussieht. Und es ist wirklich das LCD von Pollin für 1,95€. Einen 100nF von Vcc nach GND habe ich auch eingebaut, aber im Schaltplan vergessen (ist sowieso mein erster Schaltplan in Eagle...) Ich werde die genannten Dinge mal ändern und dann einen neuen Schaltplan reinstellen. Mit der "Batterie-leer-Erkennung" gibt es sowieso ein paar Probleme (habe ich gerade bei einem Test mit einem Netzgerät bemerkt). Das ist eben mal wieder das Übliche: Man baut eine Funktion ein und testet sie. Wenn sie dann läuft ist es ja prima. Dann ändert man an dem Programm noch etwas und plötzlich gibt es bei Dingen Probleme, die vorher 1A geklappt haben. Kennt hier wohl jeder...
Datum:
So, ich habe den Schaltplan jetzt verbessert. Das Problem mit der "Batterie leer"-Anzeige ist auch gelöst. Ich habe die neuen Dateien zu dem Artikel reingestellt. > Warum benutzt Du nicht einfach 3* R6-Batterien und keinen > Spannungsregler? Viele Mosfets brauchen z.B. mindestens 4V am Gate um halbwegs zu schalten. Außerdem ist sonst der Teststrom nicht konstant, was den Test von Thyristoren u.ä. noch unzuverlässiger macht (der Teststrom fällt natürlich, wenn die Betriebsspannung sinkt). So toll wäre das nicht.
Datum:
Angehängte Dateien:@Alle Ich habe mir mal eine Platine entworfen für den Transistortester, ich habe diese Platine so ausgelegt das ich auch ein kleines OLED Display einsetzen kann. Wenn Markus F. die Erlaubnis geben würde könnte man auch Bausätze für alle anbieten die selber keine Platinen herstellen können. Kontakt über das Forum oder thomas [at] heldt [punkt] eu @Markus F. ich hatte dich mal angeschrieben wegen der Idee mit den Bausätzen bitte melde dich doch einfach mal, danke. Gruß Thomas
Datum:
=> Thomas H: Ich habe dir eine Mail zu der Sache mit den Bausätzen geschickt. Und noch etwas: Könnte jemand, der den Transistortester schon aufgebaut hat, einmal versuchen, damit einen P-Kanal-(Anreicherungs)MOSFET zu testen? Das müsste eigentlich funktionieren, ich habe aber leider keinen einzigen da, um es ausprobiern zu können. Eine Testfunktion für Verarmungs-MOSFETs und JFETs werde ich wohl auch noch einbauen. Erstmal muss ich mir aber solche Bauteile besorgen (ich habe eine ganze Menge verschiedene NPN-Transistoren und N-Kanal-Anreicherungs-MOSFETs, aber JFETs und so habe ich kaum).
Datum:
Markus F. wrote: > Und noch etwas: Könnte jemand, der den Transistortester schon aufgebaut > hat, einmal versuchen, damit einen P-Kanal-(Anreicherungs)MOSFET zu > testen? Das müsste eigentlich funktionieren, ich habe aber leider keinen > einzigen da, um es ausprobiern zu können. Habs mal eben ausprobiert: Funktioniert: P-Kanal Mosfet Bisher hat das Gerät alles richtig erkannt. Die ganz gemeinen Sachen habe ich allerdings noch nicht ausprobiert... > Eine Testfunktion für Verarmungs-MOSFETs und JFETs werde ich wohl auch > noch einbauen. Wie willst du die messen? Die brauchen ja normalerweise eine negative Spannung, damit diese sperren. Da dies ja nicht geht, müsste man den Sourceanschluss positiver legen als das Gate, aber wiederum negativer als Drain (zumindest beim Mosfet, beim JFET ist das egal). JFETs und Verarmungs-MOSFETs könnte man dadurch unterscheiden, dass das Gate beim JFET leitet sobald es positiv wird, während beim N-Verarmungs MOSFET das Gate hochohmig ist. Dafür hat letzteres die Source-Drain Diode. Mir ist aber gerade noch eine andere Idee eingefallen: Und zwar könnte man mit ein paar Tricks die Schwellspannung von Mosfets messen: Ich gehe jetzt mal von einem normalen N-Kanal Mosfet aus: Man legt Source auf GND, Drain über den 680 Ohm Widerstand an 5V und Gate zunächst auch auf GND. Anschließend schaltet man das Gate über den 470k Widerstand an 5V und misst den Logikpegel an Drain. Sobald dieser auf Low geht, schaltet man das Gate hochohmig. Dann hat man nämlich gerade den Schaltpunkt erreicht. Nun misst man die Spannung am Gate. Das ganze wird zwar alles andere als genau, da man das RC Glied 470k-GS Kapazität (die man über die Ladezeit auch noch mitmessen könnte) als DA Wandler missbraucht, aber es wäre ohne Hardwareerweiterung möglich.
Datum:
> Wie willst du die messen? > Die brauchen ja normalerweise eine negative Spannung, damit diese > sperren. Da hatte ich schon eine Idee: Der AVR hat ja interne 10k Pullup-Widerstände. Dann baut man eben zunächst an Gate und Drain damit zwei Spannungsteiler: 10k nach Plus und 680 Ohm nach Masse. Das ergibt dann so 0,36V. Drain kommt auf Plus. Wenn man einen Verarmungs-MOSFET oder JFET angeschlossen hat, werden Drain und Source "aufeinander zu", also in Richtung 5V gezogen. Man misst jetzt die Spannung an Source und speichert sie zwischen. Dann legt man das Gate fest auf Masse und misst erneut die Sourcespannung. Wenn dieser Wert kleiner ist als der vorherige, bedeutet das, dass weniger Strom von Drain nach Source fließt. Es müsste sich dann also um einen Verarmungs-MOSFET oder JFET handeln. Okay, man kann mit dieser Methode nicht prüfen, ob der FET ordnungsgemäß vollständig sperrt, weil die negative Spannung am Gate eben maximal 5V beträgt, in der Praxis wohl eher 1-2V. Die negative Gate-Sourcespannung sinkt ja immer weiter, wenn der FET zu sperren beginnt, da Source immer weiter gegen Masse geht. => Benedikt: Die Messung der Gate-Schwellspannung ist auch eine gute Idee. Sehr genau wird es mit den AVR-internen ADCs wohl nicht, aber als Schätzeisen reicht es. Platz für Erweiterungen ist noch genug: Von den 8kB Flash des Mega8 sind erst ca. 3,7kB belegt.
Datum:
Laut mega8 Datenblatt 20-50k. Im Gegensatz zu den alten AVRs ist der ziemlich konstant (Seite 262: Pin Pull-up Figure 143. I/O Pin Pull-up Resistor Current vs. Input Voltage (VCC = 5V)) Der Verlauf ist nahezu eine perfekte Gerade. Im Vergleich dazu: AT90S2131, Seite 80: Figure 68. Pull-up Resistor Current vs. Input Voltage) Da sah die Kurve noch sehr viel Mosfet artiger aus, also mit steigendem Strom zunehmend in die Sättigung gehend.
Datum:
> Laut mega8 Datenblatt 20-50k.
Ja, stimmt (habe selbst nochmal nachgesehen). Ich hatte irgendwie 10k in
Erinnerung.
Ist natürlich nicht so toll, weil man fast keine Spannung mehr kriegt,
wenn man den mit einem 680Ohm Widerstand zu einem Spannungsteiler
schaltet.
Ich werde mal versuchen, ob es trotzdem irgendwie klappt damit JFETs und
Verarmungs-MOSFETs zu messen. Dann ist es aber auch langsam gut mit
unterstützten Bauteilen. Je mehr Bauteile unterstützt werden, desto
wahrscheinlicher wied auch eine Falscherkennung.
Datum:
Ich habe gerade nochmal eine neue Version der Firmware zu dem Artikel reingestellt. In der neuen Version werden Thyristoren und Triacs deutlich zuverlässiger erkannt (vorher habe ich da irgendwie Mist gebaut...). Kleine Thyristoren sollten jetzt einwandfrei erkannt werden. Bei mir klappt es auch mit einem Leistungs-Triac (BT136), das ist aber eher Glückssache. Außerdem wurden öfter mal die Schutzdioden von MOSFETs nicht erkannt. Das klappt jetzt auch. Dann fehlen eigentlich nur noch Verarmungs-MOSFETs und JFETs (wenn möglich). Und vielleicht noch Gimmicks wie die Messung der Gate-Schwellspannung, Gatekapazität, Basis-Emitter-Spannung,... Platz wäre noch genug da, der Controller ist erst knapp halb voll.
Datum:
Momentan noch. Der mega48 hat vermutlich aber keine Zukunft mit all den geplanten Erweiterungen: AVR Memory Usage ---------------- Device: atmega48 Program: 3526 bytes (86.1% Full) (.text + .data + .bootloader) Data: 348 bytes (68.0% Full) (.data + .bss + .noinit) Der viele RAM geht momentan anscheinend für die LCD Strings drauf, die man in den Flash packen könnte.
Datum:
Benedikt K. wrote: > Data: 348 bytes (68.0% Full) > (.data + .bss + .noinit) > > Der viele RAM geht momentan anscheinend für die LCD Strings drauf, die > man in den Flash packen könnte. Oder ins EEPROM oder wird das anderweitig verwendet? Hintergrund ist einfach der, ich hab noch nen paar Mega48 im TQFP hier rumliegen und würde mir dann ggf ne MiniVersion davon mal basteln (habe zufällig auch das Mini LCD von Pollin bestellt, ist echt niedlich). Welche Optimierung hast du den gewählt?
Datum:
Läubi .. wrote: > Oder ins EEPROM oder wird das anderweitig verwendet? So wie ich das sehe ist das noch komplett frei. > Welche Optimierung hast du den gewählt? Os. Mit O2 sind es knapp über 90%.
Datum:
Hallo, ich wüsste gerne mit welchem Takt der Atmel läuft ? Interner Takt ist klar aber dann ? Vielen Dank Stefan
Datum:
Das dürften 1MHz sein wenn ich die Fusebits richtig interpretiere.
Datum:
Ja, die ganzen Strings für das LCD könnte man auch ins EEPROM packen. Würde schon einiges sparen. Allerdings hat ein Mega48 auch nur ein 256B EEPROM, das könnte knapp werden, besonders bei eventuellen Erweiterungen. Da bräuchte man dann schon wieder zwei Versionen der Firmware, eine die alle Strings im EEPROM hat (für Mega8, der hat 512B EEPROM) und eine die zusätzlich noch welche im Flash hat (für Mega48). Versuchen könnte ich es aber mal. => Stefan: Ja, der AVR läuft auf internem Oszillator mit 1MHz.
Datum:
Oder man legt prinzipell erstmal bis zu 256 bytes im EEPRom ab dann gehts (erstmal) für beide. Mach dir aber nicht zuviele Gedanken deswegen im Zweifel muß ich mir nochmal nen Mega88 besorgen, hatte nur Gedacht wen der Mega8 eh nur zur Hälfte voll ist könnte man ja auch den etwas günstigeren 48er hernehmen. Wenn irgenwelche Zeiten gemessen Werden sollen wäre aber ein externer Quarz auch schon ne Überlegung wert...
Datum:
Angehängte Dateien:Ich habe mal die Gate Threashold Spannungsmessung mal eingebaut. Das funktioniert erstaunlich gut, die Werte sind sehr gut reproduzierbar. Nur bei sehr kleinen Mosfets (BS170 usw.) springen sie um etwa +/-100mV, da die RC Zeitkonstante sehr klein ist. Hier könnte es helfen, den AVR schneller laufen zu lassen. Ebenso sind die Werte sehr großen Toleranzen unterworfen, da die Schwelle der Ports nicht wirklich konstant ist. Zur Unterscheidung eines Logiklevel und eines normalen Mosfets sollte es aber durchaus ausreichen. Man sieht auch deutlich den Einfluss der Millerkapazität: Solange die rote Drainspannung konstant bleibt, ist die Gatesource Spannung eine e-Funktion. Sobald die Drainspannung aber zu sinken beginnt, geht die Kurvenform eher in Richtung Gerade. Am Ende der Kurve sieht man deutlich wo das Laden der Gatekapazität abgeschaltet wird und die ADC Messung anfängt. Danach kommt der nächste Messzyklus (hier nur um ein Foto vom Oszi machen zu können).
void measurevgate(void) { uint8_t tmpval, tmpval2; //for(;;) { ADC_PORT=0; ADC_DDR=(1<<e)|(1<<b); R_DDR = (1<<(2*c)); // Drain: starker pullup, Gate: schwacher pullup + interner pullup R_PORT = (1<<(2*c))|(2<<(2*b)); // Drain: starker pullup, Gate: schwacher pullup _delay_ms(1); // gate entladen tmpval=(1<<c); tmpval2=(1<<(2*c)); ADC_DDR=(1<<e); // gate über 470k+pullup langsam laden while (ADC_PIN&tmpval); // warten bis drain auf low R_PORT=tmpval2; // gate ladewiderstand abschalten vgate=(unsigned long)ReadADC(b)*78/16; } } |
Datum:
Angehängte Dateien:Und weils so schön ist: Hier mal die komplette Kurve, wenn der
Gateladevorgang nicht unterbrochen wird.
Man sieht hier den Einfluss der Millerkapazität sehr deutlich: Sobald
die Drainspannung wieder stabil ist, setzt sich die e-Funktion fort.
Eine Messung der Gatekapazität müsste daher bei konstanter Drainspannung
erfolgen. Allerdings würde man dann nicht die Gatesource kapzität,
sondern die Gatesource+Gatedrain Kapazität. Da in der Praxis aber die
Millerkapazität einen stärkeren Einfluss hat, als die Gatekapazität, ist
es sogar gut wenn man diese mitmisst. Wirklich einen konkreten Wert kann
man hier sowieso nicht messen, so ungenau wie alles ist, aber man könnte
die Ladezeit als groben Anhaltswert zum Vergleich von Mosfets verwenden:
Je größer die Ladezeit, desto mehr Energie erfordert die
Gateansteuerung. Vor allem bei hohen Frequenzen ist dieser Wert
interessant.
Und noch ein paar Messwerte:
gemessen, Datenblatt (min, typ, max)
BSS98: 1.53V, 0.8V, 1.2V, 1.6V
IRF1405: 3.62V, 2.0V, - , 4,0V
BS170: 2.45V, 0.8V, 2.1V, 3.0V
BUK555: 1.69V, 1.0V, 1.5V, 2.0V
Der Drainstrom liegt mit etwa 4-5mA etwas höher als die Angaben im
Datenblatt (250µA-1mA), daher die etwas hohen Werte im Vergleich zu den
typ. aus dem Datenblatt.
Markus hat da ein echt schönes Projekt angefangen, das man wunderbar
erweitern kann.
Datum:
=> Benedikt: Etwa genau so habe ich mir das mit der Messung der Gatespannung auch vorgestellt. Als Ausgabewert würde ich aber keine unsigned long nehmen, unsigned int reicht dicke aus. Die Oszi-Bilder sind auch schön. Da sieht man wirklich gut, was die Millerkapazität ausmacht. => Läubi: Wie ich das mit den Strings fürs LCD gemacht habe ist sowieso nicht ideal. Das kostet nämlich Platz in Flash und RAM. Allein deswagen ändere ich das nochmal und packe die Strings ins EEPROM. Und so ungenau wie die Messung der Gatekapazität werden würde, spielen auch die paar % Toleranz des RC-Oszillators keine große Rolle mehr. Den Quarz kann man sich also eingentlich auch sparen.
Datum:
Markus F. wrote: > Als Ausgabewert würde ich aber keine unsigned long nehmen, > unsigned int reicht dicke aus. Der cast auf unsigned long ist notwenig, wegen der Multiplikation mit 78. Das passt nämlich nicht mehr in einen int. Am Ende wird dann wieder ein int draus: 78/16=4,875 5000mV/1024=4,88 Wobei 78/16 kann man kürzen, dann wird das *39/8 draus, das passt wiederum (keine Ahnung wieso ich das nicht gesehen habe). Du verwendest einen Faktor von etwa 4,6 zum Umrechnen vom ADC Wert in mV, das passt von der Theorie her nicht ganz. Wie kommst du auf diesen Wert? PS: Man kann die ADC Funktion noch etwas optimieren indem man nicht den Freerunning Modus verwendet:
unsigned int ReadADC(uint8_t mux) { //ADC-Wert des angegebenen Kanals auslesen und als unsigned int zurückgegen unsigned int adcx = 0; ADMUX = mux | (1<<REFS0); for(uint8_t j=0;j<32;j++) { // 32 Messungen; für bessere Genauigkeit ADCSRA = (1<<ADEN) | (1<<ADSC) | 5; // Vorteiler=32 while (ADCSRA&(1<<ADSC)); adcx += ADCW; } adcx /= 32; return adcx; } |
Das geht schneller, da wirklich jedes ADC Ergebnis verwendet wird. Theoretisch könnte man so sogar eine etwas höhere Auflösung von etwa 11 Bits erreichen, wenn der ADC Wert zwischen 2 Werten hin und her schwankt.
Datum:
> Du verwendest einen Faktor von etwa 4,6 zum Umrechnen vom ADC Wert in > mV, das passt von der Theorie her nicht ganz. Wie kommst du auf diesen > Wert? Durch Ausprobieren, der eigentlich richtige Wert von 4,88 hat nämlich etwas falsche Ergebnisse gebracht (keine Ahnung warum). Das mit dem Free-Run stimmt natürlich auch. Ich wollte das ganze Projekt sowieso nochmal etwas optimieren. Es ist nämlich wieder mal das passiert was normalerweise nicht sein sollte: - Man plant ein überschaubares Projekt Erstmal hatte ich nur Testfunktionen für NPN und PNP eingebaut. Der allererste Aufbau war sigar mit einem Tiny13 und einem CMOS 4024 für die Widerstände. Ich habe aber sehr schnell gemerkt, dass 1k Flash nie reichen werden. Also gleich einen Mega8, anstatt nachher noch einen teuren Tiny85 kaufen zu müssen. Außerdem muss bei dem ATTiny sowieso RSTDISDL gesetzt werden, um überhaupt 6 Portpins für das LCD zu haben. Ist auch nicht ideal, weil man dan einen HV-Programmer braucht. Und den hat ja hier auch nicht jeder (ich habe auch nur einen selbstgebauten, der nur für 8-und 14-pin AVRs geht). - Dann fällt einem immer mehr ein, was man noch einbauen könnte, und man baut das auch sogleich ein - Nun hat man ein recht großes, unübersichtliches und teilweise auch nicht optimales Projekt Irgendwie passiert mir das fast bei jedem Projekt. Bessere Planung würde da helfen... Der Transistortester ist da noch ein recht harmloses Beispiel.
Datum:
Ich habe jetzt nochmal ein neues Archiv reingestellt. Da habe ich den ADC-Freerun entfernt. Der Test geht jetzt wie erwartet deutlich schneller. Außerdem sind die Strings jetzt größtenteils im EEPROM. Also bitte auch die beiliegende eep-Datei ins EEPROM schreiben. Auf einem Mega8 ist der Speicher jetzt folgendermaßen belegt: Program: 3650 bytes (44.6% Full) Data: 66 bytes (6.4% Full) EEPROM: 232 bytes (45.3% Full) Bei einem Mega48 wären es 3682 Bytes Flash (89,9%). Das wird also eng. Noch eine Frage: Wie sollte ich die Anzeige für die Gate-Schwellspannung bei MOSFETs dann am besten machen? Im LCD ist da so kein Platz mehr. Im Frage käme eine Scrollfunktion, also eine weitere Zeile, zu der man per Taster wechseln kann (auch über den Einschalttaster, dann müsste man ihn z.B. <0,5s drücken um zu scrollen oder >0,5s um einen neuen Testzyklus zu starten. Eine Alternative wäre eine Laufschrift in der 2. Zeile. Was meint ihr ist besser? Oder hat noch wer einen anderen Vorschlag? (größeres LCD nehmen geht eigentlich nicht...).
Datum:
Markus F. wrote: > Noch eine Frage: Wie sollte ich die Anzeige für die Gate-Schwellspannung > bei MOSFETs dann am besten machen? Im LCD ist da so kein Platz mehr. Wenn man man die unnötigen Infos entfernt, und den Rest etwas zusammenpackt, reicht es. Bei mir sieht die Anzeige so aus: N-Mosfet Qg=1234 GDS=123 Vt=1.23V
Datum:
> Wenn man man die unnötigen Infos entfernt, und den Rest etwas > zusammenpackt, reicht es. Bei mir sieht die Anzeige so aus: > N-Mosfet Qg=1234 > GDS=123 Vt=1.23V Okay, das ist auch eine Möglichkeit. Ist aber etwas unübersichtlich. Das ist aber trotzdem eine gute Idee und ich werde es auch erstmal so machen. Auf alle Fälle ist es besser als scrollen oder Laufschrift.
Datum:
Ich hatte mir auch erst überlegt einen Taster einzubauen mit dem man bei dem Ergebnis auf eine 2. Seite wechseln kann. Die 1. Seite wäre dann die allgemeinen Infos, also Typ + Belegung, die 2. die Basis-Emitter bzw. Gatespannung usw. Allerdings ist das viel Aufwand, und es sind ja nur die Mosfets bei denen es wirklich notwendig ist, daher die Kompaktanzeige.
Datum:
Hallo, ich hab mal eine Frage und zwar ist es möglich mit dem Tester auch die Durchlaßspannung von LEDs zu ermitteln ? mfg Stefan
Datum:
> ich hab mal eine Frage und zwar ist es möglich mit dem Tester auch > die Durchlaßspannung von LEDs zu ermitteln ? Ja, bis 2,5V. Ich werde diesen Wert aber nochmal etwas erhöhen, so auf 3,5V bis 4V. Das sollte für fast alle LEDs reichen. Höher als 4V sollte man aber vermutlich nicht gehen (dann wird die Wahrscheinlichkeit, dass irgendwelche Bauteile fälschlicherweise als Diode erkannt werden recht groß). LEDs werden als Diode angezeigt, mit entsprechender Durchlassspannung (ca. 2V bei Standard-LEDs).
Datum:
Das ist ein interessanten Projekt. Ich werde den Tester mal nachbauen. @Markus: Kannst du den neuen Quelltext zur Verfügung stellen? Unter http://www.mikrocontroller.net/articles/AVR-Transistortester findet sich nur das alte Programm. Oder habe ich etwas übersehen? Harald
Datum:
Ich habe jetzt den neuen Quelltext reingestellt und den Artikel noch etwas geändert. Folgende Features sind jetzt neu: - Erkennung von Verarmungs-MOSFETs und JFETs (n- uns p-Kanal; größtenteils noch ungetestet, weil ich kaum solche Bauteile habe) - Messung und Anzeige der Gate-Schwellspannung - Watchdog, damit der Tester nicht in irgendeiner Endlosschleife hängenbleibt - Erkennung von Dioden bis 4V Durchlassspannung (vorher: 2,5V) Das Programm würde sogar noch in einen Mega48 passen (3970 Bytes). Messung der Gate-Ladung ist aber noch nicht eingebaut. Da würde der Mega48 wohl auch nicht mehr reichen (da ist nämlich die Berechnung des natürlichen Logarithmus (ln) nötig).
Datum:
Ich werde dann wohl demmächst noch ein paar FETs kaufen. Um den Transistortester damit auszuprobieren, aber natürlich auch so zum Basteln... Folgende Typen habe ich nach einiger Sucherei gefunden: P-Kanal-JFET: 2N5461 (P-JFETs scheinen sehr selten zu sein) N-Kanal-Verarmungs-MOSFET: BF980 (ist ein Dual-Gate-Typ und damit auch allgemein zum Basteln recht interessant; einen anderen, der bei Reichelt erhältlich ist habe ich auch nicht gefunden) P-Kanal-Anreicherungs-MOSFET: IRF9540 o.ä. (hier ist die Auswahl recht groß) P-Kanal-Verarmungs-MOSFET: ? (sowas gibt es möglicherweise gar nicht, oder kennt ihr einen?) Solche FETs scheinen aber allesamt nicht so häufig anzutreffen zu sein, am ehesten noch die p-Kanal-Anreicherungs-FETs. In einer Kiste voll Elektronikschrott habe ich kein solches Bauteil gefunden. Immerhin waren 2 N-Kanal-JFETs (BF245) dabei...
Datum:
Sehe ich das richtig das der ganze linke Teil (Abzüglich der Blockkondensatoren und dem Taster) nur der Automatischen Abschaltung dient und auch weggelassen werden kann? Würde meine Schaltung einfach per Netzteil versorgen.
Datum:
Hi, super Projekt, werde ich auf alle Fälle auch nachbauen. Die Hardware ist elegant einfach. Ich werde aber auch die automatische Abschaltung weglassen. Für mich tut es ein zusätzlicher Schalter auch. Ist es dann nötig die Software anzupassen?
Datum:
> Ich werde aber auch die automatische Abschaltung weglassen. Für mich tut > es ein zusätzlicher Schalter auch. > Ist es dann nötig die Software anzupassen? Nein, es ist nicht nötig, die Software anzupassen. An der Hardware muss man dann folgendes ändern: T1, T2 und T3 entfallen, genauso die Widerstände R7, R8, R9 und R10. LED1 und C2 entfallen auch. Anstelle von T3 wird einfach eine Brücke eingesetzt. Die Pins 12 und 13 (PD6 und PD7) des ATMega8 werden einfach offen gelassen. Wer mag, kann auch von Pin 13 des Mega8 noch einen Taster gegen Masse anschließen. Damit könte man dann einen neuen Testzyklus starten, ohne den Tester aus- und wieder einschalten zu müssen.
Datum:
> Wer mag, kann auch von Pin 13 des Mega8 noch einen Taster gegen Masse > anschließen. Damit könte man dann einen neuen Testzyklus starten, ohne > den Tester aus- und wieder einschalten zu müssen. Denkbar wäre auch ein Taster (statt des Schalters) in der Batterieleitung. Man klemmt den Prüfling an, drückt den Taster (und hält ihn fest), liest ab und lässt den Taster los... Nein, ich habe es noch nicht nachgebaut, schließe es aber nicht aus. ...
Datum:
Wird bei deinem Tester der Leckstrom in die Berechnung des HFE Werte einbezogen ? Währe nämlich bei GE-Transistoren wichtig.
Datum:
> Wird bei deinem Tester der Leckstrom in die Berechnung des HFE Werte > einbezogen ? Nein, bisher noch nicht. Das ist auch nicht ganz so einfach
Datum:
Warum? Wenn du den Typ(NPN/PNP) hast, brauchst du die Pins für die Widerstände nur auf Eingänge umschalten. Danach Spannung messen und durch den Widerstand dividieren. Händische Methode hier angeführt: http://www.geofex.com/Article_Folders/ffselect.htm
Datum:
> Warum? Wenn du den Typ(NPN/PNP) hast, brauchst du die Pins für die > Widerstände nur auf Eingänge umschalten. > Danach Spannung messen und durch den Widerstand dividieren. Das stimmt zwar, die Auflösung der ADCs ist aber zu schlecht, um den Leckstrom genau messen zu können. Bei 5V Referenz und 10 Bit Auflösung kann man nur auf ~5mV genau messen. Das entspricht ca. 7,3µA Strom (durch den 680 Ohm-Widerstand). Bei 50µA Leckstrom wird da nicht viel angezeigt (ADC-Wert 7; da fallen schon interne Offsets ins Gewicht). Interessant wird es erst bei einigen 100µA, aber das ist auch für einen Ge-Transistor schon ein recht hoher Leckstrom. Sehr genau wird das somit nicht werden, aber einbauen werde ich die Messung trotzdem mal, schadet ja nicht.
Datum:
Interesant wäre es ja wenn das Display bei Germaniumtransistoren folgende Anzeigen tätigen würde: Diffusionsspannung Leckstrom Belegung Richtiger HFE (Leckstrom herausgerechnet) und: Temperatur (wichtig wegen Messung) Habe ja mal irgendwo im Forum gelesen, das die AVR intern einen Tempsensor verbaut haben.
Datum:
Tja wrote: > Habe ja mal irgendwo im Forum gelesen, das die AVR intern einen > Tempsensor verbaut haben. mmh. Also davon hab ich noch nichts gehört und auch im Datenblatt noch nicht gesehen. Wenn es aber so sein sollte fänd ich das echt cool.
Datum:
Es gibt irgendwelche (ich glaub bei den Tinys) modelle, die den Tempsensor drin haben, der aber nicht wirklich genau ist.
Datum:
ATiny25 z.B. haben einen integrierten Temperatursensor. @Markus: Ich brauch zwar das gerade nicht, was Du geschrieben hast, aber ich muss wirklich sagen: allen Respekt ! Ich glaube Du kannst Dir gar nicht vorstellen um wie viele IQ Punkte solche Leute wie Du den Durchschnitt des Forums hochziehen, der oft aus: "Hilfe ich will mir einen Roboter bauen, aber ich hab' keine Lust zum Programmieren" besteht. Also nochmal, sollt' ich's noch nicht erwähnt haben: RESPEKT !
Datum:
> ATiny25 z.B. haben einen integrierten Temperatursensor.
Ja, den wollte ich sogar schon mal für ein anderes Projekt nehmen. Der
ist wie die ADCs abzufragen (dafür muss man eben ADMUX entsprechend
setzen). Der Ausgabewert ändert sich je °C etwa um 1. Das ist schon
recht ungenau, zudem haben die Sensoren recht große Exemplarstreuungen.
Diese Sensoren sind mal wieder typisch "Kost' nix, taugt nix".
Über Germanium-Transistoren weiß ich allerdings nicht so viel, habe noch
nie einen benutzt (ist nicht meine Zeit...). Mittlerweile sind die ja
auch kaum mehr erhältlich.
Datum:
Hallo alle zusammen, die ersten Platinen habe ich bekommen die Bezugsquelle für euch habe ich mit in den Artikel (unter Hardware) geschrieben um hier mal keine Werbung zu machen ;) Die Platine an dich Markus versende ich direkt nach Ostern, vorher schaffe ich es leider nicht mehr. Sobald ich den Tester fertig habe mit Gehäuse etc. kommen mal ein paar weitere Bilder dazu. Ich wünsche allen ein frohes Osterfest und viele Eier ;) Thomas
Datum:
Hallo Markus, was ich als Zusatzfunktion interessant fände, wäre eine Leitungstestfunktion noch für Cat5 oder serielle Datenleitungen mit Erkennung von Kurzschlüssen und Kreuzungen (X-over oder Nullmodem). Man müßte dann evtl auf einen größeren Mikrocontroller, aber wenn ich mir so das Bild von der IT-WNS Platine anschaue müßte auch ein 40pin draufpassen (vorausgesetzt das Routing passt). Wahrscheinlich sollte man dann noch Adapter haben, aber das wäre glaub das kleiner Übel. Gruss Chris
Datum:
Naja das hat dann nicht mehr viel mit nem Transistortester gemein ... Man könnte sich aber trotzdem selbst mit nem größeren µC nen "allestester" zusammenschustern, basierend auf dem code hier.
Datum:
Danke für das tolle Projekt, animiert direkt zum Nachbau! Wird das Layout auch zum download bereitgestellt? Schöne Osterfeiertage
Datum:
Das Layout der Platine von IT-WNS.de ist doppelseitig. M.E. nach ist das nicht wirklich nötig und man würde mit einer handvoll Brücken auskommen. Besser fände ich daher das .sch, dann kann man sich seine Platine selbst machen.
Datum:
So einen "Allestester" finde ich eigentlich nicht so sinnvoll. Praktisch wäre es natürlich, aber man müsste es so machen, dass man auswählen muss was getestet werden soll. Wäre doch irgendwie ungünstig, wenn ein defekter Transistor als Cat5 Kabel angezeigt wird... Zum Test von Kabeln (z.B. Cat5) bräuchte man auch entsprechend viele Portpins und einen für das jeweilige Kabel passenden Terminator, der alle Pins des Kabels auf definierte und für jede Ader unterschiedliche Pegel legt (im einfachsten Fall eine Spannungsteiler-Kette). Außerdem müsste man Buchsen für RJ45, D-Sub-9, usw. einbauen, je nachdem welche Kabel unterstützt werden sollen. Meiner Meinung nach wäre ein extra Tester da sinnvoller.
Datum:
Markus F. wrote: > So einen "Allestester" finde ich eigentlich nicht so sinnvoll. Praktisch > wäre es natürlich, Ist finde ich praktisch wenn man keinen so großen Geräte-Fuhrpark hat. Allerdings bräuchte man auf jeden Fall ein zweites Gerät, damit man auch verbaute Kabel testen kann. (Sender & Empfänger) > Zum Test von Kabeln [] bräuchte man auch entsprechend viele Portpins Oder einen 74HC595 für die Ausgänge und einen 74HC165 für die Eingänge. > und einen für das jeweilige Kabel passenden Terminator, der > alle Pins des Kabels auf definierte und für jede Ader unterschiedliche > Pegel legt (im einfachsten Fall eine Spannungsteiler-Kette). Das wäre eine Möglichkeit. Eine andere: Es wird der Reihe nach an die Pins ein High Signal angelegt, die restlichen Pins fungieren als Masse. Entkopplung durch Dioden. Somit erkennt man Unterbrechungen, Vertauschungen, Schlüsse.
Datum:
> Es wird der Reihe nach an die Pins ein High Signal > angelegt, die restlichen Pins fungieren als Masse Damit kann man aber keine Unterbrechungen feststellen, wenn das andere Ende des Kabels offen bleibt. Oder meinst du, dass man 2 "intelligente" Geräte (jeweils mit µC) hat? Da wäre dann aber ein "intelligentes" Testgerät und ein passiver Terminator einfacher. Das mit den Schieberegistern wäre auch eine Möglichkeit. Allerdings haben die nur 8 Bit. Da wird man dann wohl je 2 davon brauchen, um z.B. auch D-Sub-9-Kabel testen zu können. Ist natürlich Geschmackssache, ob man einen Tester für alles oder einzelne Tester für jeden Bauteiltyp haben möchte. Kabel und Transistoren sind aber meiner Meinung nach doch recht unterschiedliche Teile. Sonst könnte man ja gleich noch einen LTC2400 (24-bit-ADC), Spannungsteiler und Shunts zur Strommessung einbauen und hat dann gleich noch ein 8-Digit-Multimeter...(zumindest in der Theorie, in der Praxis ist die nutzbare Auflösung geringer).
Datum:
Markus F. wrote: > Oder meinst du, dass man 2 "intelligente" Geräte (jeweils mit µC) hat? Ja, einmal ein µC, für die andere Seite langt ein Schieberegister. > Da wäre dann aber ein "intelligentes" Testgerät und ein passiver > Terminator einfacher. Mhh, und wenn die Adern unterschiedliche Widerstände haben, weil Signal und Stromkabel zusammenliegen. Zugegeben ist das die Ausnahme. > Kabel und Transistoren sind aber meiner Meinung nach doch recht > unterschiedliche Teile. Allerdings. Man könnte den Kabeltester ja parallel entwickeln.
Datum:
Hallo Markus, interessantes Projekt. Ich bin dabei alles zusammen zu löten. Auf der Artikelseite ist allerdings immer noch eine Software vom 17.04.2008 verlinkt. Gibt es die aktuelle Version auch irgendwo?
Datum:
Erstmal Danke an Markus F. für dieses Projekt, ich hab mir das nachgebaut und es tut wunderbar! Zum Thema "Allestester": Kabeltester finde ich weniger wichtig... Aber Cool wäre es, wenn das Ding auch passive Bauteile (Sprich Widerstände/Kondensatoren) erkennen/klassifizieren könnte. Ich bin ja elektrotechnisch (noch) ein totales Greenhorn, aber ich denke, zumindest Widerstände sollten doch (ohne Änderung der Hardware) möglich sein?!?
Datum:
Die Software ist nicht vom 17.04.2008, sondern vom 21.03.2009. Das falsche Datum der Dteien in dem Archiv kommt daher, dass ich beim Erstellen scheinbar eine falsche Systemzeit eingestellt hatte. Ja,das Messen von Widerständen wäre mit der jetzigen Hardware möglich. Allerdings haben die ADCs nur eine Auflösung von 10 Bit, also 1024 verschiedene Werte. Da ist ein Billigst-Multimeter besser (meist 2000 verschiedene Anzeigewerte, bzw. sogar 3999, wenn man den negativen Bereich mitzählt). Außerdem wäre zum Messen von Widerständen eine Konstantstromquelle hilfreich. Die ist aber in dieser Hardware nicht vorgesehen, weil sie zum Halbleiter testen nicht nötig ist. Man kann Widerstände auch ohne Konstantstromquelle testen, indem man den zu testenden Widerstand mit einem anderen R als Spannungsteiler schaltet. Die Genauigkeit wird dann aber am besten, wenn beide Widerstände etwa gleich groß sind. Bei der Transistortester-Hardware stehen aber nur 680 Ohm und 470kOhm zur Verfügung. Widerstände wie 10 Ohm oder 33kOhm können damit nur recht unpräzise gemessen werden. Kurz: Eine Widerstands-Messfunktion wäre denkbar, aber wohl so ungenau, dass sie wenig hilft. So als nette Zusatzfunktion kann ich es aber mal einbauen. Kondensatoren wären auch möglich. Dafür ist aber eine Logarithmus-Berechnung nötig. Mit der in avr-gcc vorhandenen wird das Programm so groß, dass es kaum mehr in einen Mega8 passt. Müsste man wohl in Assembler selbst schreiben (Stichwort:Logarithmusreihe). Ich hatte sowieso mal vor, noch ein Testgerät für Widerstände und Kondensatoren zu bauen. Am besten auch noch mit ESR-Messung und Schutz gegen eventuell vorhandene Spannungen auf dem Kondensator. Dafür wäre aber ein 16-bit-ADC von Vorteil, und ich habe noch kaum einen halbwegs schnellen (>10kSps), bezahlbaren (<10€) und auch bei z.B. Reichelt erhältichen gesehen. Von der Hardware her dürfte das Ganze dann auch ein gutes Stück komplexer werden als der Transistortester.
Datum:
Markus F. wrote: > Ich hatte sowieso mal vor, noch ein Testgerät für Widerstände und > Kondensatoren zu bauen. Am besten auch noch mit ESR-Messung und Schutz > gegen eventuell vorhandene Spannungen auf dem Kondensator. Dafür wäre > aber ein 16-bit-ADC von Vorteil, und ich habe noch kaum einen halbwegs > schnellen (>10kSps), bezahlbaren (<10€) und auch bei z.B. Reichelt > erhältichen gesehen. > Von der Hardware her dürfte das Ganze dann auch ein gutes Stück > komplexer werden als der Transistortester. So eine Idee hatte ich auch mal, ich wollte das ganze aber noch erweitern so dass es nicht nur RLC einzeln, sondern aus irgendeiner beliebigen RLC Schaltung RLC einzeln ermitteln kann. Dies ist vor allem wichtig um parasitäre Cs bei Spulen zu ermitteln. Theoretisch ist das möglich, die Realisierung dürfte aber recht kompliziert werden, ohne DSP oder ähnliches nahezu unmöglich. Ein Ansatz für ein einfaches RLC Meter findet man hier: http://www.elektor.de/jahrgang/2008/juni/2-euro-rl... Das muss ich demnächst mal ausprobieren, ob es R+L, bzw. C+R auch richtig messen kann. Sowas sollte sich auch relativ leicht auf einem µC (ARM oder ähnliches mit entsprechendem Audio Codec Interface) realisieren lassen. Das hier sieht auch gut aus, leider habe ich weder Schaltplan noch sonst was gefunden. Aber ein 25MHz DSP klingt schonmal vielversprechend: http://www.elektor.de/jahrgang/1997/april/high-tec... PS: Weiß jemand wie LCR Meter arbeiten? Mein gekauftes erzeugt einen Sinus mit 1kHz und etwa 10-20mV. Es kann L+R, bzw. C+R messen und lässt sich selbst durch einen zusätzlichen C parallel zur Spule nicht täuschen.
Datum:
Angehängte Dateien:Vielen Dank für das Projekt, habe das gestern nachgebaut und funktionierte fast auf Anhieb. Es hat sich in der LCD-Initialisierung ein Fehler eingeschlichen so das mein 2-Zeilen Display nur einzeilig lief. Laut dem HD44780 Datasheet (Seite 46, Figure 24 4-Bit Interface) muss 3 mal 0011 auf D7..D4 gesendet werden. In lcd_init() wurde aber lcd_command(0x03) verwendet. lcd_command sendet aber 2 x 4 Bit. Das gleiche für die 4 Bit-Initialisierung. Bei mir klappt es so (und das sollte auch für alle anderen Displays funktionieren):
void lcd_init(void) { LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN1); // Port auf Ausgang schalten // muss 3mal hintereinander gesendet werden zur Initialisierung _delay_ms(15); //lcd_command(0x03); LCD_PORT &= 0xF0; LCD_PORT |= 0x03; // D7..D4 = 0x03 lcd_enable(); // Strobe E _delay_ms(5); // according to datasheet: more than 4.1 ms lcd_enable(); _delay_ms(1); // according to datasheet: more than 100 uS lcd_enable(); _delay_ms(1); // 4 Bit Modus aktivieren //lcd_command(0x02); LCD_PORT &= 0xF0; LCD_PORT |= 0x02; lcd_enable(); _delay_ms(1); lcd_command(0x28); // 4Bit / 2 Zeilen / 5x7 lcd_command(0x0C); // Display ein / Cursor aus / kein Blinken lcd_command(0x06); // inkrement / kein Scrollen lcd_clear(); } |
ich habe noch in main.c ein define eingebaut falls kein automatisches ausschalten verwendet wird (#define AUTOPOWEROFF) in Zeile 8. Falls AUTOPOWEROFF gesetzt ist, wird der originale Code verwendet. Andernfalls wird auf ewig auf Tastendruck gewartet um den Test neu zu starten. Im Anhang der geänderte Code + Makefile + eagle sch und brd für eine einseitige Platine.
Datum:
=> Armin Diehl: Stimmt, da habe ich einen Fehler gemacht. Ich nehme halt für jedes Projekt die gleiche lcd-routines.c und lcd-routines.h her. Bei mir hat das so auch immer geklappt, aber es scheint LCDs zu geben, die da Probleme machen. Danke für den Hinweis! Noch eine Frage an alle: Ich habe mal versucht, eine Testfunktion für Widerstände einzubauen (ist noch nicht in dem zip-Archiv enthalten). Der Messbereich wäre etwa 100 Ohm bis 900 kOhm. Allerdings werden damit auch viele defekte Halbleiter als Widerstand und nicht als "defektes Bauteil" erkannt. Ich weiß jetzt nicht, ob die Testfunktion für Widerstände damit eher sinnvoll oder eher störend ist. Die Erkennung von funktionierenden Halbleitern ist davon aber nicht betroffen. Das Testergebnis "Transistor" hat nämlich eine höhere Priorität als "Widerstand". Sehr leistungsstarke Dioden (z.B. 35A-Gleichrichter) könnten aber als "Widerstand" erkannt werden.
Datum:
Also ich find ne Widerstandtestfunktion eher nicht soooo sinvoll, ggf höchstens an nem zusätzlichen ADC Port. Sowas zu testen schafft zur not jedes Multimeter (wenn man den Verdacht hat der Wid sei defekt).
Datum:
So, ich habe jetzt mal wieder eine neue Version reingestellt. Eine "kleine" Version, die auch noch auf einen Mega48 passt. Hier ist der genannte Fehler mit dem LCD auch schon berichtigt. Diese Version wird aber kaum mehr erweitert werden, weil in einem Mega48 dafür keim Platz mehr wäre. Da ich keinen Mega48 zur Hand habe konnte ich sie damit nicht testen. Sollte aber funktionieren. Und eine "große" Version, für die dann eben ein Mega8 nötig ist. Die hat die Widerstands-Testfunktion eingebaut. Das ist bisher auch der einzige Unterschied zu der "kleinen" Version. In Zukunft kommt evtl. noch die (ungefähre) Messung der Gate-Ladung bei MOSFETs. Der Fehler bei der LCD-Ansteuerung ist hier natürlich auch berichtigt.
Datum:
Es gibt jetzt Transistortester, LC-Tester, Widerstandstester -- sicher hab ich noch welche vergessen. Da lässt sich doch bestimmt mal ein Gerät bauen, das alles kann.
Datum:
=> PJ: So ein "Universaltester" wäre natürlich auch denkbar. Meiner Meinung nach wäre es dabei aber sinnvoller, für jeden Bauteiltyp eigene Test-Anschlüsse vorzusehen. Also extra Pins für "Transistor und andere Halbleiter", "Kondensator", "Spule", ... Man braucht nämlich für fast jedes Teil andere Test-Hardware": Für Kondensatoren evtl. Eingangs-Schutzschaltungen, damit der Tester nicht kaputt geht, wenn man einen geladenen Kondensator anschließt. Um Spulen zu messen wäre ein Kondensator sinnvoll (=> Schwingkreis). Diesen Kondesator kann man zum Transistoren testen aber überhaupt nicht brauchen, usw. Übrigens: So extrem ungenau ist die Widerstands-Testfunktion nicht. Ich habe mal testweise einige Widerstände damit gemessen. Der erste Wert ist das Ergebnis des Transistortesters. Der zweite Wert in Klammern wurde zum Vergleich mit einem guten Multimeter ermittelt. 234 Ohm (218,9 Ohm) 996 Ohm (998,2 Ohm) 4288 Ohm (4342,2 Ohm) 9860 Ohm (9927 Ohm) 11968 Ohm (11924 Ohm) 37,7k (38,719k) 149,6k (150,97k) 469,0k (472,04k) Ich finde die Genauigkeit zwar nicht extrem toll, aber durchaus brauchbar. Der Messbereich ist übrigens etwa 100 Ohm bis 900k Ohm.
Datum:
Hallo Ich habe mir den Tester nachgebaut, hat auf Anhieb funktioniert. Es ist die Version ohne Abschaltung. Allerdings funktioniert das neuerliche Testen nur solange, bis im Display "Timeout" kommt, dann hat der Taster keine Funktion mehr und man muss Aus und wieder Einschalten. Ist das gewollt so oder habe ich da was übersehen? Hubert
Datum:
Hat sich erledigt. Ein paar Threads weiter oben hat "Armin Diehl" die Lösung schon geschrieben. Die paar Zeilen im Code dazu und alles läuft nach Wunsch. Gratulation und Dank an Markus F., ein wirklich tolles Gerät. Hubert
Datum:
Ich habe jetzt nochmal eine verbesserte Version reingestellt. Die Messung der Gate-Schwellspannung für p-Kanal-Mosfets war nämlich völlig falsch. Ich hatte nur vorher keine P-Kanal-Mosfets, um das mal testen zu können. Jetzt habe ich welche, und die Messung der Gate-Schwellspannung habe ich berichtigt. Die Messung der Gate-Schwellspannung hat jetzt auch eine Zeitbegrenzung. Wenn der Mosfet sonst bei der Messung nie zu leiten beginnt, bliebe der Tester in einer Endlosschleife hängen, bis der Watchdog einen Reset auslöst. Die mögliche Zeit ist jetzt allerdingsrecht kurz. Für einen starken Mosfet (IRFP450) mit zusätzlich 6,8nF zwischen Gate und Source reicht es aber. Noch mehr Gate-Kapazität haben Mosfets eigentlich nicht. Außer extrem starke Typen, aber die hat man im Hobby-Bereich ja eher selten. Wenn diese Zeitbegrenzung anspricht, wird als Gate-Schwellspannung eben 0mV angezeigt. Die Pin-Belegung wird aber trotzdem angezeigt. Außerdem habe ich das von Armin Diehl genannte Feature (beim Aufbau ohne automatische Abschaltung kann man den Test auch per Taster neu starten) eingebaut. In meiner Version ist dafür auch kein define nötig. Man kann die gleiche Firmware ohne Änderungen für den Tester mit oder ohne Abschaltung verwenden. Kostet halt ein paar Bytes mehr Flash, aber der reicht ohnehin noch leicht aus. Auch im Mega48 sind damit noch 184 Bytes frei, was schon noch für die ein oder andere Fehler-Korrektur reichen sollte. Im Mega8 sind in der jetztigen Version (da ist wie gesagt die Widerstandsmessung drin, im Gegensatz zu der Mega48-Version) noch 3670 Bytes frei. Das reicht noch für eine Menge Erweiterungen.
Datum:
Hallo und Kudos to the Entwickler! Während meiner ersten AVR-Bastelversuche bin ich auf dieses geniale Projekt gestoßen. Beim Bestücken der Platine (nach Armin D.) fällt mir die Z-Diode am Eingangsspannungsteiler auf. Im Bild von Armins Aufbau ist die nicht zu sehen, auch in Markus Schaltplan find ich keine. Kann mir jemand eine Tipp geben? Danke und Gruß, Jörn
Datum:
Mit einem Steckernetzteil könnten am Spannungsteiler mehr als 5V sein und damit auch am ADC-Eingang. Das sollte damit wohl verhindert werden.
Datum:
> Mit einem Steckernetzteil könnten am Spannungsteiler mehr als 5V sein > und damit auch am ADC-Eingang. Das sollte damit wohl verhindert werden. Deshalb ist die Schaltung ja auch mit einem Spannungsregler versehen worden und wird aus einem (ansonsten unökonomischen) 9V-Block gespeist. ...
Datum:
Die 5V am ADC-Eingang würden erst bei mehr als 20V Betriebsspannung erreicht werden. Da kann man auch noch problemlos ein unstabilisiertes 12V-Netzteil (Leerlaufspannung ~17V) nehmen. Ich denke, da ist eine Zenerdiode überflüssig. Wer will, kann natürlich eine einbauen, schaden tut es nicht.
Datum:
Ich habe das Projekt nachgebaut,und hab ein paar Probleme mit dem programmieren des ATMEGA8. Ich nutze diesen Programmer http://s-huehn.de/elektronik/avr-prog/avr-prog.htm für den Parallel-Port.Zusammen mit der Software PonyProg2000, ich habe Probleme damit die "FuseBits" richtig einzustellen.Der Autor des Artikels hat angegeben das lfuse = 0xc1(C1), hfuse = 0xd9(D9) gesetzt werden müssen.Als Taktquelle wird ja der interne Oszilator genutzt.Wie setzt man denn die Fuses in PonyProg Hexadezimal?Ich hab da nur die Checkbox Auswahlmöglichkeit.Und welchen Taktfrequenz hat der interne Oszilator?1MHz wie es Standart beim Auslieferungszustand des Atmega8 ist?Oder mehr? Kann mir da jemand einen Tipp geben wie ich den Atmega8 in diesem Fall richtig programmiere/vorbereite? Eignet sich dafür ein anderes Programm besser,was mit meinem improvisierten Programmer arbeitet? MfG Thomas
Datum:
Gib hier www.engbedded.com/fusecalc/ das c1 und d9 ein, dann siehst du welche Haken du setzen musst.
Datum:
Hallo Hubert danke für den Tipp,jetzt weis ich wie es geht.Leider hab ich noch paar Probleme mit dem programmieren des Atmega8 die Adapter aus Inet fürn parallel Port,wollen nicht so funktionieren.Da muss ich nochmal genauer schauen,da ich über kein AVR-Board verfüge und nur den Adapter bauen möchte. MfG Thomas
Datum:
Hallo Thomas, welches Betriebsystem nuzt du? Ich kann dir TwinAVR empfehlen zum Programmieren, auf der Seite ist ne Anleitung wie man das ganze unter XP einsetzen kann, oder eine PC mit Win98 suchen.
Datum:
Zum AVRs programmieren kann ich avrdude sehr empfehlen. Das dürfte eigentlich alle gängigen ISP-Programmer unterstützen. Ist halt eie Konsolenanwendung. Es gibt aber auch grafische Oberflächen dafür (finde ich aber eigentlich überflüssig).
Datum:
Hallo, ich habe den Tester ohne automatische Abschaltung mit einem Atmega8 aufgebaut, funktioniert soweit super! Nur bekomme ich halt auch, wie schon oben beschrieben, nach ein paar Sekunden "Timeout" angezeigt. Jetzt soll es ja schon eine verbesserte Version geben, nur weiß ich nicht welche ich da nehmen soll. Die die ich geflasht habe müsste ja eigentlich die aktuelle für Atmega8 sein! Ich habe einfach die Dateien TransistorTestNew.eep und TransistorTestNew.hex geflasht! Ist da die Neuerung vielleicht noch nicht drin? Sorry bin neu auf dem Gebiet und bekommen den C-Code leider auch nicht kompiliert. :( Wäre vielleicht jemand so freundlich für mich ein funktionierendes Hex-File hochzuladen? Würd mich freuen! Grüße
Datum:
Angehängte Dateien:Diese Version habe ich in Betrieb, ohne Abschaltung. Hubert
Datum:
=> Fetti: Hast du auch sicher die neue Version runtergeladen? Vor so gut 2 Wochen habe ich nämlich eine Version reingestellt, bei der dieser Fehler (mit dem "Timeout") behoben sein sollte. Ansonsten werde ich das aber noch mal überprüfen.
Datum:
@ Markus F. Vielleicht wäre es auch mal ganz nett, wenn die Dateien das aktuelle Datum bekämen und nicht alle vom 17.04.2008 wären.
Datum:
@Hubert G.: Danke dir fürs hochladen. Werd ich morgen früh mal ausprobieren, da ich die Schaltung auf der Arbeit liegen hab. @Markus F. Also die Dateien die ich benutzt hab hatte ich genau letzte Woche Mittwoch heruntergeladen. Danke für eure schnelle Unterstützung, Grüße
Datum:
Guten Morgen, so ich hab soeben die Dateien die Hubert G. hochgeladen hat geflasht. Passiert genau das selbe...versteh ich nicht! Wodurch wird denn eigentlich der Timeout ausgelöst, könnte es vielleicht auch einfach ein Schaltungsproblem sein. Also das ich beim Aufbau nen Fehler drin hab. Grüße
Datum:
Angehängte Dateien:Ich habe jetzt noch mal die Datei kontrolliert, die ist sicher richtig. Als Ergänzung habe ich jetzt noch "Halbleitertester" und "Version 1.10" beim Start im LCD hinzugefügt. Wahrscheinlich hast du da ein Schaltungsproblem, da es bei mir einwandfrei funktioniert.
Datum:
Hallo nochmal, die Version ist jetzt noch schlimmer. Also beim start zeigt er: "Halbleitertester Version 1.10" --- "Test läuft..." --- [Transistorinformation] (ca 2-3 Sekunden lang) --- "Halbleitertester Version 1.10 Tim" --- und da hängt er dann! Ich denke das "Tim" am Displayende st der halbe Teil von Timeout! Grüße
Datum:
Angehängte Dateien:Also wie schon gesagt, bei mir läuft diese Version einwandfrei. Da musst du einen Wurm in deiner Schaltung haben. Meine Schaltung im Anhang, ist aber die gleiche wie von Markus F.
Datum:
Hallo, habe die Schaltung nur mit ISP und LCD ohne den Rest aufgebaut, die LCD Ansteuerung will absolut nicht funzen. LCD von Angelika LCD 162 ist ok, da mit einem anderen Programm und eigenen LCD Routine eine korrekte Ansteuerung des LCD vorhanden ist. Gruß Jochen
Datum:
=> Fetti: Du verwendest aber schon einen Taster, oder? Bei einem Schalter (oder wenn man den Taster lange gedrückt hält) könnte das mit dem "Timeout" nämlich passieren. Der Transistortester wartet nämlich, bis der Taster losgelassen wird. Wenn das nicht passiert (z.B. weil man einen Schalter verwendet und ihn eingeschaltet lässt), wartet der Tester im Prinzip "bis in alle Ewigkeit". In diesem Falle also so lange, bis der Watchdog für einen Reset sorgt. Dann kommt die "Timeout"-Meldung. => Jochen: Ist das LCD auch HD44780-kompatibel? Sonst wird es natürlich nicht funktionieren.
Datum:
Hallo Markus, das Display ist HD44780-kompatibel und im Prinzip sind meine Ansteuerroutinen so aufgebaut wie deine, aber irgendwo steckt der Wurm darin. Gruß Jochen
Datum:
Nabend! So, er funktioniert jetzt! Es waren zwei Verdrahtungsfehler in Tastergegend! Funktioniert jetzt wirklich gut! Ich bin begeistert! Danke an alle für eure Hilfe! Grüße
Datum:
Hi! Mal eine Frage zu der Software: ich habe das ganze nun nachgebaut und wollte aber ein VFD benutzen. Also erstmal die lcd-routines.c/.h ausgetauscht und alle dort vorhandenen Methoden neu implementiert. Leider lief überhaupt nichts, weil fest kodiert im Hauptprogramm noch Befehle an das LCD gesendet wurde (u.a. Zeichendefinitionen, Zeile setzen, Cursor positionieren, etc). Auch Sonderzeichen wurden hart ausgegeben anstatt sie z.B. in den lcd spezifischen Quellen zu definieren. Eine Anpassung ist damit nicht wirklich möglich, auch der gesamte Code ist wirklich nicht wartbar: 1. Keine Include Schutz im Header von lcd-routines.h 2. include der <avr/eeprom.h> ohne irgendwas davon zu nutzen. Entfernt man dies fällt man auf die Nase, weil dieser Include im Main.c gebraucht und dort nicht inkludiert ist. 3. Warum zum Teufel wird eine F_CPU definiert in der lcd-routines.h? Vor allem noch mit 8 MHz, wo doch die Readme in dem Packet die Fuses auf 1 MHz internal oscillator definieren. Was denn nun? 8 oder 1 Mhz. Welche Definition nun die delay Routinen benutzen ist dabei vollkommenes Lotto. 4. Warum wurde die Taktfrequenz nicht in den Projektoptionen angegeben? Dort sollte das zentral angegeben sein, dann ist auch F_CPU definiert - aber so versteckt ist das mehr als bösartig. Sorry, aber ich bin gefrustet über dieses .ZIP file - und das musste mal raus. Ich werde mich _vllt._ mal ransetzen und das ganze aufräumen und dann hier reinstellen. Danach sollte es auch einfacher sein, das ganze auf andere Displays anzupassen. Gruss
Datum:
Hi!
Klaus schrieb:
> Warum schreibst Du Dir nicht einfach Dein eigenes Ding?
Weil ich das Rad nicht neu erfinden wollte. Es ist ein (bisher so
scheinendes) gut funktionierendes Projekt, was gepflegt und getestet
ist. Und bisher habe ich auch nur Kritikpunkte am Quellcode, nicht am
Projekt vom Aufbau oder elektronischen Sinne her. Ich war halt nur so am
verzweifeln, da ich wirklich dachte/hoffte das es auch Quellcode-mäßig
gut aufgebaut ist.
Ich will und mag nichts gegen das Projekt sagen, ich wollte es mir
schliesslich nicht umsonst nachbauen. Also von daher nochmal zur
Klarstellung: Das Projekt ist super!
Ich werde mal schauen wie ich das nun mache. Ich denke mal, wenn ich
mich wirklich mal ransetze und den Originalcode aufräume und dann diesen
hier ablege, dann kann ich von dem ausgehend besser das andere Display
einbauen. So haben dann auch andere was davon.
Es hatte nur seinen Charme, da das VFD nur den seriellen Sender bräuchte
als Verbindung, da wäre noch viel frei geblieben.
Grüsse
Datum:
Hallo, @Thomas K. (muetze1): ein Problem, daß mir in 90% der Hobby-Projekte auch begegnet... Andererseits sind z.B. auch meine Sachen in 99% der Fälle nur für mich geschrieben und gebaut. Mein Vorschlag: pass es für Dich an, aufgeräumt oder nicht. Das ist dann nicht die feine englische Art, Du hast aber ein spielendes Gerät. Ob es Dir die Zeit Wert ist, daß ganze Projekt aufzuräumen, universelle zu gestalten, anderen zur Verfügung zu stellen, das mußt Du natürlich selbst entscheiden. Meine Erfahrung: man macht sich viel Arbeit und der erst, der dann das Ergebnis runterlädt, will irgendwas ändern, was man überhaupt nicht angedacht hat und man wird angemault. ;-)) Die Mehrheit will zusammenlöten, brennen und benutzen. Etliche wollen umbauen und ändern, haben aber Zeit/Fähigkeiten/Lust dazu nicht. Ganz wenige wollen Ändern und können das auch. Die machen es dann eben einfach. Oft hört man davon dann garnichts. PS: ich habe auch so einen Transitortester. Basiert auf dem Projekt vom Bernhard Schulz. Software komplett neu geschrieben und etwas erweitert (nicht so umfangreich wie dieser hier). Der wird einfach benutzt. Vielleicht brenne ich auch diese Version hier mal rauf. Gruß aus Berlin Michael
Datum:
> PS: ich habe auch so einen Transitortester. > Basiert auf dem Projekt vom Bernhard Schulz. > Software komplett neu geschrieben und etwas erweitert (nicht so > umfangreich wie dieser hier). > Der wird einfach benutzt. Vielleicht brenne ich auch diese Version hier > mal rauf. Die sind nicht pinkompatibel. 8-( ...was beweist, dass Markus nicht bei Bernhard abgekupfert hat... ;-) Ich habe übrigens noch keinen, das liegt wohl daran, dass ich kein C kann und ungern unbesehen (und unverstanden) fremden Code benutze. Und Bernhards Code war mir zu aufräumungsbedürftig, das wollte ich mir nicht antun. Ich werde aber wohl irgendwann diesen Tester (den von Markus F.) in einfachster Form (Taster in Batterieleitung) aufbauen und zusammen mit einem 9V-Block in ein Gehäuse verfrachten. Ein geeignetes LCD (f)liegt hier mit Sicherheit noch irgendwo herum. Vielleicht überwinde ich auch irgendwann meinen inneren Schweinehund und installiere mal WINAVR. Aber nur vielleicht. ;-) ...
Datum:
Hallo, @ Hannes Lux (Gast): naja, das Umverdrahten würde ich noch machen... ;-) Ich kann Dir gern mal meinen ASM-Code für die "Bernhard-Schaltung" zukommen lassen. Bei Interesse schick mir einfach eine Mail. Mehr als löschen kannst Du ihn ja nicht. ;-) Gruß aus Berlin Michael
Datum:
Hannes Lux schrieb: > (f)liegt hier mit Sicherheit noch irgendwo herum. Vielleicht überwinde > ich auch irgendwann meinen inneren Schweinehund und installiere mal > WINAVR. Aber nur vielleicht. ;-) > > ... Hab mich dann vor einiger Zeit auch mal überwunden, tut garnicht weh :D Also trau dich man muß ASM ja nicht aufgeben ;)
Datum:
Eine Frage wegen der Versorgungsspannung und der automatischen Abschaltung: Sehe ich das richtig, das T2 nur dazu da ist dem Controller zu signalisieren, das der Taster gedrückt wurde ? Wenn ich diesen nicht brauche (eigene Firmware) kann ich doch einfach den Taster statt auf die Basis von T2 auf Masse ziehen, oder?
Datum:
RitschRatsch wrote: > Sehe ich das richtig, das T2 nur dazu da ist dem Controller zu > signalisieren, das der Taster gedrückt wurde ? > Wenn ich diesen nicht brauche (eigene Firmware) kann ich doch einfach > den Taster statt auf die Basis von T2 auf Masse ziehen, oder? Ja, genau so kannst du es machen Und das mit den LCD-Befehlen direkt im Code habe ich gemacht, um Flash zu sparen. Und es sind nur 4 Befehle, die direkt in der Form "lcd_command(x)" im Code stehen. Zwei davon sind aber schon als Makros definiert ("Line1()" und "Line2()") Eine andere setzt den Cursor an eine bestimmte Position und ist auch im Code kommentiert. Und noch eine initialisiert das Senden eines Custom-Zeichens (für die Darstellung einer Diode) an das LCD. Das musst du für ein VFD vermutlich sowieso ändern. Natürlich könnte man das auch alles in die lcd-routines.c legen. Aber so schlimm finde ich diese 4 Befehle in der main.c jetzt auch nicht.
Datum:
Moin! Und was ist mit dem anderen Dingen? Womit läuft der MC nun? 8 MHz oder 1 MHz? Muss ich beim aufräumen nun die ganzen Wartezyklen und -befehle um den Faktor 8 verlängern? Was ist mit den C++/Header Trennung? Was ist mit der doppelt Definitionsschutz im Header? Definiere mir einfach nochmal die nun tatsächliche genutzte MCU Frequenz. Ich habe mir ein Standard LCD geordert um erstmal den Aufbau direkt nachvollziehen zu können, da deine Firmware so nicht läuft bei mir. Ich bekomme keine Anfangasausgabe und da ist nun die Frage ob die serielle Kommunikation nach der Initialisierung gestört wird oder es ein Fehler von der VFD Ansteuerung ist (was sich nur auf serielle senden beschränkt). Also grundlegend: ich werde es aufräumen, wenn ich das Display erhalten habe und werde es dann hier einstellen. Dann kann ich gleich mal schauen ob der Code nicht vllt. an manch offensichtlichen Stellen verkleinert werden kann. Grundsätzlich ist die Definition der Funktionen egal. Ob nun in der lcd-routines.h/.cpp oder in der main.cpp macht hierbei keinen Unterschied und spart auch kein Flash. Grüße, Thomas
Datum:
Moin! Nochmal ein Nachtrag: der erste Teil klingt vllt. etwas harsch, das sollte es aber nicht! Wie ich schon damals geschrieben habe: Das Projekt will ich mir ja nicht umsonst nachbauen. Ich bräuchte jetzt vor allem mal eine definitive Info zum Taktfrequenz und dann kann ich mich mal ranmachen. Ich will ja das alle was davon haben und ich werde auch daran arbeiten, dass der Code nicht grösser sondern eher kleiner wird. Grüsse, Thomas
Datum:
Thomas K. schrieb: > Ich bräuchte jetzt vor allem > mal eine definitive Info zum Taktfrequenz und dann kann ich mich mal Einfach mal nach "mhz" hier im Thread gesucht und siehe da: Beitrag "Re: Transistortester mit AVR" 900ss
Datum:
Oki, danke. Den Beitrag mit der Info habe ich dann übersehen, hatte mich damals einmal komplett durch den Thread gearbeitet. Gut, dann weiss ich nun Bescheid und werde schonmal anfangen ein wenig das ganze in Sachen Display offener zu gestalten. Das wird dann spannend, wenn ich das Display habe, ob es dann noch alles läuft...
Datum:
Hallo! Ich habe da mal eine frage zum original Schaltplan mit Abschaltung. Leuchtet die LED1 bei Betrieb? Ich habe diesen Zweig der Schaltung aufgebaut, aber irgendwie verstehe ich es nicht ganz. Die Schaltung scheint zu funktionieren, allerdings leuchtet LED1 nicht. Bei R7=27k @ 9V fliessen ja auch nur ~ 0.3 mA. Das ist doch viel zu wenig, um die LED leuchten zu lassen. Oder verstehe ich da was falsch?
Datum:
@micha ich zitiere mal aus dem Artikel: "LED1 dient dazu, die Spannung an S1 auch im Betrieb hoch genug zu halten um T2 aufzusteuern" Die LED dient nicht zur Betriebsanzeige, das macht ja schon das Display ;) Gruß Thomas
Datum:
Sicherheitshalber schreibe ich es hier nochmal: Die Taktfrequenz ist 1MHz. => Thomas K.: Wo hast du denn die Definition mit den 8MHz gefunden? Ich habe extra mal alle Dateien aus der neuesten Firmware-Version nach "8000000" durchsucht und nichts gefunden. Da steht auch 1MHz drin.
Datum:
Moin! Die ist im Header von lcd-routines.h. Ich bin nun natürlich hellhörig geworden, nicht das ich hier an einem alten Stand bastle... /EDIT: Ich muss mich korrigieren, es ist zwar eine Taktfrequenzdefinition in der lcd-routines.h enthalten, aber diese definiert auch 1 MHz. Oh mein Gott, ich habe wirklich einen deutlichen Augenfehler. Also, es war tatsächlich 1 MHz, wie ich auf die 8 komme: keine Ahnung. Vielleicht mit den ganzen Nullen vermanscht, kA. Also sorry, 8 MHz stand nie zur Debatte. Aber die Stelle der Definition ist natürlich weiterhin ungeeignet. Sorry für das Missverständnis. Und ich möchte nochmals drauf hinweisen: das Projekt ist super und funktioniert auch wirklich gut. Und nochmals als Hinweis: ich würde es nicht nachbauen bzw. mich ransetzen, wenn ich es nicht gut finde. Ich mache auch nur Veränderungen vom Code her, die reine Logik und Funktionalität bleibt bestehen! Zwischenzeitlich musste ich feststellen, dass es mit einem allgemeinen LCD Interface der dann auf entsprechende low level LCD Routinen verweist, ein grösserer Code rauskommt. Von daher werde ich noch eine Zwischenversion bauen, wo eine feste HD44780 Einbindung enthalten ist. Grüsse, Thomas
Datum:
Angehängte Dateien:Moin! So, ich habe nun nochmal schnell von vorne angefangen und die letzte Version von hier angepasst. Mein eigentlicher Stand hatte nun doch schon ein paar Änderungen mit drin, die ich hier erstmal noch keinem antun will. Ich habe am grundlegenden funktionalen Code nichts gemacht. Erstmal, was habe ich überhaupt gemacht: - LCD Routinen in der LCD-Routines.h/.cpp ein wenig verkleinert - LCD Custom Chars & Omega Zeichencode in lcd-routines.h verschoben - lcd-routines.h Schutz vor doppelten Definitionen eingebaut - alle Strings in eine resource.h/.cpp ausgelagert - eine config.h angelegt. Dort können zentrale Elemente konfiguriert werden (Strings in EEPROM oder Data, Auto Power Off ja/nein, Versorgungsspannung messen ja/nein) - ich habe ein paar goto's entfernt in der main.c und durch Schleifen ersetzt bzw. manche goto's waren komplett unnötig (z.B. ende) - bug fix für Abschaltung nach Watchdog Reset: wer keine Abschaltung mit aufbaut, dessen MC hängt dann im Nirvana & Abschaltung zerschiesst LCD Kommunikation, da gesamter Port auf 0 gesetzt wurde - ein paar überflüssige LCD Kommandoaufrufe entfernt Der gesamte Code macht das gleiche wie zuvor auch und gibt auch das gleiche wie zuvor aus. Die aktuellen config.h Einstellungen sind wie im Original. Ich hoffe Markus kommt mit dem Quellcode so klar in dem Sinne, dass er damit weiter entwickelt. Insgesamt ist der Code nun 54 Bytes kleiner geworden (4468 Bytes). Ansonsten: es fehlt noch die Cursor Positionierung an der einen Stelle, die habe ich noch nicht entfernt, da diese Version fest mit dem HD44780 Controller arbeitet. Alles andere wäre eine neue Funktion und die würde wohl die gewonnen Bytes wieder kosten. Ich werde die Tage die für die LCD noch offenere Version hier hochladen. Diese wird dann zum einen Treiber für M50530 Mitsubishi, HD44780 von Hitachi und VFD von Samsung & Futuba über serielle Schnittstelle enthalten. Auch habe ich Vorbereitungen getroffen für Anpassung in der Bildschirmausgabe wenn mehr als 16x2 zur Verfügung steht. Grüsse, Thomas
Datum:
@Thomas:
> VFD von Samsung & Futuba über serielle Schnittstelle enthalten
Wie wärs zusätzlich mit einer VT-100 kompatiblen Version?
Datum:
Angehängte Dateien:Moin! Würde dann keinen Unterschied mehr machen. Da das Interface dann aber recht offen ist, kann man leicht ein anderes Display implementieren - u.a. auch eine allgemeine VT100 oder sogar ANSI Schnittstelle. Ich hatte dabei vor allem das einfache Interface im Kopf. Die meisten der VFDs von den o.g. Herstellern die ich habe besitzen eine TTL RS232 Schnittstelle und sind somit direkt anschliessbar bei gerade mal einem benötigten Pin. U.a. das zuletzt bei Pollin angebotene VFD von Futuba M162SD05AA ist dazu gut geeignet. Ansonsten hier gleich mal eine Aktualisierung. In der vorherigen Version habe ich doch glatt eine Warnung übersehen (Asche auf mein Haupt). Diese habe ich entfernt und doch gleich mal die Cursor Positionierung mit umgestellt. Nun sind wir bei einer Codegröße von 4496 Bytes, also nur noch eine Ersparnis von 26 Bytes. Aber immerhin kleiner... Grüsse, Thomas
Datum:
Moin! Und gleich nochmal ein bug fix, der zuvor bei mir nicht aufgefallen war, dank der Optimierung. Bitte folgende Methode austauschen in der lcd-routines.c bzw. die Klammern um die ? setzen...
void lcd_cursor(const unsigned char ARow, const unsigned char AColumn) { lcd_command(CMD_SetDDRAMAddress | AColumn | (ARow ? 0x40 : 0x00) ); } |
Grüsse, Thomas
Datum:
Moin! Nochwas: Ich wollte die Serienschaltung von Dioden testen und habe 2 Dioden angeschlossen. Anschluss: D1 Anode an Pin 1, D1 Cathode mit D2 Anode an Pin 2 und D2 Cathode an Pin 3. Leider sagt er mir immer defektes Bauteil und gibt aus, dass er 3 Dioden erkannt hat. Irgendwo ist da noch der Wurm drin, aber bei meinem Aufbau ist dieses Verhalten beim Originalcode genauso. Habe ich was nicht bedacht oder falsch gemacht? Grüsse, Thomas
Datum:
=> Thomas K.: Du hast recht, wenn man 2 Dioden in serie anschließt, wie du es beschrieben hast passiert ein Fehler. Das überprüfe ich noch mal. Zu deinem Code: - Du hast deine Änderungen englisch kommentiert. Mein Code war aber deutsch kommentiert. Das ist eher ungünstig. - Einen extra Define für den Auto-Power-Off wollte ich auch vermeiden. Es gibt auch einige AVR-User, die sich mit avr-gcc nicht auskennen und damit den Code nicht selbst kompilieren können. Und es würde ein unwahrscheinlicher Wust an fertigen hex-Files entstehen, wenn man für jedes geänderte Define eine hex-File reinstellen würde (mit und Auto-Off, für Mega48 und Mega8, etc.). - Meiner Meinung nach ist es sinnlos, die Nutzung des EEPROM zu deaktivieren. Aus welchem Grund hast du das überhaupt eingebaut? - In meiner neuesten Code-Version kann man den Tester ohne Änderung mit oder ohne automatische Abschaltung aufbauen. Hast du auch sicher die neueste Version verwendet (habe ich am 8. Mai hochgeladen)? Da wird nämlich nicht mehr der komplette LCD-Port auf 0 gelegt. - Für Zugriffe auf einzelne Register-Bits hast du immer _BV(Bitname) verwendet. Ich habe es mit (1<<Bitmane) gemacht. Ich schaue mir den Code jetzt erstmal an. So direkt werde ich das aber nicht übernehmen. Das wird mir aus den genannten Gründen dann zu chaotisch. Gut finde ich aber die bessere Ordnung bei den Header-Files. Das werde ich auf jeden Fall übernehmen.
Datum:
Moin! Markus F. schrieb: > => Thomas K.: > Du hast recht, wenn man 2 Dioden in serie anschließt, wie du es > beschrieben hast passiert ein Fehler. Das überprüfe ich noch mal. Gut, ich dachte schon ich habe da einen Fehler drin. Markus F. schrieb: > - Du hast deine Änderungen englisch kommentiert. Mein Code war aber > deutsch kommentiert. Das ist eher ungünstig. Werde ich beim nächsten mal eindeutschen. Bin ich so gewöhnt... Markus F. schrieb: > - Einen extra Define für den Auto-Power-Off wollte ich auch vermeiden. > Es gibt auch einige AVR-User, die sich mit avr-gcc nicht auskennen und > damit den Code nicht selbst kompilieren können. Und es würde ein > unwahrscheinlicher Wust an fertigen hex-Files entstehen, wenn man für > jedes geänderte Define eine hex-File reinstellen würde (mit und > Auto-Off, für Mega48 und Mega8, etc.). Standardmässig ist alles an wie beim alten, das kann ja auch so bleiben und so sollten auch die Hex und EEP files sein. Alle die nicht selbst kompilieren können, nehmen den Stand und alles ist beim alten. Jeder der aber compilieren wird auch Änderungen machen können, sonst bräuchte er es nicht zu compilieren. Dann wird er auch mit den Defines umgehen können. Markus F. schrieb: > - Meiner Meinung nach ist es sinnlos, die Nutzung des EEPROM zu > deaktivieren. Aus welchem Grund hast du das überhaupt eingebaut? Da ich im Hinterkopf hatte den EEPROM beim Tester anderweitig zu nutzen. Aber diese Änderung wurde vom anderen Stand übernommen, von daher ist der nichts was man übernehmen müsste. Markus F. schrieb: > - In meiner neuesten Code-Version kann man den Tester ohne Änderung mit > oder ohne automatische Abschaltung aufbauen. Hast du auch sicher die > neueste Version verwendet (habe ich am 8. Mai hochgeladen)? > Da wird nämlich nicht mehr der komplette LCD-Port auf 0 gelegt. Ich werde nochmals genau schauen, anscheinend habe ich da dann wirklich eine alte Version. Ich werde mich diesbezüglich nochmal schlau machen. Markus F. schrieb: > - Für Zugriffe auf einzelne Register-Bits hast du immer _BV(Bitname) > verwendet. Ich habe es mit (1<<Bitmane) gemacht. Ist nur eine Schreibweise - auch persönliches empfinden. Ich habe meist beim Lesen nebenbei, wenn ich den Code mir durchschaue, das ist eine persönliche Macke. Hat keinen Vor- oder Nachteil, braucht auch nicht übernommen zu werden. Markus F. schrieb: > Ich schaue mir den Code jetzt erstmal an. So direkt werde ich das aber > nicht übernehmen. Klar, es ist dein Code und vor allem dein Projekt! Es war ja auch nur ein Vorschlag von mir. Grüsse, Thomas
Datum:
Ich habe wieder mal eine neue Version reingestellt. Folgende Änderungen habe ich darin gemacht: - den genannten Fehler mit den 2 Dioden in Reihe behoben - die LCD-Ansteuerung "übersichtlicher" gemacht (Makros zum Cursor positionieren statt einem direkten lcd_command()) - die Includes für die Header-Dateien geändert (so ist es übersichtlicher) - Taktfrequenz (F_CPU) in den Projektoptionen definiert, nicht mehr im Code - Und das meiner Meinung nach Wichtigste: Es gibt keine separaten Versionen für den Mega8 und Mega48 mehr. Das war auch in der Wartung umständlich. Die Version für den Mega8 unterstützt zusätzlich die Messung von Widerständen, daher ist sie ein Stück größer. Die jeweilige Version wählt man beim Kompilieren einfach über den in den Projektoptionen oder im Makefile festgelegten AVR-Typen aus. Einfacher geht es eigentlich nicht. Das Programm ist dadurch etwas größer geworden, aber nicht um viel: Mega48: Flash: 3988 Byte EEPROM: 254 Byte Mega8: Flash: 4584 Byte EEPROM: 267 Byte
Datum:
Moin! Ich kann dir empfehlen zumindest die lcd_send() zu übernehmen, da deine Version mit der extra Variablen und mehrfachen Zugriff auf den Port codetechnisch grösser ist. Auch die Nibble Aufteilung kann "on-the-fly" passieren, dass bekommt der gcc noch besser optimiert. Ich habe bei einer Version an der ich gerade gebastelt noch eine Änderung, vllt. auch Verbesserung eingebaut, welche sich vllt. auch für deine Version eignet: Ich zeige fest in der 2. Zeile als erste 3 Zeichen die Belegung an. Dabei ist es so, dass ich einen Punkt (HD44780 code 0xA5) für jeden Pin anzeige (Immer die gleiche Pin-Reihenfolge: 123) und die entsprechenden Stellen dann mit der jeweiligen Funktion überschreibe. Im Endeffekt für den Nutzer sieht er immer an den ersten 3 Zeichen der zweiten Zeile die Belegung von Pin 1 bis 3. Beispiel Diode an 2-3: ".AK" und an 1-3: "A.K" etc. Transistor: "BCE" bzw. "ECB", etc Doppeldiode: "AAK", "KAA", etc Erstes Zeichen ist immer Pin 1, zweites Pin 2, etc. Der (auf dem Display mittige) Punkt gibt an "unbelegt", alles andere ist dann der jeweilige Bezeichner. Falls du dies übernehmen möchtest, hier ein Codeschnipsel, es ist soweit immer das gleiche und die hier verwendeten Funktionen kennst du ja aus meinem Stand von zuvor:
// "Diode"
lcd_WriteResource(resDiode);
// 2. Zeile, Belegung
lcd_Line2();
lcd_WriteResource(resPinTemplate);
lcd_cursor(1, diodes[0].Anode);
lcd_data('A');
lcd_cursor(1, diodes[0].Cathode);
lcd_data('K');
// 2. Zeile Uf
lcd_cursor(1, 4);
lcd_WriteResource(resUf); //"Uf="
....
|
Wobei resPinTemplate so definiert ist (für HD44780):
char resPinTemplate[] RESMEMMOD = {0xa5, 0xa5, 0xa5, 0x00}; |
(der Speichermodifizierer ist bei dir dann fest EEMEM, bekannt aus der Version zuvor...) Das ergibt einen schnelleren Überblick, vor allem da es für jedes Bauelement einheitlich ist. Auch habe ich bei Doppeldioden die Ausgabe von Uf für beide Dioden hinzugefügt, da sie eh beide ermittelt werden. Durch die Nutzung der zuvor genannte Pinbelegung ist noch genügend Platz für beide Uf. Ich werde meine Ableitung davon mal weiterbasteln und nicht hier hochladen bzw. angeben, weil sonst kommt es mit deiner Version zu zuviel durcheinander und es ist dein Projekt. Grüsse, Thomas
Datum:
Moin! Gar nicht - denn es gibt sonst, wie Markus F. schon bemerkte, zuviele verschiedene Versionen und Nachfragen von Usern werden dadurch nur unnötig erschwert. Auch schon die Compilerdefines des originalen Projekt würden halt zu Unstimmigkeiten führen. Bei grösserem Interesse würde ich das vielleicht auf meinen Blog veröffentlichen, damit es dann örtlich gut getrennt wäre - aber das müsste ich dann entscheiden und auch nochmal mit Markus abstimmen. Er hat noch immer die geistigen Eigentumsrechte und kann entscheiden was man darf und nicht darf im öffentlichen Raum. Aber bis dahin habe ich noch etwas zu basteln, noch ist es nicht fertig. Grüsse, Thomas
Datum:
Ich finde es schon in Ordnung, wenn hier jemand den Code verändert und "seine" Version davon veröffentlicht. Das soll ja schließlich auch ein offenes Projekt sein. Ungünstig wäre es nur - wie Thomas K. schon geschrieben hat - wenn jede Version dann hier im Forum landet. Da geht dann auch schnell der Überblick verloren. Die lcd_send() schaue ich mir auch nochmal an. Und die Idee, die Display-Anzeige so zu machen, wie du es beschrieben hast, hatte ich auch schon mal. Das spart natürlich eine Menge Platz im LCD. Allerdings sind die Ausgaben dann für Leute, die mit dem Tester noch wenig Erfahrung haben, ziemlich schwierig zu lesen. Da ist eine Angabe wie "B=2;C=1;E=3" deutlich besser verständlich als "CBE". Deshalb habe ich mich damals dagegen entschieden. Wie ist eigentlich eure Meinung dazu? Welche Darstellungsart gefällt euch besser?
Datum:
Moin! Gerade wegen der Zuornung mit den Pins hatte ich mir wegen des Verständnisses als erstes auch überlegt es ganz rechts im Display anzuzeigen und dann aber so, dass in der 1. Zeile "123" steht und darunter dann in der zweiten Stelle der Spalte entsprechend die Beschreibung wie oben genannt. Wäre vllt. eine Mischlösung welches die Lesbarkeit erhöht und gleichzeitig den LCD Platz effizient ausnutzt. "Diode 123" "Uf=345mV A K" Grüsse, Thomas
Datum:
> Gar nicht
:-(
Eine VT-100-Version halte ich nach wie vor für interessant.
Ich pflege nämlich nicht jedem Gerätchen irgendwelche LCDs
zu spendieren, sondern eher einen Widerstand und eine IR-Diode
oder eine DB-Buchse für einen RS-232-Anschluss.
Datum:
=> Thomas K.: Ich habe jetzt die lcd_send() etwa nach deinem Vorschlag übernommen. Das Programm wird dadurch wirklich ein wenig kompakter (um 8 Bytes).
Datum:
Moin! Falls du noch mehr einsparen willst, ich habe ja nun noch etwas weiter gearbeitet. Du bekommst deinen Code noch kleiner, wenn du den Ausgabeteil, welcher nun ja mit if () else if () else if () etc. arbeitet umstellst auf einen switch. Dein end: Label wird dabei zum default Zweig des switches. Dies kann der C++ Compiler durch eine Sprungtabelle noch besser optimieren als das if/else if/.... Gleiches gilt für die Diodenanzahl Unterscheidung. Als Hinweis muss ich gleich mal sagen: ich weiss nicht, ob er die Sprungtabelle aufbaut mit den jetzt definierten Konstanten. Die Frage ist, ob der Compiler das so richtig erkennt - ich habe in meiner Version an der Stelle schon einen enum, den kann er dadurch bestens optimieren und weiss auch sofort um die Sprungtabelle.
// Bauteile typedef enum { ptNone, ptDiode, ptTransistor, ptFET, ptTriac, ptThyristor, #ifdef UseM8 ptResistor #endif } PartType; |
Ansonsten noch ein Tipp: Der SetCursor() Präprozessor define enthält bei der Zusammenstellung des Befehls ein +, dies ist aber die falscher Operation, da dadurch der Befehl an sich sogar zerstört werden kann. Alle Werte sollten mit binärem Oder verbunden werden. Und nochwas zu dem zerstörten LCD Port: Wenn man die Abschaltung nicht aufbaut und er von einem Watchdog Reset wieder neustartet, dann versucht dein Code den Tester abzuschalten, was aber dadurch nicht gelingt. Zum einen könnte er einfach erneut testen, er eh nicht abgeschaltet werden kann. Zumindest wird dort der gesamte ON_PORT und ON_DDR auf 0 gesetzt, das wiederrum zerschiesst wie zuvor gesehen die LCD Steuerung. Bisher sorgt aber das return 0 bei dir im Code, dass er im Datennirvana landet. Ok, das soll's erstmal gewesen sein. Grüsse, Thomas
Datum:
Angehängte Dateien:Habe mal zu Verständnisszwecken eine Pspice File gemacht für den Diodentest. Habe jetzt einfach mal einen Transistor an P1 P2 und P3 drangedacht. Bitte mal durchsehen, ob ich alle Möglichkeiten durchdacht habe. Sind das alle Möglichkeiten bei einem Transistor (ausser integrierte D und R) ?
Datum:
=> Thomas K.: Zu der Sache mit dem Abschalten nach einem Watchdog-Reset: Ein Watchdog-Reset tritt im Normalbetrieb nicht auf. Wenn man den Tester ohne automatische Abschaltung aufbaut, kommt er im Code über den Punkt hinaus, an dem er sich normalerweise abgeschaltet hätte. Dann deaktiviert er den Watchdog und geht in eine Endlosschleife, in der er auf einen neuen Druck auf die Start-Taste wartet oder bis man die Betriebsspannung abschaltet. Ich habe den Watchdog nur aus einem Grund eingebaut: Wenn der Tester zwischendurch irgendwo hängen bleibt, würde er nie an den Punkt kommen, an dem er sich wieder abschaltet. Damit würde er sich natürlich nicht mehr abschalten. Wenn man den Tester mit der automatischen Abschaltung hat, muss man dann also kurz den Strom wegnehmen (Batterie abklemmen). Das nervt natürlich, wenn der Tester in einem Gehäuse eingebaut ist: Gehäuse öffnen, Batterie abklemmen und wieder anklemmen, Gehäuse wieder verschließen. Meiner Meinung nach ist eine Abschaltung des Testers nach einem Watchdog-Reset am sinnvollsten. Wenn er nach einem Reset attomatisch einen neuen Testzyklus beginnt, könnte er damit auch in einer "Endlosschleife" bleiben. Aber du hast natürlich Recht, es ist eigentlich sinnlos, dafür den kompletten Port auf 0 zu setzen. Das werde ich noch ändern und dann mit der nächsten Version hochladen. Und was ist an dem "+" im SetCursor-Makro so schlimm? Man lönnte damit natürlich die uint8_t für lcd_command() überschreiten. Das passiert aber nur, wenn man einen unsinnig hohen Wert für x oder y einsetzt. Das ist aber sowieso Schwachsinn, weil das LCD ja nur 2 Zeilen zu je 16 Zeichen hat. => Fur: Das Prinzip, nach dem dieser Tester arbeitet, habe ich in dem Artikel (siehe ganz oben im Thread) eigentlich schon erklärt.
Datum:
Markus F. schrieb: > Und was ist an dem "+" im SetCursor-Makro so schlimm? > Man lönnte damit natürlich die uint8_t für lcd_command() überschreiten. > Das passiert aber nur, wenn man einen unsinnig hohen Wert für x oder y > einsetzt. Das ist aber sowieso Schwachsinn, weil das LCD ja nur 2 Zeilen > zu je 16 Zeichen hat. So ist es. Allerdings macht ein | anstelle des + den Code nicht größer, die Software aber etwas Fehlersicherer, denn egal welchen Wert man für x oder y angibt, der Befehl macht nichts anderes als die Adresse zu setzen. Eine x Position von z.B. 129 würde mit + zu dem Befehl 1 führen, was das das Display löschen würde. Ebenso könnte man auch das Displays resetten oder ähnliches.
Datum:
Moin! Markus F. schrieb: > => Thomas K.: > Zu der Sache mit dem Abschalten nach einem Watchdog-Reset: > Ein Watchdog-Reset tritt im Normalbetrieb nicht auf. Steht ausser Frage - er ist ja ein Mittel für den "Notfall". > Wenn man den Tester ohne automatische Abschaltung aufbaut, kommt er im > Code über den Punkt hinaus, an dem er sich normalerweise abgeschaltet > hätte. Richtig und landet im "return 0" und das bringt ihn in's Datennirvana, weil ein Rückkehr von main() auf dem MC nicht vorgesehen ist. Von daher ist es bisher undefiniert was der StartupCode des gcc macht, da er der Aufrufer von main ist und die Kontrolle zurück bekommt. > Und was ist an dem "+" im SetCursor-Makro so schlimm? Was ist an einem Oder so schlimm? Nun ja, das Oder würde zumindest dafür sorgen, dass die x und y Koordinaten zumindest nochmals deutlich grösser und noch unsinniger werden müssten bis es auswirkungen hat. Um das Kommando zusammen zu bauen ist der zu nutzende Operator ein binäres Oder. Ein + Operator ist hier nicht gesucht und einfach nur die falsche Wahl. Im ersten tun macht er gleiches, beim zweiten Durchlauf schon wieder nicht mehr, von daher ist er hier nicht gesucht/benötigt. Es ist einfach nur eine Frage des richtigen Operators. Grundlegend: es ist nur ein Hinweis - was du machst und vor allem wie bleibt natürlich dir überlassen. Grundlegend um die Gefahr weisst du und ich denke du kannst auch nachvollziehen. Grüsse, Thomas
Datum:
Angehängte Dateien:Halloe. Auch ich habe versucht den Transistortester nachzubauen. Ich habe einen Atmega8 genommen und mit der aktuellen (08.06.09) Firmware geflascht. Die Platine habe ich selbst Layoutet, mich dabei aber an das Schema ( mit Autoabschaltung ) gehalten. Als Display habe ich ein 16*2 Zeichen Display von Displaytec verwendet. (162C). Leider klappt bei mir die Anzeige nicht richtig. Das Display soll laut angaben den Controller LSI KS0070B tragen, welcher HD44780 kompatibel sein soll. Wenn ich den Test mit einem Transistor im Sokel starte ( Typ: BC 557C ) erhalte ich als Anzeige bloss: 00/?/??|| _ Wobei die beiden || als ein Blinkendes Zeichen angezeigt werden. Und bei den beiden 0's bin ich nicht sicher obs der Buchstabe O oder die Zahl 0 sein soll. Wenn ich den Test mit einem leeren Sockel wiederhole wird folgendes Angezeigt: oooo<-o<-/Üo<-<-ooo am Ende dann noch ein Blinkender Kursorblock. Wobei <- als Pfeil nach links dargstellt wird. Habt ihr eine Idee, was hier evtl. falsch gelaufen sein könnte ? Anbei das von mir zusammengestellte Schema und das Boardlayout. Freundliche Grüße Frank p.s. Wenn ichs ans laufen bekomme, kann ich euch auch gern die KiCad Projektdateien zur verfügung stellen.
Datum:
Der KS0070 ist nicht 100%ig HD44780 kompatibel. Die Timings (u.a. beim Init) sind unterschiedlich. Dadurch kann es zu solchen Problemen kommen...
Datum:
Versuche vielleicht mal, die Wartezeit in lcd_enable() zu erhöhen. Mit der Wartezeit von 1µs soll es ab und zu mal Probleme geben. Du musste eben ausprobieren, welcher Wert dafür gut ist. Tendenziell gilt da aber: Lieber etwas zu lang als zu kurz warten.
Datum:
Angehängte Dateien:=> Frank: Ich habe das jetzt nochmal mit 20µs Wartezeit und für den Mega8 kompiliert. Die hex- und eep-Datei hänge ich hier mal an. Es wäre schön, wenn du hier schreiben könntest ob es damit klappt.
Datum:
Halloe. Danke für die Tips und die schnelle Hilfe. Markus, leider funktioniert die neue version von Dir auch nicht wirklich, aber du hast mir einen guten Wink in die richtige Richtung gegeben. Ich habe in der LCD- Ansteuerung die Wartezeiten an einigen stellen leicht erhöht. Nun klappt es mit der Anzeige. Leider geht das ganze aber meist nur eine Messung lang gut. Wenn ich nach der ersten Messung gleich eine 2. Messung starte, bekomme ich häufig nur ein leeres Display zu sehen. Warte ich ca. 10 Sekunden klappt auch die 2. Messung. Ich werd nochmal ein wenig mit den Timing spielen, wenn ich es richtig ans laufen gebracht habe, stelle ich die Anpassungen hier mal ein. Freundliche Grüße Frank
Datum:
Vielen danke fur die gute AVR transistortester, in english: This instrument is very good ,but I ask if it can test also the following components: ujt , darlington transistor , transistor with diode in( between Base and Emeter / Collector and Emeter) , optocoupler. I hope if there will be a new soft (hex and eep)file for these new components. Thanks.
Datum:
Angehängte Dateien:Hallo, und vielen Dank für das Projekt. Nun ist auch bei mir ein Nachbau entstanden. Die Schaltung habe ich soweit modifiziert, dass man den Tester sowohl über Batterie als auch extern versorgen kann. Ein Problem habe ich aber noch mit der Anzeige. Ich habe mit 2 Displays getestet (Art-Nr. 120 545 und 120 469 von Pollin, beide HDD44780 kompatibel), aber die Anzeige bleibt leer. Der AVR lebt jedoch, denn im Batteriebetrieb kann man sehr schön die automatische Abschaltung beobachten. Getestet habe ich mit verschiedenen Versionsständen. Vielen Dank schon mal für die Unterstützung. PS: Gibt es irgendwelche Gründe (Forenregeln o.ä.), weshalb keine Eagle-SCH- und -BRD-Files gepostet werden? Wegen kleiner Änderungen den Schaltplan abzuzeichnen, ist ja nicht unbedingt der Sinn der Sache. PPS: Ein eigenes Testprogramm konnte ich noch nicht schreiben, dazu müssen erst mal AVR-Studio und GCC laufen.
Datum:
Michael L. schrieb: > Ein Problem habe ich aber noch mit der Anzeige. Ich habe mit 2 Displays > getestet (Art-Nr. 120 545 und 120 469 von Pollin, beide HDD44780 > kompatibel), aber die Anzeige bleibt leer. Die Init ist nicht ganz vollständig: In Zeile 69 der lcd-routines.c, nach dem 3 maligen Senden von 0x02 fehlt noch folgender Code:
LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x02; _delay_ms(1); lcd_enable(); _delay_ms(1); |
Damit wird der Bus auf 4bit eingestellt. > PS: Gibt es irgendwelche Gründe (Forenregeln o.ä.), weshalb keine > Eagle-SCH- und -BRD-Files gepostet werden? Wegen kleiner Änderungen den > Schaltplan abzuzeichnen, ist ja nicht unbedingt der Sinn der Sache. Ja: Nicht jeder hat Eagle installiert. Als Zugabe in einem kompletten Projekt spricht nichts dagegen, aber wenn man mal schnell nur einen Schaltplan zeigen möchte, dann ist ein Bild die beste Wahl, denn das kann jeder ohne Zusatzsoftware direkt im Browser anschauen.
Datum:
=> Benedikt: Danke für den Hinweis. Ich habe das jetzt mal in die "offizielle" Version aus dem Artikel übernommen. Diesen Fehler habe ich einfach übersehen. Eine BRD-Datei dazu habe ich nicht. Ich habe auch noch nie mit Eagle eine Platine erstellt. => misser: UJT's are not supported until now. Darlington transistors are supported. But the tester doesn't show that it is a darlington. Transistors with internal diodes are supported. If a diode ist found, a little diode icon is shown in the LCD. Perhaps I will add support for UJT's soon. But first I must get some...
Datum:
Hallo Benedikt und Markus, danke für die schnelle Reaktion. Schneller als ich Zeit fand, WinAVR zu installieren, war schon eine neue Version hochgeladen. Aber auch mit der hatte ich leider noch keinen Erfolg. :-( So werde ich mich nun erst mal selbst ans Eingemachte herantasten. Die Eagle-Dateien könnte ich zur Verfügung stellen. Ich hätte sie ja fast schon als ZIP in den Artikel eingefügt, kann aber den Abschnitt Download nicht bearbeiten. Irgendwas ist da bei den letzten beiden Abschnitten kaputt. Grüße. Michael
Datum:
=> Michael L.: Das Display 120545 von Pollin verwende ich auch. Bei mir funktioniert es damit aber anstandslos. Überprüfe vielleicht nochmal folgende Dinge: - Ist das LCD auch richtig angeschlossen und kriegt es auch Spannung? Diese Displays haben nämlich einen Kontaktabstand von gerade mal ca. 1mm. Da kann schnell mal eine Lötbrücke entstehen. - Hast du die Fusebits des Controllers richtig gesetzt? - Hast du auch die .eep-Datei ins EEPROM geflasht? (ganz wichtig!) Meinen Tester habe ich auch mit diesem LCD aufgebaut und da hatte ich noch keine Probleme.
Datum:
==> Markus: Vielen Dank; Thanks ; when you will add support for UJT , it will be a very good project and very useful. I think that this project can be improved day per day . I found also another project "sc analyser 2005" edited by "elektor magazine" , but this project is limmited .
Datum:
Benedikt K. schrieb: > Michael L. schrieb: > > Die Init ist nicht ganz vollständig: > In Zeile 69 der lcd-routines.c, nach dem 3 maligen Senden von 0x02 fehlt > noch folgender Code: > >
> LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x02; > _delay_ms(1); > lcd_enable(); > _delay_ms(1); > |
> > Damit wird der Bus auf 4bit eingestellt. Hi Benedikt, kannst Du bitte mal die ganze Funktion LCD_Init posten? Ich bin mir nicht sicher ob ich den richtigen Code habe. Thanx netdieter
Datum:
void lcd_init(void) { LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN1); // Port auf Ausgang schalten // muss 3mal hintereinander gesendet werden zur Initialisierung _delay_ms(15); LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x03; lcd_enable(); _delay_ms(5); lcd_enable(); _delay_ms(1); lcd_enable(); _delay_ms(1); // auf 4bit Modus umschalten LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x02; lcd_enable(); _delay_ms(1); // 4Bit / 2 Zeilen / 5x7 lcd_command(CMD_SetIFOptions | 0x08); // Display ein / Cursor aus / kein Blinken lcd_command(CMD_SetDisplayAndCursor | 0x04); // inkrement / kein Scrollen lcd_command(CMD_SetEntryMode | 0x02); lcd_clear(); } |
Datum:
Benedikt K. schrieb:
>> void lcd_init(void) > { > LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN1); // Port auf > Ausgang schalten > // muss 3mal hintereinander gesendet werden zur Initialisierung > _delay_ms(15); > LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x03; > lcd_enable(); > _delay_ms(5); > > lcd_enable(); > _delay_ms(1); > > lcd_enable(); > _delay_ms(1); > > // auf 4bit Modus umschalten > LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x02; > lcd_enable(); > _delay_ms(1); > > // 4Bit / 2 Zeilen / 5x7 > lcd_command(CMD_SetIFOptions | 0x08); > > // Display ein / Cursor aus / kein Blinken > lcd_command(CMD_SetDisplayAndCursor | 0x04); > > // inkrement / kein Scrollen > lcd_command(CMD_SetEntryMode | 0x02); > lcd_clear(); > } > |
Wie ich vermutet habe. Ich habe nicht die aktuellen Sourcen. Sind den die Source aus dem Forum nicht mehr aktuell? http://www.mikrocontroller.net/articles/AVR-Transistortester Daher hatte ich meine. Gruß netdieter
Datum:
Doch, das war die Version von dort. Ich habe das ganze geringfügig angepasst, so dass es eher der Version aus dem Datenblatt entspricht. Je nach Controller gibt es geringe Unterschiede in der Initialisierung (vor allem was den von mir eingefügten Befehl angeht), aber obige Version sollte bei allen 44780 kompatiblen LCDs funktionieren.
Datum:
Benedikt K. schrieb: > Doch, das war die Version von dort. Ich habe das ganze geringfügig > angepasst, so dass es eher der Version aus dem Datenblatt entspricht. > > Je nach Controller gibt es geringe Unterschiede in der Initialisierung > (vor allem was den von mir eingefügten Befehl angeht), aber obige > Version sollte bei allen 44780 kompatiblen LCDs funktionieren.
lcd_command(CMD_SetIFOptions | 0x08); // Display ein / Cursor aus / kein Blinken lcd_command(CMD_SetDisplayAndCursor | 0x04); // inkrement / kein Scrollen lcd_command(CMD_SetEntryMode | 0x02); |
Die defines sind aber noch nicht im Header eingepflegt :-(
Datum:
Doch, in den lcd-routines.h. Zumindest waren die das vor einer halben Stunde noch.
Datum:
Dann muss ich mir nochmal den neuen Code holen. Meiner ist schon 3 Wochen alt. ;-)
Datum:
Hallo Markus, die Anzeige funktioniert nun doch. Ich muss nur den Pin für den Kontrast fast auf GND ziehen, dann zeigt das 120545 auch was an. Nur bei dem 120469 habe ich wohl Pech gehabt, das zeigt erst wenn ich es ganz auf GND schwach etwas an. Wie es scheint habe ich da wohl ein Modell mit erweitertem Temperaturbereich erwischt, heißt also noch eine negative Spannung erzeugen, damit ich richtig was sehen kann. Aber da muss ich wohl durch, denn es ist wesentlich größer, hat Beleuchtung und einen wesentlich längeren Folienleiter (wichtig für den Gehäuseeinbau). Danke für die Tipps, obwohl ich sagen muss, das 1mm-Pin-Raster ist nicht wirklich eine Herausforderung. Sowas kann ich noch löten, ohne alles mit Zinn zuzukleistern. :-D Und ich brate auch nicht auf dem Folienleiter herum, sowas finde ich bäh! Dafür gibt's doch passende Buchsen. Morgen werde ich aber erst mal ein wenig testen. :-)
Datum:
Angehängte Dateien:Ich fand das 1mm-Raster auch nicht schlimm, nachdem ich herausgefunden habe wie man sowas am besten anschließt. Ich habe dann den Folienleiter abgelötet und es mit Kupferlackdraht angeschlossen. Geht auch ganz gut, aber so eine Folienleiter-Buchse ist natürlich eleganter. Und die negative Spannung für dein anderes LCD kannst du einfach mit einer Ladungspumpe erzeugen. Das ist ganz einfach, aber anscheinend gar nicht so bekannt. Deshalb füge ich hier noch einen kleinen Schaltplan bei. Funktionsprinzip sollte eigentlich klar sein. Ich finde diese LCDs mit weitem Temperaturbereich fast besser als die "normalen" Typen. Die haben meist einen viel besseren Kontrast. Dafür würde ich den Nachteil mit der negativen Spannung schon in Kauf nehmen. Für meinen Tester hatte ich leider gerade kein solches LCD zur Hand. Außerdem passt das kleine LCD gut in das Gehäuse, das ich auch gerade noch so rumliegen hatte...
Datum:
Danke für die Schaltung, so hatte ich die auch in Erinnerung. Dazu noch ein 555 und fertig. Das kann ich dann gleich mit in den Schaltplan und ins Layout übernehmen und würde die Files zur Verfügung stellen, wenn du nichts dagegen hast. Inzwischen habe ich mit dem kleinen LCD mal kurz getestet, habe einen NPN-Transistor angeklemmt, aber das Ergebnis gibt mir Rätsel auf. B an 2 und E+C an 1+3 bzw. 3+1 ergibt eine Doppeldiode CA mit A=2 und K1,2 = 1,3 B an 1 und E+C an 2+3 bzw. 3+2 B an 3 und E+C an 1+2 bzw. 2+1 ergibt einen NPN mit h_fe zwischen 765 und 770 Je nach Meßgerät (habe mit 3 anderen geprüft) sollte der Transistor aber nur eine h_fe von 240..270 haben. Die Verdrahtung der Testanschlüsse habe ich durchgemessen, habe auch noch mit einem 2. Mega8 getestet. Das ist zwar nur nicht mein erstes µC-Projekt, doch das erste mit AVR. Darum bin ich im Moment noch nicht weiter gekommen, obwohl ich schon mal einen Blick in den Code geworfen habe. Vielleicht hast du ja eventuell noch eine Idee, was es sein könnte?
Datum:
Was für einen Transistor hast du denn eigentlich verwendet? Solche Probleme hatte ich nämlich bisher noch nicht (außer natürlich ganz zu beginn des Projekts...) Ich habe gerade einen 2N3773 und einen TIP31 je in allen 6 möglichen Kombinationen angeschlossen. Es hat jedes Mal funktioniert. Übrigens: Ein extra NE555 ist doch eigentlich überflüssig. Der AVR hat noch viele freie I/O-Pins. Und die Timer werden auch nicht benutzt. Das Rechteck-Signal könnte also auch der AVR selbst erzeugen.
Datum:
Hallo Markus, ich habe den Fehler gefunden, ein Kügelchen Zinn hatte Pin 16 nach Masse gebrückt. Das muss irgendwann während der ersten erfolglosen Versuche mit der LCD-Initialisierung da hin geraten sein. Denn nach dem Löten hatte ich da keine Verbindung gemessen, und beim späteren prüfen der Verdrahtung habe ich erst mal nur von den Test-Pins gegen die IC-Pins gemessen. Sorry, war also mein Fehler. Aber vlt. erspart es ja zukünftige Nachfragen, könnte man ja im Artikel unter Fehlersuche aufnehmen, wenn es Sinn macht. Das Rechtecksignal im AVR erzeugen macht natürlich Sinn. Ich war wohl zu sehr in mein Problem vertieft. Danke nochmals.
Datum:
=> Michael L.: Schön, dass dein Tester jetzt auch funktioniert ;) Und ich habe jetzt im Artikel einen Abschnitt "Fehlersuche" eingefügt, wo ich die (meiner Meinung nach) häufigsten Fehlerquellen aufgeführt habe.
Datum:
Hallo Markus, um das Rechtecksignal auf einem der freien Pins auszugeben, müsste man aber mit einem Interrupt arbeiten, jedenfalls wenn man nicht die schon benutzten Pins umsortieren will. Ich wollte PC4 verwenden. Oder habe ich da was übersehen? Sind da Probleme in deiner SW zu erwarten? Heute Abend werde ich mal Schaltplan und Layout erweitern und testen, wie groß die beiden Cs sein müssen.
Datum:
Michael L. schrieb: > um das Rechtecksignal auf einem der freien Pins auszugeben, müsste man > aber mit einem Interrupt arbeiten, jedenfalls wenn man nicht die schon > benutzten Pins umsortieren will. Wenn man den mega48 verwendet, reicht es PD5 frei zu machen, dann kann man den OC0B Ausgang nutzen. Ich denke das dürfte die beste Lösung sein. > Heute Abend werde ich mal Schaltplan und Layout erweitern und testen, > wie groß die beiden Cs sein müssen. Als Frequenz würde ich etwa 50-100kHz verwenden, dann reichen für C1 etwa 100nF und 1µF für C2.
Datum:
Benedikt K. schrieb: > Wenn man den mega48 verwendet, reicht es PD5 frei zu machen, dann kann > man den OC0B Ausgang nutzen. Ich denke das dürfte die beste Lösung sein. Dann ist das ganze aber nicht mehr mit der bisherigen Lösung kompatibel. > Als Frequenz würde ich etwa 50-100kHz verwenden, dann reichen für C1 > etwa 100nF und 1µF für C2. Schon klar, je höher f, desto kleiner C. Aber ganz so hoch wäre ich mit der Frequenz nicht gegangen (rein gefühlsmäßig), doch ich habe da auch wenig Erfahrungen.
Datum:
Hallo;
I think that is possible to add an other caracteristic for bipolar
transistor NPN / PNP to show:
Ge ==> for germanium transistor with Vbe= 0.1V to 0.5V
Si ==> for silicium transistor with Vbe= 0.5V to 0.9V
Dt ==> for darlington transistor with Vbe= 0.9V to 2V ;
Or to show : Vbe= .... to help to identify the type of the bipolar
transistor ...
Vielen dank.
Datum:
> Wenn man den mega48 verwendet, reicht es PD5 frei zu machen, dann kann > man den OC0B Ausgang nutzen. Ich denke das dürfte die beste Lösung sein. Also PC3 wäre z.B. noch komplett frei. Man könnte doch einfach einen Timer verwenden und den Pin bei jedem Timer-Interrupt toggeln. Nicht ganz so elegant, aber mit der jetzigen Version kompatibel. Und die Frequenz spielt kaum eine Rolle. Ich habe so eine Ladungspumpe auch schon mal mit ein paar MHz betrieben (einfach CKOUT vom AVR verwendet). Geht auch... Und 50-100kHz sind eigentlich noch nicht so viel. Normale Schaltnetzteile liegen in einem ähnlichen Bereich, z.T. sogar darüber. Diese Frequenz ist für eine Ladungspumpe ganz gut. Die Belastung durch den Kontrast-Anschluss ist ja eh minimal. => misser: I also already thought about showing the base-emitter voltage. But I didn't need it until now. Sometimes it really could be useful, and so I will try it soon. The voltages are already being measured but they are not shown in the display. So it shouldn't be a big thing to add this.
Datum:
==> Thanks Markus, I don't mean to show the base-emitter voltage on the LCD exactly , but only : "Si" or "Ge" or "Dt" like this : "PNP Ge" for bipolar of germanium; or "NPN Dt" for bipolar darlington (so darligton transistor will be not supported only but shown also )....and with new soft that support UJT : AVR-transistortester will be realy fantastic ...Thank you very much Markus .
Datum:
Markus F. schrieb: > Also PC3 wäre z.B. noch komplett frei. > Man könnte doch einfach einen Timer verwenden und den Pin bei jedem > Timer-Interrupt toggeln. Nicht ganz so elegant, aber mit der jetzigen > Version kompatibel. So hatte ich mir das mit dem Timer gedacht. Allerdings würde ich PC4 als Ausgang für das Rechtecksignal vorschlagen, und PC3 als 4. Test-Pin freihalten (PB6 und PB7 sind auch noch frei). Ich hätte da noch so eine Idee, z.B. könnte man den 4. Test-Pin für die Prüfung Gleichrichterbrücken verwenden. Das soll aber nicht heißen, dass du das auf jeden Fall machen musst. ;-)
Datum:
misser schrieb: > ==> Thanks Markus, > I don't mean to show the base-emitter voltage on the LCD exactly , but > only : "Si" or "Ge" or "Dt" like this : "PNP Ge" for bipolar of > germanium; or "NPN Dt" for bipolar darlington (so darligton transistor > will be not supported only but shown also )....and with new soft that > support UJT : AVR-transistortester will be realy fantastic ...Thank you > very much Markus . I think, V_be would be better, because there are not so hard bounds between Ge and Si. I found some Ge with more than 0.5V in my part boxes. Yesterday I tested a darligton (TIP120), but h_fe = 0 was shown. A problem may be, there are 2 R and a D inside.
Datum:
I know that the hFE of darlingtons in most cases can not be measured. They have an internal pulldown resistor at the base pin (several 10 kiloohms). Then, with the 470k test resistor in the tester, there isn't enough base voltage to switch the darlington. The internal diodes are no problem. Naja, der 4. Test-Pin hilft auch nur für Gleichrichterbrücken und Dual-Gate-FETs etwas. Das lohnt sich dann eigentlich nicht. Brückengleichrichter kann man ja auch durch Test der einzelnen Dioden überfrüfen. Dauert natürlich etwas länger. Außerdem ist bei einem Gleichrichter auch die Durchbruchspannung wichtig. Das ist die Spannung, bei der die Dioden in "Rückwärts-Richtung" zu leiten beginnen. Wenn man den Teststrom gering hält (einige zig µA) kann man diese Spannung ohne Gefahr für die Dioden überprüfen. Aber sowas kann man in den Transistortester so nicht integrieren. Testweise habe ich so eine Schaltung aber schon mal aufgebaut: Ein kleiner Spannungswandler liefert eine hohe Spannung (in meinem Fall 2700 Volt). Diese Spannung wird über einen entsprechend großen Widerstand (ich habe 45Megaohm verwendet; also max. 60µA Strom und damit auch vollkommen ungefährlich bei Berührung) an die zu testende Diode angelegt. Dann kann über einen sehr hochohmigen Spannungsteiler die parallel zu der Diode anliegende Spannung gemessen werden. Das ist die Durchbruchspannung. Aus naheliegenden Gründen wird das aber nicht in den Transistortester eingebaut... Kurz: Ich halte das mit dem Test von Gleichrichtern für nicht so besonders nützlich.
Datum:
Ideen sind ja dazu da, dass man mal darüber diskutiert. BTW: Bei der Dioden-Messung wird jetzt auch nicht Durchbruchspannung ermittelt. Die ist ja auch wurscht, wenn man nur wissen will, was für ein Teil man vor sich hat und wie die Pinbelegung ist.
Datum:
Ich habe jetzt die Messung der Basis-Emitter-Spannung eingebaut und die neue Version damit auch schon hochgeladen. Außerdem ist da noch die Erkennung von Darlington-Transistoren etwas verbessert. Vorher konnte es bei bestimmten Anschlussreihenfolgen passieren, dass die internen Schutzdioden (wegen der ebenfalls vorhandenen internen Widerstände) nicht erkannt wurden. Ich habe die neue Version wieder mit einer ganzen Menge Bauteile getestet und keine Probleme festgestellt. => misser: Now I added the support for showing the base-emitter-voltage!
Datum:
Angehängte Dateien:Hallo Markus, ich hab da mal was vorbereitet, ist aber der Stand vom 29.06.09. Das du schon wieder was neues gemacht hast, hab ich gerade erst gesehen. Kannst ja mal reinschauen, wenn du willst. Zur allgemeinen Information: Ich hatte ein Display mit erweitertem Temperaturbereich (Pollin 120 469), und wollte das gern einsetzen. Mit der weiter oben schon gezeigten Schaltung (mit C1 = 4,7µ und C2 = 22µ) bekomme ich mit der geänderten SW an PC4 bei knapp 2 kHz Rechtecksignal -3 .. -4 V je nach Belastung. Diese habe ich über einen 10k Trimmer an Vo des Displays gelegt, den R nach Vcc und die Verbindung nach GND weggelassen. Ich bin jetzt sehr zufrieden. Bevor anderweitig Fragen oder Zweifel kommen, wegen der nur 2 kHz. Das läuft über Interrupt, und bremst sonst die Bauteilerkennung zunehmend aus.
Datum:
Vielen Danke Markus ! Das ist sehr interessant ... How about UJT : I think there are 2 important caracts to show with ( R_bb= 100 ohm to 20kohm, and n= 10% to 90% ) and the pinout E,B1 and B2 .. How about darlington : it's possible to show h_FE=---- instead of : h_FE=0 to mean that's too high ( 800 to 80000 ) !! Thanks.
Datum:
> How about darlington : it's possible to show h_FE=---- instead of : > h_FE=0 to mean that's too high ( 800 to 80000 ) !! The hFE is not too high. The Problem while measuring the hFE is that most darlingtons (for example BD675) habe internal resistors from base to emitter. At the BD675, this resistor is only 8.0 kOhms. The tester has a resistor of 470kOhms to measure the hFE. So there will only be 0.084 volts at the base. But the darlington starts switching at above 1 volt... With the 470k resistor, almost no darlington will reach the conducting state. For this test, a much lower resistor is needed. For example 5 kOhms. That would allow 1mA of base current. But then comes another problem: The BD675 (just an example) has an hFE of about 750. So, 1mA of base current would result in 750mA of collector current. Of course, the I/O pin of an AVR cannot deliver this current. For this, external power transistord would be needed. Also, a much stronger power supply is necessary for this. A normal 9v battery can not deliver 0.75 amperes. And there are darlingtons with an eve higher hFE. So the tester should be capable of delivering about 3 amps. And I don't think it would be good if something wents wrong and the tester puts 3 amps through a little SMD transistor... I would say: Be happy if the pin assignment, the type (NPN/PNP) and the base-emitter-voltage is measured, and test the hfe manually, if necessary.
Datum:
==> Markus ;
Thanks for your fine project , and for your explanation.
I would say also : I'm happy with you and with your replies ,
I'm happy with such formidable transistortester ...
Datum:
Angehängte Dateien:AVR-Studio 4 mit einem AVR-Programmer AVR-ISP (nach AN910) kann mit den Fuse-Bytes dieses Projektes nichts anfangen. Ich habe mir nach Datenblatt die im Anhang gezeigten Fuse-Bits gesetzt und geschrieben, jedoch der ATMega8 kann dann nicht programmiert werden. Kann mir bitte einer mal sagen, ob diese Fuse-Settings im AVR-Studio richtig sind? Blackbird
Datum:
Du solltest dir eine neue Version des AVR-Studio herunterladen. Es gehört ein Haken bei SPI Enable, die anderen Haken gehören weg. Der Rest passt.
Datum:
Angehängte Dateien:So, hier ist mein Nachbau zur Begutachtung ... Basisversion von Markus mit folgenden Erweiterungen: - Versorgung über Batterie oder Steckernetzteil - negative Hilfsspannung für LCD über Rechecksignal aus PC4 Es stehen auch fertige Eagle-Dateien zur Nachnutzung bereit. Falls Interesse besteht, werde ich die Erweiterungen auf der Projektseite dokumentieren, und Markus zu überreden versuchen, die notwendigen Ergänzungen in seinen Code zu übernehmen. Diese sollten mit der bisherigen Schaltung kompatibel sein, so das es nicht notwendig wäre, mehrere Versionen zu pflegen.
Datum:
@Michael L. Schöner Aufbau. Könntest du eine Foto von innen machen? Mich würde interessieren, wie du das LCD befestigt hast.
Datum:
Und mich interessiert, wo du die Grabber her hast und was diese kosten.
Datum:
=> Benedikt Foto geht im Moment nicht, ich kann es nachreichen, dauert aber noch ein paar Tage. ;) Das LCD habe ich ganz einfach seitlich mit Heißkleber von innen an die Oberschale geklebt (ein gängiges SD10). => Esko Die Grabber sind Art-Nr. 830 265 (0,75€) von Pollin. Eigentlich hatte ich ja kleinere (830 263 für 0,50€) gestellt, aber die auf dem Bild geliefert bekommen. :(
Datum:
Michael L. schrieb: > Die Grabber sind Art-Nr. 830 265 (0,75€) von Pollin. Eigentlich hatte > ich ja kleinere (830 263 für 0,50€) gestellt, aber die auf dem Bild > geliefert bekommen. :( Die Teile sind Preis/Leistungsmäßig wirklich gut (also mechanisch durchaus brauchbar). Allerdings kam es mir so vor, als wenn das Metall schon leicht oxidiert wäre, denn manchmal bekomme ich mit denen erst nach etwas Wackeln/Schieben des Klemmhackens einen 100%igen Kontakt.
Datum:
hello , I have suggestion about how to show components on lcd ... that means: _ space , * number , ? letter , < icon of diode , h ohm/khom 1)bipolar (and darlington): 1rst line : PNP___RS_hFE=*** 16 caract 2nd line : ?_?_?_U=*****V_< 16 caract ?=B C E , U=vBE (must be tested wiht 680ohm ); RS if shunt resistor BE ; < internal diode example 2) NEMOS/PEMOS-NDMOS/PDMOS-NJFET/PJFET/ 1rst line : NEMOS_RDS=****h_ 16 caract 2nd line : ?_?_?_U=*****V_< 16 caract ?= G D S, U=Vto 3)Diode (single /2/parallel..) 1rst line : *DIODE_ID=*.*mA_ 16 caract ID=forward current 2nd line : ?_?_?_U=*****V_< 16 caract ?= A K U=Ut 4)THYRISTOR/TRIAC 1rst line : THYRISTOR_______ 16 caract 2nd line : ?_?_?___________ 16 caract ?= A K G 1(MT1) 2(MT) 5)UJT 1rst line : UJT___RBB=****h_ 16 caract 2nd line : ?_?_?_n=****%___ 16 caract ?= E 1(B1) 2(B2) 6)RESISTANCE from 0 ohm to 999 kilohm 1rst line : RESISTANCE_SHORT 16 caract SHORT when R<50ohm 2nd line : ?_?_?_R=******h_ 16 caract ?=X or * So the pinouts are always on the left of the second line: 1 then 2 then 3 what do you say ?
Datum:
Hi Markus, The project works well especially when you add Uf=vBE ,so thank you very much . But the tester cannot detect the transistor BU2508DF (it's NPN with internal diode between colector and emiter , and shunt resistor between base and emiter); so the tester shows this transistor as "Doppeldiode CC"?
Datum:
Hi Markus, Das Projekt funktioniert gut, vor allem, wenn Sie hinzugefügt Uf = VBE, so Vielen Dank, dass Sie sehr viel. Aber die Tester nicht erkennen kann der Transistor BU2508DF (es ist mit NPN interne Diode zwischen Kollektor und Emitter und Shunt-Widerstand zwischen Basis und Emitter), so dass die Tester zeigt dies Transistor als "Doppeldiode CC "?
Datum:
=> misser: Your way of showing the components in the LCD is also a good possibility. Someone else here wrote something similar. Perhaps I will try it soon. And the reason for that the BU2508DF couldn't be tested is simple: This transistor has a 33 ohm resistor from base to emitter. This resistor creates a voltage divider with the tester's 680 ohm resistor. So, there are only 0.23 volts at the base. Not enough to switch the transistor. Those transistors unfortunately couldn't be tested with this transistor tester. With three additional resistors in the tester, this would be possible. They could be 125 ohms. This would cause 40 milliamperes of current, the maximum an AVR I/O pin can deliver continuosly. At the BU2508DF, this would mean 1.04 volts of base voltage, which is enough to switch the transistor. But then there is a risk of damaging very sensitive parts (for example low current LEDs) with those 40mA. So I think is's better to keep the two resistors (680 ohms and 470kOhms). This works for most components. And the about 7.5mA of current the 680 ohm resistor allows can hardly damage any component, I think. P.S.: You can also simply write in English. Most people here can read and write English. You don't have to write everything in English and German...
Datum:
==> Markus, Thanks very much for your replies . I have tested many semiconductors and the tester gives good results. But today when I tested a BU508DF (transistor NPN with internal diode protection between emitter and collector) , the tester showed: PNP B=2;C=1;E=3 hFE=70 -I>- Uf=761m ( -I>- the protection diode) In fact it's NPN not PNP , and B=1 C=2 E=3 not B=2;C=1;E=3 ?
Datum:
Angehängte Dateien:Hallo zuasammen. Leider kann ich meine Schaltung nicht aktivieren. Habe mal den Plan angehängt. Wenn ich auf den Schalter taste, dann lässt Q2 keine Spannung durch :-(( Woran kann das liegen ?
Datum:
R8 ist falsch angeschlossen, der gehört an die Basis des Transistors, nicht an den Emitter...
Datum:
Hallo, kann es sein, dass man den AT-mega8 lieber nicht in der Schaltung programmieren sollte (mit den 680 Ohm Widerständen)? Habe eine ISP Schnitstelle eingelötet (Miso,Mosi,SCK,Reset) und den µC mehrmals Programmiert, aber jetzt regt sich nichts mehr. Mein AVR910 Programmierer kann nicht mehr auf den Kontroller zugreifen. Andere µC´s kann ich auch nicht mehr Programmieren. Eine Verbindung zwischen PC und dem Programmiergerät besteht.
Datum:
Richard schrieb: > kann es sein, dass man den AT-mega8 lieber nicht in der Schaltung > programmieren sollte (mit den 680 Ohm Widerständen)? Jeder einigermaßen ordentliche Programmer hat mit 680 Ohm Widerständen keine Probleme. Von daher dürfte es eigentlich keine Probleme geben, außer bei irgendwelchen direkt am LPT mit Serienwiderständen Programmern.
Datum:
Angehängte Dateien:hello;
Your transistor tester can test "OPTOCOUPLER" !!!!
The tester cannot define the pinout of optocoupler, but it can help
us if the optocoupler is good or bad.
1st test: between pin1 and pin2 to test the diode(led).
2nd test: pin1 of optocoupler to lead 1 of tester
pin2 with pin3 together to lead 2 of tester
pin4 of optocoupler to lead 3 of tester.
*IF OPTOCOUPLER IS GOOD : the tester will detect it as NPN with
Ut is the forward voltage of the diode (led); 1= the anode of diode(led)
2=the cathode of diode(led) and the emitter of transistor(receiver)
3=the colector of transistor.
*IF OPTOCOUPLER IS BAD : the tester will detect it as resistance
or as faulty device.
Datum:
Yes, this really works! But the hFE of most optocouplers is very low. Usually it is between 0.1 and 6, so it couldn't be measured well. But it works for a simple test (is the optocoupler working or not...)
Datum:
Vielleicht kann man solche Tips in einer Art Betriebsanleitung zusammenfassen.
Datum:
Ich wollte mal Fragen, ob jemand schon die Messung der Gatekapazität eingebaut hat und bereit wäre diese zu veröffentlichen. Habe den ganzen Code auf ein 20x4 Display ( Betrieben mit 3xLi.ion Akkus + Stepdownwandler +Summer +Einzelzellenüberwachung) umgeschrieben, weshalb nun etwas mehr Platz auf dem Display vorhanden ist. Gruß Alex
Datum:
Angehängte Dateien:Echt super Projekt; ich habe mir auch einen nachgebaut. Er funktioniert echt super, er hat bis jetzt alle von mir getesteten Transistoren richtig erkannt. Danke an den Ersteller Gruß Fritz
Datum:
Angehängte Dateien:Hello,
After many tests with the transistortester ,I found that the tester
gives good results for many pieces.
But for some other devices the tester dos'nt give the pin
assignment correctly : so that evry time we have changed the leads ,the
tester gives another pin assignment !! for example: transistor+diode
like BU508DF ,triac MAC97A6 , jfet , mosfet...
Datum:
=> misser: Thanks for your good description about the error with the transistors with internal diodes. But I wrote the explanation for this some posts before: The BU508 has a low resistance between base and emitter (I didnÄt find a value in the datasheets, but I think ist is below 100 ohms). Because of this resistor, the BU508 can't be switched by the 680 ohm resistor. So,it will always be detected as 2 diodes, or as a broken part. I'm sorry, but with the existing hardware there is no way to solve this problem. If there is a high (or infinite) restistance between base and emitter, the pin assignment is detected correctly. I tested it with a BD675 darlington. This transistor has an internal diode (collector to emitter) and an 8,12kOhm resistor from base to emitter. The pin assignment was detected correctly in all 6 possibilities. I know that drain and source of JFETs are often detected incorrectly (drain=source and source=drain). But somewhere I red that drain and source of JFETs are (almost) equal, so it ist impossible to detect them. I also know the detection of triacs doesn't always work. But I had only relatively large triacs (BT136 and BT139) for testing. I thought they just need to much gate current. The MAC97A is a small triac with just 5mA of gate current. But the problem is that there are many ways to switch a triac. That needs some more testing. After getting some small triacs I will try to solve this problem... But the detection of MOSFETs (enhancement and depletion mode) worked fine in all my attempts. Could you please say the type of MOSFET that caused errors?
Datum:
Angehängte Dateien:Ich habe jetzt mal die Messung der Gate-Kapazität mit eingebaut. Der Messbereich ist 0...655nF mit 0,01nF Auflösung. Allerdings werden nur Mosfets bis ca. 120nF zuverlässig erkannt, darüber wird er (fälschlicherweise) als NPN-Transistor erkannt, da die Gate-Ladezeit zu hoch wird. 120nF haben aber allenfalls richtig dicke IGBTs (die in der "Brick-Bauform", also INT-A-PAK o.ä.), mit meist über 1000V und deutich über 200A Belastbarkeit. Solche Monster werden eben nicht mehr zuverlässig erkannt... Die Genauigkeit ist allerdings nicht besonders hoch (vielleicht +/- 10%). Durch Abstimmung der Berechnungsfaktoren (Defines oben im Code) auf den verwendeten AVR und die verwendeten Widerstände kann die Genauigkeit aber verbessert werden. Dazu einen MOSFET mit geringer Gate-Kapazität anschließen. Von Gate nach Source wird noch ein präziser Kondensator mit ca. 100nF geschaltet. Nun muss ein Messwert von etwas über 100nF angezeigt werden. Wenn nicht, kann es an den Defines richtig justiert werden. Ich stelle dier Version erstmal nur hier rein. Wenn ihr sie so gut findet, werde ich sie auch in die "offizielle" Version übernehmen und den Artikel entsprechend ändern.
Datum:
Ein riesen Respekt an Markus für seine sensationelle Arbeit! Habe die hier oben angehängte .hex auf meinem Aufbau geflasht (Mega 8) und die Gate Kapazität wird erstaunlich genau (auch mit Dummy Kapazität) gemessen. Getestet habe ich sämtliche IRF Typen. Bin begeistert! Lg, Thomas
Datum:
==>Markus ;
Thanks very much for your replies and for the new soft ...
How about transistor+diode:
** I've tested BD679 (darlington+diode) and the tester gives good
result .
** BU508DF is a transistor+diode(between C and E) but this device
has'nt shunt resistor btween B and E , so this transistor can switched
easily . ( otherwise : BU2508DF has shunt resistor between B and E wich
lets this device can't be switched ).
How about resistor: it is't possible to show resistor value from 1
ohm (instead of 160 ohm) to about 900 kohm or 1 megohm ?
thanks.
Datum:
Ich habe mir gestern die neue Version geladen und bin weiterhin begeistert. Beim Vergleich von zwei Geräten, aufgebaut mit 20% Widerständen, nichts ausgemessen, unterscheiden sich die angezeigten Werte nur minimal. Nochmals vielen Dank an Markus das er dieses klasse Projekt hier herein gestellt hat. Hubert
Datum:
Hubert G. schrieb:
> aufgebaut mit 20% Widerständen
Gibts solche tatsächlich oder ist das eine Spezialanfertigung?
Auf Vorrat kaufe ich mir nur noch 1%, weil die paar Cent/100Stück
wirklich irrelevant sind.
Datum:
@Alexander Schmidt Die Widerstände haben einen silbernen Toleranzring, sind also 10%. Ich habe aber tatsächlich noch etliche Widerstände ohne Toleranzring herumliegen.
Datum:
Es gibt mal wieder was neues... Die Messung der Gate-Kapazität ist jetzt auch in der "offiziellen" Version und ich habe das Funktionsprinzip auch im Artikel beschrieben. Und der Messbereich der Widerstandsmessung wurde nach unten hin erweitert. Nun können Widerstände ab 5 Ohm gemessen werden. Vorher waren es min. 165 Ohm. Die obere Grenze von 910kOhm ist so geblieben. Vielleicht versuche ich auch noch mal, die zu erhöhen. Die Erhöhung wäre ja kein Problem, aber danach muss man wieder alles testen, ob es dadurch zu Fehlerkennungen kommt. Das mache ich aber demnächst mal. Und die Messung der Dioden-Durchlassspannung wurde auch verbessert. Ich habe nämlich vorher nicht berücksichtigt, dass an einem auf "low" gelegten AVR-Pin nicht ganz 0V anliegen. Mit dem 680-Ohm-Widerstand gegen Plus steigt die Spannung auf immerhin 100mV, was für einen beträchtlichen Messfehler sorgt. Jetzt wird die Spannung am Low-Pin eben auch gemessen und von der Spannung am Pin, der über 680 Ohm auf Plus gelegt wird abgezogen. Damit ist dieser Fehler kompensiert. Diese Änderung war für die Widerstandsmessung übrigens auch wíchtig. Ich habe dann auch noch mal mit vielen verschiedenen Widersränden die Widerstandsmessung getestet. Links steht der wert, den der Transistortester ermittelt hat, Daneben (in Klammern) der mit einem Multimeter gemessene Wert: 9 (10) Ohm 11 (12) Ohm 17 (18) Ohm 21 (21,5) Ohm 38 (39) Ohm 97 (98,5) Ohm 215 (218) Ohm 657 (667) Ohm 978 (994) Ohm 2632 (2672) Ohm 4274 (4338) Ohm 5399 (5517) Ohm 9860 (9947) Ohm 11968 (12069) Ohm 15497 (15330) Ohm 18121 (18126) Ohm 19,1k (19,9k) Ohm 20,6k (21,6k) Ohm 31,8k (32,6k) Ohm 37,7k (38,6k) Ohm 45,8k (46,5k) Ohm 78,2k (79,1k) Ohm 97,6k (98,9k) Ohm 195,9k (197,7k) Ohm 463,6k (467,9k) Ohm 694,1k (705,9k) Ohm Fast im gesamten Messbereich ist die Genauigkeit besser als +/- 5%, häufig sogar besser als +/- 2%. Damit ist die Widerstands-Messfunktion natürlich kein Ersatz für ein gutes Multimeter. Dafür war sie aber auch gar nicht gedacht... Um mal schnell einen Widerstand ungefähr zu bestimmen, ist sie aber recht praktisch, finde ich.
Datum:
Hallo Markus, ich habe das Problem, dass mir der Tester ab und zu anstatt eines Mos-E-Fet einen Mos-D-Fet anzeigt. Dieser Fehler tritt auf, wenn ich Pin 1 an Gate, Pin2 an Source und Pin3 an Drain habe. Wenn ich diese Belegung ändere, dann zeigt mir das Gerät wieder alles korrekt an. Wie kann das sein? Außerdem besteht das Problem, dass er mir ab und zu einen Widerstand (z.B 190k) an Stelle eines Transistors oder einer Diode anzeigt. Habe mein Layout schon mehrmals angeschaut (Lochraster), aber keinen Fehler finden können. Wenn ich die Funktion der Widerstandsmessung ausdokumentiere, dann läuft die Geschichte gut (das Problem mit dem Mos-E und Mos-D Fet besteht dennoch). Gruß Alex
Datum:
=> Alexander Sewergin: Hast du auch die neue Version der Firmware, die ich gestern auf die Artikel-Seite hochgeladen habe? Mit der würde es mich ziemlich wundern, wenn eine Diode als Widerstand erkannt wird. Da werden Widerstände nämlich in beide Richtungen getestet, und nur wenn die Ergebnisse un unter 10% nach oben oder unten abweichen wird es als "Widerstand" akzeptiert. Auch mit einer sehr starken Diode (1600V/35A Brückengleichrichter) konnte ich keine Probleme feststellen. Wenn man einen Widerstand parallel zu der Diode legt, passiert über ca. 30kOhm gar nichts. Von etwa 200 Ohm bis 30kOhm wird es als "2 Dioden antiparallel" erkannt, unter ca. 200 Ohm als Widerstand (weil die an der Diode anfallende Spannung nicht mehr reicht, um sie zum leiten zu bringen). Einen Widerstand von 190kOhm hat der Tester da aber nie angezeigt Das Problem, dass ein Mos-E-Fet als Mos-D-Fet erkannt wird tritt auf, wenn man einen Widerstand von unter 33kOhm von Drain nach Source legt. Dann passiert es unabhängig von der Belegung. Mit welchem Mosfet-Typen hattest du denn die Probleme. Ich konnte es mit IRF540, IRFIZ44N und IRFD024 nämlich nicht feststellen. Nur mit einem Elko von einigen µF oder einem Widerstand von unter 33kOhm von Drain nach Source konnte ich das Problem feststellen. Hast du auch die Flussmittelreste vom Löten zwischen den Test-Pins entfernt? Ich vermute nämlich mal, dass es daran liegt. Flussmittel ist nämlich auch ein wenig leitfähig, möglicherweise stark genug um zu den genannten Problemen zu führen.
Datum:
Angehängte Dateien:Hallo allerseits, ich habe mal meine Erweiterung der Software für LCD mit erweitertem Temperaturbereich (negative Kontrastspannung) in Markus aktuelle Version eingebaut. Alles weitere in der Schaltung bzw. in meinem alten Beitrag: Beitrag "Re: Transistortester mit AVR" @ Markus F. Kannst du evtl. mal über die Änderung drüberschauen? In meiner ersten Version hatte ich vor den zeitkritischen Stellen noch nicht den Interrupt vorrübergehend abgeschaltet. Zwar hatte es wohl kaum Auswirkungen, aber ist sicher schon so. Ich hoffe, jetzt alle und v.a. die richtigen Stellen gefunden zu haben. Falls jemand die Version nachgebaut und verifiziert hat, könnte man die Erweiterung ja im Artikel übernehmen.
Datum:
=> Michael L.: Der Code sieht eigentlich ganz gut aus. Was mir daran aber nicht so gefällt, sind die vielen AND- und OR-Befehle für den WAVE_PIN. Damit bekommt man das Problem, dass das Programm nicht mehr in einen ATMega48 passt. Für die Mega48-Version könnte man diese Funktion natürlich rausnehmen. Das würde aber für einen riesigen Salat von #ifdef-Blöcken sorgen, oder man macht gleich eine eigene CheckPins-Funktion für den Mega48. So richtig optimal ist das aber beides nicht. Und ehe man eine extra CheckPins-Funktion macht, kann man auch gleich wieder eine komplett eigene Version der Firmware für den Mega48 machen. So hatte ich es anfangs, und es macht wenig Spaß eine Änderung (z.B. Bugs beheben oder neue Features) in beide Firmware-Versionen zu machen und danach auch beide wieder komplett zu testen. Deshalb habe ich dann alles in eine Version gepackt, und durch simple Änderung des Zielcontrollers (über den Compiler-Parameter) wird die richtige Firmware für den jeweiligen Controller erstellt. Das finde ich ganz praktisch so und ich würde auch nur ungern wieder zu der vorherigen, umständlichen Methode wechseln. Bitte verstehe das nicht falsch, aber ein kompletter Test der Firmware (mit ca. 100 Bauteilen und verschiedener Pin-Reihenfolge) dauert auch so schon über eine Stunde. Und so einen Test mache ich nach jeder größeren Änderung des Programms, und dabei treten meist auch einige Bugs auf, die dann behoben werden. Diese Korrektur könnte aber wieder an anderer Stelle einen Fehler geschaffen haben (ist mir schon mehrmals passiert), also kann man dann schon wieder fast von vorne anfangen zu testen... Mit der jetzigen Firmware reichen dann zumindest in der Mega48-Version ein paar Stichproben aus, da beide Firmware-Versionen fast identisch sind, die Mega8-Version unterstützt nur mehr Bauteile. Eine extra Version für den Mega48 würde aber bei jeder Änderung auch da einen kompletten Test erfordern, und das macht wenig Spaß. Lange Rede, kurzer Sinn: Ich würde das mit der Ladungspumpe an PC4 anders lösen: In dem Timer-Interrupt wird jedes Mal PC4 auf Ausgang gesetzt. In einer globalen Variable wird der vorherige Status des Pins (high oder low) gespeichert, dann wird der jeweils andere Status gesetzt und die globale Variable entsprechend geändert. So etwa:
uint8_t WaveVal; //Global; vorheriger Pin-Status ISR(TIMER0_OVF_vect) { DDRC |= (1<<WAVE_PIN); if(WaveVal == 1) { PORTC &= ~(1<<WAVE_PIN); WaveVal = 0; } else { PORTC |= (1<<WAVE_PIN); WaveVal = 1; } } |
Natürlich ist diese Lösung weniger elegant, dafür aber recht kompakt und (wenn es nicht mehr reinpasst) auch mit ein paar wenigen #ifdef's aus der Mega48-Version zu entfernen. Der große Nachteil ist eben, dass kein sauberer Rechteck mit genau 50% Tastverhältnis an PC4 rauskommt. DDRC wird ja in der CheckPins-Funktion auch regelmäßig umgeschaltet. Und da der Interrupt mehr Zyklen braucht, wird die Genauigkeit bei zeitkritischen Messungen (z.B. Gate-Kapazität) schlechter. (Da der Interrupt aber konstant viele Zyklen verbraucht, kann ma diesen Fehler aber auch herausrechnen.) Funktionieren würde es so vermutlich schon. Die meiste Zeit verbringt der Tester eh mit Warten oder ADCs auslesen, und währenddessen wird das DDR von der CheckPins-Funktion nicht umgeschaltet. Genug Spannung für das LCD dürfte an der Ladungspumpe auf jeden Fall entstehen. => Alle: Übrigens bin ich gerade dabei, eine Testfunktion für Kondensatoren einzubauen. Der Messbereich wird wohl so 0,2nF bis 1000µF. Ganz fertig ist es aber noch nicht...
Datum:
Thanx Markus, The tester(I'm using atmega8) is better now with resistor from 10 ohm to 900 kohm and with measuring of capacity of mosfet.... How about UJT ? Can the tester measure condenser up to 1000 µF soon ?
Datum:
Markus F. schrieb: > > => Alle: > Übrigens bin ich gerade dabei, eine Testfunktion für Kondensatoren > einzubauen. Der Messbereich wird wohl so 0,2nF bis 1000µF. Ganz fertig > ist es aber noch nicht... suuper idee, baust du eine vorschaltung um wie hier ? [Beitrag "LC-METER / LC-Messgerät ATmega8 Assembler"] [Beitrag "LC-Messgerät"] [Beitrag "Re: LC-Meter Frage"] oder was eigenes ?
Datum:
Angehängte Dateien:> suuper idee, baust du eine vorschaltung um wie hier ? Nein, das geht mit der jetzigen Hardware... Der Kondensator wird über einen Widerstand (680 Ohm oder 470kOhm) langsam geladen. Dabei wird die Zeit gemessen, bis der Portpin, an dem der Kondensator hängt, von 0 aus 1 schaltet. Das passiert bei recht genau 3,6V. Daraus kässt sich dann die Kapazität berechnen. Wirklich exakt ist die Messung damit natürlich nicht, aber um die Kapazität ungefähr zu bestimmen reicht es aus. Die Kapatitätsmessung ist jetzt soweit fertig und funktioniert auch ganz gut. In dem anhehängten Archiv sind wie üblich der Sourcecode und auch die hex- und eep-Dateien für den AVR. Die Kapazitätsmessung ist aber nur in der ATMega8-Version enthalten. Der Messbereich ist, wie schon angekündigt, ca. 0,2nF bis 1000µF. Noch größere Kondensatoren werden als 2 antiparallele Dioden erkannt. Meiner Meinung nach ist der Messbereich bis 1000µF aber ausreichend. Und bitte Kondensatoren vor dem Anschließen an den Tester entladen, beim Anschließen geladener Kondensatoren könnte der Controller beschädigt werden...
Datum:
=> Markus F.: Ich werde mir noch mal Gedanken machen, wie man den Code durch geschickte Verwendung eines Macros für den Mega48 kastrieren kann, ohne den Code zu unübersichtlich zu machen. Aber evtl. kannst du die Version für den Mega48 eh recht bald beerdigen, wenn immer mehr Features hinzukommen, die nur beim Mega8 drin sind. Denn für die 5-10 Cent, die man mit dem Mega48 spart, lohnt sich zum Einen der Aufwand deinerseits wohl kaum noch, eine Minimalversion zu generieren. Und auf der anderen Seite wird wohl bald der Speicher auf auf dem Mega48 ausgehen, wenn noch weitere Anpassungen und Korrekturen gemacht werden müssen.
Datum:
Angehängte Dateien:Habe gerade getestet, bei mir zeigt die Kondensatormessung immer um etwa 10% zu viel an. Spielt da vielleicht schon die Toleranz in der Oszillatorfrequenz eine Rolle? Ansonst bin ich mehr als nur zufrieden mit dem Gerät. Es fehlt nur das wie im Anhang. Hubert
Datum:
warum auch immer, funktioniert bei mir nciht, mal wird als "2 antiparallele Dioden" erkannt, mal "kein, unbekann ....", aber nie als C. Getestet in jeder test pin kombination mit 100nf styroflex, 2.2µF, 3.3µF, 10µF <- elkos. Jedesmal natürlich C abgeklemmt, kurzgeschlossen. Habe deine hex/eep genommen und reinprogged, hardware ist 1:1 die deine version (ext. versorgung 5V) Transistor test und wiederstand test funktionieren ohne probleme.
Datum:
Fantastic !!!! Wounderfuuuuuuul !!! The tester can really measure condenser from 220 pF to up 1000 µF: I have just tested 220pF; 330pF; 1nF; 10nF; 100nF; 1µF; 10µF; 100µF (about 2 seconds) and 1000µF (about 7 seconds)... 1)It isn't possible to be until about 10 mF=10000µF ?(but this needs many seconds to show the result I think) 2)The tester cannot until now detect the transistor with internal diode like BU508D correctly (or simply a transistor BC550+diode between C and E) Thanksssssss very very much Markus .....
Datum:
Thomas R. schrieb: > warum auch immer, funktioniert bei mir nciht, mal wird als "2 > antiparallele Dioden" erkannt, mal "kein, unbekann ....", aber nie als > C. > > Getestet in jeder test pin kombination mit 100nf styroflex, 2.2µF, > 3.3µF, 10µF <- elkos. Jedesmal natürlich C abgeklemmt, kurzgeschlossen. > > Habe deine hex/eep genommen und reinprogged, hardware ist 1:1 die deine > version (ext. versorgung 5V) > > Transistor test und wiederstand test funktionieren ohne probleme. Hat sich erledigt, der atmega8 den ich drin hatte reagiert jetzt gar nicht mehr. Ein neues programmier und schon geht, C test natürlich auch.
Datum:
=> misser: > The tester cannot until now detect the transistor with internal > diode like BU508D correctly (or simply a transistor BC550+diode between > C and E) I tried a BC547C (npn) and BC558C (pnp) with a diode between C and E, and it worked as it should work (the tester shows NPN/PNP with a hFE of ~500, ~700mV Uf, and the correct pin assignment, and it also shows the diode icon to signalize that the transistor has an internal diode). For detection of bigger capacitors the detection of diodes must be changed, because capacitors above 1000µF are currently being detected as two antiparallel diodes. Perhaps I'll try this soon...
Datum:
Thank u Markus; 1) The tester now is working well,it tested transistor with internal diode with success as you said; The problem was in the three resistors 680 ohm and 470 kohm: it should be selected with great precision by using good ohmeter or with better tolerance 1% instead of 5% or 10%. 2) The tester needs to add the support of UJT . 3) The tester can measure now resistor from 5 ohm to up to 10 Megohm... 4) The tester can measur condenser from 0.20 nF ( 10 pF resolution) to 1000 µF ( 10 nF resolution) ....we hope that can be increased to 5000 µF at least . Thanx.
Datum:
"it should be selected with great precision by using good ohmeter" If the problem was REALLY in resistors precision, it is no good to select from 5% resistors because they will change real resistance during time, by temperature change etc... You can simply get new (not used) resistor, measure it, then solder it's pins and measure again (warm and cold). You see all.:( PS: I'm from Russia, so my English poor enough and with errors. But my German is simply hirrific.
Datum:
Angehängte Dateien:@Markus F. Danke für das Projekt. Habe den Tester mit automatischer Abschaltung aufgebaut. Allerdings schaltet er schon nach ca. 2Sekunden ab. Ich benötige Hilfe!
Datum:
Sicher, dass die richtige Taktquelle (intern 1 Mhz) ausgewählt ist?
Datum:
Ein sehr schönes Projekt. Mit der R- und C-Messung ist es bei mir DAS Universalgerät geworden. Danke an Markus F. Als Anregung für die mechanische Gestaltung der Meßspitzen: Eine einzelne spitze Nadel (Meßspitze) in die ein Hand und eine doppelte (federnd wie eine Pinzette) in die andere Hand - und schon kann man recht fix nacheinander SMDs messen, die in wilder Ordnung auf dem Tisch liegen. (Den Einschalter als Mini-Taste an der einzelnen Nadel befestigen.) Blackbird
Datum:
Hello, ==> Serge : As you said, the resistors may change -relatively- by time, temperature,soldering,its tolerance...So the solution is to make "autocalibration" in the soft ... ==> Markus : The tester cannot detect the "antiparallel diode" correctly so it shows this device sometimes as Resistor and othertimes as capacity(this problem was in the version of 27-08-2009 and 13-09-2009 , not in the version 03-07-2009 )... ((( I've used 2 diodes 1N4148,1N4007; and 2 led. ))) Thanx.
Datum:
Angehängte Dateien:Yes, there were some problems with 2 antiparallel diodes, especially with LEDs. Sometimes they were detected as a resistor. I've fixed this now, and I also extended the capacity range to about 10mF. So now it is from 0.2nF to 10mF. This should really be enough. Above ~5000µF, the reading starts getting inaccurate; at 10mF I had about 10% error. If the voltage of two antiparallel diodes is above 3.6 volts, it may still be detected as a resistor. But I don't think this causes problems.
Datum:
Hallo, klasse projekt! Ich werde es nachbauen. Als Idee: per serieller Schnittstelle oder USB verschiedene Messwerte an einen PC weiterleiten, der die Daten in einem Diagramm darstellt. So kann die Messkurve von Bauteilen dargestellt werden, um bei Bedarf mehr Details zu einem Bauteil zu bekommen. Ich habe mir den code noch nicht angeschaut ob das einfach einzubauen ist, oder ob die Methode der Bautailermittlung einen ganz anderen weg geht.
Datum:
Thank you Markus, Just I hav tested some devices: *** Condenser : OK OK 220p,10n,680n,10µ,470µ,1000µ(7 s),2200µ(12s),4700µ(22s).....error generaly 2% to 10%. *** 2LED anti : OK OK ....antiparallel *** 2 diodes anti : the problem is still be !!! so with 2diodes of 1N4148 or 1N4007 the tester shows "Widerstand R= 120 ohm " even we change the pin assignement. However, we shoud say that the tester is better now and very useful... Thanksssssssssssss...
Datum:
After misser (Gast) message about resistor's precision I want to ask the honourable author Markus F.(5volt): Is it really need to use resistors 680 ohm and 470 kohm with better tolerance 1% instead of 5% or not? And what about 78L05? It's precision is 5% or 10%. I've modified original scheme for use LP2951 - it's plenty nice for precise voltage adjustment and plus very low-drop voltage - less 0.6 V (typically < 0.2 V in this device) (78L05 - near 1.5 V). Better for battery use. Plus Shutdown(Power-off) & Alarm inside.
Datum:
Widerstand==Resistor: I have another method to measure resistor , rv1= voltage through 680 ohm ( antiparallel diode or resistor) rv2= voltage through 470 kilohm ( antiparallel diode or resistor) Because resistor has linear graph U=f(I) and diode hasn't: ** For resistor from 1 ohm to 6 kilohm we use 680 ohm so that (0.0049v<rv1*4.9<4.6v or 1<rv1<921) AND (rv2*4.9<0.065v or rv2<13) R=rv1/((1023-rv1)/680) ** For resistor from 6 kilohm to 11 megohm we use 470 kilohm so that: (rv1>920 or rv1*4.9>4.5v) AND (12<rv2<981 or 0.060v<rv2*4.9<4.8v) R=rv2/((1023-rv2)/680) .......if it is a diode will be not detected. **** I have done a simple experience with 2diodes antiparallel 1N4148: =>through 680 ohm we read rv1=0.713v if it is a resistor , it must have value of R=113 ohm =>through 470 kilohm we read rv2=0.396v if it is a resistor , it must have value of R=40.4 kilohm. Finally the condition to measure a resistor and not a diode or antiparallel diode is: ( (rv1<921)&&(rv2<13) ) || ( (rv1>920) && (12<rv2) && (rv2<981) ) What do you say Markus?
Datum:
mal ne Frage zur Messung von Kondensatoren: Elkos sind doch gepolt, werden die dann nicht manchmal falschrum aufgeladen?
Datum:
To misser (Gast): I can't write "autocalibration" in the soft. It need minimum one parameter with reliable accuracy. So without hardware modification it is impossible, I think. The simplest way in my opinion - accurately set Vcc and use it with precise resistors as Vref source. But is it really necessary? Stable soft better, because measurements are rough, for precise we must set emitter current for bipolar transistors, threshold current for MOSFET, etc. Trying to do this - makes monster device, not this little, simple, but very useful tester (thanks to Markus F.). To Markus F. (5volt): It seems to me, that your 10% error - negligible, electrolites have accuracy +- 10% in the best case, usually - -+20%. May be "error" in fact - real capacitance in it's tolerance.
Datum:
=> misser: Yes, this is a good idea. But the limit for measurung wirh the 680 ohm resistor is about 18k ohms, and not 6k ohms. I will try this... => Serge S.: I have tested two 3300µF capacitors. Each of them reads about 3400µF, a multimeter says ~3500µF. But both capacitors in parallel read only ~6200µF, but it should be 6800µF (2*3400µF). This error can't be caused by capactior tolerances. Und: Ja, Elkos werden malchmal falsch herum geladen. Allerdings nur mit maximal 5V, was bei den kurzen Testzeiten eigentlich kein Problem darstellt. Nur bei längerer Falschpolung mit 5V bzw. Falschpolung mit höheren Spannungen wird die isolierende Oxidschicht im Elko deutlich geschädigt bis zerstört.
Datum:
Ich schau ihn an, den Mega 8: Mensch, ob der das alles macht?! Gar nicht lang gewartet und das "Studio" gestartet... Den EEPROM nur nicht vergessen, denn sonst kann er ja nicht messen. Widerstände, Kondensatoren, die ich einst unterm Tisch verloren Transistoren, Leuchtdioden grüne und auch noch die roten alle, alle sind gemessen, hab' ich denn noch was vergessen? Hab Dank für den Transistortester, Markus F. , Du bist mein Bester!
Datum:
==> Markus F. Simplest minds about the phenomenon 3400µF + 3400µF = 6200µF 1. Capacitors were not fully discharged before measurement of their sum. 2. Self-polarization of capacitors. I've seen in my practice of TV-repair: capacitor was discharged by my own hands, but less as 1 minute after it had about 0.5 V without any external charge. But it was on high-voltage capacitor (about 100 V). For low voltages I haven't such experience. But may be the case... 3. Self-training: I've seen as some seconds after turning voltage on electrolytic C had very big leakage current, then it decreases to acceptable but big value in less than 30 sec. Bad quality, long time of storage and so on... Very long time of storage (about 5-6 years) in my case. But after about hour under voltage (with current limiting resistor) it became to look good enough. After this I made special panel for capacitor's training/testing. Big leakage seems as big capacitance in simple testers. After little training leakage became less and it seems as capacitance decrease. Hint: multimeter's measurement of C is very rough. I have MY-68 - multimeter and VC-6013 capacitance-meter. The difference in 20% of C to any side between them is usual thing for electrolytes. Don't worry about this. Your device is TESTER, not a precise bridge for sertification measurements and with $1,000,000 price. Some about other things... I have a question: Is it really need to use resistors 680 ohm and 470 kohm with tolerance 1% instead of 5% or not? What is your opinion as author?
Datum:
Hallo an alle Nachbauer mit Reichelt-LCD-Displays: Mit längeren Wartezeiten zwischen den Befehlen in LCD-Init() funktioniert die Initialisierung. Ich bin mal recht großzügig gewesen und gönne mir die Zeit. Beim Start fällt es nicht auf. Damit läuft es auch mit dem LCD "Displaytech 162" (zweizeilig, je 16 Zeilen) von www.Reichelt.de zuverlässig. Es wurden nur die Zeiten zwischen den Befehlen geändert und nicht die Befehle. Wichtig scheint die Wartezeit zu ANfang zu sein. Hier gebe ich 50 ms.
void lcd_init(void) { _delay_ms(50); LCD_DDR = LCD_DDR | 0x0F | (1<<LCD_RS) | (1<<LCD_EN1); // Port auf Ausgang schalten // muss 3mal hintereinander gesendet werden zur Initialisierung _delay_ms(15); LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x03; lcd_enable(); _delay_ms(5); lcd_enable(); _delay_ms(5); lcd_enable(); _delay_ms(5); LCD_PORT = (LCD_PORT & 0xF0 & ~(1<<LCD_RS)) | 0x02; _delay_ms(5); lcd_enable(); _delay_ms(5); // 4Bit / 2 Zeilen / 5x7 lcd_command(CMD_SetIFOptions | 0x08); // Display ein / Cursor aus / kein Blinken lcd_command(CMD_SetDisplayAndCursor | 0x04); // inkrement / kein Scrollen lcd_command(CMD_SetEntryMode | 0x02); lcd_clear(); } |
Datum:
Angehängte Dateien:Hi, Ich bedanke mich bei Markus F. (5volt) für sein tolles Projekt und bei Armin Diehl (ardiehl) für die Board-Vorarbeit. Ich hab den TT(eigentlich ist es schon ein Bauteiltester) auch mal als ein Wochenendprojekt nachgebaut. Na ja, eigentlich ist das Bestücken in paar Minuten getan. Ich hab das Board aus Beitrag "Re: Transistortester mit AVR" nachgeroutet und meinem LCD ohne Hintergrundbeleuchtung angepasst. Die Leiterbahnen sind etwas dünner, Masseflächen wurden nachgearbeitet und es sind 4 Drahtbrücken auf dem Board. Gleichrichter fand ein Rundgleichricher Anwendung. Und weil ich immer etwas zurückgebe, wenn ich was kostenlos bekomme, anbei mal meine Versionsunterlagen. Darin befindet u.a eine Exelliste mit den Reichelt-Bauteil-Bestellnummern und eine PDF mit den Fusebit-Haken für die Ponyprog. Fans. Wigbert
Datum:
Auch ich möchte mich für das kleine "Ding", das mich richtig begeistert, bei Markus F. bedanken. Ich habe es aufgebaut und es lief so ziemlich auf Anhieb. Bei uns im Amateurfunk-Ortsverband Soest (www.qsl.net/dk0ia), wollen wir es einige Mal nachbauen. Ein praktisches kleines Messgerät, dass ich nicht mehr missen möchte! Michael, DL1DMW
Datum:
Hi ! Erstaml möchte auch ich mich für die Schaltung bedanken :-) Zumal möchte ich eine Frage die oben gestellt wurde aufgreifen: Some about other things... I have a question: Is it really need to use resistors 680 ohm and 470 kohm with tolerance 1% instead of 5% or not? What is your opinion as author? Meinugen ? Rudolf
Datum:
Rudolf schrieb: > Zumal möchte ich eine Frage die oben gestellt wurde aufgreifen: > > I have a question: Is it really need to use resistors 680 ohm and 470 > kohm with tolerance 1% instead of 5% or not? Mal ganz ehrlich, ein 1% Widerstand kostet als Einzelstück ganze 8Cent bei Reichelt (Ein 5% übrigens 10Cent). Pro Tester macht der Preisunterschied nur einige Cents aus. Sich darüber den Kopf zu zerbrechen macht nur bei großen Stückzahlen Sinn, weswegen man bei allen die diese Frage stellen, glauben muss sie wollen den Tester ab kupfern und professionell in großen Zahlen an den Mann bringen, wobei sie noch nicht mal in der Lage sind so eine einfache Frage selbst zu beantworten.
Datum:
Ich glaube weniger dass es hier um die 2 ¢ Preisunterschied geht, als um den Aufwand die 1% Widerstände zu besorgen. 5%er hat jeder in der Grabbelkiste, 1% nicht unbeding. Just my 2 ¢ Werner
Datum:
Hi ! Wenn ich etwas nachbaue, dann sicher nur für mich. Hab aber verstanden was du meinst :-) Rudolf
Datum:
Hi, ich glaub , ein geschickter Displayeinkauf ist gerade bei Mehrfachnachbau interessant. Mein Display gab es mal auf der HAM-Radio für 1 Euro und der Kontrast ist Zufriedenstellend, denke ich. Für den Reset R hab ich auch ein Bastelkisten R verwendet, ansonsten alle anderen 1% Typen. Wigbert
Datum:
Oh. In my case - 2 problems: 1. It's simply very difficult to find precise resistors, and delivery costs ~$10. May be I don't know where to look for in my counry. 2. I would know the durability of identification algorithm vs resistors tolerance/precision. But it's very difficult for calculations, I know. And so I would know more simple thing: precision of 680 ohm & 470 kohm in author's realization for simplest orientation - what MUST work stable. The Vcc and internal Vref precision are interesting too. Such many questions... :)
Datum:
Hi,
I woud like to add 4 custom characters ,here are :
// DiodeIcon[] EEEM={4,31,31,14,14,4,31,4,0}
AnodeIcon[] EEMEM={0,17,25,29,31,29,25,17,1}
CathodeIcon[] EEMEM={0,17,19,23,31,23,19,17,2}
CapaIcon[] EEMEM={40,10,10,10,27,10,10,10,3}
ResiIcon[] EEMEM={0,0,0,31,17,31,0,0,4}
so I have added in the main.c these lines :
" LCDLoadCustomChar();
lcd_eep_string(DiodeIcon);
lcd_eep_string(AnodeIcon);
lcd_eep_string(CathodeIcon);
lcd_eep_string(ResiIcon);
lcd_eep_string(CapaIcon); "
I have also added in the lcd-routines.h :
" #define LCD_CHAR_DIODE 0
#define LCD_CHAR_ANODE 1
#define LCD_CHAR_CATHODE 2
#define LCD_CHAR_CAPA 3
#define LCD_CHAR_RESI 4 "
But when I recall these characters by using -for example- :
" SetCursor(2,15);
lcd_data(LCD_CHAR_ANODE); " the lcd dosn't show the
character correctly only the first custom character diodeIcon is shown
exactly.... So where is the error ???
Datum:
Angehängte Dateien:Die Toleranz der Widerstände ist nicht so entscheidend. Über 10% sollte sie aber nicht sein. Am besten sind natürlich 1%-Widerstände, damit wird eben die Messgenauigkeit am besten. Widerstände mit unter 1% Toleranz sind aber auch wieder übertrieben, weil die Genauigkeit der ADCs selbst nicht so hoch ist. In English: The tolerance of the resistors is not really important, but it sholdn't be above 10%. Of course, with less resistor tolerance the accurary of the measurements becomes better. But there is no need for using resistors with tolerances below 1%, because the ADCs of the µC also have internal tolerances. 1% resistors are best, bur 5% or 10% also work without problems, only the accuracy becomes a bit worse. => misser: You have to load the custom char first. For the diode icon, this is done in the following lines:
LCDLoadCustomChar(); //Custom-Zeichen lcd_eep_string(DiodeIcon); //Diodensymbol in LCD laden |
You must also do this for all your other custom chars. => Alle: Ich habe jetzt (in dem angehängten Archiv) auch das Problem gelöst, dass zwei antiparallele Dioden als Widerstand erkannt werden. Sogar wenn ich zu den 2 Dioden noch einen 22k-Widerstand parallel schalte, wird das Ganze noch als Diode erkannt. Ich habe sogar mal zwei 1600V/35A Brückengleichrichter antiparallel geschaltet (+ an - und - an +; AC-Anschlüsse unbeschaltet). Auch das wurde noch als "2 Dioden antiparallel" erkannt... I solved the problem that 2 antiparallel diodes were detected as a resistor. It even worked when I put a 22k resistor parallel to the two diodes. This was still detected as 2 antiparallel diodes.
Datum:
Thank you very much Markus , Thank u for your replies and for your fantastic project.... The tester works very well now : No problem now with antiparallel diodes or condensers or resistors .... We hope to add the support for UJT if possible next... Thanks thanks Markus...
Datum:
Serge S. schrieb: > 1. It's simply very difficult to find precise resistors, and delivery > costs ~$10. May be I don't know where to look for in my counry. Ok availability is really a point. May I ask you where you live? Werner B. schrieb: > Ich glaube weniger dass es hier um die 2 ¢ Preisunterschied geht, als um > den Aufwand die 1% Widerstände zu besorgen. 5%er hat jeder in der > Grabbelkiste, 1% nicht unbeding. Hmm. Bei mir ist es genau umgekehrt, ich kaufe fast nur noch 1%, weil bei den kleinen Mengen der Preisunterschied egal ist und so die Lagerhaltung einfacher ist.
Datum:
Hallo Markus, Ich habe deine Version vom 03.10.09 getestet. Die Widerstände werden nicht mehr richtig erkannt. 1k zB als antiparallele Diode 440Ohm kein Bauelement. Version vom 22.09.09 läuft Gruß Manfred
Datum:
Angehängte Dateien:Hab mir diesen tollen Tester auch mal aufgebaut. Vielen Dank an Markus für dieses geniale Projekt. Gruß Andreas
Datum:
Markus F. (5volt) >But there is no need for using resistors with tolerances >below 1%, because the ADCs of the µC also have internal tolerances. Yes, exactly! And this internal tolerance is -10%..+5% for ATmega8 (by datasheet: 2.3 V...2.56 V...2.7 V min nominal max - internal Vref). Just this fact slightly surprises me: from one side - precise resistors, but from other side - NOT so precise ADC. It will be consequent to use the same criteria for both parts. We can use 5% resistors and internal Vref - total precision will be ~5-10%, or we can use 1% resistors and somewhat as TL431 as Vref source - and precision will be ~1% with a little additional regulation. I mean voltage and current measurement precision, not the resulting calculated values of hFE, R, C and so on... Alexander Schmidt (esko) >May I ask you where you live? No problem. Russian Federation, Vladimir - normal district center. The main difficulty in fact is that I didn't find around such boys as me: programmer in work hours and radio-amateur as hobby at home. I suppose I'll find this precise resistors some time, but by some reasons (see upper) I don't want to run and jump around this point.
Datum:
Angehängte Dateien:Moin, ich habe den Tester auch mal nachgebaut. Funktioniert mit der Software von 2009-10-03 ganz hervorragend, die Probleme von mkburkersdorf kann ich nicht nachvollziehen, ich habe mit 1k und 500 Ohm probiert, beide werden korrekt erkannt. Ich habe uebrigens in meinem Aufbau 5%-Widerstaende verwendet, scheint keine Probleme zu machen. Die Genauigkeit hat mich sogar sehr ueberrascht, sowohl bei Widerstaenden als auch bei Kondensatoren habe ich selten mehr als 5% Abweichung -- und wenn doch, dann kann es ja genausogut am Bauelement selbst liegen. Ein kleines Problem mit der Software habe ich allerdings noch entdeckt: 2 Dioden in Reihe werden nicht erkannt, wenn die Durchlassspannung beider zusammen groesser als 5V ist, da dann die dritte "grosse" Diode nicht mehr erkannt wird. Ausserdem war die Wartezeit nach dem Einschalten fuer mein LCD nicht gross genug, ich habe sie von 15 auf 30 ms erhoeht, damit klappt es zuverlaessig. Die Software im Anhang behebt die Probleme, direkt in die "richtige" Version kann es leider nicht uebernommen werden, da ich noch einiges mehr geaendert habe (alle Meldungen auf englisch, Strings im Flash statt im EEPROM -- der Mega8 hat ja genug Platz ;-), Anzeige der Durchlassspannungen bei Doppel-, antiparallelen [z.B. kleine Z-Dioden!] und in Reihe geschalteten Dioden, alle Mega48-Programmteile entfernt und die Umlaute in den Kommentaren sind mir leider auch kaputtgegangen). Und was mir gerade noch so einfiel: waere es eigentlich moeglich, auch Potis zu erkennen? Mit Anzeige des Gesamtwiderstands und der Schleiferstellung (in Prozent) waere das IMHO noch eine ganz praktische Erweiterung. Gruss, Arne PS: Fotos von meinem Aufbau sind hier zu sehen: http://elektronik-kompendium.de/public/arnerossius... Als LCD habe ich Pollin 120386 verwendet, das Gehaeuse ist ein "SP 6062 GR" von Reichelt.
Datum:
[erster Beitrag, habt Nachsicht mit einem Noob] Hallo zusammen, die ZIP-Pakete -von hier- datiert auf 22.09.09, leider auch 03.10.09 liefen (bei mir) nicht richtig. Insbesondere ist keine Erkennung von R mehr moeglich. Ähnliche Meldung kam von mkburkersdorf (Gast) (Nachricht oben vom 4.10.09). Warum dieser Beitrag? Ich habe ein "Best of" funktionierender Teile aus dem Paket vom 27.08.09 (insbesondere der Routine CheckPins), ergänzt um den Kapazitätstest vom 3.10.09 gebaut. Ferner habe ich eine Schleife vorangestellt, um mit Taster D7 nach der 1. Erkennung (CheckPins) auf die Bauteilerkennung Einfluß zu nehmen (*** Codeschnipsel unten). Kondensatoren werden erst im zweiten Anlauf erkannt, oder wenn C gleich vorgegeben wird (es ist ja ohnehin ein Entladevorgang und eine Denkpause geboten). Eine Vollautomatik muß ja gar nicht sein... Besteht Interesse, würde ich das ZIP als Diskussionsgrundlage, zur freien Verwendung einstellen. Läuft bei mir mit Standardbauteilen und meinem batterielosen Aufbau und 5V Details unten. FETs ungetestet. Danke nochmal an den Autor! --------------------------------------------- paar Notizen z. Originalcode: Der Kondensatortest schaltet immer das Flag 'Kondensator erkannt'. Problematisch? Die IF Abfrage vor dem Kondensatortest enthielt auskommentierte Teile. Ich habe sie komplett entfernt und erwarte vom User die Vorgabe C. Er muß ja eh entladen, sprich Nachdenken. Die Länge von outval hat sich von 4 auf 6 erhöht. Warum? wie sieht es mit Buffer-Overflows aus, wie mit numerischen Overflows generell? --------------------------------------------- Mein Hardwareaufbau: Pollin AVR Board + Zusatzplatine (LCD) + Breadboard (dadurch z.Z. lange Kabel) D7 ueber Taster an Ground. Zusaetzlich RESET Taster fuer Hardwarereset (löscht in meiner Variante die Vorselektierung des Bauteils). AREF über 100nF an GND (nötig, bei Pollin unbeschaltet). Alle Jumper gezogen. Problem : korrekte Beschaltung von PC5 (AD Wander ADC5) unklar. Ich habe direkt meine Versorgungsspannung 5V dran, ist das richtig? Beobachtung: die Genauigkeit laesst stark zu wuenschen uebrig. Trotz 5% Widerstaenden bekomme ich bei 470 Kiloohm hohe Abweichungen (ein 470K Metallschichtwiderstand wird zwischen 411k bis 430 k gelabelt). Bei grossen Elkos (allerdings teils recht alt / ausgelötet) bekomme ich große Abweichungen. Elko 250 uF wird als 360 uF erkannt, teils wesentlich dramatischer (Faktor 3 = Messfehler oder Defekt?). Bei Folienkondensatoren und kleinen Keramik-Kondensatoren ist die Genauigkeit hoch. Eine nutzbare Kalibriermöglichkeit vermisse ich noch, die beiden Werte CAPACITY_FACTOR sagen mir wenig... Wäre bei R auch nicht schlecht :=) ------------ (***) Codeschnipsel : als Attachment.
Datum:
Ludwig D. schrieb: > Problem : korrekte Beschaltung von PC5 (AD Wander ADC5) unklar. Ich > habe direkt meine Versorgungsspannung 5V dran, ist das richtig? Laut Schaltplan muss da ein Spannungsteiler von 10k/3,3k dran, der von vor dem 7805 Regler kommt. Der wird dort sein, um die Batteriespannung zu messen. > Trotz 5% Widerstaenden bekomme ich bei 470 Kiloohm hohe Abweichungen > (ein 470K Metallschichtwiderstand wird zwischen 411k bis 430 k gelabelt). Das sollte in der Tat nicht so sein. Haben deine Widerstände die richtigen Werte? Schonmal mit einem Multimeter gegengetestet? > Bei grossen Elkos (allerdings teils recht alt / ausgelötet) bekomme ich > große Abweichungen. Elko 250 uF wird als 360 uF erkannt, teils > wesentlich dramatischer (Faktor 3 = Messfehler oder Defekt?). Bei > Folienkondensatoren und kleinen Keramik-Kondensatoren ist die > Genauigkeit hoch. Das wird an den Elkos liegen. Diese sind extrem ungenau, oft schon neu mit -10%, +20% angegeben. Außerdem verlieren Elkos über die Zeit stark an Kapazität. Bei defekten gealterten Schaltungen sind sie meist die erste Fehlerquelle. Datum: 22.09.2009 18:27 Markus F. schrieb: > Above ~5000µF, the reading starts getting inaccurate; at 10mF I had > about 10% error.
Datum:
Ok - denke meine 10 - 35 Jahre alten Elkos kann ich zu 95% entsorgen :-)
Der Code von Arne Rossius (Gast) mit Datum 11.10.2009 funktioniert!
Klasse, daß die Werte von Z-Dioden gezeigt werden...
Da die Beinchen bei Transistoren in Arnes Fassung nicht mehr korrekt
gezeigt werden (etwa "B=4" - wegen 3+49), hier ein Änderungsvorschlag
(bitte gegenprüfen):
...
//Fertig, jetzt folgt die Auswertung
GetGateThresholdVoltage();
lcd_clear();
//ARNE b = 3;
//ARNE c = 3;
if(PartFound == PART_DIODE) {
//VORSCHLAG:
b = 3;
c = 3;
if(NumOfDiodes == 1) {
//Standard-Diode
lcd_string("Diode: ");
...
*zu den Unterschieden zwischen Marcus F.'s u. Arne R.'s Fassung*
Ich nutze den grafischen CSDIFF für Windows, um die Unterschiede
zwischen dem Original von Marcus F. und Arne Rossius zu sehen...
Arne Rossius Code weicht nicht nur beim Diodentest ab (=> Code nach :
if(PartFound == PART_DIODE) - - er hat auch kleine Unterschiede bei
etlichen If-Abfragen.
ADC-Beschaltung
Beim Pollin-Evalboard mit Zusatz werden die Leitungen durch das
Flachbandkabel sehr lang, deswegen bringt der 100nF zwischen AREF und
GND (am Ende des Kabels) vermutlich nix. AVCC + VCC sind durchverbunden,
müßte vermutlich L=10uH oder 47R (lt.Wiki) dazwischen. Muß entweder
einen Zwischensockel bauen, oder alles neu auf Lochraster.
Die Versorgungsspannung v.Netz ist vermutlich nicht ausreichend stabil
sodaß die Erkennung unzuverlässig arbeitet. Labornetzgerät hab ich
keins, nur ne HAMA Wandwarze m.einstellbarer Voltzahl (also Trafo
stabilisiert => und 7805 auf Pollinboard). Alles an einer Leiste, an der
2 Schaltnetzteile + der Laptop sind.
Datum:
Angehängte Dateien:@Ludwig: du hast voellig Recht, das habe ich uebersehen. Dein Aenderungsvorschlag erscheint mir sinnvoll, ich habe ihn jetzt bei mir eingebaut. Gruss, Arne
Datum:
Irgenwo im FOrum gabs auch mal ne ESR Messung der Elkos, DAS wäre noch der hit! :)
Datum:
Dürfte etwas schwer werden, wenn auch prinzipiell irgendwie machbar. Dazu müsste man aber vermutlich etwas mehr Strom durch den Elko jagen, prinzipiell könnte man es so machen: Elko auf um die Vcc/2 laden, über einen Widerstand z.B. 25mA in den Elko jagen und möglichst sofort die Spannung messen, so dass der Elko keine Zeit hat sich zu laden. Dann das ganze in die andere Richtung. Da man den Widerstand der den Strom liefert kennt, könnte man so einfach über den Spannungsteiler aus dem Widerstand und dem ESR diesen berechnen. Wird nicht sonderlich genau, aber als Anhaltspunkt sollte es gehen. Bei 100 Ohm Vorwiderstand liegt die Auflösung bei 200mOhm. Das ist nicht gerade gut, <50mOhm sollten es für brauchbare Messungen mindestens sein.
Datum:
Die ESR-Messung kann man mit dieser Hardware vermutlich fast vergessen. Normalerweise müsste man den Elko dafür erstmal auf eine gewisse Spannung aufladen und dann (z.B. per Power-MOSFET) einen niederohmigen Widerstand an den Elko anschließen. Dann muss sofort (vielleicht 1µs später) über eine Sample&Hold-Schaltung die aktuelle Elkospannung gemessen werden. Daraus kann man dann recht genau den ESR bestimmen. Mit den vorhandenen 680 Ohm Widerständen wird das aber nix... Schon ein billiger Elso mit vielleicht 10µF/25V hat ja soweit ich weiß meist unter 1 Ohm ESR. Größere Elkos haben sogar oft <50mOhm. Ich werde demnächst auch mal eine neue Version reinstellen, in die ich einige der Verbesserungsvorschläge übernehmen werde. Das mit der Poti-Messung ist auch eine gute Idee. Allerdings würde ein Poti nicht erkannt werden, wenn es ganz an einen der Anschläge gedreht ist. Hat eigentlich noch jemand außer mkburkersdorf mit meiner Firmware vom 03.10. Probleme mit der Widerstandsmessung? Ich habe nämlich keine Probleme damit. Vielleicht liegt es ja an internen Toleranzen der AVRs.
Datum:
Hallo Markus, ich hätte da noch einen Verbesserungsvorschlag, muss ich gleich mal hier aufschreiben, ehe ich es wieder vergesse. Bei antiparallelen Dioden wäre es nützlich, die beiden U_f auszugeben. Z.B. so: D 1-2: Uf=1234mV D 2-1: Uf=678mV Dies wäre vor allem für die Erkennung von Z-Dioden mit kleiner Spannung, aber auch bei antiparallelen LED nützlich. ESR Eine Möglichkeit das zu messen, fehlt mir auch noch. Aber nach dem, was ich mir bisher zu diesem Thema angeschaut habe, lässt sich die ESR-Messung in den Transistortester nicht integrieren. Dafür sollte man eher ein ähnliches Projekt aufziehen. Um diesen Thread nicht zu vermüllen, habe ich dafür einen neuen gestartet: Projekt ESR-Tester Edit: PS: Markus, ich habe gerade gesehen, dass du auch gerade bzgl. ESR gepostet hast.
Datum:
Angehängte Dateien:>Hat eigentlich noch jemand außer mkburkersdorf mit meiner Firmware vom >03.10. Probleme mit der Widerstandsmessung? meld ja ich ) Was daran liegen könnte, daß bei mir die Wiederholgenauigkeit der Messungen nie hoch ist (je groesser die Widerstaende, um so groesser werden die Schwankungen). Es sind immer Ausreisser zwischen 1,5,10 und 20 Kiloohm dabei (820 K als 799k)... Ich hab die Mittelung schon auf 50 Werte geändert, die Verdrahtung geändert (R 47 Ohm zwischen AVCC und VCC), sogar den ADC Sleep Mode eingebaut. ( wegen der Zeitabhängigkeit der Messung ist mir nicht bekannt, ob Sleep Mode / bzw. Interrupts bei allen Bauteilen richtige Werte liefert ) P.S.: ich hab die von mir erwaehnten Unterschiede zwischen Arne R und Marcus F (vom 3.10) mal ranhgehängt (2 If-Bedingungen sind mir aufgefallen).
Datum:
Verbesserungsvorschlag: die Routine zur Ausgabeformatierung wird an 2
Stellen benutzt.
Ich habe sie in eine Unterroutine ausgelagert. Ist uebersichtlicher und
verkleinert den Code!
..........................
DEFINITION (vor Main):
..........................
// Ausgabe-Hilfsroutine (gibt 0 zurueck wenn keine Ausgabe)!
// 1.Parameter Zeiger auf CHAR,
// 2. Parameter STRINGLAENGE,
// 3. Parameter wie tmpval2 (Position Nachkomma)
int Lcd_Display(char outval[], uint8_t tmpval, uint8_t tmpval2) {
if(tmpval < 3)
{
if(tmpval==1) {
if( outval[0]=='0' ) return 0;
lcd_string("0.");
lcd_data('0');
lcd_data(outval[0]);
} else {
if( (outval[0]=='0') && (outval[1]=='0') ) return 0;
lcd_string("0.");
lcd_data(outval[0]);
lcd_data(outval[1]);
}
} else {
for(PartReady=0;PartReady<tmpval;PartReady++) {
if((PartReady + 2) == tmpval2) lcd_data('.');
lcd_data(outval[PartReady]);
}
}
return 1;
} // ENDE Unterroutine
//Programmbeginn
int main(void) {
...
...........................................
*Stelle A: Messung Kondensatorkapazität*
*Originalcode Marcus Okt.ab Zeile 530*
...........................................
...
} else if(PartFound == PART_CAPACITOR) { //Kapazit?tsmessung auch nur auf Mega8 verf?gbar
lcd_eep_string(Capacitor);
lcd_data(ca + 49); //Pin-Angaben
lcd_data('-');
lcd_data(cb + 49);
tmpval2 = 'n';
// Merke: 100 ist "1"
if (cv > 99999) // ab 100000 {
cv /= 1000;
tmpval2 = LCD_CHAR_U;
}
Line2();
ultoa(cv, outval, 10);
tmpval = strlen(outval);
if ( Lcd_Display(outval, tmpval, tmpval) )
{
lcd_data(tmpval2);
lcd_data('F');
// Warnung bei Erreichen d.unteren Grenze d.Messbereichs:
if (save_cv < 20)
lcd_data('*');
}
..................................
*Stelle B: Messung Gatekapazität*
*Originalcode Marcus Okt.ab Zeile 426*
..................................
#ifdef UseM8 //Gatekapazit??t
if(PartMode < 3) { //Anreicherungs-MOSFET
tmpval = strlen(outval2);
tmpval2 = 2;
if(tmpval>4) {
tmpval = 4; //bei Kapazit??t >100nF letze Nachkommastelle nicht mehr angeben (passt sonst nicht auf das LCD)
tmpval2 = 1;
}
if ( Lcd_Display(outval2, tmpval, tmpval2) ) { lcd_string(" C="); //" C="
lcd_data('n');
}
}
#endif
|
Datum:
Angehängte Dateien:Ich habe mal versucht, das Problem mit der Widerstandsmessung zu lösen. Ich vermute mal, dass die Widerstände aufgrund von Messungenauigkeiten teilweise in beide Richtungen mit einem deutlich abweichenden Wert erkannt wurden. Vorher war die maximale Abweichung dort 10%, bei mehr Abweichung wurde das Bauteil nicht mehr als Widerstand erkannt. Ich habe das mal auf 20% erhöht und auch noch einen unnötigen Codeteil bei der Widerstandsbessung entfernt. Zumindest bei mir funktioniert es so einwandfrei, ich hatte aber auch mit der alten Version keine Probleme.
Datum:
Angehängte Dateien:=> Hubert G.: Das ist einfach zu erklären. In der angehängten Grafik ist die Innenschaltung vom TIP121 zu sehen. Der Widerstand R1 von 5kOhm sorgt dafür, dass der Transistor mit dem 470k-Widerstand im Tester nicht zum Leiten gebracht werden kann. Das wäre aber für die hFE-Messung erforderlich. Dank der bei solchen Transistoren praktisch immer vorhandenen internen Diode werden (zumindest bei etwa vergleichbaren BD675 und BD679; TIP121 habe ich nicht) zumindest die Pins korrekt erkannt. => Alle: Die Messung von Potis baue ich wohl doch nicht mehr ein. Dafür (und auch nur dafür) wäre es nämlich nötig, dass der Tester mehrere Widerstände erkennen kann. Das macht dafür eine zusätzliche Array und eine ganze Menge zusätzlicher Überprüfungen nötig. Da der Flash vom ATMega8 ohnehin schon ziemlich voll ist (knapp 7kB belegt) und auch noch die Erkennung von UJTs rein soll, und auch noch etwas Platz für evtl. nötige Fehlerbehebungen frei bleiben soll werde ich dieses Gimmick doch nicht einbauen.
Datum:
Danke für die Info, ich habe mir so etwas in dieser Richtung gedacht. Die Pin werden richtig erkannt und die Diode angezeigt. Ich bin sehr zufrieden mit diesem Gerät, danke. Hubert
Datum:
Glückwunsch, der Transistortester hat es ins Makezine geschafft! http://blog.makezine.com/archive/2009/10/how-to_tr...
Datum:
Angehängte Dateien:Welche Firmware ist denn jetzt aktuell? Im zugehörigen Artikel ist noch eine Version vom August 2009 zu finden. Diese habe ich auch installiert. Allerdings tauchen hier immer wieder fehlerbereinigte Versionen auf. Auch eine Messung von Kondensatoren ist enthalten. Welche Version (inc. C-Messung) läuft denn stabil?
Datum:
Martin S. schrieb: > Welche Firmware ist denn jetzt aktuell? > Welche Version (inc. C-Messung) läuft denn stabil? Immer die letzte von Markus F. gepostete. Zur Zeit also diese: Beitrag "Re: Transistortester mit AVR" Er testet die Version vor dem posten, man fährt also recht sicher damit.
Datum:
Hi Markus, HOW TO TEST UJT: according to some documentation and to some experience about ujt 2N2646, the UJT has 3 pins: Emetter = E , Base 1 = B1 , Base 2 = B2. * between B1 and B2 there are resistor from 100 ohm to 25 kohm (ra==B1 && rb==B2) || (ra==B2 && rb==B1) . * from E to B1 there is a diode 0.6v to 1.5v diode[0] (anode0==E && cathode0==B1) * from E to B2 there is a diode 1v to 4.9v diode[1] (anode1==E && cathode1==B2) * vEB1 < vEB2 ( doppeldiode AC ) so: E==anode0==anode1 if (voltage.diode0 < voltage.diode1) { B1==cathode0 && B2==cathode1 }else { B1==cathode1 && B2==cathode0 } RBB==resistor between B1 and B2. vEB1==voltage between E and B1. Is this methode enough to define UJT and only UJT ? thanx in advance.
Datum:
Gentlemen, Thank you Markus for this design. I am very interested but most hesitant. I know two words in german: danke & bitte. Following the blog threads is most difficult for me. Still I am willing to jump into the water and try it. Do you have it in full kit form? Danke. Pls let me know.
Datum:
=> misser: This is a good idea. I will test it when I have got some UJT's... => Michael Gomez: No, I don't have a full kit... But you cann buy the circuit board here: https://www.it-wns.de/themes/kategorie/detail.php?... The other parts should be available at most electronics stores.
Datum:
Markus, Chus. Danke. I found that web page where they sell the PCBs. Unfortunately I know 1/2 word in German and they don't seem to offer their wares in English. I don't even know if they accept paypal. Seems I'll need a German speaking friend in here to help me with these choicesbecause I don't understnad a gesunheit. Hummm....
Datum:
Try to feed the URL do translate.google.com or (if you're using firefox) install FoxLingo. This should give you a translation, albeit not a fluent one.
Datum:
Michael Gomez schrieb: > Unfortunately I know 1/2 word in German and they don't seem > to offer their wares in English. > Seems I'll need a German speaking friend in here to help me with these > choicesbecause I don't understnad a gesunheit. Hi Michael, perhaps you find someone who can help you out. If you dont, contact me and I can buy it for you and send it to you. I also have a paypal account. I could also offer it to you via ebay, that would give you a safeness. mit freundlichen Grüßen (with friendly greetings) Alexander Schmidt
Datum:
Alexander, Danke. Mille danke. Thank you for your kind offer. I will take you up on this offer. Please tell me where to send the Euros. Please tell me how many. I want to build this tester and with the help of some friends, I might get it done. Thank you.
Datum:
Drop me a mail at Benutzer:Esko. Your can send me the money via Paypal, then I will buy it and send it to you. Where do you come from? Do you want to have all parts or only the pcb? Price for the pcb is 14€ +paypal+shipping to you Price for the kit is 27€ +paypal+shipping to you
Datum:
Alexander, Danke. I will go with the full kit. I hope that includes a programmed chip. I can send you the money directly from within paypal. I am not sure how to use that "Benutzer:Esko" address. Will paypal understand that? Sorry. Is that an abrreviation for Benutzer@Esko.com ? Sorry. I have never used that form before. A million thanks. I found an AVR story in Germany but they were not willing to buy this board for me and send it with their kit. Thank you. You can reach me directly at: xtalgrwr@yahoo.com Looking forward to building that tester. Danke.
Datum:
Hi Michael! It's a link! just click on the adress in the above post and you will see a valid email adress ;-)
Datum:
Michael Gomez schrieb: > Danke. I will go with the full kit. > I hope that includes a programmed chip. It does not, but i can program it for you. > I am not sure how to use that "Benutzer:Esko" address. micha schrieb: > It's a link! Thats it. > You can reach me directly at: xtalgrwr@yahoo.com I sent you a mail.
Datum:
Hallo! Ich habe ein Problem mit meinem Nachbau des Testers auf einer Streifenrasterplatine: Sobald ich ihn an eine Batterie oder ein Netzteil anschließe, zeigt er einige Sekunden lang "Batterie leer" und anschließend dauerhaft "Timeout!" an. Die LED leuchtet dauerhaft, geht allerdings aus, solange ich den Taster gedrückt halte. Ansonsten hat der Taster keine Wirkung. Merkwürdigerweise reagiert der Atmega8 auch nicht darauf, wenn man seinen Pin 1 (Reset) mit Pin 7 oder 8 (+5V und GND) verbindet. Woran könnte das alles liegen? Lässt sich abschätzen, wo ich nach dem Fehler suchen muss? Falls das relevant ist: Ich habe noch ein Poti zwischen +5V und GND eingebaut, um den Kontrast des Displays einzustellen (der Kontrastpin des Displays hängt am Schleifer) und die Verbindungen zwischen (jeweils) den beiden VCC- und den beiden GND-Pins weggelassen, da die ja intern verbunden sind.
Datum:
> und die Verbindungen zwischen (jeweils) > den beiden VCC- und den beiden GND-Pins weggelassen, da die ja intern > verbunden sind. Das ist Pfusch! Das solltest Du schleunigst ändern. ...
Datum:
"Timeout!" erscheint, wenn die Software zu lange einen gedrückten Taster erkennt. Da der Taster an sich geht (LED geht aus, Schaltung wird gestartet usw.), ist etwas mit der Rückmeldung des Tasterzustands nicht in Ordnung. Prüfe mal die dafür zuständige Leitung.
Datum:
Hi , The tester works very well, but yesterday when I had tested a N-MOSFET " SSS7N60 " the tester did'nt detect this device as mosfet but as diode!! So where is the problem ? Thanx in advance.... misser.
Datum:
Moin, ich habe gerade noch einen Fehler in der Widerstandsmessung entdeckt. Widerstaende mit ca. 250k werden bei mir (nach elend langer Messung, ca. 20s) faelschlicherweise als Kondensator mit genau 77.46uF erkannt. Getestet habe ich 180k, 220k, 270k und 330k, korrekt wurden davon nur 180k und 330k angezeigt, 220k und 270k wurden wie beschrieben als Kondensator angezeigt, ebenso ein Poti mit 250k (Klemmen nur an den beiden aeusseren Anschluessen). Schliesse ich 2 Klemmen an das eine Ende des Widerstands (und die dritte an das andere Ende) an, dauert die Messung sogar doppelt so lange, das Ergebnis ist aber das gleiche. Die letzte Version, die das Problem noch nicht hat, ist die von 2009-09-13 (ich habe nur die Versionen von Markus F. aus diesem Thread ausprobiert, immer fuer den ATMega8). Fuer alle, die meine Version verwenden: auch damit besteht das Problem. Gruss, Arne
Datum:
=> misser: I think the mosfet needs more than 5 volts gate voltage. So it won't turn on with the 5 volts at the gate, and only the internal reverse diode is detected. Und das Problem mit den Widerständen von ~250kOhm tritt bei mir auch auf. Sie werden als Kondensator mit 77,46µF erkannt. Ich schaue mir das mal an...
Datum:
=> Markus F.: Und das Problem mit den Widerständen von ~250kOhm tritt bei mir auch auf. From ~180 kOhm up to ~270 kOhm in my case. Maybe this info will help.
Datum:
Angehängte Dateien:So, ich habe das Problem mit den Widerständen jetzt gelöst. Die neue Firmware habe ich an diesen Beitrag angefügt. Es wäre schön, wenn ein paar Leute diese Firmware mal aufspielen könnten, und dann über noch vorhandene Fehler, Probleme oder Verbesserungsvorschläge berichten. Wenn keine weiteren Fehler mehr gefunden werden, dann würde ich diese Firmware demnächst mal in den Artikel zu diesem Projekt übernehmen. So langsam mal gehört der nämlich auch wieder aktualisiert...
Datum:
Hi Markus , The tester works very well .... Thanks very much. Misser.
Datum:
Hi Markus!
I have a problem in the next line : TransistorTestNew, main.c routine
AVRStudio shows a mistake here:
He is not defined : LCD_CHAR_U
..
} else if(PartFound == PART_CAPACITOR) { //Kapazit?tsmessung auch nur
auf Mega8 verf?gbar
lcd_eep_string(Capacitor);
lcd_data(ca + 49); //Pin-Angaben
lcd_data('-');
lcd_data(cb + 49);
tmpval2 = 'n';
// Merke: 100 ist "1"
if (cv > 99999) // ab 100000 {
cv /= 1000;
tmpval2 = LCD_CHAR_U;
Where is this defined?
Thanx,
Michael
Datum:
=> Michael: LCD_CHAR_U is defined in lcd-routines.h, in line 30
#define LCD_CHAR_U 228 //µ-Zeichen |
Datum:
Danke Markus F. für dieses schöne Projekt und die saubere Dokumentation. Damit konnte ich den Aufbau, Teil 1 = ohne Abschaltautomatik, schnell, sauber und sofort funktionstüchtig erstellen. WUN DER BAR! Sehr interessiert hatte mich die Ein- und Ausschaltautomatik; die wollte ich schon immer für andere Projektchen erstellen, wusste nur nicht wie. Der Aufbau war einfach, die Inbetriebnahme ziemlich aufregend - testen und vielfach kontrollieren - und hinterher waren es nur die <7,xx V am Eingang. Ich dachte eigentlich, dass mein LDO 2950 gut genug wäre, das Ganze, inclusive Ein-/Ausschaltautomatik, mit vier Knopfzellen zu betreiben, aber mein Schaltungsaufbau (derzeit nur am Steckbrett mit sehr guter Funktion) ist unter etwa 7,5 V nicht einzuschalten. Das liegt nicht an der lowbatt-Meldung. Kaum hatte ich das Netzteil auf 8..9 V gestellt, schon lief alles wie am Schnürchen. Kann ich die Ein- und Ausschaltautomatik so abändern, dass das Einschalten schon bei 6V oder weniger geht? (Tut mir leid, ich verstehe bei Elektronik leider kaum mehr, als dass Transistoren drei Beine und Dioden nur zwei haben - krass ausgedrückt). Da wäre ich um einen Rat dankbar. Nochmal vielen Dank für dieses Gerätchen, macht Riesenspass es zu bauen und damit zu messen.
Datum:
Walter Ti schrieb: > mit vier Knopfzellen zu betreiben Was sind das für Knopfzellen und wieviel Volt hat eine? > aber mein Schaltungsaufbau ist unter etwa 7,5 V nicht einzuschalten. Das sollte nicht so sein. Ist der BC557 richtig angeschlossen und ist es auch sicher kein BC547? Kann es sein, dass die Knopfzellen den Strom nicht bereitstellen können? Funktioniert es mit (nachgemessenen) 6V vom Netzteil?
Datum:
Ohhh je, na ja - manches hatte ich richtig gemacht. Stromversorgung war ein Labornetzteil (etwas einfaches, EA-PS 1501) - Strombegrenzung war erst auf 200 mA, dann auf 1000 mA, Spannung vorsichtig hoch . . . . so ab 5,5V angefangen. Knopfzellen - erstmal dachte ich an die V357 - wenn die genügend Strom bringen, aber ich hatte mit Licht am LCD rund 110 mA gemessen . . . . Ohne Licht sinds um die 60 mA. Daher hatte ich das Ganze vorerst auch NICHT mit Knopfzellen probiert. Mein Testblock mit 4xAA - tecxus 2700Ah - bei rund 5,4 V hatte nichts gebracht, sprich: Tasterdrücken führte weder zu Stromverbrauch (am Multimeter gemessen) noch zu einem erhellenden Licht an der LED oder am Display. Ja - und der "ohh-je"-Teil: ich hatte statt der BC557 und BC547 ein paar vorhandene (neue) BC337 und BC327 genommen. gggg - stimmt - den "BC557", bei mir also ein BC327, hatte ich zuerst "andersrum" drin, bis ich den Pfeil genauer angesehen hatte. Es funktionierte nicht mit nachgemessenen 6V am Netzteil (DMM = Metrahit 12S - schien mir bisher vertrauenswürdig - und ist auch nicht auf low bat). Jedenfalls danke Alexander für Deine schnelle Antwort von eben.
Datum:
Die Minimalspannung ist: 5V + 0,4V (LDO) + 0,3V (PNP) Es müsste also mit 6V laufen. Evtl hast du Übergangswiderstände auf dem Steckbrett.
Datum:
Danke Alexander. Ich stecke das Ganze grade wieder zusammen (hatte es vormittags auseinandergenommen). Übergangswiderstände - soweit ich mich erinnern kann - waren im Steckbrett meist so - Bauteilfuss B1 - Kontaktleiste1 - Steckbrücke - Kontaktleiste2 - Bauteilfuss B2 - von B1 nach B2 etwa 2 bis 4 Ω (ohne Nulljustage am DMM). Werde es heute+morgen neu aufbauen, nachmessen und dann mich nochmal melden. Danke.
Datum:
Hallo, Danke erstmal Markus für das klasse Projekt. Ich hab dabei richtig Spass gehabt und viel dabei gelernt. Ich bin beim Durchtesten meiner Bauteile auf einen Effekt gestossen. In meiner Kiste zwischen den Transistoren und Dioden waren auch ein paar Spannungsregler. Lasst mal einen bei euch testen, bei mir kommt dann Bauteil unbek. oder defekt4d dieses "4d" kommt auch mal als "5d" oder "6d". Im Code hab ich schon nachgeschaut aber nichts ungewöhnliches entdeckt. Gruß Andreas
Datum:
Angehängte Dateien:Hallo Alexander, hallo alle, Walter Jo schrieb: > ... mein Schaltungsaufbau ... unter etwa 7,5 V nicht einzuschalten... Es geht besser. Es geht unter 6 V als Ubatt. Vielleicht ist beim alten Aufbau ein nicht entdeckter schlechter Kontakt schuld gewesen, vielleicht weil heute Sonntag ist, ich kann mit Eingangsspannungen unter 6 V sicher schalten. ALLERDINGS NICHT, wenn das LCD angeschlossen ist. Also habe ich mir noch einen LP2950 genommen und noch einen BC337. Die Basis des 337 über 1k an den Eingang des originalen Spannungswandlers (D1) (= C des T3 der Originalschaltung) und mit 10k weiter an GND. Der Emitter des 337 direkt an GND. Der GND des zweiten Spannungswandlers an C des 337. Jetzt kann ich störungsfrei bis Ubatt,min 5,8V (Anzeige 5,79) schalten. Dabei bekomme ich am Controllereingang 4,93 V. Geringere Ubatt bringt einen Abfall am Controllereingang, höhere Ubatt bringt keine höhere Eingangsspannung am Controller. Die Spannungsmessungen leider nur gemessen, als der Testzyklus schon vorbei war.
Datum:
=> Andreas Schmitt >Ich bin beim Durchtesten meiner Bauteile auf einen Effekt gestossen. In >meiner Kiste zwischen den Transistoren und Dioden waren auch ein paar >Spannungsregler. Lasst mal einen bei euch testen, bei mir kommt dann >Bauteil unbek. >oder defekt4d >dieses "4d" kommt auch mal als "5d" oder "6d". Wenn mehr als 2 Dioden gefunden wurden, aber nicht noch zusätzlich ein anderes Bauteil (z.B. Transistor), dann wird die Anzahl der Dioden angezeigt, in der Form: Bauteil unbek. oder defektyd y ist dann die Anzahl der Dioden. Das ist also kein Bug, sondern ein Feature... Aber es stimmt, ein Leerzeichen zwischen dem "defekt" und der Anzahl der Dioden würde nicht schaden.
Datum:
Angehängte Dateien:Markus F. schrieb: > >>dieses "4d" kommt auch mal als "5d" oder "6d". > > Wenn mehr als 2 Dioden gefunden wurden, aber nicht noch zusätzlich ein > anderes Bauteil (z.B. Transistor), dann wird die Anzahl der Dioden > angezeigt, in der Form: > > Bauteil unbek. > oder defektyd > > y ist dann die Anzahl der Dioden. > > Das ist also kein Bug, sondern ein Feature... > > Aber es stimmt, ein Leerzeichen zwischen dem "defekt" und der Anzahl der > Dioden würde nicht schaden. Muss ich mir mal genauer im Quellcode anschauen, man is ja lernfähig. Danke für die Info. Ich hatte übrigens massive Probleme mit dem Starten des Testers, der wollte von 30 Versuchen vielleicht 1-2 mal richtig starten. Die anderen mal waren nur wirre Zeichen und ein blinkender Cursor zu sehen. Mit dem Kondensator auf Bild 2 (Kunstwerk von unten :D) war das Problem behoben und die Sache lief. Vielleicht würde zu dem Leerzeichen noch statt dem "d" das Dioden-Symbol mehr passen.
Datum:
Angehängte Dateien:Der Tester ist fertig aufgebaut für einen 9V-Block, das Display wird auf Abstandshaltern oberhalb der Schaltung montiert. Für die Testbuchsen und den 3xPfostenstecker für ein Testkabel bleibt vorne genügend Platz. http://oberallgeier.ob.funpic.de/TrTester_totale_1824.jpg Derzeit zweifle ich noch, dass die 9V-Akkus den Tester treiben können. Leider zeigen meine beiden Akkus derzeit noch stets "Batterie leer", aber sie hängen am Ladegerät. Und für das Bild reicht eine fliegende Verbindung zum Labornetzteil. Die unmotiviert verlaufende Drahtschlaufe nach PC5 wird später nach PC3/ADC3 verlegt - dann wird der SCL-Pinn frei. Aktuell will ich den Code für einen mega168 umgtricken - mal sehen, ob ich dann noch zusätzliche Sachen einbauen kann. ISP ist ja dran . . . . Mag ja sein, dass Profis die Nase über die Lochraster+Spaghetti-Platine rümpfen. Frage: Funktioniert der Tester bei irgend jemandem mit einem handelsüblichen 9V-Akku oder sind 9V-Blocks unabdingbar?
Datum:
Abgesehen davon, dass Deine LCD-Hintergrundbeleuchtung Gift für einen 9V-Block ist, miss mal die Spannung Deines 9V-Block-Akkus. Und dann miss mal die Spannung eines primären 9V-Blocks. Und dann überleg' mal, welche Spannungsdifferenz der 78L05 zum sauberen Regeln braucht. ...
Datum:
Hi Hannes, > ... Spannung Deines 9V-Block-Akkus. Und dann miss > mal die Spannung eines primären 9V-Blocks ... Kennst Du den Unterschied in den Spannungen? > ... Und dann überleg' mal, welche Spannungsdifferenz > der 78L05 zum sauberen Regeln braucht. Das Überlegen hilft da nix - das steht nämlich bei mir im Datenblatt. Aber oben habe ich ja geschrieben, dass ich einen LP2950 genommen hatte ggg. > ... LCD-Hintergrundbeleuchtung Gift für einen > 9V-Block ... Deshalb gibts diesen hübschen, zweipoligen, separaten Stecker für die LED ggg. Mit dem grossen, weißen "+" auf einem Pol. Aber irgendwie war das alles wohl nicht die Antwort auf meine Frage.
Datum:
>Und für das Bild reicht eine fliegende Verbindung zum Labornetzteil.
Du hast 2 Möglichkeiten:
1.Stell an Deinem Labornetzteil die Spannung langsam runter und miß, bis
wohin der Tester noch arbeitet
2. Warte, bis Dein Akku fertig geladen ist und probier's aus...
;-)
MfG Paul
Datum:
Walter Jo schrieb: > Derzeit zweifle ich noch, dass die 9V-Akkus den Tester treiben können. > Leider zeigen meine beiden Akkus derzeit noch stets "Batterie leer", > aber sie hängen am Ladegerät. > > Frage: Funktioniert der Tester bei irgend jemandem mit einem > handelsüblichen 9V-Akku oder sind 9V-Blocks unabdingbar? CR2032 und ein stepup reichen auch :P Wieso schaltest du die erkennung per hard oder noch besser software (da du eh code umbauen möchtest) einfach aus ?
Datum:
Hallo Paul, hallo Thomas, danke für die Hilfen. @Paul. Das mit dem Labornetzteil hatte ich bereits vor dem Posting gemacht, siehe oben vom 22.11.2009 10:43 und 21.11.2009 17:31. Der Akku ist fertig geladen, aber die LCDBeleuchtung zieht wirklich sauber viel Strom. Daher hatte ich ja vorsorglich die Versorgung mit einem separaten Stecker versehen. LED abstecken - und der Tester läuft völlig korrekt. Da ich selten im Dunklen sitze, gehts auch so . . . . @Thomas. Der Tester zieht vom Labornetzteil mit 9,00V und Strombegrenzung auf 200 mA ohne LED ca. 10 mA, mit LED ist der Anlaufstrom, gemessen mit DMM (Gossen Metrahit 12S), über 100 mA, im Normalstatus über 60 mA. Ähnliches natürlich mit dem 9V-Akku Varta NiMH, der 9,4V Leerlaufspannung hat. Mit Tester im Normalbetrieb, ohne LED bleiben am Akku 8,7 V und mit LED noch 5,7V. Dabei messe ich im Tester 4,97V im Normalbetrieb und 4,3 V mit LED, also viel zu wenig für eine korrekte Messung. Seltsam ist ja, dass beim LP2950 im Datenblatt von National Semiconductor steht: Guaranteed 100 mA output current. Und - ich hatte schon eine Wartesekunde nach dem Anmeldetext und vor der Spannungsüberprüfung eingelegt. UND - alle Zwischenräume auf der Platine gesäubert . . . . > ... CR2032 und ein stepup reichen auch Meinst Du? Ich bin nicht sicher. Werde ich auch nicht testen. > ... schaltest du die erkennung ... einfach aus ? Neeee. Die sichert mir doch eine ganz wichtige Funktion. Ich finde dieses Feature, die Versorgungsspannung in der Anmeldephase zu überprüfen einfach s..gut!
Datum:
Walter Jo schrieb: > beim LP2950 im Datenblatt von National Semiconductor steht: Guaranteed > 100 mA output current. Wenn du die Kondensatoren mit einschaltest ist der Anfangsstrom kurzzeitig deutlich höher. Am besten die Kondensatoren immer am Akku lassen. Außerdem dürfte der begrenzende Faktor hier der Akkus sein. Dort wird die Spannung einbrechen.
Datum:
Genau der Einbruch am Akku ist es, denn am Labornetzteil mit der Einstellung 9V und "max 200 mA" läuft der Tester problemlos - mit dem gleichen LDO. Selbst ein anderer 9V-Akku brachte nix.
Datum:
Wenn die Akkus keine 60mA liefern können, dann sind diese kaputt oder waren schon immer schlecht. Ich habe mal exemplarisch in ein 9V-Block Datenblatt geschaut und dort steht bei 56mA Entladestrom eine Entladedauer von 5 Stunden bis 7V. Bei 380mA ist es immer noch eine Stunde bis 7V. 9V-Block: http://www.reichelt.de/?;ARTICLE=82135 Datenblatt: http://www.reichelt.de/?;ACTION=7;LA=6;OPEN=0;INDE...
Datum:
Danke esko! Ärgerlich - von meinen tecxus AA und AAA habe ich solche Datenblätter, direkt vom Hersteller natürlich. Diese Akkus können wirklich hohe Ströme abgeben, das weiß ich von meinen anderen Projektchen. Selbst das Leichtgewicht des 9V-Blocks sollte ja 100+ mA weit über eine Stunde liefern können. Hoffentlich ist mein Aussetzer nur temporär. Danke für Deine Mühe und Geduld. http://www.tecxus.de/german/datenblatt/NIMH9V160.pdf
Datum:
Die Akkufrage ist positiv geklärt. Der neue tecxus 9V/280mAh lässt das LCD und die Bastleraugen bei der Messung hell leuchten. Jetzt gehts an die Software. Wegen eines persönlichen Überangebotes an mega168 wird dieser genommen, zumal es ein gemeinsames Datenblatt von Atmel für ATmega48/88/168/328 gibt und die Software auch für m48 passen soll. mega168: Der Transistortest NPN und PNP geht beim mega168 recht ordentlich. Bei Test eines Widerstandes mit 1k meldet der Tester 2 Dioden antiparallel, gelegentlich auch "kein, unbek..." oder tolerierbare 1003Ω ... 1005Ω und beim Test eines 100nF meldet er entweder auf 3-2 22,60nF oder auf 2-1 172,33nF, 1-3 ist 20,60nF. mega8: Die IDENTISCHE Hardware meldet an allen Kombinationen Kapazitäten zwischen 99,99nF und 102,44nF und sinnvolle Widerstandswerte. Da wird ein mühevoller Vergleich der docs notwendig :(.
Datum:
> Die Akkufrage ist positiv geklärt. Wirklich? Und was ist hiermit? Beitrag "Re: Transistortester mit AVR" > Da wird ein mühevoller Vergleich der docs notwendig :(. Es gibt bei Atmel ANs zum Thema Migration. ...
Datum:
Der m168er Transistortester läuft sehr schön - auch problemlos am Akku und der Code scheut auch nicht den m328. Damit habe ich Teil 1 meines Projektziels erreicht. Teil 2 sind zusätzliche Routinen, die mit dem Bauteiltester nichts zu tun haben. Änderungen im code waren a) Redigieren der Typabhängigkeit, insbesondere alle #ifdef UseM8 / #endif b) Verlegen des low batt Checkpins nach PC3 - damit wird das I²C frei (gehört zu Teil 2). c) wirklich notwendig war natürlich die Anpassung bei den Faktoren für die Kapazitätsmessung bei Kondensatoren:
// War : // #define H_CAPACITY_FACTOR 394 // #define L_CAPACITY_FACTOR 283 // .. und ist neu : #define H_CAPACITY_FACTOR 241 #define L_CAPACITY_FACTOR 167 |
Wen wunderts, der Kommentar dazu im originalen Code sagt ja genug.
Die oben (28.11.2009 12:15) erwähnten, seltsamen Effekte mit Meldungen
zu antiparallelen Dioden oder 100 unterschlagenen nanoF verschwanden,
als ich bei Testmessungen stets den ISP-Stecker entfernte. MISO, MOSI
und SCK gehen ja zu drei Messwiderständen. Wieder etwas, das ich
übersehen hatte.
Hannes Lux schrieb:
> Es gibt bei Atmel ANs zum Thema Migration.
Danke Hannes für den Hinweis. Diese ANs sind nicht wirklich erhellend zu
diesem Thema. Dass der mega8 manche Registernamen anders hat als der
m168, ist ja den meisten hier klar und die Unterschiede der
48/88/168/328-Reihe zur Gruppe der 48P/88P/168P/328P (AVR512) sind
vorwiegend Energiesparfragen mit den zugehörigen Quarzen und der Hinweis
auf einige neue Register.
Danke allen für die freundlichen Hilfen.
Datum:
Erstmal: Danke für dieses tolle Projekt! Problem: Nach dem Update auf die neueste Firmwareversion werden bei meinem Gerät Kondensatoren unter etwa 1,5nF nicht mehr erkannt. Vorher konnte ich einen 1nF-Kondensator zuverlässig messen. Ist der Effekt durch die letzten Änderungen unvermeidlich oder handelt es sich um einen Bug?
Datum:
MartinSt schrieb: > ... > Nach dem Update auf die neueste Firmwareversion ... Hast Du vielleicht auch den Controller gewechselt? Ich habe bei meinem Nachbau festgestellt, dass ziemliche Fehlmessungen bei den Kondensatoren durch die >...Faktoren für die Kapazitätsmessung bei Kondensatoren... beeinflusst werden, siehe mein Posting oben. Vielleicht mal im niedrigen Kapazitätenbereich diese "Eich"werte selbst einjustieren? DAS hatte bei mir eine sehr gute Genauigkeit gebracht - allerdings messe ich nix unter 50 nF.
Datum:
> Nach dem Update auf die neueste Firmwareversion werden bei meinem Gerät > Kondensatoren unter etwa 1,5nF nicht mehr erkannt Ja, ist bei mir auch so. Ist mir vorher aber auch noch nicht aufgefallen. Alles unter ca. 1,25nF wird nicht erkannt. Ich sehe mir das mal an...
Datum:
Angehängte Dateien:Zu der Sache mit den Kondensatoren: Das war tatsächlich ein Fehler in der Software. In der angehängten Firmware habe ich den Fehler berichtigt, jetzt werden wieder Kondensatoren ab ca. 0,2nF erkannt. Ich habe diese Firmware auch wieder mit einigen Bauteilen getestet und es hat funktioniert, scheinbar sind durch diese Änderung auch keine neuen Fehler entstanden (ihr kennt das ja sicher: Man beseitigt einen Fehler und schafft damit zwei neue...). Und die Dioden-Anzeige bei defekten oder nicht erkannten Bauteilen habe ich auch geändert. Jetzt wird es als Bauteil unbek. oder defekt y(Dioden-Icon) angezeigt (y steht für die Anzahl der Dioden).
Datum:
Das mit den Kondensatoren funktioniert einwandfrei. Bei meinen Triac TIC226 und fast allen TIC216 zeigt er allerdings npn b1 c2 e3 hfe0 Bei denen er TRIAC anzeigt ist die Belegung falsch G=1 A1=2 A2=3 wenn man ihn umdreht, G und A2 tauscht, bleibt die Belegung gleich. Transistoren und FET werden soweit ich getestet habe, richtig angezeigt.
Datum:
Hallo. Nachdem ich auf dieses Gerät aufmerksam geworden bin und ich demnächst mel wieder eine bestellung bei Pollin tätigen werde. werde ich den TT mal nachbauen. Klingt auf jedenfall interessant und vielversprechend. lg
Datum:
Kann man auch anstatt des LCD-Displays ein Display von einem S65 benutzen und noch mehr Werte untereinander darstellen? Was müsste ich dabei beachten? lg
Datum:
> Bei meinen Triac TIC226 und fast allen TIC216 zeigt er allerdings > npn b1 c2 e3 hfe0 Das ist ein normales Verhalten. Der Tester liefert einfach nicht genug Strom, um den Haltestrom der Triacs zu erreichen. Über die 680Ohm-Widerstände fließen ja nur max. 7mA. Die meisten Triacs haben aber >10mA Haltestrom. Daher bleiben sie nach Wegnahme der Gatespannung nicht geschaltet und sind für den Tester nicht von einem NPN-Transistor zu unterscheiden. Das mit der falschen Belegung weiß ich jetzt auch nicht. Ich erinnere mich, das auch mal gehabt zu haben, bei einem BT136. Da habe ich mich aber nicht gleich darum gekümmert, und dann ist es wieder in Vergessenheit geraten... Ich habe aber gerade keinen Triac da, der auch als Triac erkannt wird (ich habe nur ein paar BTA24 mit max. 25A Laststrom und 50mA Haltestrom da, die werden aber verständlicherweise nicht erkant). Wenn ich mal wieder ein paar geeignete Triacs habe (BT136 müssten gehen), dann teste ich es nochmal.
Datum:
> Kann man auch anstatt des LCD-Displays ein Display von einem S65 > benutzen und noch mehr Werte untereinander darstellen? Wenn du genug frei Pins findest, den Code schreiben kannst und noch Platz im AVR ist, dann kann man das. Ich verwende ein überbreites (24x2) HD44780-kompatibles Display, und hatte daher dafür an der Hardware und vom Treibercode wenig zu ändern. Da ich eine andere Stromversorgung und Ein-Aus-Schaltung verwende, habe ich noch diverse andere Änderungen in der Software. > > Was müsste ich dabei beachten? Das Updates auf neue offizielle Software-Versionen Mehrarbeit machen. Ich habe alle Display-Strings und das Display-Layout auf 24x2 umgestellt (und dazu ein diverse weitere Änderungen). Bei jeder neuen offiziellen Software-Version muss ich den Code wieder patchen.
Datum:
Für jemanden der mit einem S65 Display noch nicht gearbeitet hat.... Vergiss es. !! Wenn du "nur" ein Nachbauer bist, vergiss es !! Wenn Du Ahnung hättest würdest Du die Frage nicht stllen. Das ist ein grafisches Display. Du mußt Dich um alles selbst kümmern. Umrechnen der ASCI Werte, Aufbereiten der Pixel, umsetzen von 4 Bit Bus nach 8Bit Bus, Grafiktabelle etc.pp. Wie gesagt, wenn Du Ahnung hättest...würdest Du nicht... Aber so....
Datum:
Zumal ein kompatibles LCD bei Pollin für 1,95 zu haben ist... ...
Datum:
> Zumal ein kompatibles LCD bei Pollin für 1,95 zu haben ist...
.. welches übrigens auch ich verwendet habe (Bestellnummer 120545).
Mal davon abgesehen, dass das Display recht klein ist (was auch ein
Vorteil sein kann) ist es nicht schlecht:
Der Kontrast ist super, der angezeigte Text ist sehr gut lesbar. Und ja,
ich gebe es zu: Ich habe das auch hauptsächlich gekauft, weil es so
billig ist...
Der Nachteil ist nur der Anschluss: Es ist ein Folienleiter mit 1mm
Pitch.
Aber wenn man mit S65 Displays umgehen kann, sollte das kein Problem
sein.
Man kann den Folienleiter auch ablöten und stattdessen Kupferlackdrähte
anschließen. So habe ich das auch gemacht. Sieht dann ziemlich
verbastelt aus, aber das stört mich nicht. Bei mir ist der Aufbau eh
nicht gerade ein Design-Meisterstück (siehe Artikel zum
Transistortester...).
Datum:
Das 120545 ist mir etwas zu klein, das habe ich zwar da, aber noch nicht verwendet. Ich bezog mich eigentlich auf das Solomon mit der Bestellnummer 120546. Es hat (auch ohne BL) einen guten Kontrast, das rötliche BL sieht auch recht passabel aus, zumindest an einem netzbetriebenen Gerät (Akkulader). Die Pinbelegung (Nummerierung) ist zwar etwas anders, aber damit kann man leben. ...
Datum:
Hallo Markus, ein Dankeschön für die Entwicklung und eine Frage: wenn ich den Quelltext kompiliere und in den Prozessor lade, wird die Stromverstärkung bei Transistoren um zwei Zehnerpotenzen zu gering angezeigt (statt 254 nur 2). Kann es sein, daß sich im Programm noch ein Fehler versteckt hat? MfG Helmut
Datum:
Hi Markus, I found bug. I put BS170 transistor, than tester displays gd = 231, when I part was turned 180 degrees, tester displays GDS = 213. Regards Freddy
Datum:
Angehängte Dateien:Freddy schrieb: > Hi Markus, > I found bug. I put BS170 transistor, than tester displays gd = 231, when > I part was turned 180 degrees, tester displays GDS = 213. > > Regards Freddy check the picture - BS170 have the Gate in the middle, so it is pin 2, if you turn around the pin 2 is still in the middle ... like 231, 213
Datum:
Ollz schrieb: > .... Bei jeder neuen offiziellen > Software-Version muss ich den Code wieder patchen. Meine Testerversion betreibe ich auf einem mega168, auch mal nem 328er - mit zusätzlichen Dingen und Gimmicks wie freiem I²C-Port. Sprich: auch ich muss patchen. Daher wird das neue Original immer mit meiner aktuellen Version verglichen mit einer Art "Diff". DAS erleichtert die Arbeit ungemein. http://www.softinterface.com/DL/DL_Product.ASP?Pro...
Datum:
Hallo, Markus F. Super - Project aber: Es wäre shon die Pins-Reihenfolge(zwishen AVR und LCD) zu ändern jetzt PD0(2) - D4(11) PD1(3) - D5(12) PD2(4) - D6(13) PD3(5) - D7(14) PD4(6) - RS(4) PD5(11) - R/W(5) meine Meinung PD0(2) - D7(14) PD1(3) - D6(13) PD2(4) - D5(12) PD3(5) - D4(11) PD4(6) - R/W(5) PD5(11) - RS(4) PCB-Layout wird einfacher Ist das möglich?
Datum:
Hallo, ich bin ein absoluter Neuling was AVR angeht. Ich benutze das myAVR Board MK2 USB mit ATMega8. Zum Brennen benutze ich das Programm myAVR ProgTool. Nun wollte ich gerne den Transistor-Tester ausprobieren. Zuerst hab ich mir die erste Firmware runtergeladen. (Der erste Downloadlink im Artikel) Leider bekomme ich beim Brennen eine Fehlermeldung.
vorbereiten ... brennen ... benutze: mySmartUSB MK2 an COM4 mit ATmega8 USB-Treiber installiert, aktiv (V 5.3.0.0), Port: COM4 Prozessor: ATmega8 schreibe 7036 Bytes in Flash-Memory ... ... erfolgreich (10.89 s) schreibe 290 Bytes in EEPROM-Memory ... Fehler: beim Schreiben der Daten. |
Also hab ich das nochmal selbst kompiliert. Danach lief das brennen reibungslos, und der Conroller schien richtig zu arbeiten. Nun hab mir die aktuelleste Firmware runtergeladen. Auch hier beim Brennen der selbe Fehler, neukompilieren bringt keine Veränderung. Hat jemand einen Rat, warum es zum Fehler beim Brennen des EEPROMS führt?
Datum:
=> Freddy: Drain and source are almost equivalent at JFETs like the BF245, so they can't be identified. If you conect a BF254 like gate=1; drain=2; source=3, the tester will show N-JFET GDS=132 If you connect ist gate=1; drain=3; source=2, it will give the same result. But the gate pin was always detected correctly at my tests in all possible pin arrangements. Are you sure you really got the result "GDS=231", and after turning ist 180 degrees "GDS=321"? If you got this, it would be a bug. => unalex: Ja, es ist möglich, die Pin-Reihenfolge zu ändern. Die Pins für RS und Enable kann man einfach in einem Define ändern. Um die Datenleitungen "umzukehren", müsste man eben die Bit-Reihenfolge für alle Datenausgabe-Befehle ändern. Das ist nicht allzu schwierig. Machbar ist es also ohne weiteres. => Sergei: mySmartUSB und das myAVR Prog-Tool benutze ich selbst nicht. Der Fehler erscheint mir aber etwas merkwürdig. Es wäre denkbar, dass das EEPROM vom ATMega8 einen Schaden hat. Ich weiß es aber nicht (mit myAVR kenne ich mich nicht aus).
Datum:
<i>Um die Datenleitungen "umzukehren", müsste man eben die Bit-Reihenfolge für alle Datenausgabe-Befehle ändern</i> wäre es nett, wenn jemand zeigt mir was und wo muss ich ändern
Datum:
=> unalex: Die Defines für RS und Enable stehen unten in der lcd-routines.h:
#define LCD_RS PD4 #define LCD_EN1 PD5 |
Und zum Invertieren der Bit-Reihenfolge musst du diesen Codeabschnitt in lcd-routines.c ändern (Zeile 28-39):
//Eigentliche LCD-Zugriffs-Funktion; 4-Bit-Modus void lcd_send(unsigned char data) { // oberes Nibble setzen LCD_PORT = (LCD_PORT & 0xF0) | ((data >> 4) & 0x0F); //Ändern _delay_us(5); lcd_enable(); // unteres Nibble setzen LCD_PORT = (LCD_PORT & 0xF0) | (data & 0x0F); //Ändern _delay_us(5); lcd_enable(); _delay_us(60); LCD_PORT &= 0xF0; } |
Bevor die Variable "data" ausgegeben wird, muss ihre Bit-Reihenfolge gedreht werden. Das ist in den zwei Zeilen, die ich hier mit "Ändern" markiert habe. Wie man die Bit-Reihenfolge dreht: Siehe z.B. Beitrag "Byte umdrehen" => Freddy: No, the result you got ist not wrong... At all those JFETs, the gate is one of the outside pins, not the middle pin. And the tester either says gate ist pin 1 or pin 3. It never detects gate as the middle pin (Pin 2). So far, it is correct. And as I said, it is not possible for the tester to tell drain and source apart. At every JFET, both directions are detected. But only the last test result will be displayed. So it depends on the pin order which result is detected last and shown on the LCD. Because of that, the drain and source pin are often (50% of the cases) shown incorrectly. This is not perfect, but I don't know how to improve it. Due to the design of JFETs, drain and source electrically are almost equivalent. So I think it is impossible to tell them apart with such a tester. Even in the manual of commercial component testers it says that drain and source can not be told apart with those component testers.
Datum:
Angehängte Dateien:Markus, but I checked same JFET on the tester published by the Elector in 2008(attach docu. attached), and it display good.
Datum:
Hallo Leute, ich möchte mir den Tester auch nachbauen. Müssen es 680R Widerstände sein? Oder kann ich auch ähnliche (hab 540R 1% hier liegen) nehmen, solange sie alle gleich sind? Viele Grüße, Matthias
Datum:
Hab mir gerade mal die Sauce angeschaut. Vergesst meine Frage :-) Schönen Sonntag noch, Matthias
Datum:
Ich habe noch einige der 470k und 680 Ohm 1% Widerstände und schicke jedem einen Satz davon zu. Kostenlos. Als einzige Gegenleistung erwarte ich eine Postkarte aus eurer Stadt. Kontakt per PN oder per Email (hier: Benutzer:Esko)
Datum:
Walter Jo schrieb: >> ... CR2032 und ein stepup reichen auch > Meinst Du? Ich bin nicht sicher. Werde ich auch nicht testen. > Walter, 2 stk CR2032 parallel geschaltet (die waren schon beim ~2.85V, also nicht ganz frisch), ein TPS61070DDC um auf 5V zu kommen mit EN auf PD6 - das hab ich getestet. Im dauerbetrieb haben die 1std mit LCD ohne hintergrunbeleuchtung und 40 minuten mit einen OLED display gehalten. OLED hat lediglich 30 zeichen angezeigt - ohne funktion, ging nur um stromverbrauch test. Im normalbetrieb mit frischen CRs sollte also für mehrere "mess"stunden reichen.
Datum:
=>Freddy (Gast) I've made just Sc-analyser 1.0e (as in magazine) and found after some experiments: for P- or N-JFETs it can't recognize drain and source, because they really are (almoust) the same. Except this, the device "don't like" Germanium transistors - try to name them as P- or N-JFETs: pin connection sensitive - one connection - bipolar, other - JFET for small-power Ge-transistors. The irremovable problem for this device - use of analog switches. Their non-linear channel resistance made it unstable, by my opinion.
Datum:
Serge S. --> I have no tester from Elektro, I ask my friend (by phone) for some test only.
Datum:
Finally, I had registered on Forum. I was Freddy (Gast) before, now I'm as Janusz B. (or FreddyPL)
Datum:
Markus, ich hätte da noch einen Vorschlag zur Verbesserung der Genauigkeit bei Widerstandsmessungen. Sorry, falls das schonmal genannt wurde, aber zumindest beim Durchsuchen des Threads nach dem Stichwort "Widerstand" bin ich nicht darauf gestoßen. Also zu meinem Vorschlag: Wenn ich das richtig sehe, sind an Deinem Mega8 noch vier Portleitungen frei, nämlich PB6, PB7, PC3 und PC4. Die könntest Du doch verwenden, um gegen einen der Testpins weitere Meßwiderstände zu schalten und so die "Lücken" im Meßbereich zu füllen. Vorstellbar wären z.B. Werte von 4R7, 47R, 4k7 und 47k. Evtl. könnten diese zusätzlichen Widerstände auch die Genauigkeit von anderen Messungen verbessern, ggf. nachdem das Programm den Benutzer aufgefordert hat, das Bauteil umzustecken, so daß das richtige Beinchen in der "genaueren" Meßbuchse steckt.
Datum:
=>Janusz B. I have VERY old soft (2005) of Analyser By Elector, and made 2 variants of AVR-tester and compared all 3 of them about 1 month ago on about 50 semiconductors, most in SOT23/223/DPAK etc. After this Elector got pension. :) It was made first and was enough useful, but AVR - better. By my experience. Take in mind that new soft can make Analyser some better, but can't solve problem of non-linearity of multiplexors, which needs DAC/RC-integrator (or other analog signal source) and sophisticated calculations for better calibration, so it hasn't future. By my opinion, of course. Thanks to Markus F.(5volt) once more for his outstanding desigh and programming.
Datum:
=> R.Max: Dieser Vorschlag kam schon mal, aber nicht im Zusammenhang mit der Widerstandsmessung. Ich habe mal ausgerechnet, dass der Tester bei einem angeschlossenen Widerstand von

von dem niedrigen Widerstand auf den hohen umschaltet. Bei 680 Ohm und 470kOhm ergibt das knapp 18kOhm. In diesem Bereich ist die Messung am ungenauesten, weil keiner der beiden Widerstände dafür gut geeignet ist (der gebildete Spannungsteiler hat immer ein recht großes Teilerverhältnis). Nochmal 3 zusätzliche 18kOhm-Widerstände wären also meiner Meinung nach noch am sinnvollsten. Kleiner als 120 Ohm sollten die Widerstände sowieso nicht sein, sonst kann der ATMega8 überlastet werden (nur 40mA je Pin zulässig). Und zu dem zusätzlichen Testbuchsen: Naja, das finde ich auch nicht so toll, wenn man das Bauteil dann nochmal umstecken muss. Mal ganz nebenbei: Der ATMega8 ist mit dem jetztigen Code sowieso schon recht voll. Und ehe ich dann einen ATMega168 nehmen würde, würde ich eher auf einen ATMega16 umsteigen: Ist billiger als der Mega168 und hat 9 bzw. 10 I/O-Pins mehr... Damit wäre es auch kein Problem, 4 zusätzliche Sätze von Widerständen vorzusehen. Zum Beispiel 120 Ohm, 3.5kOhm, 18kOhm und 92kOhm. Aber die Idee ist nicht schlecht!
Datum:
Markus F. schrieb: > Und zu dem zusätzlichen Testbuchsen: Naja, das finde ich auch nicht so > toll, wenn man das Bauteil dann nochmal umstecken muss. Da hast Du mich falsch verstanden: ich meinte nicht, eine zusätzliche Buchse vorzusehen, sondern die zusätzlichen Widerstände an eine der vorhandenen Buchsen zu legen. Das ändert natürlich nichts an der Umsteckerei, es sei denn man trifft zufällig schon die richtige Orientierung.
Datum:
Markus, I finally put together my tester. It works. But I have a porblem with the start circuit. I cannot get to work right. If I short the Vin of the 2805L with +9 I can get to to start. But I cannot get it to start with the S1 switch. Any suggestions? I have tested a couple of transistors. I just can't get it to start correctly. Transistors are good. 7805L is good. Resistors with correct values are in the right places!? Should I just bypass the transistor starter circuit? I don't have an AVR programmer. So that is a problem. Any ideas or suggestions are welcomed. Many thnx.
Datum:
Markus, I change some elements on tester schematics. Add L, and change some Resistor. Can You send me source of schematic, than I will place my corrections and post a diagram. With these corrections tester work better, and I have not startup problems.
Datum:
Hallo Markus, Dein Tester ist wunderbar! Sonst habe ich noch ein Paar Bitten. Kannst Du bitte im Program RX/TX freigeben? Ich denke, das kann man fuer weitere Funktonalitaet benutzen. Was ist Deine meinung, wenn diese Formel: #define RH_RL_RATIO (R_H_VAL / R_L_VAL) mit einer Kaliebrierung und mit die drei genauen Koefifizienten austauschen? Hast Du dafuer eiene Regel oder eine Idee fuer Kaliebrierung? #define H_CAPACITY_FACTOR 394 #define L_CAPACITY_FACTOR 283 Und am Ende - ich denke bei alle Messungen, am Anfang soll ein Reset (wie DischargePin) fuer alle Messung Pine durchgefuehrt sein. Was meinst Du? Viele Gruesse!
Datum:
mszr schrieb: > > Und am Ende - ich denke bei alle Messungen, am Anfang soll ein Reset > (wie DischargePin) fuer alle Messung Pine durchgefuehrt sein. Was meinst > Du? > bin zwar nicht Markus, aber discharge sollte "offline" gemacht werde. Ich sehe schon wie schnell der µC sterben wird sobald jemand aus reiner gewohnheit einen 400V elko dran anschliest :\
Datum:
Addendum. I want to compile my own file so that I exclude the transistor control features and just bypass the battery directly into the 7805L. You suggested this can be done but I have to modify the code. Well, I donwloaded the code and all comments are in German. Too bad. I was already getting used to using it for testing devices.
Datum:
Michael Gomez schrieb: > > Well, I donwloaded the code and all comments are in German. > Too bad. I was already getting used to using it for testing devices. you can translate it http://www.microsofttranslator.com/ it will be probably a bit "strange" but still better than in german
Datum:
Hallo Michael, Du hast mich falsch verstanden. Heute morgen habe ich eine kleine Korrektur gemacht: es war früher: //Alle 6 Kombinationsmöglichkeiten für die 3 Pins prüfen CheckPins(TP1, TP2, TP3); CheckPins(TP1, TP3, TP2); CheckPins(TP2, TP1, TP3); CheckPins(TP2, TP3, TP1); CheckPins(TP3, TP2, TP1); CheckPins(TP3, TP1, TP2); #ifdef UseM8 und jetzt: //Alle 6 Kombinationsmöglichkeiten für die 3 Pins prüfen DischargePin(TP1,0); DischargePin(TP2,0); DischargePin(TP3,0); CheckPins(TP1, TP2, TP3); DischargePin(TP1,0); DischargePin(TP2,0); DischargePin(TP3,0); CheckPins(TP1, TP3, TP2); DischargePin(TP1,0); DischargePin(TP2,0); DischargePin(TP3,0); CheckPins(TP2, TP1, TP3); DischargePin(TP1,0); DischargePin(TP2,0); DischargePin(TP3,0); CheckPins(TP2, TP3, TP1); DischargePin(TP1,0); DischargePin(TP2,0); DischargePin(TP3,0); CheckPins(TP3, TP2, TP1); DischargePin(TP1,0); DischargePin(TP2,0); DischargePin(TP3,0); CheckPins(TP3, TP1, TP2); DischargePin(TP1,0); DischargePin(TP2,0); DischargePin(TP3,0); #ifdef UseM8 Ich machte das, weil bei fast alle Messungen z.B. hfe stabilisiert na 5. Messung, nach Pin änderung. Jetzt hfe ist stabil und ändert sich nicht, auch wenn ich Pin ändere.
Datum:
=> Michael Gomez: It is possible to bypass the start circuit. Look in the article, there is also a schematic without the start circuit, but still with a button to start a new test without turning the tester off and on again. Normally, it should also work with the start circuit. Please make sure you used the correct transistors (T3 is PNP, T1 and T2 are NPN) and everything is connected correctly... And if you bypass the start circuit, you don't need to modify the code. The code works for the tester with and without start circuit. => Janusz B.: I will send you the schematic files (Eagle) this afternoon. => mszr: > Kannst Du bitte im Program RX/TX freigeben? Ich denke, das kann man fuer > weitere Funktonalitaet benutzen. Das Problem ist, dass RxD und TxD des ATMega8 als Steuerpins für das LCD verwendet werden. Soweit habe ich damals nicht gedacht, dass man die nochmal brauchen könnte. Im Prinzip wäre es aber möglich. Man müsste dafür z.B. die Pins für die automatische Abschaltung und den Start-Taster (PD6 und PD7) auf PC3 und PC4 umlegen. Dann muss man die ganzen LCD-Pins um 2 "nach oben" schieben, und natürlich das Programm entsprechend anpassen. Damit werden RxD und TxD frei. Kondensatoren werden in der Funktion zur Kapazitätsmessung sowieso nach jeder Messung entladen. Und fast alle anderen Bauteile haben eine so geringe Kapazität, dass sie in den nach Umschalten der Pins gelassenen Wartezeiten von ein paar ms praktisch vollständig umgeladen werden. Geladene Kondensatoren sollte man natürlich nicht anschließen, das würde den µC zerstören. Also erst kurzschließen oder per Widerstand entladen (je nach Größe, wenn man einen voll geladenen 4700µF/350V Elko kurzschließt, dann knallt das nämlich ganz ordentlich...).
Datum:
Hallo Markus, wegen Kaliebrierung für beide Wiederstanden, meine Idee ist jetzt einfach: U1/U2 = 680/(470k + delta) wo U1 - U für 680 U2 - U für 470k also kann man delta berechnen und bischen alles beser wird gezeigen. Sonst 1% Wiederstand wird nur für 680 nötig. Viele Grüße.
Datum:
Hallo, noch eine kleine Korrektur für pF zu messen.
1. Der Takt ist jetzt 4MHz
2. C Korrekturen wie unten:
uint8_t cv_range; - globale Variable
Sie muss bei alle Messungen initializieren sein, also
start:
...
cv_range =0;
...
und zusätzlich die Fragmente mit 'ab 1 pF' Kommentar:
mpval2 = 'n';
cv /=4;
if(cv > 99999) { //ab 1µF
cv /= 1000;
tmpval2 = LCD_CHAR_U;
}
if(cv_range == 1) { //ab 1pF
cv *= 1000;
tmpval2 = 'p';
}
ultoa(cv, outval, 10);
tmpval = strlen(outval);
lcd_show_format_cap(outval, tmpval, tmpval);
lcd_data(tmpval2);
lcd_data('F');
goto end;
cv /=4; //ab 1pF
if(cv > 99999) { //ab 1uF
cv /= 1000;
tmpval2 = LCD_CHAR_U;
}
if(cv_range == 1) { //ab 1pF
cv *= 1000;
tmpval2 = 'p';
}
ultoa(cv, outval, 10);
tmpval = strlen(outval);
Das ist nur für Kondensatoren, sonstige Konsequentze im Programm (4MHz)
habe ich nicht korriegiert.
VG
Datum:
Walter Jo schrieb: > Ollz schrieb: >> .... Bei jeder neuen offiziellen >> Software-Version muss ich den Code wieder patchen. > > Meine Testerversion betreibe ich auf einem mega168, auch mal nem 328er - > mit zusätzlichen Dingen und Gimmicks wie freiem I²C-Port. Sprich: auch > ich muss patchen. Daher wird das neue Original immer mit meiner > aktuellen Version verglichen mit einer Art "Diff". DAS erleichtert die > Arbeit ungemein. Ich mache das unter Linux mit diff und patch. Trotzdem ist es lästig.
Datum:
=> mszr:
Wie meinst du das mit
> U1/U2 = 680/(470k + delta)
und der Kalibrierung? Ich verstehe irgendwie nicht ganz, worauf du da
hinaus willst.
Ich meine, die exakten Widerstandswerte kannst du doch in diesen Zeilen
festlegen:#define R_L_VAL 680 //R_L; Normwert 680 Ohm #define R_H_VAL 470000UL //R_H; Normwert 470000 Ohm, als unsigned long angeben |
Ok, jetzt habe ich verstanden, was du mit dem "Discharge" vor jeder Messung meinst. Schaden kann das meiner Meinung nach nicht, es kostet aber natürlich Zeit (insgesamt so ca. 0,2s). Zumindest bei meinem Tester ist die hFE-Messung auch ohne das stabil, auch bei Pin-Änderungen. Die Idee ist aber nicht schlecht! Und zu der Anzeige in pF: Hast du auch die Kondensator-Messfunktion so geändert, dass sie Kondensatoren von wenigen pF messen kann? Die Untergrenze liegt sonst nämlich bei ca. 200pF, was ohne die Änderung als "0,20nF" angezeigt wird. Zumindest meiner Meinung nach ist das hinreichend genau, ein Präzisions-Messgerät ist dieser Tester ja eh nicht.
Datum:
Hallo Markus, ja, der Kalibrierung ist für R_H_VAL, wenn ich nehme 680hm mit 1%, bedeutet das nur ca. +/-7.O Ohm, aber für 470k das wird 47000 sein. Also es läst sich einfach Schätzen und nich als Konstant definieren.Das R_H_VAL/R_L_VAL stark hängt von R_H_VAL auch ab. Ja? Praktisch das Error hier kann man schätzen wie unten 470000*1.01 = 474700, 680*0.99 = 673.2, also R_H_VAL/R_L_VAL wird nicht 681.18 sondern 705.12. Letztendlich bedeutet das, dass das Error ca. 14 mal größer sein wird. Nächste Bemerkung ist auch einfach, kleine Kondesatoren benutzen R_H_VAL als Basis für die Messung. Man kann mit einfache Formel besser R_H_VAL schätzen und sonst 1% Tolerantz für R_H_VAL wird nicht so wichtig, weil das man berechnen kann. Ist es schon klaar? VG
Datum:
>Hast du auch die Kondensator-Messfunktion so geändert, dass sie >Kondensatoren von wenigen pF messen kann? Das habe ich auch geendert und es geht (oben wurde nicht Alles gezogen, später wurde von mir noch etwas gemacht) , aber leider Alles zu stärk hängt von '470k' Wierderstanden ab. Ich habe das mit 30pF Kondensator abgecheckt. Ohne den Kalibrierung der '470k' Wiederstanden das wird nicht praktisch sein. Error hängt zu stärk von Pins wegen der Toleranz des'470k' Wiederstanden ab. Der erste Release des Kalibrierung habe ich auch gemacht, aber leider das Hex Code zu gross für klein atmega8 war, also ich musste das wegwerfen. VG
Datum:
=> mszr: Sorry, aber ich habe immer noch nicht ganz verstanden was du genau willst. Das mit der Toleranz ist doch eigentlich kein Problem, weil man die genauen Widerstandswerte ja im Programm festlegen kann. Wenn die 680Ohm-Widerstände z.B. 674 Ohm haben, und die 470k-Widerstände haben 473256 Ohm, dann trägt man das eben im Programm so ein, dann stören die Toleranzen nicht mehr, nur noch der Langzeit- und Temperaturdrift der Widerstände wirkt sich aus. Die beiden Faktoren für die Kapazitätsmessung kann man ja auch entsprechend anpassen. Das Problem bei der Messung kleiner Kondensatoren ist auch recht einfach zu erklären: Der ADC des ATmega8 hat interne Kapazitäten von ca. 15pF. Eine Idee von Janusz B. (freddypl): Man könnte die ganzen Kalibrierungs-Werte ins EEPROM legen. Da kann man sie recht problemlos anpassen. Und eine automatische Ermittlung, wie groß R_H ist, ist praktisch unmöglich. Dazu müsste man aus R_L und R_H einen Spannungsteiler bauen. Das geht ja noch. Bei R_L = 680 Ohm und R_H = 470kOhm und 5V Spannung fallen 4,993V an R_H ab, und 0,007V an R_L. Der ADC des ATMega8 hat aber nur 10 Bit, also 1024 Stufen Auflösung. Daher ist jede Stufe 0,0048V. Ich denke du siehst, dass das viel zu ungenau für eine automatische Ermittlung von R_H ist.
Datum:
>Bei R_L = 680 Ohm und R_H = 470kOhm und 5V Spannung fallen 4,993V an R_H >ab, und 0,007V an R_L. Ja klaar, aber Spannung kann man immer versterken und das ist auch einfach zu kalibrieren, ich meine diese Versterkung. Wenn ich den Zeit finde, versuche ich das realiesieren. Sonst habe ich noch eine alte Frage: Hast Du dafuer eiene Regel oder eine Idee fuer Kaliebrierung? #define H_CAPACITY_FACTOR 394 #define L_CAPACITY_FACTOR 283 mfg
Datum:
> Hast Du dafuer eiene Regel oder eine Idee fuer Kaliebrierung? > #define H_CAPACITY_FACTOR 394 > #define L_CAPACITY_FACTOR 283 Nein, das habe ich einfach experimentell bestimmt... Also ein paar Kondensatoren mit einem guten Multimeter nachgemessen, und dann die Werte so eingestellt dass der Tester das Gleiche anzeigt. Diese Werte sind aber etwas von den Toleranzen des ATMega8 abhängig. Trotzdem bleibt die Genauigkeit in meinem Aufbau auch mit verschiedenen ATMega8 im Bereich +/-5%. Das finde ich ausreichend. Wer es genauer haben will, kann es ja genau auf den verwendeten Controller kalibrieren.
Datum:
Angehängte Dateien:I attache the schematic diagram with all my (and my friend Bobo) modifications. All modifications, and the entire scheme was approved by Markus F. After this modifications : - tester is more resistant to interference, - there is no problem when you press "Start Taste", - no silly displays that sometimes occurred,
Datum:
Die An-Aus-Automatik macht bei mir Probleme, siehe gleich. Thomas R. schrieb: > ... normalbetrieb mit frischen CRs sollte also für mehrere "mess"stunden > reichen. Danke Thomas für die ausführliche Erläuterung. Der erste Tester in THT mit 9V-Akku läuft prächtig - aber ich werde mir mal einen Tester in SMD aufbauen. Ich suche ja noch immer nach einem schönen SMD-Projektchen. Und dann werde ich das mit den CR2032 machen. Einen ersten Test werde ich natürlich mit meinem jetzigen Gerät machen. @all: PROBLEM: Die An-Aus-Automatik funktioniert bei mir derzeit nicht richtig. Der Tester läuft mit der schönen An-Aus-Automatik als "Vorschaltgerät". Getrennt davon habe ich dieses Vorschaltgerät auch in einer kleinen, anderen Schaltung (Pacer = Schrittmacher mit LEDs) aufgebaut - vorerst als Vorversion auf Steckbrett. Beide Male habe ich geändert: BC337/327 statt der BC547/327. LP2950 statt des 7805L, R7=16k statt 27k, R8=33k statt 27k. Sowohl der Transistortester als auch der Pacer gehen problemlos an - und durch Abschalten vom Controller auch wieder aus. Beim TTester geht die LED1 aus, solange bzw. so oft ich den Taster S1 drücke. Auch die Funktion eines neuerlichen Tests startet nach Druck auf S1 problemlos und der Pegel auf PD7 ist erwartungsgemäß low bei Tastendruck. Beim Pacer ging das genauso - S1 drücken => LED1 geht aus und der zugehörige Port auf low. Der Tastendruck, gemessen am Portpegel, wird mehrfach für Steuerzwecke genutzt. Die ganze Funktion des Vorschaltteils war tagelang genauso wie beim TTester. Seit ein paar Stunden wechselt der Portpegel nach S1/T2 am Controller nicht mehr, möglicherweise habe ich irgendwo gerüttelt oder die Verdrahtung "verbessert". Eine mehrfache Kontrolle der Bauteile, der Verkabelung und eine Durchgangsprüfung ergaben keine Fehler (ich erkenne zumindest keinen). Austausch der Transistoren hatte nicht geholfen, die werden aber im TTester als korrekt identifiziert. Beim Tastendruck auf S1 gehen die LED und die Schaltung sofort an und bleiben so, bis der Controller ausschaltet (oder /RES gedrückt wird). ALLERDINGS bleibt die LED1 bei Tastendruck an und auch der Pegel auf PD7 (bei mir PB2 weils ein tiny85 ist) bleibt auf high. Hat bitte jemand eine Idee, woran das liegen könnte? Tut mir leid, dass der Text sooo lang wurde. Danke für die Hilfe
Datum:
Walter Jo schrieb: > Die An-Aus-Automatik macht bei mir Probleme, siehe gleich. Die Fehlermeldung ist hinfällig - tut mir leid. Es WAR (m)ein Fehler, der Abzweig von der LED1 zum S1 war im Fehlerfall "nach" der LED und vor dem Transistor und nicht zwischen LED1 und R7. Nun läufts wieder.
Datum:
Ich habe jetzt die Erkennung von Triacs berichtigt. Die war nämlich vollkommen falsch... Jetzt wird die Belegung korrekt erkannt, zumindest beim BT136. Einen anderen Typen mit gering genugem Gate- und Haltestrom habe ich gerade nicht. Ich habe die neue Firmware gleich in den Artikel gestellt und diesen auch (endlich mal) aktualisiert.
Datum:
Add folowing change yet:
//#define R_L_VAL 680 //R_L; Norm wert 680 Ohm //#define R_H_VAL 470000UL //R_H; Normwert 470000 Ohm, als unsigned long angeben // export resistor value to EEPROM unsigned long R_H_VAL EEMEM = 470000; unsigned int R_L_VAL EEMEM = 680; |
Datum:
> Add following change yet://#define R_L_VAL 680 //R_L; Norm wert 680 Ohm //#define R_H_VAL 470000UL //R_H; Normwert 470000 Ohm, als unsigned long angeben // export resistor value to EEPROM unsigned long R_H_VAL EEMEM = 470000; unsigned int R_L_VAL EEMEM = 680; |
Sorry, I forgot this... I will add it soon!
Datum:
Ein fehler gefunden, warme Diode ist als Kondensator identifiziert.
Datum:
Angehängte Dateien:=> mszr: > Ein fehler gefunden, > warme Diode ist als Kondensator identifiziert. Ist das nur einmal passiert oder schon häufiger? Ich habe es gerade mal getestet: Eine 1N4007-Diode in den Tester gesteckt, dann für 60s 1,5A über die Diode fließen lassen. Das lässt die Diode ordentlich warm werden. Dann den Strom abgeschaltet und sofort den Test gestartet. Wird einwandfrei als Diode erkannt, nur mit ca. 140mV weniger Durchlassspannung als im kalten Zustand (ist auch klar, die Spannung fällt um so 1,5...2mV je °C Temperaturerhöhung). Ich habe es auch noch mit etwas Größerem (1600V/35A Brückengleichrichter) versucht, auch kein Problem. Mit welcher Diode hattest du den das Problem? Ich habe jetzt in der angehängten Firmware einige Konfigurations-Einstellungen (Werte der Widerstände, Faktoren fpr die Kapazitätsmessung) ins EEPROM verlegt. Somit sind sie ohne Neukompilieren der Firmware problemlos anpassbar. Außerdem ist das Readme nun eine HTML-Seite und wurde deutlich erweitert. Da ist auch die EEPROM-Konfiguration beschrieben. Bei einigen Tests mit der ATMega48-Version habe ich festgestellt, dass ein Testvorgang da viel schneller als in der ATMega8-Version geht. Das liegt an der Überprüfung, ob ein Kondensator angeschlossen ist. Diese kostet recht viel Zeit, immerhin etwa 300...500ms. Daher ist diese Messung nun auch konfigurierbar, auch im EEPROM: Man kann sie entweder ganz deaktivieren, für eine Pin-Kombination aktivieren oder (wie bisher) für alle Pin-Kombinationen aktivieren. Standard ist die Messung für alle Pin-Kombinationen. Diese Einstellungen sind auch im Readme beschrieben.
Datum:
Hallo Markus, >Mit welcher Diode hattest du den das Problem? mit 1N4148, wenn ich wärme die Diode mit der Tischlampe an, immer ein Kondesator gezogen ist. Das ist für ca. 80C Graden. Ich teste die Diode direkt 'unter' der Tischlampe. Zusätzlich habe ich ein LM35 an Tester zugegeben und das ich für mich einfach zu messen: unsigned long int ut1; unsigned int ut1a, ut2a, ut1_whole, ut1_fraction; void temp_lm35(void); void temp_ky(void); unsigned char T[] EEMEM = " T="; unsigned char A[] EEMEM = " A="; ... testend: ut1a = ReadADC(4 | (1<<REFS1)); ADC_DDR = 0; ADC_PORT = 0; R_DDR = 0; R_PORT = 0; } ... if(PartFound == PART_DIODE) { if(NumOfDiodes == 1) { //Standard-Diode lcd_eep_string(Diode); //"Diode: " lcd_eep_string(Anode); lcd_data(diodes[0].Anode + 49); lcd_string(";K="); lcd_data(diodes[0].Cathode + 49); Line2(); //2. Zeile lcd_eep_string(Uf); //"Uf = " lcd_string(itoa(diodes[0].Voltage, outval, 10)); lcd_eep_string(mV); //mszr temp_lm35(); //mszr goto end; ... void temp_lm35() { lcd_eep_string(T); if(ut1a > 512) ut1a=ut1a+1; // ultoa(ut1a,outval,10); // lcd_string(outval); ut1 = 25*ut1a; ut1_whole = (int)(ut1/100); ultoa(ut1_whole,outval,10); lcd_string(outval); ut1_fraction = (int)(ut1 % 100); if(ut1_fraction>0) { lcd_data ('.'); ultoa(ut1_fraction,outval,10); lcd_string(outval); } lcd_data ('C'); ut1 =0; ut1_whole=0; ut1_fraction=0; } Viele Grüße!
Datum:
Könnte die Erkennung der Diode unter der Lampe als Kondensator an dem Glasgehäuse der 1N4148 liegen, die dann als Fotodiode arbeitet?
Datum:
Ich versuche heute Abend die Spanung ohne den Tester auch messen, sowieso er soll immer nur eine Diode zeigen. LED praktisch ist auch eine sensitive Fotodiode aber ist richtig bei 20-25C Grad erkennt, auch mit meiner Lampe aber ca. 30-40 cm entfernt.
Datum:
Alle Glassdiode stark auf Licht reagieren. Die Spanung z.B. für glasse Diode direkt unter der Lampe kann 0.4V generieren.
Datum:
Ich hab Markus mal angeboten, das Projekt im SVN zu hosten. Dazu koennte ich noch ein alternatives Layout (mehr SMD) anbieten.
Datum:
Sooo... ich hab den Bauteiltester jetzt auch mal aufgebaut und dabei mein Layout verwendet. Funktioniert teilweise sehr gut, einen Kondensator mit 47nf erkennt und misst er korrekt und genau, aber einen BC337 erkennt er nur als FET. Dioden erkennt er wiederum super, aber Widerstaende (160Ohm) erkennt er als Doppeldiode... Mal sehen ob Markus sich aendert, vielleicht kann ich ja auch noch das ein oder andere helfen, um diese Fehler auszubuegeln. Michael
Datum:
Hallo Markus, habe meinen TransiTester mit Deiner neuen SW vom 17.1.10 geladen, uC ist ATMega8. Seitdem werden alle Transistoren mit ganz geringen hfe-Werten (alle kleiner 10) angezeigt, vorher, mit der Software vom 2.1. hatte z.B. ein BC548 ein hfe von über 200...kann es vielleicht sein, daß da noch ein Fehler drin steckt? Gruß...Bert
Datum:
ja, die version vom 17.01 ist an einigen stelen verbesser worden, und stimmt einige sachen funktionieren nicht mehr, z.b. hFE
Datum:
Markus entered wrong value of resistors in this version, this should be improved in EEROM as described !
Datum:
Janusz B. schrieb: > Markus entered wrong value of resistors in this version, this should be > improved in EEROM as described ! Ah, thanks Janusz for this info! I will go to check the content of my EEPROM later at the day and revert with the results. Regards...Bert
Datum:
Bert Braun schrieb: > Seitdem werden alle Transistoren mit ganz geringen hfe-Werten (alle > kleiner 10) angezeigt, vorher, mit der Software vom 2.1. hatte z.B. ein > BC548 ein hfe von über 200...kann es vielleicht sein, daß da noch ein > Fehler drin steckt? Ist bei mir genau so, wird also wohl ein Fehler sein. Sind noch ein paar mehr drinnen, aber insg. ist das schon eine super Sache. Markus: Bitte arbeite mit der Archiv-Version und checke alle fixes dort ein. Als Basis diente die letzte Version, die Du hier gepostet hast. An alle anderen: Ich hoste das Projekt fuer Markus unter http://svn.coremelt.net/avr/semiconductor_tester Wer (schoener) online browsen will: http://viewvc.coremelt.net/viewvc/avr/semiconductor_tester Die aktuelle Version (inkl. einiger Zugaben), bekommt man mit: $ svn co http://svn.coremelt.net/avr/semiconductor_tester Wer selber Zugaben hat (z.B. Layouts, weitere Schaltungsversionen, ...) soll sie bitte an Markus oder mich senden, dass sie ebenfalls ins Archiv aufgenommen werden. Michael P.S. Ganz vergessen: Einen taeglich aktualisierten Snapshot als Archiv bekommt man unter: http://coremelt.net/files/software/repository-tarb... (dann braucht man gar keinen SVN-Client)
Datum:
Michael G. schrieb: > Markus: Bitte arbeite mit der Archiv-Version und checke alle fixes dort > ein. Als Basis diente die letzte Version, die Du hier gepostet hast. Ich hoffe sehr, dass die Archivdatei auf der Artikelseite auch aktualisiert wird. Wer hat schon Lust, je nach Projekt zusätzlich zur jeweiligen Artikelseite auch noch in diversen SVNs nachzusehen?
Datum:
Warum coremelt.net? - Ist mikrocontroller.net nicht mehr gut genug? ...
Datum:
Hannes Lux schrieb: > Warum coremelt.net? - Ist mikrocontroller.net nicht mehr gut genug? > > ... Weil die eine Kiste unter meiner Kontrolle steht und die andere nicht? Wegen dem Artikel: Ich denke man sollte die Links dort entsprechend anpassen bzw. hinzufuegen, ein Tarball wird ja automatisch generiert, so dass diese Option nicht verloren geht (normaler Download).
Datum:
Leider kann man die PNG Dateien (und andere nicht-Text Dateien) nicht öffnen. http://viewvc.coremelt.net/viewvc/avr/semiconducto...
Datum:
Angehängte Dateien:> Mal sehen ob Markus sich aendert, vielleicht kann ich ja auch noch das > ein oder andere helfen, um diese Fehler auszubuegeln. Wie meinst du das? Natürlich darf hier jeder Fehler beseitigen. Das ist ja der Sinn an Open Source... > Seitdem werden alle Transistoren mit ganz geringen hfe-Werten (alle > kleiner 10) angezeigt Stimmt. Ist ein Fehler in der Berechnung (Überlauf einer "unsigned int", in Zeile 443 in main.c). Habe ich im angehängten Archiv korrigiert. > Markus entered wrong value of resistors in this version, this should be > improved in EEROM as described ! I think it is correct. R_L ist "680", and R_H is "4700" in EEPROM, isn't it? R_H is internally multiplied with 100 (because then 2 EEPROM bytes are enough), then it results 470k. > einen BC337 erkennt er nur als FET. Dioden erkennt er wiederum super, >aber Widerstaende (160Ohm) erkennt er als Doppeldiode... Das finde ich merkwürdig. An diesen Routinen habe ich doch eigentlich gar nix verändert... Bei mir passiert das nämlich nicht. Wenn es mit der angehängten Firmware auch nicht geht (und es mit der Firmware aus dem Artikel nach wie vor klappt), dann muss sich doch irgendwo ein Fehler eingeschlichen haben... Ich stelle das Archiv hier nochmal rein. Sobald ich Zugang zu dem Repository auf Michaels SVS-Server erhalten habe, aktualisiere ich es auch da.
Datum:
Markus F. schrieb: > Ich stelle das Archiv hier nochmal rein. Sobald ich Zugang zu dem > Repository auf Michaels SVS-Server erhalten habe, aktualisiere ich es > auch da. Ich bin dran... schreib Dir gerade eine Mail.
Datum:
Michael G. schrieb: > > Weil die eine Kiste unter meiner Kontrolle steht und die andere nicht? das verstehe ich jetzt nciht, es ist doch hier gepostet, reicht es nciht ? > Wegen dem Artikel: Ich denke man sollte die Links dort entsprechend > anpassen bzw. hinzufuegen, ein Tarball wird ja automatisch generiert, so > dass diese Option nicht verloren geht (normaler Download). hast du auch SAS/SCSI raid mit backup, redundante leitung und zwei dns server ?
Datum:
Markus: Du hast nicht die Archiv-Version genommen, ich pflege Deine Aenderungen jetzt manuell ein. Ich bitte Dich aber, dann auch auf dem Archiv weiter zu arbeiten, sonst bringt das nichts.
Datum:
Thomas R. schrieb: > hast du auch SAS/SCSI raid mit backup, redundante leitung und zwei dns > server ? Nicht dass es etwas zur Sache tun wuerde: Gespiegeltes Hardware-RAID, dediziertes Backup und redundante DNS-Server sind vorhanden.
Datum:
Ich verstehe nicht, warum das Programmpaket an mehr als einer Stelle hinterlegt werden soll. Das führt doch nur zur Verwirrung der Leute. :-( Paul
Datum:
Bei mir sind es mit dem ATMega48 "nur" 4082 Bytes (99,7% Full). Geht also... Ich habe aber auch noch das avr-gcc aus März 2009. Muss ich mal updaten. Das mit der fehlerhaften Transistor-Erkennung überprüfe ich mal. > Du hast nicht die Archiv-Version genommen, ich pflege Deine > Aenderungen jetzt manuell ein. Ich bitte Dich aber, dann auch auf dem > Archiv weiter zu arbeiten, sonst bringt das nichts. Ja, sorry. Mache ich in Zukunft.
Datum:
Naja bei mir wird es zu gross, da kein fertiges Hexfile in Deinem Update vorhanden war hab ich es jetzt in diesem Release geloescht. Den Fix hab ich manuell eingepflegt. Ist keine gute Idee das so knapp zu halten, Du solltest noch was raus nehmen, sonst kann man es nicht ohne Weiteres selber compilieren, nicht jeder verwendet die selbe Compiler-Version.
Datum:
Michael G. schrieb: > Naja bei mir wird es zu gross, da kein fertiges Hexfile in Deinem Update > vorhanden war hab ich es jetzt in diesem Release geloescht. Den Fix hab > ich manuell eingepflegt. Genau deswegen sollte die aktuelle Version weiterhin auf der Artikelseite veröffentlich werden, wo sie auch jeder wie gewohnt findet können sollte. Markus' Projekt ist ein toller Erfolg und hat viele Nachbauer gefunden. Wieso sollte es jetzt umziehen?
Datum:
> Wieso sollte es jetzt umziehen? Das habt ihr falsch verstanden: Das Projekt bleibt auch weiterhin hier, und in dem Artikel werden auch zukünftige Versionen veröffentlicht werden. Das mit dem SVN ist vor allem für die noch nicht "offiziellen" Versionen gut: Man hat immer einen Ort, an dem die neueste Version zu finden ist. Hier in dem Thread gehen diese Versionden nämlich schnell wieder unter: Wenn nahc dem Post mit der neuesten Firmware schon 20 weitere Posts kamen, schaut sich kaum noch einer den Post mit der Firmware an.
Datum:
Man braucht ueberhaupt keine Files mehr hier posten, dazu wird ein Snapshot generiert, der immer aktuell ist. Das reicht. Dazu reicht ein einziger Link an der richtigen Stelle. Und der Rest passiert automatisch.
Datum:
Hallo Markus, Das Projekt ist schon weltweit benutzt(!). Ich verstehe bisschen deutsch, aber nicht alle diese Sprache verstehen zu können, deswegen viele lokale Versionen schon spin-off gemacht haben. Das macht kein Sinn, weil deine Änderungen später noch mal bei dieser lokalen Versionen wiederholen müssen sein. Findest Du richtig zusammen alle Übersetzungen sammeln schon und als ein Teil des Projekts pflegen? Ich denke, es wird kein Thema freiwillige Dolmetschern zu finden. Das ist kleine Dinge 5 Minuten für Übersetzung zu finden. Wenn die Länge aller Texte für alle Sprachen gleich werden, nur lokales Eprom vorbereitet muss.
Datum:
Was eben keinen Sinn macht ist diese dezentrale Entwicklung. Wuerde jeder am Archiv arbeiten, traeten diese Probleme eben nicht auf: D.h. wenn Person A einen Fehler behebt fliesst diese automatisch in die Version von Person B mit ein (durch den Merge), die andere Aenderungen (z.B. eine Uebersetzung) vornimmt. Ich kann ja mal versuchen die anderen Sprachversionen zu mergen. Insofern es eine gemeinsame Codebasis gibt, geht das auch. Dann muss man halt z.B. im Makefile angeben, welche Sprache man benutzen will. Arbeitet dann wieder jeder auf einer nicht-offiziellen Version weiter bringt das natuerlich nichts auf Dauer, denn die Arbeit mach ich mir dann auch nicht staendig, nur weil man die Leute nicht zu einer vernuenftigen Arbeitsweise bringen kann. Dann kann man aber auch nicht von einem Gemeinschaftsprojekt sprechen.
Datum:
Angehängte Dateien:I attached latest version of Transistor tester :
Polish version - file Transistortester-PL.zip and
English version - file Transistortester-EN.zip.
My proposition is add jumper, to select language version.
fe. jumper on PC4 ON - English version
jumper on PC4 OFF - German version
jumper on PC3 ON other language version fe. Polish
Datum:
Markus und Janusz haben (neben mir) jetzt Schreibzugriff auf das Repo. Falls noch jemand mitarbeiten will bzw. weitere Layouts usw. zur Verfuegung stellen wollen, soll er bescheid geben.
Datum:
Ich möchte bei dieser Gelegenheit mal auf Beitrag "Re: Versionsverwaltung" hinweisen. Kurzfassung: Mikrocontroller.net bietet einen SVN-Server an, auf dem man sich mit dem Forenaccount einloggen kann. Welche Benutzer Zugriff haben kann der Besitzer des Repositorys selbst per Webinterface einstellen.
Datum:
Hallo zusammen, weil Janusz hat keine Quelle geschickt, schicke ich polnische Übersetzung als Quelle für SVN. Ich denke, es macht kein Sinn durch PIN die Sprache auswächlen, das kostet Flash und Eprom. Und das ist kein Produkt für den Markt :) Ich denke, es wird besser einfach verschiedene Eproms vorbereiten oder - das benutze ich persönlich - einfaches Menu mit drei Tasten, weil das für weitere Dienge dienen kann. Atmega8 sehr klein ist und wird , ich denke, bald mit etwas ersätzen. Ich benutze Atmega16 dafür, mehr PIN-e und Speichern, JTAG etc.
Datum:
Angehängte Dateien:Ich hab das Teil nun aufgebaut und in ein Gehaeuse verfrachtet. Dank Markus' Aenderungen funktioniert nun auch die Erkennung sehr gut, vorher wurden Bauteile oft falsch erkannt und manche Messungen haben gar nicht funktioniert. Waere sinnvoll wenn jeder seine FW auch updaten werde, die aktuelle Version findet Ihr hier: http://coremelt.net/files/software/repository-tarb... Michael
Datum:
Mit der neuesten Firmware aus dem SVN gibt es ein neues Problem: Verarmumgs-FETs werden jetzt größtenteils als Anreicherungs-FET erkannt... Ein Update ist also erst dann sinnvoll, wenn dieser Fehler auch noch behoben ist. Ich kümmere mich darum.
Datum:
Nochmal eine andere Frage: Besteht überhaupt noch Interesse an der Firmware für den ATMega48? Mittlerweile fehlen der ja schon eine ganze Menge Features, weil die in den 4kB Flash einfach keinen Platz haben. Und da in der neuen avr-libc die EEPROM-Zugriffsroutinen geändert wurden und nun mehr Flash kosten, müssen sogar noch Features entfernt werden, damit das Programm überhaupt in den Mega48 passt (oder man müsste selbst EEPROM-Routinen in Assembler schreiben). Hat jemand den Tester mit Mega48 aufgebaut oder plant, das zu tun? Wenn nicht ergibt es ja auch keinen Sinn, diese Version noch weiter zu verfolgen.
Datum:
Also wenn Du mich fragst, hat sich mir der Sinn nicht ganz erschlossen, zwei Versionen so zu pflegen, denn der Mega48 ist nur unwesentlich guenstiger als ein Mega8. Daher werden wohl fast alle den Mega8 verwendet haben, wer verzichtet wegen weniger als einem Euro schon auf viele Features ;) Michael
Datum:
naja fast, ich benutze 168, aber vllt sollten die leute hier mal voten.
Datum:
Von mir aus kann's gerne beim 168 bleiben, damit ist genügend Raum für zukünftige Erweiterungen. Den 48 halte ich nicht für attraktiv und den Zusatzaufwand nicht wert.
Datum:
Dears All, I’m sorry for English but I can’t speak German. I built original tester from Markus F and it worked for the first time. I tested more components and get different results. Please look below. Do you have idea, what could be wrong here or its normal behavior of this built. Please let me know, because I like this construction, because is simple a clever. Many thanks Martin Hlavicka Transistors 2N3416 Connected in order 123: NPN B=3, C=2, E=1, hFE=20 Uf=765m … GOOD RESULT Connected in order 321: P-D-MOS, GDS=132 … WRONG RESULT SC1815 Connected in order 123: NPN B=3, C=2, E=1, hFE=58 Uf=814m … GOOD RESULT Connected in order 321: P-JFET GDS=132 … WRONG RESULT BC549 Connected in order 123: NPN B=2 C=3 E=1 hFE=282 Uf=795m … GOOD RESULT Connected in order 321: N-JFET GDS=213 … WRONG RESULT Capacitors: Connected in order 12 (both polarity): N-JFET GDS=132 Connected in order (both polarity): CAPACITOR 3-2 102,64uF Connected in order (both polarity): CAPACITOR 3-2 102,04uF Resistors: Totally wrong for value 18k and connected between 1-2 the result was: REZISTOR 3-1 R=89,7k, same component, but between 2-3: N-JFET GDS=132
Datum:
=> microhead: Have you tried it with the newest version from the SVN repository? http://coremelt.net/files/software/repository-tarb...
Datum:
Markus F. schrieb: > => microhead: > Have you tried it with the newest version from the SVN repository? > http://coremelt.net/files/software/repository-tarb... Was soll der Quatsch? - Dieses Forum hat Dein Projekt erst bekannt gemacht. Warum pflegst Du es nicht weiter in diesem Forum? Beitrag "Re: Transistortester mit AVR" Warum gehst Du fremd? ...
Datum:
Hello Markus, Thank you for the link, I uploaded there now, but behaviour is same. May-be I must have some issue in circuit, if everybody else works fine. Please let me know if you have some idea. Martin
Datum:
Ich habe eine Frage an den Autor. Wenn jemand das Programm verbessert. Und sagt, dass auf dem Forum. Schützt den Code. Er gilt als der Autor. Er hat es nicht den überarbeiteten Programm. Ob es fällt so. Ich möchte Janusz begrüßen.
Datum:
Hallo, ich versuche das ganze mit einem Mega 32 zum Laufen zu kriegen. Bisher werden so ziemlich alle Bauteile falsch erkannt :( Nur das Makefile und die Pinbelegung anpassen reicht offenbar nicht. Richtige Erkennung bisher nur bei einer Diode (auch nur in einer bestimmten Polarität) und ohne angeschlossenes Bauteil. Dh. aber, dass der ADC funktioniert, und die Signale über die Pins an den Widerständen werden auch ausgegeben - woran kann es dann liegen??
Datum:
Hallo Matthias, ja, es geht aber ich bin unterwegs leider. Wenn nach Hause komme, tue ich das gerne. Leider das kann ziemlich lang dauern und das basiert nicht auf die neue Version des Testers.
Datum:
Angehängte Dateien:> Was soll der Quatsch? - Dieses Forum hat Dein Projekt erst bekannt > gemacht. Warum pflegst Du es nicht weiter in diesem Forum? Es wird ja hier weiter gepflegt, nur die neueste Version der Firmware (die häufig auch nur zu Testzwecken da ist) kommt eben in des SVN-Repository. Damit sich hier keiner beschweren kann, hänge ich sie auch noch an diesen Beitrag an. Neue, stabile Versionen werden auch weiterhin in dem Artikel eingefügt werden. Im wesentlichen bleibt also alles beim Alten. Für die Entwicklung bietet das SVN jedoch Vorteile, vor allem weil mehrere Leute gleichzeitig an dem Projekt arbeiten können. => microhead: I don't know, but perhaps there ist something wrong with your setup. I think something on test pin 1 is bad (from your test results).
Datum:
Hallo Markus, kannst Du bitte für kommende Versionen ein Changelog anlegen? VG, M.
Datum:
http://viewvc.coremelt.net/viewvc/avr/semiconducto... Hier sind die Aenderungen, inkl. Dateilisten und diffs.
Datum:
Hallo, nu läufts bei mir mit dem Mega 32! Ich musste nichts ändern außer die Pinbelegung und das Makefile. Der Fehler lag darin, dass ein oder mehrere Pins defekt sind. Nu habe ich das auf einen anderen Port verlegt und es geht. Zumindest werden mein Transistor und meine Diode nun korrekt identifiziert. Mehr habe ich noch nicht ausprobiert.
Datum:
Michael G. schrieb: > http://viewvc.coremelt.net/viewvc/avr/semiconducto... > > Hier sind die Aenderungen, inkl. Dateilisten und diffs. schön .. aber Michael, wenn du schon so überall schreibst "with a board layout from me", dann mach bitte vernünftiges board. Z.zt. ist es wirklich "pfui", schon mal dir gedanken gemacht das für tragbares, stromsparendes gerät (so wie von Markus F. entworfen ist) etwas wenig sinn mach diese ollen elkos, brückengleichrichter und schraubklemmen einzusetzen ? Also ich persönlich halte ungerne 5m langes verlängerungskabel und labornetzteil nur um einen transistor zu testen :) Du hast mal gesagt "Dazu koennte ich noch ein alternatives Layout (mehr SMD) anbieten" - dann mach es bitte so - guck dir die bilder und platinnen von leuten die seit einem jahr bei dem projekt "dabei" sind. Nicht das ich unbedingt ein board brauche, nur wenn ich smd lese und dann diese vor-meiner-zeit-bauteile sehe :) Da sind die DIL versionen schon faktor 2 kleiner als dein smd entwurf. gruss Thomas
Datum:
Hallo zusammen, esteinmal möchte ich (wie viele zuvor) sagen, das dies ein klasse Projekt ist. :) Aber jetzt kommt mir eine Idee, für dessen Beurteilung und Umsetzung mir das Wissen fehlt. Könnte man nicht auch eine Prüfung von Akkus einbauen? Grüße Kay
Datum:
Ja (je nachdem was man da prüfen will) Sinnvoll wäre evtl. die Spannungen mit 2 verschiedenen Belastungen zu messen und daraus den Kurzschlussstrom/Innenwiderstand zu berechnen. Akkus die frisch aufgeladen trotzdem die Digitalkamera nicht versorgen können, kann man so ermitteln.
Datum:
> Könnte man nicht auch eine Prüfung von Akkus einbauen? Jain. Mit einem zusätzlichen Portpin müsste das möglich sein, mit der jetzigen Hardware geht es aber nicht. Ein Problem ist aber der Messbereich: Um auch mal Akkupacks messen zu können, sollte die Maximalspannung schon so 20V sein. Dann ist allerdings die Auflösung "nur noch" 0,02V. Für eine einfache Spannungsmessung reicht das, für eine Innenwiderstands-Messung aber nicht. Eigentlich wäre das als extra Gerät aber besser. Zum Beispiel ein Gerät, das den ESR von Elkos messen kann und gleichzeitig auch noch zum Akku-Test verwendbar ist. Für beides ist nämlich eine recht ähnliche Hardware erforderlich. Die Elko-ESR-Messung könnte man z.B. folgendermaßen machen: Erst wird der Elko komplett entladen. Dann wird er über einen Widerstand langsam aufgeladen und die Zeit gemessen, bis die Spannung einen bestimmten Wert erreicht. Daraus lässt sich die Kapazität berechnen (so macht es auch der Transistortester für die Kapazitätsmessung). Für die ESR-Messung braucht man eine Last, also einen niederohmigen Widerstand. Um auch mal Elkos mit sehr geringem ESR messen zu können, sollten mehrere Messbereiche vorhanden sein. 0,1 Ohm sind für den "niedrigsten" Messbereich durchaus realistisch. Bei 5V Elkospannung würden da kurzzeitig ca. 50A Entladestrom fließen. Das ist kein Problem für einen geeigneten MOSFET. Hierin besteht nun die Herausforderung: Man muss die Last so schnell wie möglich mit dem Elko verbinden, sonst wird das Messergebnis falsch. Da Power-MOSFETs mit geringem Rds aber auch eher viel Gate-Kapazität haben, braucht man einen sehr starken Gate-Treiber. Vielleicht reicht ein ICL7667. Als MOSFET sollte man einen mit schnellen Schaltzeiten, wenig Rds und wenig Gatekapazität verwenden. Ich habe noch ein paar 2SK3572 rumliegen (von einem defekten Mainboard), die könnten geeignet sein: 4,4mOhm Rds; 3,2nF Gatekapazität; 300A Peak-Drain-Strom (80A Dauerstrom) und 14ns Anstiegszeit. Könnte brauchbar sein... Kurz (also z.B. 0,5µs) nach dem Einschalten der Last muss mit einer Sample+Hold Schaltung die Elkospannung gespeichert werden, um sie dann in aller Ruhe per ADC auswerten zu können. Mal sehen, vielleicht versuche ich das mal. Ein Problem sehe ich aber noch: Es passiert leicht mal, dass man einen geladenen Kondensator anschließt. Dabei sollte der Tester nicht kaputt gehen. Das Dumme ist, dass dafür der MOSFET für den Lastwiderstand die Elkospannung verkraften muss. Das geht aber nicht, weil es keine MOSFETs gibt, die hohe Nennspannung mit oben genannten Eigenschaften kombinieren. Na gut, man könnte z.B. eine 6V Surpressordiode und eine Sicherung einbauen. Aber bitte keine 5*20mm Feinsicherung, im Zusammenhang mit Elkos haben die ihren Namen nicht verdient: Die ohne Sandfüllung haben nur so 50A Trennschaltstrom, darüber kann der beim Durchbrennen entstehende heiße Metalldampf die Sicherung weiterhin leiten lassen. Die 10,3*38mm-Sicherungen sind aber perfekt (120.000A Trennschaltstrom...) Prinzipiell könnte man dann vielleicht auch mit einem ATMega16 oder 32 einen "Kombi-Tester" aufbauen, der Halbleiter, Elko-ESR und Akkus testen kann.
Datum:
warum lasst ihr es nicht beim Transistortester. Muss es denn die "eierlegende Wollmilchsau" sein? Alles mögliche zu kombinieren ist noch nie geglückt.
Datum:
Hallo Sourcecode könntest du das Programm mit dem Mega32 mal reinstellen? dann hätte ich ne gute Basis für meinen Mega 16. MFG
Datum:
Guten Tag. Ich finde das Projekt ist super. Ich würde es gern nachbauen aber es gibt da folgendes Problem: C Leider bin ich nicht so geistreich in C sondern nur in Assembler. Auch habe ich noch nie ein C-File in Assembler umgeschrieben. Hätte jemand einen guten Rat für mich wie ich das machen könnte? MFG Tino
Datum:
Tja, Timo, das ist der Grund, weshalb ich es auch noch nicht aufgebaut habe. ;-) ...
Datum:
OT: Ich verstehe C auch nicht und will diesen kryptichen Mist auch nicht erlernen. Trotzdem habe ich diese überaus nützliche Schaltung nachgebaut. Man muss sich ja auch nicht, nur um Auto fahren zu können, die Getriebeteile selbst fräsen...;-) MfG Paul
Datum:
Du brauchst doch für einen Nachbau kein C zu erlernen. Das brauchst Du erst, wenn Du in den Quellcode eingreifen willst. Das Werkzeug, das C in Assembler-Code umwandelt, nennt sich übrigens C-Compiler ;-).
Datum:
>Du brauchst doch für einen Nachbau kein C zu erlernen.
Ja eben, das meine ich doch.
Paul
Datum:
>Das Werkzeug, das C in Assembler-Code umwandelt, nennt sich übrigens C-Compiler ;-). In AVR Studio gibts es ja einen, aber ich weis nicht wie man den in so einem Fall anwendet. Hätte jemand einen Tip? MFG
Datum:
Tino schrieb: > Guten Tag. > > Auch habe ich noch nie ein C-File in Assembler umgeschrieben. > Hätte jemand einen guten Rat für mich wie ich das machen könnte? Von der Sinnlosigkeit mal abgesehen: Versuch es mal mit einem Compiler. Und an C ist nichts kryptisch, das glaenzt eigentlich durch seine Einfachheit (das ist natuerlich relativ), wenn man es vom Level der Sprache aus betrachtet.
Datum:
Michael G. schrieb: >Von der Sinnlosigkeit mal abgesehen: Versuch es mal mit einem Compiler. >Und an C ist nichts kryptisch, das glaenzt eigentlich durch seine >Einfachheit (das ist natuerlich relativ), wenn man es vom Level der >Sprache aus betrachtet. Zum Compiler: siehe Eintrag obendrüber. Und warum ist es sinnlos? Wäre es auch sinnlos wenn das Programm in Assembler geschrieben wurde und es in C umgeschrieben werden müsste?
Datum:
Ich kann mich des Eindrucks nicht erwehren, dass da die Sprache C schlecht gemacht wird, weil jemand den Compiler nicht bedienen kann/möchte. Dabei ist das keine Kunst; das Projektfile (*.aps) ist mitgeliefert. Die ganze Kunst beschränkt sich also auf ein, zwei Klicks im AVR Studio. Und davon abgesehen, braucht man zum Zusammenbau des Testers nicht einmal zu kompilieren oder AVR Studio hochzufahren, da sowohl das .hex als auch das .eep sich im Zipfile befinden.
Datum:
C ist doch auch nur ein prozessorunabhängiger Assembler... "C combines the power of assembler with the portability of assembler. - Anonymous, alluding to Bill Thacker.
Datum:
Tino schrieb: > Michael G. schrieb: > >>Von der Sinnlosigkeit mal abgesehen: Versuch es mal mit einem Compiler. >>Und an C ist nichts kryptisch, das glaenzt eigentlich durch seine >>Einfachheit (das ist natuerlich relativ), wenn man es vom Level der >>Sprache aus betrachtet. > > > Und warum ist es sinnlos? Wäre es auch sinnlos wenn das Programm in > Assembler geschrieben wurde und es in C umgeschrieben werden müsste? beachte den unsinn nicht, wer nur c kann und kein assembler kann schlecht die vorzüge von asm "sehen". Die .aps ist dabei, im avrstudio öffnen und compilieren, dann hast du auch eine .lss file, wenn unbedingt asm sein muss kann man diese file wunderbar als vorlage benutzen.
Datum:
Angehängte Dateien:Ich habe gerade nochmal einen (kleineren) Fehler beseitigt: Bei einigen Bauteilen floss auch nach Test-Ende noch Strom durch das Bauteil. Z.B: Wenn man eine LED reinsteckt, mit Anode an Pin 1 und Kathode an Pin 2, dann leuchtet die auch nach den Test noch, bis sich der Tester wieder abschaltet. Das lag an der Kondensator-Messung, die unter bestimmten Bedingungen fälschlicherweise mit einem "return" verlassen wurde, ohne die I/O-Pins wieder auf Eingang zu schalten. Anbei (und im SVN) die neue Firmware.
Datum:
Hello everyone, I'm realizing this tester and I have difficulty for programming the ATmega8 processor. I have a programmer GALEP 4 and I do not know 'how do I use the two files in the flash and EEPROM circuit. I tried to schedule the first block of flash memory with the fuse bits and then the EEPROM of the LCD but the screen remains dark, I measured the signals with the oscilloscope and are "freezed".
Datum:
@Claudio Have you verified the fusebits, flash and eeprom content?
Datum:
This is the problem, on the galep program this fusebits is very hard too find, I have find the clock fuse but the lfuse and hfuse is not present.... And the eeprom file (.eep)and the flash file (.hex) I need to loads in two separate steps. I think the problem is precisely the fusebits and programming with galep4 is more complex. Possibly you can have an Atmega8 already programmed? my email is emili.claudio(at)tiscali.it
Datum:
Angehängte Dateien:Vor einigen Tagen bin ich über dieses tolle Projekt gestolpert - genau so was hab ich gesucht! Seit vorgestern ist der Tester zunächst auf einem Steckbrett aufgebaut und sagt mir endlich, was da bei mir herumliegt. Im Zuge der Tests ist mir aufgefallen, dass für die Messungen der ganze ADC-Port immer wieder umprogrammiert wird, obwohl ja nur drei Pins für die Messungen verwendet werden. Bemerkt hab ich es, weil ich die Pin-Belegung etwas geändert hab, um RxD und TxD für künftige Erweiterungen frei zu bekommen. (vgl. den Header in der beigelegten Datei) In meiner Version liegen ON-Pin und RST-Pin ebenfalls am Port C. Das lässt sich aber über die defines leicht ändern. (vgl. Zeile 279-284) Im Zuge der Anpassung hab ich dann begonnen, die Software etwas zu reorganisieren, besondern um Erweiterungen leichter einbauen zu können. Was ich eingebaut hab: - beim Messen werden nur noch die drei beteiligten Pins von Port C umprogrammiert - $Id$-String für das automatische Eintragen der Version durch SVN - Watchdog mit define "SIMULATION" abschaltbar (Mein AVR-Studio generiert den Reset zu früh und zeigt ihn auch nicht im Status-Register an) - Watchdog wird nach einem Reset gemäß der Doku zu avr/wdt.h abgeschaltet - define für englische Texte, so ähnlich könnten auch weitere Sprachen eingebunden werden, ohne mehr Platz im Speicher zu benötigen - zerlegen der main-Funktion auf einzelne Funktionen, vgl. die Main-Funtkion am Ende der Datei Was haltet ihr davon?
Datum:
=> Claudio Emili: > ATmega8-16PI > is correct or not? This is correct. But I don't have the Galep4 and don't know how to program an AVR with it. => Avery: > Was haltet ihr davon? Zu der Aufteilung der main() in einzelne Funktionen: Kann man machen, ich halte es aber für nicht sonderlich sinnvoll: Die Funktionen werden nicht mehrfach aufgerufen. Programmtechnisch hat es nur Nachteile: Es verbraucht mehr Flash, und verschwendet wegen des eigentlich unnötigen Sprungs in eine andere Funktion, bei dem wieder alle Register in den Stack gechoben und nachher wieder rausgeholt werden, auch etliche CPU-Zyklen. Es macht den Code eben evtl. etwas übersichtlicher. > beim Messen werden nur noch die drei beteiligten Pins von Port C > umprogrammiert Das schadet nicht und ist auch sinnvoll, wenn man die Pin-Belegung mal ändern will. Es macht das Ganze auch besser erweiterbar. Der einzige Nachteil ist (wie üblich), dass es Flash kostet. Und der wird eben allmählich knapp. > Watchdog wird nach einem Reset gemäß der Doku zu avr/wdt.h > abgeschaltet Ja, das ist sehr sinnvoll. Sonst könnte sich der AVR nämlich allein durch diese Funktion
lcd_eep_string(TestTimedOut); //Timeout-Meldung _delay_ms(3000); |
in einer endlosen Reset-Schleife aufhängen. > Watchdog mit define "SIMULATION" abschaltbar (Mein AVR-Studio > generiert den Reset zu früh und zeigt ihn auch nicht im Status-Register > an) Das kann auch nicht schaden. > define für englische Texte, so ähnlich könnten auch weitere Sprachen > eingebunden werden, ohne mehr Platz im Speicher zu benötigen Das ist auch gut. Ich würde vorschlagen, man könnte auch .eep-Files in verschiedenen Sprachen mit ins Archiv packen. Dann muss man nur die Datei für die gewünschte Sprache ins EEPROM programmieren. Ich baue das mit dem abschaltbaren Watchdog und der WDT-Abschaltung beim Einschalten auch mal in meine Version ein und lege alle LCD-Strings ins EEPROM, um das mit den verschiedenen Sprachen per .eep-Datei möglich zu machen.
Datum:
Good news (for me of course ..) I've finally managed to correctly program the processor .... A show this tester, really useful and practical, I spent all day Sunday I happened to test any semiconductor in the house, and all have given excellent results. Was wrong to send the files in the memory block of the processor program GALEP, does not recognize the location automatically and not loads them correctly, just programmed it worked perfectly, except the battery indicator, I had to change the divider ranging up to 3 ,9Kohm. A single question: -you could implement the testing of IGBT? would be complete in this way since these semiconductors are now widespread and difficult to test properly What do you say? you can 'do?
Datum:
> you could implement the testing of IGBT? IGBTs with a gate threshold voltage of less than 5 volts will be detected as a MOSFET, I think At the moment, I don't have many IGBT's. I tried it with a 600V/40A IGBT (http://www.fairchildsemi.com/ds/HG/HGTG20N60B3D.pdf). The test failed, because this IGBT has a gate threshold voltage of about 6.5 volts. The problem is that the tester can't deliver more than 5 volts; because of the supply voltage of the ATMega8. And most IGBTs habe threshold voltages of 5 to 7 volts. To generate test voltages of more than 5 volts, external devices (for example transistors) are required. This makes the circuit of the tester much more complicated. And it would be difficult to tell IGBT and MOSFET apart. Due to the saturation effects of the IGBT, the collector-emitter voltage drop doesn't rise proportional to the current: My 600V/40A IGBTs have a voltage drop of about 1.4V at 10A and 2.4V at 40A. A MOSFET has an ohmic drain-source resistance; so the voltage drop is directly proportional to the drain-source current. But you can already see the problem: Huge currents are required for this test. And it won't be good if the tester pushes 40 amperes through a little SMD MOSFET ;) Or the short form: No, with the current hardware I can't implement the IGBT testing.
Datum:
IGBTs shouldn't have a body diode. Wouldn't it be sufficient to check if the device under test has a body diode and then decide if it's a fet or transistor? This will of course not work for j-fets...
Datum:
> IGBTs shouldn't have a body diode
My 600V/40A IGBTs have a body diode, and I looked into a datasheet of a
huge IGBT (3300V/1500A; type 5SNA 1500E330300). Even this one has a body
diode.
Datum:
Angehängte Dateien:Hi, I can't log for SVN, I don't know why ? Here is Transistor tester with 3 version, german, polish, and english.
Datum:
Bei fast allen IGBTs ist eine Freilaufdiode miteingebaut. Die Ströme und Spannungen sind Dekaden zu hoch für diesen Tester, das wird nichts.
Datum:
Hi, >Zu der Aufteilung der main() in einzelne Funktionen: >Kann man machen, ich halte es aber für nicht sonderlich sinnvoll: Die >Funktionen werden nicht mehrfach aufgerufen. >Programmtechnisch hat es nur Nachteile: Es verbraucht mehr Flash, und >verschwendet wegen des eigentlich unnötigen Sprungs in eine andere >Funktion, bei dem wieder alle Register in den Stack gechoben und nachher >wieder rausgeholt werden, auch etliche CPU-Zyklen. Stimmt nur bei ganz ausgeschalteter Optimierung (die man sowieso nicht verwenden sollte) Laut http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html : >-finline-functions-called-once >Consider all static functions called once for inlining into their caller >even if they are not marked inline. If a call to a given function is >integrated, then the function is not output as assembler code in its own >right. > > Enabled at levels -O1, -O2, -O3 and -Os. Von daher macht es vom Resourcenverbrauch her keinen Unterschied, der AVR-GCC optimiert die Funktionsaufrufe sowieso weg. Ist aber Geschmackssache NIMRA
Datum:
Angehängte Dateien:Hello everybody, I have finally build the tester, the photo attached show all... on the right is the "homemade" TO-3 test socket Thank You Markus!
Datum:
Angehängte Dateien:Ich habe jetzt die verschiedenen Sprach-Versionen eingefügt, außerdem ist der Watchdog in dieser Version per Define ein- und ausschaltbar. Now, there are three languages: German, English and Polish. You can choose between the languages by programming the corresponding .eep file into the EEPROM.
Datum:
.. and in polish ... Od teraz oprogramowanie dostępne jest w trzech językach, Niemieckim, Angielskim i Polskim. Możesz wybierać pomiędzy językami programując odpowiednią wersję .eep do EEPROM
Datum:
i po Russki: Теперь, есть три языка: немецкий, английский и польский язык. Вы можете выбрать между языками, программируя передачу Файл.eep в EEPROM.
Datum:
...und keiner denkt an deutsch ;) Es gibt jetzt 3 Sprachen: Deutsch, Englisch und Polnisch. Man waehlt zw. den Sprachen durch das Programmieren der gewuenschten .eep datei ins EEPROM.
Datum:
Hi Markus, Thanks very much again ... I ask if it is possible to modify the ( Line 1110): ====> if((HighPin == cb) && (LowPin == ca)) return; with this line: ====> if(PartFound == PART_CAPACITOR) goto end; Thanx...
Datum:
Angehängte Dateien:misser wrote: > I ask if it is possible to modify the ( Line 1110): > ====> if((HighPin == cb) && (LowPin == ca)) return; > with this line: > ====> if(PartFound == PART_CAPACITOR) goto end; > Thanx... Yes, this is possible. And it even saves a few bytes of flash memory. I changed it in the attached version.
Datum:
May I ask you to add Czech localization too. Thank you.
#ifdef CZECH //tschechisch unsigned char TestRunning[] EEMEM = "Probiha mereni..."; unsigned char Bat[] EEMEM = "Baterie "; unsigned char BatWeak[] EEMEM = "slaba"; unsigned char BatEmpty[] EEMEM = "prazdna!"; unsigned char TestFailed1[] EEMEM = "Zadna, neznama"; unsigned char TestFailed2[] EEMEM = "vadna "; unsigned char Bauteil[] EEMEM = "soucastka"; unsigned char Unknown[] EEMEM = " neznama"; unsigned char Diode[] EEMEM = "Dioda: "; unsigned char DualDiode[] EEMEM = "Dvojita dioda "; unsigned char TwoDiodes[] EEMEM = "2 Diody"; unsigned char Antiparallel[] EEMEM = "antiparalelni"; unsigned char InSeries[] EEMEM = "v serii A="; unsigned char K1[] EEMEM = ";K1="; unsigned char K2[] EEMEM = ";K2="; unsigned char GAK[] EEMEM = "GAK="; unsigned char NextK[] EEMEM = ";K="; unsigned char K[] EEMEM = "K="; unsigned char Triac[] EEMEM = "Triak"; unsigned char Thyristor[] EEMEM = "Tyristor"; #ifdef UseM8 unsigned char OrBroken[] EEMEM = "nebo vadna "; unsigned char Resistor[] EEMEM = "Rezistor: "; //nur auf Mega8 verfügbar unsigned char Capacitor[] EEMEM = "Kondenzator: "; #endif ... |
Datum:
Hallo! Möchte mich anschliessen:Dolles Projekt,habs noch nicht nachgebaut,werd es aber versuchen.Leider kenn ich mich net so dolle aus mit der Materie,hätte aber mal ne Frage. Könnte mann nicht die Werte irgendwie speichern im PC oder nem 2.ATmega?Und anschliessend mit ´ner 2.Messung vergleichen? Also wenn ich in der Bastelkiste zB.´n Transistor finde,brauche aber 3stck davon und hätte die Werte gespeichert,könnte ich doch weitere Tr´s testen,mit den Werten vergleichen und angezeigt bekommen :Ja den und den kannste nehmen.Weil sonst muss man ja wieder Datenblätter suchen und vergleichen.Das soll ja gerade eingespart werden.Da die Daten für Pinn,hfe,usw eh vorliegen.Oder ist das zu umfangreich und eher ein neues Projekt? Grüße aus dem Westerwald Nic
Datum:
=> syr: > May I ask you to add Czech localization too. Thank you. Yes, I will add it. => McGill: > Oder ist das zu umfangreich und eher ein neues Projekt? Ein neues Projekt wäre es eigentlich nicht, vielleicht aber eine Abwandlung von diesem Projekt, mit etwas anderer Hardware. Die letzten paar Test-Ergebnisse könnte man im EEPROM speichern. Das wäre relativ leicht realisierbar. Mit 8 Byte je Ergebnis dürfte man auskommen. Die Controller (ATMega8, ATMega16 und ATMega168) haben 512 Byte EEPROM, von dem ca. 350 Byte für die LCD-Strings und die Konfiguration verbraucht werden. Man könnte also etwa die letzten 20 Testergebnisse im EEPROM speichern. Naja, wirklich viel ist das nicht. Da wäre es eher sinnvoll, die Daten gleich während des Tests per UART (RS232) an einen PC zu senden. Nur leider ist der UART hier eigentlich nicht nutzbar, weil dessen Pins für die LCD-Ansteuerung benutzt werden. Man könnte aber z.B. per Jumper einstellbar machen, ob das LCD verwendet werden soll oder ob die Daten per UART gesendet werden sollen. Allerdings wäre es dann ratsam, den AVR mit einem Quarz laufen zu lassen. Normalerweise läuft der AVR bei dem Transistortester mit 1Mhz. Man kann also einen 1MHz-Quarz anschleißen. Aus mir nicht bekannten Gründen sind 1MHz-Quarze aber (vergleichsweise) extrem teuer, bei Reichelt über 3 Euro (!) pro Stück (andere Quarze kosten ca. 0,20€). Man kann die Firmware aber auch für andere Takte verändern, dann ist sie allerdings nicht mehr mit der Original-Firmware kompatibel. Oder man nimmt einen Mega88 oder Mega168 + 8MHz-Quarz und setzt das Fusebit für die interne Taktteilung durch 8. Das ist die günstigste Lösung. Und das mit dem UART dürfte schon noch in den Mega8/Mega88 passen, immerhin ist ja noch mehr als 1kB frei.
Datum:
Noch was zu der UART-Sache: Um mit der aktuellen Hardware 100% kompatibel zu bleiben, könnte man auch einen Software-UART verwenden. Als "TxD" könnte dann der Pin PC3 oder PC4 dienen. Das hat auch noch den Vorteil, dass man sich mit einem etwas "schmutzigen Trick" einige Bauteile einsparen kann: Alles invertiert senden und den "TxD" direkt mit dem RxD der RS232-Schnittstelle verbinden. Gemäß Spezifikation ist das nicht zulässig (man hat damit nur 0V/5V-Pegel), aber es funktioniert in fast allen Fällen. Man spart sich damit eben den MAX232. Natürlich wäre das aber nur optional, es würde auch eine Version für einen Pegelwandler wie den MAX232 geben.
Datum:
Angehängte Dateien:Einfach nur geil ! Habe diese Projekt länger beäugelt und bei der letzten Bauteil-Bestellung einfach mal eingeplant. Es ist ein tolles Projekt, und so ein Messgerät hat noch in der Bastelkiste gefehlt. Vielen herzlichen Dank ! Peter
Datum:
So Habe das Teil jetzt mal gelötet(Board vom Armin Diehl),warte noch auf das Display.Allerdings ist das Mit dem Programmieren von dem Atmega einfach zu hoch für mich.(Mir fehlen da zu viele Gehirnwindungen)Ich hab mir von Videocafe den programmer gebaut(si prog i/o) Dann aber rausgekriegt das das Ding wohl nur mit Pony-prog läuft,wofür es einige Beschreibungen im Netz gibt.Mir aber alles zu kompliziert,zumal man mit dem Teil den chip zerschiessen kann.Obendreien sind da im Verzeichnis Firmware einige files mit bin.eep und welche mit .eep ich würde also erst das Transistortester.Hex laden und Brennen und dann das German.eep.ich hab mal in das Ponyprog reingeschaut aber nix von fusebits gesehen da muss ja au noch was eingestellt werden.Kann mir jemand sagen "Was" und Wo ich des einstellen mus Übrigens haben die mir 3 Atmega 8-16 geschickt,kann ich die auch verwenden,oder brauchts da andere files? LG
Datum:
Hallo Mc Gill, hast Du den Videocafe Programmer schon getestet? Wird der ATmega im Pony Prog erkannt? Ich glaube nicht, dass Du den Atmega mit dem Programmer zerschießt, wenn Du alles nach der Anleitung gemacht hast. Wegen der Fusebits schau mal bei http://www.engbedded.com/fusecalc/ rein. Als erstes den ATmega8 auswählen und in der folgenden Seite ganz unten bei Current settings die beiden Hexwerte eingeben, die in der Fusebits.txt der AVR-Transistortester.zip angegeben sind. Dann auf Apply values clicken und die einstellungen werden in den oberen Fenstern der Seite angezeigt. Bei Ponyprog kannst Du die Hexfiles hintereinander in den ATmega programmieren. Also mit "Open Data Memory(EEProm)File" und "Open Program Memory(Flash)File". Kaputt geht da so schnell nix. Außerdem wird der Prozessor auf Deinem Programmer extern Getaktet. Den ATmega8-16 kannst Du auch langsamer Takten. In diesem Fall intern mit 1 MHz. Geht alles. Warte bis Dein Display da ist und dann Programmier mal. Wird schon werden. Am Anfang fand ich auch alles verwirrend. Aber das gibt sich, wenn Du Dich im Netz ein wenig umschaust, findest Du überall hilfreiche Tips. Also dann mal los... Viele Grüße Yogi
Datum:
Jo vielen Dank yogi.Werd erstmal warten bis das Displ.da ist .Hab mir von der selben Seite auch noch das Atmega Testboard gebastelt.Dachte zum rumprobieren.Ist das denn so ,das der extern getaktet wird?Da ist ja nur ´n Quarz drauf,kein Q.oszill.Hab gerad gelesen,daß wenn mann was versemmelt hat,mit ner ext Taktquelle wieder alles richten kann.Also kann ich ja mal rumprobieren werd dann mal berichten wie´s ausgegangen ist Schönes rest WE
Datum:
=> Mc Gill: Im Prinzip musst du an den Fuses nix ändern. Man könnte damit den Start noch um 64ms beschleunigen (durch Ändern der Start-Up-Time), aber mit der Werkseinstellung der Fuses funktioniert es auch. > hab gerad gelesen,daß wenn mann wasversemmelt hat, mit ner ext Taktquelle > wieder alles richten kann Jain. Wenn man die Takt-Fuses ändert stimmt das. Allerdings haben viele AVRs (der ATMega8 auch) ein Fusebit, mit dem man den RESET-Pin deaktivieren kann und ihn somit als normalen I/O-Pin nutzen kann. Setzt man dieses Fusebit, kann man den Controller nur noch über einen Bootloader oder einen HV-Programmer programmieren. Mit den üblichen ISP-Programmern geht dann nix mehr.
Datum:
Angehängte Dateien:So hab gelesen,daß das stzen der fuse bits(=security+configuration bits?) invertiert gesetzt werden bei pony prog.Also überall hacken rein und bei den relevanten Bits Hacken raus?Hab mal´n Bild angehängt. Oben:"das kam bei engbeddet raus" Unten:"so will ich es einstellen" Könn´t ich des also so braten? Oder soll ich erstmal alles so lassen wie´s ist also alle Hacken draussen?Außerdem gibt´s da bei spien ´n problem da ist bei ponyprog ´n Hacken der sich net verstellen lässt(Grau)aber entfernt werden soll? Ich stell mich ziemlich blöde an,tut mir echt leid,wenn die Dinger billiger währen,würd ich ne Hand voll bestellen und so lange rumprobieren,bis es klappt ;-) LG
Datum:
Markus F. schrieb: > => Mc Gill: > Im Prinzip musst du an den Fuses nix ändern. Lass die Fuse-Bits lieber in Ruhe.
Datum:
=> Mc Gill: Nö, ist leider verkehrt. Du musst die Hacken bei Ponyprog nach dem oberen Bild setzten. Ich habe das bei meinen Transistortester ebenso gemacht. Also nach dem engbedded. Lies doch die Fuses von Deinem Atmega erstmal aus. Wahrscheinlich ist es so wie Markus schon schrieb. Du brauchst nichts ändern. Programmiere die Flash Datei und EEProm Datei in Deinen ATmega und lass die Fuses wie sie sind. Wenn Dein Display da ist wirst Du schon sehen das es läuft. Viele Grüße Yogi
Datum:
So hab jetzt mal ´n atmega8-16 gebraten :-) An den fuses hab ich nix geändert.Morgen wird das display kommen,leider fehlt mir noch der 7805.Hab nur To220,da is wenig Platz aus dem Board,aber spätestens samstag weis ich ob´s geklappt hat.Also erstmal Danke für die Info´s LG
Datum:
Hello I have serious interest and I want to buy it as construction kit with newest software please. I am from England. Thanks Marian
Datum:
So.Hat alles geklappt.leider war das Displ für Neg.Kontrastspannung,sodaß ich 2 Batterien reinmachen musste,aber mit dem Atmega funzt alles prima.Dolles gerät.Kompliment LG
Datum:
Angehängte Dateien:Here is the version with the Czech lamguage included. Marian wrote: > Hello I have serious interest and I want to buy it as construction kit > with newest software please. As far as I know, there is no complete kit available. You can get the circuit board (and the other components) from the German shop IT-WNS, but I think the shipping to England will be expensive...
Datum:
Thanks
Markus F. schrieb:
> Here is the version with the Czech lamguage included.
but when i write device with TransistorTestNew.hex and
TransistorTestNew_Czech.eep so tester will show wrong messages on
display.
In czech it must show zadna neznama vadna soucastka but show only
na.aoucastka. Same in english version.
With your german version it's OK.
Please advice me with programming. It's my programming ok with
TransistorTestNew.hex and TransistorTestNew_Czech.eep ?
What is TransistorTestNew_Czech_Binary.eep file?
Thanks
btw. your tester is really great!
Datum:
Zdenek schrieb: > Thanks > > Markus F. schrieb: >> Here is the version with the Czech lamguage included. > > but when i write device with TransistorTestNew.hex and > TransistorTestNew_Czech.eep so tester will show wrong messages on > display. > In czech it must show zadna neznama vadna soucastka but show only > na.aoucastka. Same in english version. > With your german version it's OK. > Please advice me with programming. It's my programming ok with > TransistorTestNew.hex and TransistorTestNew_Czech.eep ? > What is TransistorTestNew_Czech_Binary.eep file? > Thanks > > btw. your tester is really great! Same problem English, czech working not good- german is ok btw. your tester is really great!
Datum:
Hi can u translate it to slovak language? i now that is similar to czech
but many people on slovakia dont like the czech language.... it is
Slovak - slovakish
quote
unsigned char TestRunning[] EEMEM = "PREBIEHA TEST";
unsigned char Bat[] EEMEM = "Bateria ";
unsigned char BatWeak[] EEMEM = "slaba";
unsigned char BatEmpty[] EEMEM = "prazdna!";
unsigned char TestFailed1[] EEMEM = "Ziadna, neznama";
unsigned char TestFailed2[] EEMEM = "vadna ";
unsigned char Bauteil[] EEMEM = "suciastka!";
unsigned char Unknown[] EEMEM = " neznama";
unsigned char Diode[] EEMEM = "Dioda: ";
unsigned char DualDiode[] EEMEM = "Dvojdioda ";
unsigned char TwoDiodes[] EEMEM = "2 Diody";
unsigned char Antiparallel[] EEMEM = "antiparalelne";
unsigned char InSeries[] EEMEM = "v Serii A=";
unsigned char K1[] EEMEM = ";K1=";
unsigned char K2[] EEMEM = ";K2=";
unsigned char GAK[] EEMEM = "GAK=";
unsigned char NextK[] EEMEM = ";K=";
unsigned char K[] EEMEM = "K=";
unsigned char Triac[] EEMEM = "Triak";
unsigned char Thyristor[] EEMEM = "Tyristor";
#ifdef UseM8
unsigned char OrBroken[] EEMEM = "alebo vadna ";
unsigned char Resistor[] EEMEM = "Rezistor: "; //nur auf Mega8
verfügbar
unsigned char Capacitor[] EEMEM = "Kondenzator: ";
#endif
for me the slovak is working but i only translate the german verion i
can not give the slovak lang to the file..
btw. your tester is really great!
btw. your tester is really great!
Datum:
Angehängte Dateien:Tolles Projekt hier. Beim Nachbauen ist mir aufgefallen, daß die Batteriespannungsmessung so nicht ganz richtig sein kann. Beim ATmega48 und ATmega88 ist die interne Referenzspannung nur 1.1V. Dafür ist dann auch der Spannungsteiler falsch dimensioniert. Den R11 kann man z.B. auf 27k ändern. Meinen Änderungsvorschlag habe ich mal hier angehängt. Wenn jetzt noch meine bestellten Bauteile endlich da wären...
Datum:
Mc Gill schrieb: > So.Hat alles geklappt.leider war das Displ für > Neg.Kontrastspannung,sodaß ich 2 Batterien reinmachen musste,aber mit > dem Atmega funzt alles prima.Dolles gerät.Kompliment > LG Hallo, ich hatte auch ein Display "erwischt", welches eine negative Kontrast-Spannung braucht. Diese lasse ich mir vom ATMEGA erzeugen, schau mal nach meinen Beiträgen vom August-September letzten Jahres. HTH
Datum:
Angehängte Dateien:I have a new version: Now, all languages should work (before, all lamguages except German didn't work properly). And I added a software UART that sends all the test results. It sends almost the same data as shown on the LCD, except the characters which are not implemented in the standard ASCII character set (for example the "Omega" sign). The UART output is PC3 (Pin 26 of the ATMega8). The properties of the UART: 2400 baud 8 data bits 1 stop bit no parity, no handshake The internal timing error of the UART is almost zero. So, the RC oscillator of the ATMega8 may have up to +/-3% tolerance to get a stable connection. And according to the datasheet, the oscillator has a 3% tolerance at 5V , 25°C and 1.0MHz. So, it should work in most cases. And there are two hex files: In one("TransistorTestNew_UART_not_inverted.hex), the UART sends in "normal" mode, to connect it to a TTL level RS232 receiver or to a level shifter like MAX232. In the other file ("TransistorTestNew.hex"), the UART sends in inverted mode, for direcly connecting it to the RxD pin of a PC's RS232 port or a USB=>serial converter with a "normal" PC-level input/output. This makes the level shifter obsolete. This solution is a bit "dirty" because a logical one is just 0V, and according the RS232 standard it should be between -3V and -15V. But in most cases, it works without problems.
Datum:
Thans very much for implementing the slovak lang and the uart you are great! Thanks man!
Datum:
Hi. Sorry but looks like the problem with text is still here. Czech, slovak and english version is not working. Only german language is ok.
Datum:
Zdenek schrieb: > Hi. > > Sorry but looks like the problem with text is still here. Czech, slovak > > and english version is not working. Only german language is ok. Yes, already tested only German works :(
Datum:
Markus F. schrieb: > I have a new version: > Now, all languages should work (before, all lamguages except German > didn't work properly). Ins Archiv gehen diese Neuerungen nicht mehr, wie ich sehe...
Datum:
Angehängte Dateien:Now, all languages should really work... The problem was not difficult, but I simply forgot that this will cause errors: In the different languages, the strings for the LCD have different lengths and so also different starting positions. But the hex file doesn't know that because there is only one hex file for all 5 languages. Now, I added "waste" characters to some strings, to get them all to the same length. These characters are the "€" symbol (ASCII 0x80). These characters are then filtered out before sending the data to the LCD. Now, every .eep file contains 350 bytes of EEPROM data and all strings have the same lengths. At least in my tests this works without problems for all languages. I also added it in the SVN again.
Datum:
Hallo! Ich finde diesen Transistor Tester suuper und möcht ihn unbedingt nachbeuen, aber ich hätte mal ne ganz banale Frage und hoffe ihr könnt mir helfen. Ich habe mir bei Pollin dieses LCD-Display gekauft: LCD-Modul C0802-04; Bestellnummer: 120 622. Nun hat dieses aber nur einen 4Bit-Bus zur Ansteuerung. Und hier ist diese Schaltung für ein 8Bit-Bus LCD ausgelegt. Wäre es eine grosse Sache das Programm für so ein 4Bit-LCD umzuschreiben, wenn nein könnte das vielleicht jemand für mich machen. Ich verstehe leider noch kein C (bin selber gerade Assembler am erlernen). Vielen Dank im Voraus Gruss Michi
Datum:
A du hast natürlich Recht!!! Ich habe mir den Schaltplan nur mal so flüchtig angesehen. In diesem Fall freue ich mich dass ich diesen Tester jetzt demnächst bauen kann!! Vielen Dank Michi
Datum:
Das Display, das Du Dir ausgesucht hast, hat aber nur 2 x 8 Zeichen. Der Transistortester braucht aber 2 x 16 Zeichen.
Datum:
Ups jawol dass stimmt dann werde ich mir wohl noch ein anderes LCD mitbestellen müssen. Gruss Michi
Datum:
Angehängte Dateien:Hallo, zunächst vielen dank Markus F. für deinen super Tester. ich habe 2 Probleme mit dem Teil festgestellt: 1. Bei Kurzschluß wird unbek. Bauteil angezeigt. 2. Bei antiparallel geschalteten Dioden wird ein Widerstand angezeigt. Gruß Stefan P.S.: Anbei Foto von meinem Tester
Datum:
Angehängte Dateien:Hallo Der Tester ist wirklich genial. Ich habe für einige Funkfreunde, die nichts mit Programmieren und µC am Hut haben, aber doch eifrig basteln, einen kleinen Bausatz zusammengestellt und den Kontroller programmiert. Das Ding hat bis jetzt ungeteilte Begeisterung ausgelöst. Auf diesem Weg von allen Nutzern ein herzliches Danke an Markus F. Das Gehäuse ist 100 x 80 x 25 Grüsse Hubert
Datum:
Angehängte Dateien:Habe mich nun auch dazu durchgerungen so ein Teil zu bauen. Klappt ganz gut. Bei meinem bisherigen "Platinchen" (seinerzeit als Bausatz bei Conrad erworben) muß man wissen, welcher Anschluß B,C und E ist. Danke für dieses Projekt!
Datum:
Markus F. schrieb: > Now, I added "waste" characters to some strings, to get them all to the > same length. These characters are the "€" symbol (ASCII 0x80). > These characters are then filtered out before sending the data to the > LCD. > Now, every .eep file contains 350 bytes of EEPROM data and all strings > have the same lengths. Das hätte man aber auch viel einfacher hingekriegt, mit einem Define, wie lang die Strings sein sollen, was man dann einfach in der Array Deklaration mit angegeben hätte. So ist das aber ganz schön umständlich oder nicht?
Datum:
> Das hätte man aber auch viel einfacher hingekriegt, mit einem Define > wie lang die Strings sein sollen, was man dann einfach in der Array > Deklaration mit angegeben hätte. Das habe ich auch gedacht, nur leider landen Defines im Flash, was bedeuten würde, dass man für jede Sprache eine eigene Flash (.hex)-Datei brauchen würde. Wäre ja auch zu schön... Man könnte höchstens am Anfang des EEPROM eine Tabelle anlegen, in der die String-Längen stehen. Diese werden dann beim Programmstart ausgelesen. Das wäre eleganter, kostet aber vermutlich viel mehr Flash als meine "Lösung".
Datum:
Hallo Markus F., ich bin so begeistert von dem Projekt, dass ich es mit Boards von myAVR (www.myAVR.de) aufgebaut habe. Leider sind die PINs für das LCD-Modul anders beschaltete, so dass ich Deine Software an die Gegebenheiten angepassen musste. Nun meine Frage: gibt es von Deiner Seite Einwände oder Vorgaben zur Veröffentlichung des Projektes im dortigen Forum? Gruß Bernd
Datum:
Hi, thanks for new version of software. It's all OK now. One more THANKS.
Datum:
hallo, bin gerade dabei den transistortester nachzubauen,könnte mir jemand sagen wie die einschaltung funktioniert und auch die led will nicht so richtig leuchten. ist der 27k widerstand zu groß oder wird die led nur als referenz benötigt??? vielen dank im vorraus!!!
Datum:
Schau Dir mal im Artikel AVR-Transistortester den Abschnitt mit der automatischen Abschaltung an. Da steht, warum dier LED drin ist. Und ja, sie ist nicht zum Leuchten da :-)
Datum:
hallo michael, vielen dank für deinen hinweis, jetzt ist alles klarer!!!
Datum:
Angehängte Dateien:Hallo Markus F., auch von mir vielen Dank für dieses tolle Projekt. So etwas habe ich schon immer gesucht Michael
Datum:
Hallo Markus, interessant wäre auch ein automatischer Kennlinienschreiber mittels Mikrocontroller, DAC für die Erzeugung der Basis (bzw. Gate) -Spannung, ADC für das Einlesen des als Spannungsabfall gemessenen Kollektor (Drain)-Stromes. Damit könnte man Transistoren bzw. Fets selektieren. Ich habe so ein Projekt vor. Gruß Thomas
Datum:
Ja, so ein Kennlinienschreiber wäre wirklich interessant. Um die Kennlinie von Transistoren zu ermitteln bringt allerdings ein reiner DAC für die Basisspannung nicht viel. Entscheidend ist ja meist das Verhältnis zwischen Basis- und Kollektorstrom. Die Basisspannung ist natürlich auch noch wichtig, wenn man z.B. 2 praktisch identische Transistoren selektieren will, z.B. für einen Differenzverstärker. Man könnte z.B. an den DAC eine Pufferstufe anschließen, daran kommt dann ein Widerstand, der zur Basis führt. Die Basis-Spannung kann man per ADC messen. Aus Basis-Spannung, dem Basis-Vorwiderstand und der DAC-Ausgangsspannung kann man dann den Basisstrom berechnen. Am besten baut man verschiedene Widerstände ein, um Basisströme von so 10µA...50mA einigermaßen präzise einstellen zu können. Für den Kollektorstrom sollten auch verschiedene Widerstände vorhanden sein, um verschiedene Strombereiche zu haben. Für kleine Transistoren sind einige 100µA bis ca. 100mA sinnvoll. Wenn man mal Leistungstransistoren (z.B. 2N3055 oder Power-MOSFETs) selektieren will, wäre auch noch ein hoher Strom von vielleicht 1...2 Ampere wünschenswert. Diese Strom-Einstellungg sollte aber per Jumper o.ä. zuverlässig deaktivierbar sein, um nicht versehentlich 2 Ampere über einen BC547 o.ä. zu jagen... Den fließnenden Kollektorstrom kann man einfach berechnen, indem man per ADC den Spannungsabfall am Kollektor-Vorwiderstand misst.
Datum:
Kann der Transistortester sinnvolle Ergebnisse bei Germanium-Halbleitern (Schwellspannung 0,3V statt 0,7V) liefern? Habe da noch einige rumliegen.
Datum:
=> eku: Germanium-Dioden lassen sich damit testen, zumindest hat es bei mir mit 3 verschiedenen Typen funktioniert. Ob Germanium-Transistoren gehen weiß ich nicht. Das Problem könnte sein, dass sie einen recht hohen Leckstrom haben und damit evtl. als JFET o.ä. erkannt werden. Getestet habe ich es aber nicht, weil ich keine Germanium-Transistoren habe.
Datum:
Hallo Markus! Markus F. schrieb: > => eku: > > Germanium-Dioden lassen sich damit testen, zumindest hat es bei mir mit > > 3 verschiedenen Typen funktioniert. > > Ob Germanium-Transistoren gehen weiß ich nicht. > > Das Problem könnte sein, dass sie einen recht hohen Leckstrom haben und > > damit evtl. als JFET o.ä. erkannt werden. > > Getestet habe ich es aber nicht, weil ich keine Germanium-Transistoren > > habe. So, nun habe ich letztes Wochende Schaltplan, Leiterplatte und Sourcdode überarbeitet und mir einen Transistortester gebaut. Ich verwende die UART des ATmega8 und eigene LCD-Routinen. So konnte ich das Layout auf einfachste Leiterführung optimieren. Den Rest macht dann die Software. Darf eigentlich jeder im SVN des Projektes Dateien ablegen? Würde gerne meine Version der Allgemeinheit zur Verfügung stellen. Dei Tests mit den Germanium-Halbleitern mache ich nächstes Wochenende und werde die Ergebnisse hier veröffentlichen.
Datum:
eku schrieb: > So, nun habe ich letztes Wochende Schaltplan, Leiterplatte und Sourcdode > überarbeitet und mir einen Transistortester gebaut. Ich verwende die > UART des ATmega8 und eigene LCD-Routinen. So konnte ich das Layout auf > einfachste Leiterführung optimieren. Einfachste Leiterführung ist immer ein gutes Argument. > Den Rest macht dann die Software. > > Darf eigentlich jeder im SVN des Projektes Dateien ablegen? Würde gerne > meine Version der Allgemeinheit zur Verfügung stellen. Was spricht dagegen, Deine Variante (auch) hier zu veröffentlichen?
Datum:
Guten Tag, ich habe 2 Fragen: 1. Habe ganzen Thread gelesen aber nicht gefunden: wenn ich ATMega88 verwende, soll die Firmware geändert werden (interne Referenzspannung bei M88 ist kleiner). 2. Markus-F, darf ich diese Projekt auf meine Internetseite (auf russisch) veröffentlichen? MfG aus Westerwald
Datum:
Dimi schrieb: > 1. Habe ganzen Thread gelesen aber nicht gefunden: wenn ich ATMega88 > verwende, soll die Firmware geändert werden (interne Referenzspannung > bei M88 ist kleiner). Firmware ändern reicht nicht. Dazu habe ich hier was geschrieben: Beitrag "Re: Transistortester mit AVR"
Datum:
Dimi schreib: > ich habe 2 Fragen: > 1. Habe ganzen Thread gelesen aber nicht gefunden: wenn ich ATMega88 > verwende, soll die Firmware geändert werden (interne Referenzspannung > bei M88 ist kleiner). Am einfachsten ist es, die Firmware nicht zu ändern und stattdessen für R11 einen 27k-Widerstand einzusetzen. > 2. Markus-F, darf ich diese Projekt auf meine Internetseite (auf > russisch) veröffentlichen? Ja, gerne!
Datum:
Angehängte Dateien:Kluchscheißender Kluchscheißer schrieb: > > Was spricht dagegen, Deine Variante (auch) hier zu veröffentlichen? Hier schon mal meine Schaltung und die Platine. Als Anzeige kommt ein LCD 16x2 von Pollin (tc1602e-01, VCC-GND vertauscht) zu Einsatz. Die Hintergrundbeleuchtung liegt nicht auf dem Pfostenverbinder, daher die Lötaugen am oberne Ende der Platine.
Datum:
Markus F. schrieb: > Germanium-Dioden lassen sich damit testen, zumindest hat es bei mir mit > 3 verschiedenen Typen funktioniert. Konnte ich nachstellen. Funktioniert. > Ob Germanium-Transistoren gehen weiß ich nicht. > Das Problem könnte sein, dass sie einen recht hohen Leckstrom haben und > damit evtl. als JFET o.ä. erkannt werden. Genau so ist es, wenn auch nicht bei allen Typen aus meiner Bastelkiste. Hat jemand eine Idee, mit welchem Testalgorithmus dies herausfinden könnte? Ein bisschen Platz ist ja noch im Flash. Und da kommt gleich die nächste Frage. Wie geht man bei Transistoren mit 4 Anschlüssen vor? Ich weiß nur noch, dass es Dual-Gate-Fets sind.
Datum:
Hallo, Ich habe den Transistortester aufgebaut, und wen ich einen Transistor teste dan zeigt das Display ´´Bauteil unbek. oder Defekt´´. Bitte um Hilfe
Datum:
Hallo zusammen, ich habe mir heute den Transistortester von Markus gebaut. Leider habe ich ein Problem. Das Display zeigt Müll an, z.B. nach dem Einschalten kommt: Test läuft, dann wird gelöscht und mit angeklemmten Transistor erscheint: =2=13 in der Zeile 2 steht dann: =223 770m Es deutet sich ein Problem mit dem eep.file an. Ich habe die Files in Bascom geladen und damit programmiert. Hat jemand ähnliches schon mal gehabt? Ich habe schon stundenlang gegoogelt, aber ich bin noch nicht so richtig schlau geworden, wie das epp.file erzeugt wird. Den Sourcecode in c kann ich mangels know how nicht compilieren. Habe die Files aus dem SVN geholt.
Datum:
Hallo noch mal, kann mir vielleicht jemand das epp.file ins Intel-Hex-Format umwandeln? Das sollte sich beim compilieren einstellen lassen. Das könnte für mich ein neuer Lösungsansatz sein. Danke im voraus.
Datum:
Angehängte Dateien:Hallo zusammen, auch von mir ein dickes Lob an Markus. Tolles Projekt!! Seit einigen Wochen - wenn nicht sogar Monaten - spiele ich mit dem Gedanken, das Teil nachzubauen. Nachdem mein Messgerät jetzt langsam den Geist aufgibt und das neue keinen Transistortester mehr hat, habe ich mich jetz doch mal drangesetzt. Hauptproblem war - wie immer - ein passendes Gehäuse zu finden, dass nicht zu groß ist. Als ich dann bei Pollin die kleinen LCDs gesehen habe, konnte ich endlich loslegen :-) Für den Fall, dass es jemand nachbauen will: Im Anhang findet Ihr alle benötigten Dateien für die Platine. Wer will, kann sich gerne noch was mit der Target-Datei spielen; ich habe einige Brücken drin, die mir selbst nicht gefallen, aber am Ende doch egal waren (wollte das Teil endlich fertig haben :-)) Ich wollte halt unbedingt die Belegung der Anschlüsse beibehalten, damit man die SW nicht umschreiben muss. Die Stückliste, wo welche Teile herkommen (außer dem normalen Kleinzeug), ist auch dabei. Für diejenigen, die jetzt nicht mit Target 3001 arbeiten, das Layout aber trotzdem umgestalten wollen... Unter: http://www.target-3001.de/target/v14/deutsch/tarv1... und http://www.target-3001.de/target/v14/deutsch/disco... gibt es kostenlose Viewer, bzw. "Einsteigerversionen"; aber die kennt ja vermutlich schon jeder :-) Für diejenigen, die es nur nachbauen wollen, sind entsprechende PDFs mit dabei. Also nochmals: Markus, vielen Dank. Bin echt begeistert; das Teil funktioniert einwandfrei :-)
Datum:
Steyr CVT schrieb: > Hallo, > Ich habe den Transistortester aufgebaut, und wen ich einen Transistor > teste dan zeigt das Display ´´Bauteil unbek. oder Defekt´´. Vielleicht sind die Widerstände (die 680 Ohm und 470kOhm) irgendwie nicht korrekt angeschlossen, oder die Leitungen von den Test-Anschlüssen zu den ADCs sind unterbrochen oder vertauscht. Jedenfalls dürfte der Fehler irgendwo bei diesen Widerständen oder bei den ADCs liegen. Die Betriebsspannung scheint ja ok zu sein, die Firmware und das LCD auch. be-cool schrieb: > kann mir vielleicht jemand das epp.file ins Intel-Hex-Format umwandeln? Das Format ist Intel Hex, nur die Datei-Erweiterung ist "eep". Wenn du willst, kannst du die aber einfach in "hex" ändern. Vielleicht kommt Bascom ja mit der Erweiterung ".eep" nicht klar. An alle: Vielen Dank für das viele Lob und die Verbesserungsvorschläge an diesem Projekt. Ich hätte wirklich nicht erwartet, dass dieses Projekt so eine Begeisterung auslöst ;)
Datum:
Markus, danke für die schnelle Antwort. Werde es heute nach Feierabend noch mal probieren. Ist übrigens 'ne gute Leistung von Dir. Programmieren können ja viele hier im Forum, aber die ganzen technischen Zusammenhänge zu implementieren ist schon was ganz besonderes. Danke für dieses Projekt
Datum:
Angehängte Dateien:Ich bin es noch mal, jetzt funktioniert alles (siehe Bild). Der Knackpunkt war, das Bascom zwar eep-Dateien brennt, aber es wird irgendwas gebrannt und dann auch noch mit "verified ok" bezeichnet. Das LCD zeigte dadurch nur Müll. Nachdem ich die Datei in .hex umbenannt habe und neu gebrannt habe funktionierte alles richtig gut. Ist vielleicht ein Tipp für alle die Probleme beim Brennen haben. Gibt ja bestimmt noch ein paar mehr Leute, die Bascom verwenden.
Datum:
@ Markus F. Danke für die Antwort, ich werde morgen nach der Schule noch mal alles überprüfen !!
Datum:
Ja ich zum Beispiel, hatte unter Bascom den gleichen Fehler. Danke für den Tipp be-cool, darauf wäre ich nicht gekommen. Ansosnten ein super Projekt, da muss man ja zum Lötkolben greife! An dieser Stelle mein Dank an Markus.
Datum:
Hallo, ich habe jetz mochmal alles überprüft und keinen Fehler gefunden. Aber wen ich dei eep Datei Brenne kommt eine Fehlermeldung kan das Proplem auch daran liegen ?
Datum:
Ich habe das Teil nachgebaut und bin total begeistert. Riesen Dank an Marcus F.. Ich habe so glaube ich einen kleinen Bug gefunden. Bei der Widerstandsmessung mit einem 15 Ohm Widerstand werden bei mir 156 Ohm angezeigt. Vieleicht habe ich auch nur eine etwas ältere Firmware erwischt. (12.04.10 glaub ich) Weiterhin hab ich noch eine Frage: Bis zu welcher Kapazität kann man Elko´s relativ genau messen? Macht alle bitte weiter so an dem schon fast genialen Projekt. Danke olli
Datum:
@olli: Also ich habe eben einen 15Ohm gemessen und bekomme auch überall (1-2, 2-3, 1-3) 15 Ohm angezeigt. Meine FW habe ich am 22.5.2010 hier im Artikel runtergeladen; Deine (12.04.) ist jetzt aber auch nicht gerade alt... Was für Messwiderstände (R1-R6) benutzt Du denn? Vielleicht passen die nicht genau? Ich arbeite mit 1%-Teilen; wenn Du jetzt normale Kohleschicht mit 10 oder gar 20 % hast, dürfte das eher daran liegen...
Datum:
danke für die schnelle Antwort. Klingt logisch.Ich werde die Widerstände am Wochenende mal wechseln. Mich hat nur stutzig gemacht, das der Transistortester 156 Ohm anzeigt und mein Fluke-Multimeter 15,6 Ohm.
Datum:
Hi Markus, I made this tester, but i have a problem with the programation of the atmega8, i use PONYPROG and i can't program the eeprom file in the divice??. I need olso to know how to set the configuration bits in PONYPROG. A screenshot for this can help me. Thanks a lot Jamal
Datum:
Hello. I know this problem. Show this: Ich habe das jetzt so gelöst: Nach verschiedenen Versuchen habe ich mitbekommen, dass bei Ponyprog das EEPROM ab Adresse 2000 beginnt. Ich habe mit einem Editor die *.eep-Datei einfach in die *.hex-Datei dorthin geschrieben und jetzt bin ich glücklicher Besitzer des Transistortesters. Vielen Dank für die Hilfe. Beitrag "Re: Transistortester mit AVR"
Datum:
Hi DIETER, Thanks for your answer. If i understand, i have just to edit the Flash file and add the eeprom file from Addres 2000. Jamal
Datum:
For Dieter again, I tried five HEX editors, without succes, can you place hier the combined HEX file(flash+eeprom) to put in the Atmega8. Thanks
Datum:
No need, I found the solution in PONYPROG! Just upload the flash file and then upload the eeprom file, wich appears on the PONYPROG interface after the flash file from line 2000. In the command menu use: WRITE ALL. That's all and it's working very fine! Thanks, Jamal
Datum:
Hi, Jamal, I know my explanation was very short, but my English is poor. I'm glad, that it works now . dolivo
Datum:
Ich möchte mir das Teil auch aufbauen. Kennt Ihr eine Möglichkeit die Eagledateien in Sprintlayout-Dateien umzuwandeln? Oder hat jemand von euch evtl. ein Platinenlayout für den Tester mit Sprint-Layout entworfen und könnte es hier rein stellen? Ich komme leider nicht mit eagle klar und möchte das Layout für das LCD Modul 1602A abändern.
Datum:
Angehängte Dateien:Anbei das Sprint-Layout des Transistortesters. Manfred
Datum:
Angehängte Dateien:Ich habe auch ein Layout für Sprintlayout anzubieten. Testfassung und Taster sitzen huckepack auf dem Controllerboard.
Datum:
Hallo! Ich habe mir das Programm auf mein Atmega8-Board geladen, das läuft allerdings mit 8 MHz. Ich habe das Programm mit dem define F_CPU=8000000 kompiliert, dann geht das LCD-Display, und ich kann messen. NPN wird beispielsweise erkannt. Allerdings werden Kapazitäten ca. mit dem Faktor 8-10 gemessen, und statt Widerständen erkennt das Programm eine winzig kleine Kapazität. Ich habe den Thread durchsucht, dazu aber nichts gefunden, daher die Frage: Geht das Programm auch mit 8 MHz, oder gibt es irgendwo Zeitschleifen, die anzupassen sind. Oder ist das Programm einfach auf 1 MHz ausgelegt? Danke für die Antwort!
Datum:
Erwin Unger schrieb: > Geht das Programm auch mit 8 MHz, oder gibt es irgendwo > Zeitschleifen, die anzupassen sind. Oder ist das Programm einfach auf 1 > MHz ausgelegt? Überall wo in main.c der Text "Schleife dauert 7 Zyklen" steht, ist diese Schleife für 1MHz berechnet. Daher der Messfehler bei 8MHz.
Datum:
Ist es denn wirklich sooooo viel Aufwand, den Mega8 für dieses Projekt mit 1 MHz (auslieferungszustand) laufen zu lassen? MfG
Datum:
Kluchscheißender Consulter schrieb: > Ist es denn wirklich sooooo viel Aufwand, den Mega8 für dieses Projekt > mit 1 MHz (auslieferungszustand) laufen zu lassen? Nein natürlich nicht. Da ich nur auch die delay-Funktion gefunden habe (da ja das define korrekt auswertet), war ich einfach nur nicht sicher, ob es an der Taktfrequenz liegt, dass ich falsche Ergebnisse habe. eku schrieb: > Überall wo in main.c der Text "Schleife dauert 7 Zyklen" steht, ist > diese Schleife für 1MHz berechnet. Daher der Messfehler bei 8MHz. Habe mir die Schleifen angeschaut, die auf Auswertung des defines für die Taktfrequenz umzustellen, ist nicht so einfach, sonst hätte ich gerne da bei dem Projekt weitergeholfen, aber das traue ich mir nicht zu. In Summe: danke für die Antworten, werde den Tester mit 1 MHz aufbauen. Finde das Projekt wirklich toll.
Datum:
...sagt mal, ist es ungefähr das was dieses Teil hier kann? http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=D12... Gruß, m
Datum:
maddin schrieb: > ...sagt mal, ist es ungefähr das was dieses Teil hier kann? > > http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=D12... Japp, schau mal hier: http://www.mikrocontroller.net/articles/AVR-Transi...
Datum:
Angehängte Dateien:Danke für das Projekt. Habe den Tester auch aufgebaut. Nie war Messen so einfach.... Für alle die ihn auch nachbauen wollen, stelle ich die Platine als PDF und Sprintlayout mit ein. Die Platine ist SMD-Frei.
Datum:
Hi, ich hab deinen Tester nachgebaut und ich muss sagen: Respekt! Super einfach und zugleich noch wahnsinnig vielseitig. Zwischen 2 und 3 misst meiner aber bei einer Diode einen Widerstand. Bei anderen Kombinationen nicht. Ist das normal? Was hab ich falsch gemacht? Mfg, Flo
Datum:
=> Eberl Florian: Probiere es mal mit der aktuellsten Firmware (http://www.mikrocontroller.net/attachment/75033/AV...). Die aus dem Artikel ist nämlich schon etwas älter, ich aktualisiere den Artikel demnächst mal wieder. Zumindest mit der neuesten Firmware sollte der Fehler bei der Dioden-Erkennung nämlich nicht passieren. Falls doch, ist vermutlich irgendwas an der Hardware nicht ok.
Datum:
Hallo Markus, was hältst Du von der Idee, beim Teststart in der zweiten Zeile - die ja leer ist, wenn in der ersten "Test läuft..." steht - noch die Versionsnummer und / oder Versiosdatum einzublenden? Die von Dir eben beigefügte Datei war nämlich neuer als die bei mir aufgespielte und so könnte man das noch vor einem Update leicht überprüfen (Oh, Version x.y; und was habe ich drauf? Ah, Update :-)) Einen Binärvergleich der Hex-/EEP-Dateien kann man zwar leicht machen, aber welche von beiden dann neuer ist, sieht man dann vermutlich auch nicht. Viele Grüße, Michael.
Datum:
Michael B. schrieb: > was hältst Du von der Idee, beim Teststart in der zweiten Zeile - die ja > leer ist, wenn in der ersten "Test läuft..." steht - noch die > Versionsnummer und / oder Versiosdatum einzublenden? Das ist eine gute Idee. Das werde ich einbauen, und dann den Artikel auch wieder auf den "neuesten Stand" bringen.
Datum:
Markus F. schrieb: > => Eberl Florian: > Probiere es mal mit der aktuellsten Firmware > (http://www.mikrocontroller.net/attachment/75033/AV...). > Die aus dem Artikel ist nämlich schon etwas älter, ich aktualisiere den > Artikel demnächst mal wieder. > Zumindest mit der neuesten Firmware sollte der Fehler bei der > Dioden-Erkennung nämlich nicht passieren. Falls doch, ist vermutlich > irgendwas an der Hardware nicht ok. ok, danke. Das wars. Die Firmware hab ich mir natürlich direkt aus dem Artikel gezogen.
Datum:
Was der DCA kann und dieser Tester nicht: Leckstrom von Transistoren. Dieser ist bei Germaniumtransistoren sehr sehr wichtig !!!
Datum:
DerTi schrieb: > Dieser ist bei Germaniumtransistoren sehr sehr wichtig !!! Nur Germaniumtransistoren sind heutzutage nicht mehr wichtig.
Datum:
Und meistens braucht man e nur wechselstrom. Warum werden Messgeräte für Gleichstrom gebaut???? -> Währe die gleiche Frage Germaniumtransistoren sind vor allem für Gitarreneffektgeräte sehr gern verwendete Transistoren. Wenn man den Leckstrom vom HFE nicht gegenrechnet, dann stimmt der HFE nicht. Über einem gewissen Leckstrom sind die Transistoren gar nicht zu gebrauchen. Ausserdem: Wenn man etwas altes herichten möchtet, dann bin ich mal gespannt, wie du ein komplettes Germanium Design in Silizium umbauen möchtest.
Datum:
Hi :) Ohne Studium des gesamten Threads und nur mit kleiner Schaltplanübersicht mal frei heraus eine Frage: Meine ganzen jetzigen und künftigen Messspielzeuge möchte ich via USB versorgen, dem ganzen Kram mit Batterie hier, Netzteil da, hier ne Buchse, da ne andere, dort ne neue Spannung, ..., kann ich nix abgewinnen. Was spricht dagegen, den Transistortester rein auf 5V Versorgungsspannung aufzubauen? Laut Schaltplan hängt an den +9V ja der 7805 dran, der ohnehin 5V +- n bisschen was an VCC des Atmegas gibt. Der Atmega 8L selbst läuft laut Datenblatt mit 2,7...5,5V. Schonmal prima (bitte korrigieren, wenn ich was übersehe!). PC5 schnappt sich über nen Spannungsteiler auch noch grob 2,2V, das wäre mit 5V-Versorgung bei geänderten Widerständen auch kein Problem. PC6 hängt über einen 10kOhm-Widerstand ohnehin an den 5V des 7805. Das Display hängt ebenfalls daran. ...also sehe ich nirgendwo die Notwendigkeit auf 9V Versorgungsspannung zu bauen. Ja? Nein? Andererseits gabs gegen 21. Nov 09 mal die Bedenken, dass es eher 6V sein sollten. Ist das "noch" aktuell, oder ist das ne Sache der Belastbarkeit der Spannungsversorgung, die bei nem 2A-USB-Hub ja sicherlich weniger das Problem ist? Besten Dank :)
Datum:
Hey Mathias B, die ganze Schaltung läuft mit 5V. Damit der 7805 seine 5V stabil regeln kann, braucht dieser ca +2-3V mehr. Also ca 7-8V Eingangsspannung. Wenn du eh den 5V USB Hub als Stromversorgung nehmen willst, dann würde ich alles rausschmeißen, was unnötig ist. Der 7805, die "Einschalt"-beschaltung, den Spannungsteiler für die Batterieversorgung etc. Dann noch im Quellcode alles anpassen und fertig ist der USB-Transistortester. Die Abschaltautomatik würde ich auch aus dem Quellcode werfen.
Datum:
Wenn man den Spannungsteiler für die Batterie-Versorgung rausschmeißt, dann muss auch der ADC-Pin (Pin 28) fest auf 5V gelegt werden. Damit meint der Tester immer, die "Batterie" wäre voll. Sonst kann es sein, dass der mit der Meldung "Batterie leer" gleich wieder abschaltet. Ohne Spannungsregler und Abschalt-Automatik müsste der Tester auch mit den 5V vom USB prima laufen. Der einzige Nachteil ist, dass USB nicht wirklich exakt 5V liefert, es können auch mal 5,7V oder 5,3V sein. Damit werden eben manche Messungen (z.B. Dioden-Durchlassspannung) ungenauer. Meistens stört das aber nicht.
Datum:
Hi, @Alex: Danke für die Doppelantwort :) Ist natürlich klar, dass der 7805 dann weder läuft noch gebraucht wird. Von der Schaltung bleibt da echt nicht mehr viel übrig...zwei Kondis, neun Widerstände, der Atmega und das Display... Alle Stromsparfeatures fliegen ebenso raus, warum auch hier und da ein mW sparen bei Netzbetrieb. @Markus: Geht klar. Spart auch wieder Bauteile und Platz g Ich habs eben mal bei meinem Hub nachgemessen, und auch bei meinem Laptop-Netzeil, das mir eigentlich meine RGB-Beleuchtung befeuert (das bietet zwei Anschlüsse, einen davon kann man auch mit nem USB-Adapter als 1A-Quelle nutzen). Leerlaufspannung liegt beide Male bei etwa 5,2V, damit hatte ich bei der Dimensionierung des Vorwiderstands für die Displaybeleuchtung schon als obere Grenze gerechnet...untere war 4,8V. Bei 0,4A Belastung sinken beide allerdings schon recht stark ab, das Hubnetzteil gurkt noch bei 4,5V, das andere eher bei 4,3V rum. Bei Belastung von etwas über nem Ampere geht dann auch das Hubnetzteil in die Knie und hat noch 3,5V. Nun wird der Transistortester selbst mit Displaybeleuchtung kaum in solche Regionen kommen (Imax sind dort afaik 220mA), aber wenn mal alles zusammen in Betrieb ist, sollte ich das vielleicht bedenken. Oder mir noch ein extrastarkes USB-Netzteil bauen ;) (vielleicht so als zusätzliche DC-DC-Einheit, das Lappinetzteil würde 90W bringen, die ich derzeit eh nicht mittels LEDs verbraten kann) Wo könnte so die untere Schmerzgrenze liegen?
Datum:
> Wo könnte so die untere Schmerzgrenze liegen? Das hängt davon ab, wie genau die Messungen sein sollen... Die Messung von allen Spannungen (also Dioden-Durchlassspannung und Transistor-Schwellspannung) ist auf jeden Fall betriebsspannungsabhängig: Also wenn eine Diode 0,75V Flussspannung hat, dann zeigt der Tester ca. 1V Flussspannung an, wenn die Versorgungsspannung vom Tester 4V statt der "korrekten" 5V ist. Und manche Leistungs-MOSFETs brauchen zum Teil 4...5V Gatespannung, um überhaupt etwas durchzuschalten und damit vom Tester erkannt zu werden. Bipolar-Transistoren und Logik-Level-FETs müsste man aber auch mit geringer Betriebsspannung noch problemlos erkennen können. Das Problem ist eher, dass die meisten HD44780-LCDs unter ca. 4...4,5V nicht mehr ablesbar sind, weil die Kontrastspannung zu niedrig wird. Also das Display lässt sich problemlos weiterhin ansteuern (das geht auch mit 3,3V noch), aber man sieht halt die angezeigten Zeichen nicht mehr. Das geht nur, wenn man an den Kontrastspannungs-Anschluss eine Spannung anlegt, die etwas unter GND liegt (z.B. -2V). Eben so, dass das LCD gut ablesbar ist.
Datum:
Hallo allerseits, durch einen Link im qrpforum.de (Amateurfunk) wurde ich auf diesen Transistortester aufmerksam. Das wäre eine große Bereicherung meines kleinen Messparks! Ist auch der Atmega 8L8 DIP (Low Power?) hierfür geeignet? Wenn ja, eine ganz bescheidene Frage: Könnte mir jemand diesen Atmega 8L8 programmieren? (Ich will nicht groß in die Atmegaprogrammierung einsteigen) Ich möchte mir die vereinfachte Version - ohne automatische Abschaltung - auf Lochrasterplatine aufbauen. Bei den wenigen Bauteilen wohl kein Problem. Gruß in die große Runde Winfried
Datum:
Wenn es dir aus Österreich nicht zu teuer ist. Schau mal auf www.schorsch.at
Datum:
Hi, @Markus: Flussspannungen ausmessen ist jetzt nicht so mein primäres Interesse, ebenso Leistungsmosfets. Andererseits dürfte die Sache ja tatsächlich mit einer belastbaren Stromquelle gelöst sein, wenns wirklich mal hoch hergeht. Das ist momentan noch nicht der Fall, aber ich werds mir merken. Das mit dem Displaykontrast wird man ebenfalls ausprobieren müssen, da ich bisher noch gar nicht mit Displays gearbeitet hab, und demnach auch keine Vergleichswerte kenne (und auch keins zum Testen da hab!). Auch da natürlich: Je stabiler man bei den 5V ist, desto problemloser. Ich sehs schon, irgendwann kreuz ich hier auf und such nach ner Netzteillösung, mit der man auch den kompletten Handypark einer mittelgroßen Firma zeitgleich laden könnte ;D @Winfried: Den Atmega 8L8 hatte ich auch vorgesehen, der müsste passen. Kommt mit einem größeren Spannungsbereich aus als der 16er, taktet aber eben auch nur mit bis zu 8 MHz. Hier kein Ding, da man den 16er wohl ohnehin bremsen oder Veränderungen am Skript vornehmen müsste. Was die Programmierung betrifft: Sofern du irgendwo noch auf einen nativen Parallelport zugreifen kannst, kommt dich der einfachste Programmer rein von den Bauteilkosten her auch kaum teurer als 1x Porto. Solltest du einfach bedenken, aber wenn dus natürlich fertig haben möchtest, wird sich wohl auch jemand dafür finden. Oder du nimmst die Schorsch-Version.
Datum:
Sollte jemand einen ATmega8A verwenden, dann nicht vergessen die Faktoren für die Kapazitätsmessung anpassen. Bei mir waren die notwendigen Werte weit neben den Standardwerten. unsigned int H_CAPACITY_FACTOR EEMEM = 250; unsigned int L_CAPACITY_FACTOR EEMEM = 172;
Datum:
Leckstromberechnung währe wirklich eine Bereicherung dieses Projektes.
Datum:
GermaniumFreak schrieb: > Leckstromberechnung währe wirklich eine Bereicherung dieses Projektes. Dann bau' es doch bitte ein. Oder benutze die Messmittel, die zur Germanium-Zeit aktuell waren. MfG P.S.: Ich gehe davon aus, dass Du den Leckstrom nicht berechnet, sondern gemessen haben willst. ^^
Datum:
hubertg bei mir auf ATMega8A die Kapazitäten misst in 1,5 Male grösser. Du kannst das korrigierte Durchnähen ausstellen?
Datum:
Das sind meine Werte: unsigned int H_CAPACITY_FACTOR EEMEM = 250; unsigned int L_CAPACITY_FACTOR EEMEM = 172;
Datum:
Ich kenne wo und, wie zu tauschen, deshalb nicht und ich bitte das fertige Durchnähen.
Datum:
In welcher Sprache soll ich es machen, es gibt: /* Sprache GERMAN = deutsch ENGLISH = englisch POLISH = polnisch CZECH = tschechisch SLOVAK = slowakisch */
Datum:
ENGLISH = englisch Am besten auf der englischen Sprache. Danke für die Hilfe.
Datum:
Angehängte Dateien:Heute hat - das Ergebnis selb der Kapazität in 1,5 Male grösser geprüft. FuseBits(PonyProg) wie auf der Zeichnung.
Datum:
Angehängte Dateien:Es tut mir leid, ich habe die falschen Files gepackt. Das sollten jetzt die richtigen sein.
Datum:
Hallo ! ich habe heute die Platinen aus dem Artikel Beitrag "Re: Transistortester mit AVR" erhalten und mache mich dann das WE ans aufbauen ! Bin mal gespannt, wie der "Transistortester mit AVR" läuft. Bei Bedarf kann ich noch eine Platine abgeben, FR4, einseitig, chemisch verzinnt.
Datum:
Hallo Peter, mein Login geht leider nicht mehr und auch das ändern des PW schlägt fehl. Bitte benutze diesen Link zur Kontaktaufnahme: http://fa-nwt.akadns.de/blogs/email/index.php?s=Tr... Danke.
Datum:
Ist jetzt schon die Leckstrommessung mit drinnen, damit man mit dem DCA55 mithalten kann?
Datum:
Angehängte Dateien:Moin moin, auch ich habe mir gestern die Zeit genommen den Tester einmal aufzubauen. Bei der Suche nach einem passenden Display vielen mir diese Mini-LCDs von Pollin in die Hände. Da ich auch schon einen RC5-Tester gebaut habe, kam mir die Idee beide Tester in einem Gehäuse unterzubringen. Herausgekommen ist dann dieses kleine Gerät auf dem Bild. Ich habe danach gleich angefangen die verschiedensten Bauteile durchzutesten. Bis auf wenige Ausnahmen wurde jedes Bauteil korrekt erkannt, wobei ich manchmal schon die Anschlüsse einmal durchtauschen musste, um ein brauchbares Ergebnis zu bekommen. Macht weiter so!
Datum:
Profi schrieb: > Ist jetzt schon die Leckstrommessung mit drinnen, Könntest Du vielleicht aufhören, unter verschiedenen Pseudonymen nach Deiner Leckstrommessung zu quengeln? Du führst Dich auf wie ein Kind im Supermarkt, das seinen Schokoriegel nicht bekommt. Du hast den Source, bau's ein.
Datum:
Hc Zimmerer schrieb: > Profi schrieb: >> Ist jetzt schon die Leckstrommessung mit drinnen, > > Könntest Du vielleicht aufhören, unter verschiedenen Pseudonymen nach > Deiner Leckstrommessung zu quengeln? Du führst Dich auf wie ein Kind im > Supermarkt, das seinen Schokoriegel nicht bekommt. > > Du hast den Source, bau's ein. Vielleicht kann der ja garnicht programmieren. Schon mal daran gedacht? Leckstrom währe wirklich nicht schlecht. Aber ob das ohne Referenz so einfach möglich ist, möchte ich mal bezweifeln. Dazu müssten schon mehrere Kalibrierwerte abgespeichert werden.
Datum:
DerdaOben schrieb: > Hc Zimmerer schrieb: >> Profi schrieb: Also Du selbst schriebst: >>> Ist jetzt schon die Leckstrommessung mit drinnen, >> >> Könntest Du vielleicht aufhören, unter verschiedenen Pseudonymen nach >> Deiner Leckstrommessung zu quengeln? Du führst Dich auf wie ein Kind im >> Supermarkt, das seinen Schokoriegel nicht bekommt. Da hat er recht! >> >> Du hast den Source, bau's ein. Das riet ich Dir auch schon. > > Vielleicht kann der ja garnicht programmieren. Schon mal daran gedacht? Aha, Du sprichst von Dir in der dritten Person. Du kannst also garnicht programmieren. Aber an Andere große Ansprüche stellen. Man könnte meinen, du könntest nur kluchscheißern, aber das ist mein Job, nicht Deiner, also pfusche mir bitte nicht ins Handwerk! > Leckstrom währe wirklich nicht schlecht. Das braucht heutzutage fast kein Mensch mehr, die Germanium-Zeit ist vorbei. Außerdem kann ich mir gut vorstellen, dass es Konflikte mit mit den anderen bereits implementierten Messverfahren geben könnte. > Aber ob das ohne Referenz so > einfach möglich ist, möchte ich mal bezweifeln. Dazu müssten schon > mehrere Kalibrierwerte abgespeichert werden. Eben, und deshalb sollte man wegen eines Features, das fast niemand braucht, die anderen bereits implementierten Features nicht gefährden. Und nein, Du bekommst den Schokoriegel nicht.... MfG
Datum:
Habe nichts mit den anderem Typen zu tun. Ich kann ihm auch nur raten, sich selbst etwas zu basteln. Dafür ist das Projekt ja offen.
Datum:
Angehängte Dateien:Das ist meine Variante des Transistortesters von Markus. Ich hatte noch ein 20x4 LC-Display und reichlich Li.Ion Akkus aus alten Laptops im Keller. Daraus ist dann dieser überdimensionale Tester entstanden, den man auch als Ziegel verwenden könnte :). Das Gehäuse besteht aus Leiterplattenmaterial. Die Akkuzellen (3s2p)(12.3V, 4.4Ah) werden einzeln überwacht. Der Tester wird mit einem 5V Stepdown-Wandler versorgt und braucht ca 0.8W bei eingeschaltetet Hintergrundbeleuchtung.


















































