Autor Thema: Aufbau zur Steuerung eines motorisierten xy-Mikroskoptischs.  (Gelesen 260 mal)

Stuessi

  • Member
  • Beiträge: 726
Aufbau zur Steuerung eines motorisierten xy-Mikroskoptischs.
« am: November 15, 2021, 18:47:03 Nachmittag »
Hallo,

vor einiger Zeit konnte ich für wenig Geld einen praktisch unbenutzten motorisierten xy-Mikroskoptisch erwerben. 
Der Tisch ist etwas mehr als 30 Jahre alt und wurde nur wenige Jahre an einem Leitz Metalloplan 6x6 oder Ergolux Mikroskop bei der optischen Prüfung von bis zu 6 Zoll großen Wafern in einem Reinstraum eingesetzt.
 








Ein programmierbares Steuergerät SCAN 2000 ermöglichte das automatische Abfahren vorgegebener Bereiche des Wafers. Das für einen Prozessor CA80C85B-5CP geschriebene Programm befindet sich in einem EPROM TMS27C512-15 mit dem aufgeklebten Prüfdatum 29.12.1987. Anfragen bei Leitz waren ergebnislos: "Es existieren keine Unterlagen". Da ich dieses Programm weder lesen noch ändern kann, habe ich versucht, den Tisch mit einem Fischertechnik Controller zu steuern.
 
In x- und in y-Richtung lässt sich der Tisch um jeweils 150 mm verschieben.  Die Spindeln besitzen eine Ganghöhe von 1 mm / Umdrehung. Durch vorsichtiges Testen gelang mir eine Zuordnung der vielen Steckerkontakte:
2 Kontakte für den 12 V Gleichstrom Motor
2 Kontakte für den Tachogenerator (Drehrichtung und Geschwindigkeitsmessung)
4 Kontakte für die Endtaster
4 Kontakte für den Encoder (500 H- oder L-Impulse pro Umdrehung)

Schon 2,5 V bis 5 V Spannung reichen zum Betrieb eines der beiden Motoren. Man erreicht dann eine Verschiebung mit einer Geschwindigkeit von bis zu 50 mm/sec.
 

Das ft-Duino Interface liefert an den Motorausgängen keine kontinuierlich einstellbare Gleichspannung, sondern eine zerhackte „Gleichspannung“  (PWM-Signal). Einstellwerte ab etwa „70“ bewegen den Tisch sehr langsam und rucklig, ab  etwa „150“ nimmt er schon „volle Fahrt“ auf. Leider ist das Auslesen der Encodersignale durch das Ruckeln mit einem deutlichen Fehler behaftet  und bei voller Fahrt ist der Counter bei ca. 50.000 Impulsen pro sec natürlich überfordert.
Ich habe deshalb zwischen Encoder und Counter zwei einstellbare Frequenzteiler (SN74LS29x) geschaltet.
 




Bei schneller Bewegung des Tischs wird jeder 128-ste Impuls vom Counter an C1 und C2  gezählt, das entspricht einer Bewegung um etwa 1/8 mm. Bei ganz langsamer Bewegung können an C3 und C4 die Encodersignale direkt gezählt werden.
Die Endtaster sind mit I1 .. I4 verbunden.
Weiter habe ich ein Robo-Interface an den TX-Pi (2) angeschlossen, um  mit der IR-Fernbedienung  zu steuern.

Gruß,
Rolf



A_Wedemeyer

  • Member
  • Beiträge: 38
Re: Aufbau zur Steuerung eines motorisierten xy-Mikroskoptischs.
« Antwort #1 am: November 15, 2021, 19:02:21 Nachmittag »
Hallo Rolf,

da nimmst Du mir ja einige Arbeit ab  :)
Magst auch die Pinbelegung der Stecker und Deine Programmierung mit uns teilen?

Viele Grüße
Axel

Stuessi

  • Member
  • Beiträge: 726
Re: Aufbau zur Steuerung eines motorisierten xy-Mikroskoptischs.
« Antwort #2 am: November 16, 2021, 09:10:08 Vormittag »
Hallo Axel,

