Fehlerbild: Verstellknöpfe sitzen fest, Objektivrevolver und Lichtfilter extrem schwergÀngig. Elektrischer Antrieb des Objektivrevolvers versagt.
Diagnose: Verharzt.
Reparatur (02/17): Alles auseinandernehmen, in Petroleum waschen, Optiken nicht waschen, leicht ölen, zusammenbauen, fertig.
Erneute Reparatur (08/17): Lampenkontakt abgefallen; neu angelötet.
Weitere Reparatur (09/17): Versteinerte GummifĂŒĂe, durch SchaumgleitfĂŒĂe ersetzt, aber das ist auf Dauer nicht die richtige Lösung, da GerĂ€t zu schwer. Neue FĂŒĂe sind aus POM zu fertigen:
Schrauben (M4Ă11 mit Bund â5,5Ă5 und Kopf â8,5Ă3) sind noch da.
Weitere Reparatur (02/19): Objektivrevolver und Querschieber etwas schwergĂ€ngig: Jammerndes MotorgerĂ€usch. Nochmal alles nachgeölt. Erst jetzt wurde sichtbar, dass das (schnell laufende) Zahnradgetriebe einen Ălnebel in der Optik produziert: Konstruktionsfehler und/oder Fett statt Ăl benutzen!
Fehlerbild: Kein Autofokus, Laser-LED aus. Kein VerstellgerÀusch.
Diagnose: 2 Sicherungen T1A in SteuergerĂ€t durchgebrannt (fĂŒr ±12 V). Motorantrieb fĂŒr Höhenverstellung fest sitzend. Eine Madenschraube (M2,5?) fiel aus dem GehĂ€use, kein passendes Gewindeloch gefunden. Antrieb auf Endlage festgebrummt, von Hand lösbar, dann leichtgĂ€ngig. Schrecklich viele Adern zum Laser. Funktionsprinzip der Fokusbestimmung unklar: Auf jeden Fall keine Bilderkennung.
Vermutung: Absturz des Controllerprogramms, das die Endschalter auswertet, lieĂ den Motor mit Vollgas ĂŒber den Endschalter fahren. Mechanische Begrenzung blockiert den Antrieb (Konstruktionsfehler). Stromaufnahme mit blockiertem Motor zu hoch, dadurch kommt eine Sicherung, danach sofort die zweite, da Zweiweggleichrichtung mit Mittelanzapfung (mehrere Konstruktionsfehler).
Funktionsprinzip: Diese alte Steuerung aus den 80ern verwendet keine VollbrĂŒcke und vmtl. kein PWM sondern einen Leistungs-OPV (wie LM165) und symmetrische Speisespannung, auf ±12 V stabilisiert. Funktion der Tasten v.l.n.r.:
Der Stellweg fĂŒr den Tisch betrĂ€gt schĂ€tzungsweise 1 mm.
Reparatur (06/17): Motor von Endlage freidrehen, Sicherungen ersetzen.
Zum Mikroskop Leitz Ergolux AMC
Fehlerbild: Lampe flackert. Mikroskopieren unertrÀglich. Zeiger des Voltmeters zittert entsprechend. Auch ohne Lampe, ohne Last.
Diagnose: GehĂ€use war verkehrtherum zusammengeschraubt (FĂŒĂe oben). GroĂer Trafo, dahinter Triac-Steller mit Ansteuerschaltkreis Telefunken U111B. Elko 10 ”F / 40 V hat KapazitĂ€tsverlust auf 2 ”F. Das ist alles. Zum Testbetrieb ist nunmehr eine Mindestlast erforderlich, sonst zĂŒndet der Triac in einer Halbwelle nicht durch; Traforattern durch Gleichstrom.
Sieht aus wie ein Mikroskop, ist jedoch ein Raman-Spektrometer. Vielleicht das hier.
Es soll motorisiert und damit automatisiert werden:
Zur Auswahl kommen 2 Servomotoren und 1 Getriebe-Schrittmotor 64:1, dazu 2 ZahnrĂ€der und 2 IMHO unsinnige Kugellager. Und ein Arduino Pro Micro zur Steuerung vom PC. Alles von Eckstein. Pfostenstecker und -buchsen, einen ULN2003 sowie eine Lochrasterplatte hat der Bastler vorrĂ€tig bzw. anderswo vorsorglich abgeschrottet. Auf dem Arduino wird die 5-V-LötbrĂŒcke J1 geschlossen. Somit kommt die 5 V vom USB auf dem UCC-Anschluss des Arduinos heraus, ĂŒber eine (auf dem Arduino befindliche) selbstrĂŒckstellende Sicherung 500 mA. Das reicht fĂŒr die Motoren geradeso aus. Externe StĂŒtzkondensatoren erspare ich mir hier, da es keine taktempfindliche Logik gibt.
Software:
Verwendung: Die Software generiert ĂŒber USB eine serielle Schnittstelle, sogenannt USB-CDC. Damit das unter Windows funktioniert, muss eine INF-Datei die Verbindung zwischen USB-CDC und einem COM-Port herstellen. Am besten mit der o.a. INF-Datei. Unter Linux geschieht das ohne weiteres Zutun.
Die Steuerung der beiden Servomotoren und des Schrittmotors geschieht ĂŒber zeilenweise ASCII-Daten, etwas angelehnt an SCPI, nach folgender Tabelle:
Sendedaten | Antwort | Kommentar |
---|---|---|
*IDN? | Firmwarebezeichnung und Datum | "IDN?" wird ignoriert, die Firmware wertet nur den Stern aus |
? | pos0,pos1,pos2 | Alle 3 Istpositionen in der Reihenfolge vorderer Servomotor, hinterer Servomotor, Schrittmotor |
Mindex,position[,richtung+geschwindigkeit] | - |
Index 0 = vorderer Servomotor, 0..4400 (Konstante MAXSERVO)
Index 1 = hinterer Servomotor, 0..4400 Index 2 = Schrittmotor, 0..20479 (Konstante N-1) EnthÀlt position ein Vorzeichen, gibt dies den Verfahrweg an.
Dieser darf gröĂer als 20479 sein; dann werden mehrere UmlĂ€ufe generiert.
|
W | OK |
Wartet auf das Ende der Schrittmotorbewegung und schickt dann das OK.
Bei stehendem Motor wird sofort OK geantwortet. |
Z | - | Setzt die momentane Schrittmotorposition auf Null, ohne den Motor zu bewegen. |
H | - | HĂ€lt den Schrittmotor an. Steht dieser bereits, passiert nichts. |
alles andere | Error kode | Fehlermeldung. Kodes siehe Quelltext. |
Und so etwa kann es in Matlab angewendet werden (siehe Doku):
com=serial( 'COM4'); fopen(com); % Schnittstelle öffnenfprintf(com, 'M0,%d\n',[04400 ](bf)); % Fahre vorderen Servomotor (brightfield) zu einem der beiden EndanschlĂ€gefprintf(com, 'M1,%d\n',[04400 ](cbs)); % Fahre hinteren Servomotor (camera beam splitter) zu einem der beiden EndanschlĂ€gefprintf(com, 'M2,%d\n',newpos); % Fahre Schrittmotor (polarization) zu "newpos"fprintf(com, 'M2,%+d\n',delta); % Bewege Schrittmotor um "delta" Schritte vor oder zurĂŒckfprintf(com, '?\n');A = fscanf(com, '%i,%i,%i',[31 ]); % Positionen abfragen (ungetestet!)
Die Firmware akzeptiert als Zeilenende sowohl "\n" als auch "\r" als auch "\r\n". Dabei ist "\n" das gĂ€ngigste und unter Linux ĂŒblich (und ausreichend), wĂ€hrend ein Terminal "\r" bei der Entertaste generiert â konfus.
Probeweise kann putty zum Herumspielen verwendet werden. Dabei sollte das Terminal mit eingeschaltetem lokalen Echo und lokalen Zeileneditor vorkonfiguriert werden. Ein ZurĂŒckholen vorausgehender Zeilen ist damit leider nicht möglich.
Das Anspringen des Arduino-Urladers (Kommando BL) klappt nicht. Auch funktioniert es nicht, avrdude mit einer elf-Datei zu fĂŒttern: avrdude programmiert zwar irgendetwas, aber das Programm kommt nicht an. Also doch der alte Umweg ĂŒber die HEX-Datei und avr-objcopy.
Hardware: Der Anbau der Servomotoren erfolgt zweckmĂ€Ăigerweise mit einem KurbelgestĂ€nge, nicht nach dem Prinzip Scheibenwischer. Da die Servoarme sich etwa 180° bewegen, können gerade in den Endlagen enorme Schub- bzw. ZugkrĂ€fte erreicht werden. Dazu muss der Arm der Servos (d.h. das Loch fĂŒr den Pleuel) auf 23 mm bzw. 13 mm verlĂ€ngert werden, ein Fall fĂŒr den 3D-Drucker. Am Bedienteil wird ebenfalls ein 3D-gedrucker Adapter aufgesetzt, der das andere Loch bietet. Dazwischen ein steifer Draht als Pleuel, fertig.
So sieht's aus (ungelistetes YouTube-Video, 9 Sekunden)
ZustÀndig:
Etwa wie soeben, aber ohne Schrittmotor.
Diesmal ist das Board ein
Pro Micro 8 MHz mit 3,3 V. Ein Bestell-Unfall? (Von mir verursacht.)
Wurde auf 5 V umgefrickelt: BrĂŒcke gebrĂŒckt; Firmware umgestellt.
Diesmal ist der zweite Servo ein
Umlaufservo.
Ein Bestell-Unfall?
Mit der Firmware ist die erprobte Ruhe-Mittelstellung des Umlaufservos bei 190. 0 ergibt maximale Drehzahl rechtsherum, 400 linksherum. Die Zahlenwerte sind diesmal exakt Mikrosekunden PulslĂ€nge fĂŒr die Servos, bei einer Wiederholperiode von 20 ms.
Der groĂe Servomotor links im Bild oben wurde verworfen und zurĂŒckgeschickt.
Dimmen einer Laserdiode aus einem Laserpointer. NatĂŒrlich auch mit einem Arduino und PWM. Da man das Datenblatt einer x-beliebigen Laserdiode aus einem x-beliebigen Laserpointer nicht bekommen kann, erst mal ein Datenblatt als Groborientierung. Daraus ergeben sich folgende (sinnvollen) Betriebswerte:
Daher genĂŒgt fĂŒr einen 5-V-Arduino ein Vorwiderstand von (4,2 V â 2,1 V) Ă· 20 mA â 100 âŠ, um den Maximalstrom nicht zu ĂŒberschreiten. Ăberwacht man den Fotostrom mit einem 10-kâŠ-Widerstand an einem A/D-Wandler, ist die maximale Analogspannung 0,3 mA Ă 10 k⊠= 3 V.
Der tatsĂ€chliche Laserpointer leuchtet auf Papier blau und auf sonstigen FlĂ€chen violett und schluckt bei 3,2 V 230 mA. Das erfordert (zumindest) einen Transistor: Ein BC337 wurde als Emitterfolger mit Vorwiderstand 3,9 ⊠an den Laserpointer angeschlossen, siehe Bild. Frank Philippczyk hat dafĂŒr einen hĂŒbschen Batterieadapter kreiert.
Achtung! Die beiden Metallteile des Laserpointers liegen auf (geschaltetem) Plus-Potenzial! Der Transistor und der Vorwiderstand schwÀcht die Wirkung eines Erdschlusses. Das ist so beabsichtigt.
com=serial( 'COM4'); fopen(com); % Schnittstelle öffnenfprintf(com, 'M2,%d\n',0 ); % Laser ausfprintf(com, 'M2,%d\n',1000 ); % Laser einfprintf(com, 'M2,%d\n',500 ); % Laser halbfprintf(com, '?\n');A = fscanf(com, '%i,%i,%i,%i',[41 ]); % Istwerte abfragen (ungetestet!) - letzter Istwert vom Fotodetektor
Der Laser wird in Promille angesteuert: 0 = aus und 1000 = ein. Zwischenwerte aktivieren den PWM-Generator an Timer4 mit 8 kHz Wiederholfrequenz bzw. 125 ”s Wiederholrate. Jeder Schritt entspricht einer ImpulsverlĂ€ngerung um 125 ns entsprechend der Quarzfrequenz 8 MHz. Der Timer4 könnte auch von der 64-MHz-PLL gespeist werden, wenn die Impulse bei der Messung stören sollten. Der Emitterfolger scheint zudem recht trĂ€ge zu sein. Ăber dem 3,9-âŠ-Widerstand wurde eine Spannung von knapp 1 V gemessen, somit stimmt der Strom von 250 mA.
Mit Fotodiode OSD5.8-7Q (jaja, irrsinnig teuer) im Kurzschlussbetrieb und I/U-Wandler zum Eingang ADC11 = PB4. Als OperationsverstÀrker kam ein vorgefundener Rail-To-Rail-Typ OPA347 zum Einsatz. Ein billiger LM358 tÀte es hier aber genauso.
Ein steckbarer Widerstand legt die Steilheit des I/U-Wandlers fest. ZurnĂ€chst waren es 470 k⊠fĂŒr Umgebungslicht. Bei Laserbeschuss sind nun 1 k⊠richtig fĂŒr nahezu Vollausschlag. Höhere Werte machen den Lichtdetektor empfindlicher. Maximal vertrĂ€gt der A/D-Wandler 2,56 V (= innere Referenzspannung). Da 10 Bit zu knapp erscheinen, werden 64 Messwerte akkumuliert, bevor sie ausgegeben werden. Daher ist der maximal mögliche Messwert 1023Ă64 = 65472. Der Zusammenhang zwischen LichtstĂ€rke und Messwert sollte linear sein. Wie das bei ungleichmĂ€Ăiger Lichtverteilung auf der SensorflĂ€che aussieht kann ich nicht sagen. Das Datenblatt dazu ist ohnehin unter aller Kanone. Der I/U-Wandler sollte jedoch fĂŒr perfekte Lichtintegration (bezogen auf die SensorflĂ€che) sorgen, da der Quasikurzschluss Irrströme durch Dunkelbereiche der SensorflĂ€che verhindert.
Neu hinzugekommen ist eine Advise-Funktion, die DdeAdvise entspricht: Das Kommando A (âadviseâ) schaltet diese Funktion ein, das Kommando U (âunadviseâ) aus. Bei eingeschaltetem Advise spuckt der A/D-Wandler mit rund 75 Sa/s stetig Messwerte zeilenweise in ASCII aus. Die genaue Rate ist 8 MHz / 128 / 13 / 64 = 75,1202 Sa/s.
ZustÀndig:
Meldung: Netzteil-LĂŒfter macht KlappergerĂ€usche. In der Netzteil-Box, die 3 Netzteile enthĂ€lt. (Puh! Wer macht denn sowas? Deswegen ĂŒberholen uns die Chinesen.) (Kein Intrusion-Kontakt. Box an Wand per SchlĂŒssellöcher eingehĂ€ngt.) Alle 3 Netzteile liefern 2Ă 15 V, 24 V und 5 V in unterschiedlichen StromstĂ€rken und werden angeblich bei Bedarf (Maschinenstatus) zugeschaltet.
Ursache: Ăl, oder eben kein Ăl; Staub und Dreck. Typ: ebmpapst 40 Ă 40 Ă 19 mmÂł, 12 V= 80 mA 1 W (2 StĂŒck) im sog. Standby-Netzteil. Ersatzbeschaffung angeraten.
ZustÀndig: