Laser exposer
Laser exposer Release status: stable [box doku] | |
---|---|
Description | Scanning laser exposer that exposes pcbs for etching |
Author(s) | Tixiv |
Last Version | V1.0 () |
Platform | AVR (ATmega32/ATmega8) |
Download | Software: GitHub |
Hardware[Bearbeiten | Quelltext bearbeiten]
Materials[Bearbeiten | Quelltext bearbeiten]
I made the hardware mainly from stuff I had laying around (for the Germans: Edelschrott) but also from some stuff I had to buy specially for this project.
- flatbed scanner (for the base and vertical transport)
- polygon mirror and laser assembly from Kyocera F1200 printer (not the FS1200, the F1200 is a very old model. It belonged to my father in the 90's).
- 1W 450nm blue Laser diode from ebay (40 Bucks) to replace the infrared one in the printer's assembly.
- laser housing and glass lens from ebay (15 Bucks)
- Thermal paste to mount the laser diode
- Aluminium block to mount and cool the laser housing
- Powersupply from old external Harddisk 12V/2A
- Materials and Parts to make the two microcontroller PCBs (20 Bucks, some junked Parts reused)
- Wood to make the Case
How it works[Bearbeiten | Quelltext bearbeiten]
The polygon mirror assembly is mounted vertically on the flatbed scanners sled. The flatbed scanner sled is the Vertical axis, and the polygon mirror deflecting the laser in the scanner is the horizontal axis. Each Horizontal line is scanned about 150 times before the sled moves on to the next vertical position. The laser is scanned by the mirror continually at 55 Revolutions of the mirror per second, or 333 Hz scanrate, as the mirror is hexagon shaped. The exposure pattern is produced by turning the laser on and of synced to the rotation of the mirror.
There are two microcontroller boards used. One is a digital servo speed controller for the polygon mirror motor. It just runs the motor up to the exact speed when requested, and sends a servo locked signal while the motor is at the correct speed.
The other Board is the main board, which has the current source to control the Laser, and a driver for the stepper motor. This Board is connected to the PC through an UART. The PC instructs the machine what to do. The PC can tell the main board to start the scanner and run the stepper to a specific position, and transfer data for scanlines, one line at a time. Each scan line is scanned about half a second, and then the PC tells the stepper to move on one position, and sends the data for the next scanline. During the half second, the line is exposed about 150 times.
Optics[Bearbeiten | Quelltext bearbeiten]
The original laser in a laserprinter is infrared, and that wavelength doesn't work for exposing pcbs. I removed the infrared laser, and mad-engineer helped me to make a nice aluminium laser mount, and mill down the mirror assembly to fit it. As the lenses in the polygon mirror assembly had the wrong optical properties for my application (different wavelength and different focusing distance), I removed them all. The optical system now consists only of the laser, its focusing lens, and the polygon mirror. There is one problem with this: as the beam length varies with the angle of the deflected laser beam, the focus of the laser lens would also have to be adjusted for each beam length. As this isn't done, the laser gets blurry at the ends and the middle of the scanline. But this is not a problem in practice, as the image gets sharp enough.
Electronics[Bearbeiten | Quelltext bearbeiten]
Main Board[Bearbeiten | Quelltext bearbeiten]
The main board controls the laser and the stepper motor. It has an atmega32 microcontroller as brain. The laser is driven by a current source made from transistors, and the stepper motor of the flat bed scanner is driven by an uln2803. it runs on a 12V power supply, and makes 5V for the microcontroller with a 7805.
Motor Controller Board[Bearbeiten | Quelltext bearbeiten]
Datei:Scanner head schamatic.pdf
The motor controller has an attiny2313 microcontroller, and it's own 78L05 to make a stable 5V supply (using the one from the cable would lead to instability, as the GND current varies in the cable because of the motor). I reverse engineered the interface to the polygon mirror motor. It has 12V powersupply, a speed control pin, which accepts a strange range of voltages, and a symmetrical frequency generator output (FG). This output is a zig zag shaped induction loop around the motor, which generates a feedback frequency of how fast the motor is going. This is fed to the AVR's analog comparator. The microcontroller locks this signal to a reference frequency of 2kHz, which yields 55.555555555555... rotations of the motor per second, and 333.333333...Hz scanrate.
HowTo[Bearbeiten | Quelltext bearbeiten]
Achtung: Schlitten nicht per Hand verfahren!
Platinengröße: max. 160 x 100mm (Europlatine)
Layout exportieren[Bearbeiten | Quelltext bearbeiten]
- Text ins Layout einfügen z.B. Zweck, Ersteller, Datum
- Zu druckende Layer auswählen mit Dimension
- drill-aid.ulp ausführen
- Datei --> Drucken
- Drucker: In Datei (PDF)
- Optionen
- Spiegeln, wenn Buttom-Layer geätzt werden soll
- Drehen, so dass das Layout aufrecht steht (Höhe > Breite)
- Schwarz
- Gefüllt
- Bildüberschrift: Nicht ausgewählt! (Wichtig, da das Programm das umgebende Rechteck auswertet)
- Skalierungsfaktor 1
Belichten[Bearbeiten | Quelltext bearbeiten]
- Gerät einschalten
- Software starten am besten die Python-Variante pyExposerControl
- File --> Open: Vorher erstellte PDF öffnen
- Rotation: Drehen des Layout in Grad (gegen den Uhrzeigersinn)
- Upper / Right margin: Abstand zwischen Layout und Rändern einstellen
- Nutzen erstellen
- X/Y Copys: Anzahl der Kopien in die jeweilige Richtung
- X/Y spacing: Abstand zwischen den einzelnen Kopien
- Einstellungen müssen mit Apply übernommen werden.
- Die Größe der Platine unter size überprüfen
- Delay einstellen
- 500 mit Bungard-Basismaterial: Überbelichtet
- 300 mit Bungard-Basismaterial: Gut belichtet, jedoch auf werden die Freiflächen etwas angeätzt. (Vielleicht ist der Standby-Strahl zu stark). Vielleicht könnte man schneller belichten.
- 250 mit Bungard-Basismaterial: bei dünnen Strukturen überbelichtet
- 120 mit Bungard-Basismaterial: bisher bestes Ergebnis
- 100 mit Bungard-Basismaterial: leicht unterbelichtet
- 80 mit ProMa Hartpapier: bisher bestes Ergebnis
- Platine an den Anschlag hinten rechts anlegen.
- Deckel schließen
- GO klicken
- Belichtung läuft
- Wird die Klappe geöffnet, stoppt die Belichtung und wird nach schließen fortgesetzt. Achtung Platine könnte sich durch Erschütterung verschieben beim Öffnen.
- Der bereits belichtete Bereich wird in der Software rot dargestellt. (Nur in den weißen Bereichen sichtbar)
Doppelseitige Platinen erstellen (Beta, Änderungen vorbehalten)[Bearbeiten | Quelltext bearbeiten]
Doppelseitige Layouts sollten kein großes Problem darstellen, allerdings müssen ein paar Sachen beachtet werden:
- Das Basismaterial ist nie perfekt in einem rechten Winkel geschnitten
- Ein paar Messungen ergaben, dass die Längen- und Breitenmaße des Basismaterials (nicht der Kupferfläche) im Rohzustand um ~1 Millimeter vom angegebenen Wert abweichen kann, meist sind sie größer
- Man sollte immer eine Bezugskante wählen, die beim Umdrehen an der gleichen Stelle bleibt (vorzugsweise eine lange Seite rechts im Exposer)
- Der Exposer arbeitet sehr präzise. Er erzeugt einen Winkelfehler von 0,1° und hat einen Längenfehler von ca. 0,332% (z.B. 120mm im Layout werden auf der Platine zu 120,4mm). Treten starke Fehler von mehreren Millimetern auf, ist i.d.R. nicht das Gerät schuld ;)
- Das Layout der unteren Platinenfläche (BOTTOM-Layer) muss bei den folgenden Schritten vertikal gespiegelt werden! Oben wird Unten, Links und Rechts bleiben gleich!
Empfohlende Vorgehensweise (Platine ist so groß wie das Layout)
- Eine lange Kante auf beiden Seiten mit einem Stift auf der Schutzfolie markieren
- Die Länge der Platine möglichst exakt messen (1/10 Millimeter sollte die Genauigkeit schon sein)
- Es zählt das größte Maß, also sowohl die markierte Kante sowie die gegenüberliegende, lange Kante messen (angenommen werden im Beispiel hier 161 statt 160 Millimeter)
- Die Differenz von SOLL- zu IST-Maß wird durch 2 geteilt: 1mm / 2 = 0,5mm (für andere Maße gleich verfahren, aber natürlich mit den von dir gemessenen Werten ;) )
- Erste Seite: die Platine mit der markierten Kante rechts möglichst exakt andrücken und nach oben schieben
- In der Laser Exposer Software einen Offset von 0,5 nach unten angeben (Y-Achse)
- Belichten
- Zweite Seite: Die Platine kopfüber umdrehen und mit der markierten Kante wie mit der ersten Seite verfahren
- Das Layout für die Unterseite laden (muss vertikal gespiegelt worden sein!)
- Wieder den errechneten Offset für die Y-Achse eingeben
- Belichten
Layout ist kleiner als die Platine Angenommen wird für das Beispiel eine Platine mit der realen Größe 76 x 101mm und ein Layout von 20 x 50mm:
- Wie bei der ersten Vorgehensweise eine lange Kante auswählen und beidseitig markieren
- Beide Seiten werden wie in der ersten Variante belichtet, allerdings wird dem Y-Offset jeweils die Hälfte der Layoutlänge beigefügt:
- Y-Offset = Offset_Platine + (Höhe_Layout / 2)
- Ergibt folgende Rechnung: 0,5mm + (50mm / 2) = 25,5mm
- Bei dieser Methode wird nicht beachtet, dass man den Rest der Platine noch effektiv nutzen möchte.
Anmerkung: Bei Europlatinen müssen die meisten Messschieber leider passen, da sie meist nur bis ungefähr 150 Millimeter messen können. In so einmal Fall kann man die Platine einscannen und z.b. in Gimp exakt ausmessen. Nützlich ist es dabei z.B. ein Geodreieck zu scannen und als Vergleichsmaß zu verwenden.