dies sind meine neuesten Erkenntnisse zu den Anschlüssen bei meinem motorisierten Tisch,
dazu habe ich mir die Steuerplatine MST1 im Steuergerät Scan2000 von Leitz genauer angeschaut.





Viel Erfolg wünsche ich Dir bei Deinem Projekt!
Berichte mal darüber.

Gruß,
Rolf
« Letzte Änderung: November 16, 2021, 09:23:14 Vormittag von Stuessi »

Stuessi

  • Member
  • Beiträge: 726
Re: Aufbau zur Steuerung eines motorisierten xy-Mikroskoptischs.
« Antwort #3 am: November 16, 2021, 17:59:40 Nachmittag »
Hallo,

zunächst noch ein Stereo-Bild meiner Steuerung:



Das Steuerprogramm ist mit StartIDE (1) auf dem TX-Pi (3) geschrieben worden.

(1) https://forum.ftcommunity.de/viewtopic.php?f=33&t=4588
(2) https://forum.ftcommunity.de/viewtopic.php?f=8&t=4597
(3) https://github.com/harbaum/tx-pi

Hier ein kleiner Einblick in das Programm:

Zunächst werden alle Variablen initialisiert.


9   Init menu 1
10   Init faktor 2
11   Init v_min 90
12   Init v_max 180
13   Init v 95
14   Init delta_v 0


Es  folgt  eine Kontrolle der Counter.  Dazu werden in x- und in y- Richtung die beiden Motoren  für 10msec  eingeschaltet und die vorher auf Null gestellten Counter ausgewertet. 
 
65   Call Counter-Test 1

440   Module Counter-Test
441   #
442   Tag Counter_Test_x
443   #
444   CounterClear FTD 3
445   Init counter_x 0
446   # kurzer Motorimpuls
447   Motor  FTD  1  l  100
448   Delay  10
449   Motor  FTD  1  s  0
450   # Counter 3 am Anschluss vor Frequenzteiler
451   FromIn  FTD  3  C  counter_x
452   QueryVar counter_x
453   IfVar counter_x > 0   Counter_Test_y
454   Message   kein Counter_x!'bitte pruefen!
455   Clear
456   Jump   Counter_Test_x
457   Tag Counter_Test_y
458   CounterClear FTD 4
459   Init counter_y 0
460   # kurzer Motorimpuls
461   Motor  FTD  2  l  100
462   Delay  10
463   Motor  FTD  2  s  0
 464   # Counter 4 am Anschluss vor Frequenzteiler
465   FromIn  FTD  4  C  counter_y
466   QueryVar counter_y
467   IfVar counter_y > 0   Counter_Test_Ende
468   Message   kein Counter_y!'bitte pruefen!
469   Clear
470   Jump   Counter_Test_y
471   Tag Counter_Test_Ende
472   MEnd
473   #

Anschließend fährt der Tisch in x- und y- Richtung die Endschalter an, bestimmt den Mittelpunkt des Tisches und fährt diesen an  (403 und 431). Diese Position wird in mm angezeigt (407 und 437).
 
70   Call endtaster 1



Es folgt das Hauptmenue:

 
73   Tag mainloop
74   Init ir 0
75   FromButtons menu Startpunkt Endpunkt Meander Foto Parameter my-Steuerung
76   IR-Fernbedienung STOP
77   IfVar menu == 1 Startpunkt
78   IfVar menu == 2 Endpunkt
79   IfVar menu == 3 MEANDER
80   IfVar menu == 4 ein_Foto
81   IfVar menu == 5 Parameter
82   IfVar menu == 6   my-Steuerung
83   IfVar menu == 7 IR-Steuerung
84   Stop
85   #


 
86   Tag Startpunkt
87   #
88   Init x_neu meander_x0
89   Init y_neu meander_y0
90   #
91   # Startposition des Meanders
92   #
93   FromDial x_neu x0 x_max x_start
94   FromDial y_neu y0 y_max y-start
95   # fahre zum Startpunkt
96   Call fahre-xy_neu 1
97   Init meander_x0 x_neu
98   Init meander_y0 y_neu
99   Jump  mainloop
100   #


Gruß,
Rolf





« Letzte Änderung: November 16, 2021, 18:06:52 Nachmittag von Stuessi »