OpenPnP-Fiduzialerkennung schlägt fehl: 5 Korrekturen, die tatsächlich funktionieren
Wenn OpenPnP die PCB-Fiduziale nicht findet, stoppt der gesamte Auftrag. Nachdem wir PikkoBot-Maschinen durch hunderte von Platinen geführt haben, sind dies die fünf Korrekturen, die nahezu jeden Fehler „Fiduzial nicht gefunden“ beheben.
1. Die Platinenoberfläche ist zu reflektierend
Glänzender Lötstopplack reflektiert das Ringlicht zurück in die Kamera und überstrahlt den Fiduzialkreis. Die Korrektur ist mechanisch, nicht softwarebasiert:
- Wischen Sie die PCB mit Isopropylalkohol ab, um Handhabungsrückstände zu entfernen.
- Bei Platinen mit glänzend grünem oder rotem Lötstopplack: Neigen Sie die Ringlichtquelle leicht mit einem dünnen Diffusorring (druckbar in PETG, ~30° Winkel).
- Reduzieren Sie die Belichtung der oberen Kamera um 20–30 % unter
Machine Setup → Cameras → Top Camera → Device Settings. Der Histogramm-Peak sollte bei etwa 60 % Helligkeit liegen, nicht bei 95 %.
Ein eindeutiges Anzeichen für dieses Problem: Die Erkennung funktioniert an den Ecken der Platine, schlägt jedoch in der Mitte fehl, wo die Reflexion am stärksten ist.
2. Die Schwellenwerte des Blob-Detektors in der Vision-Pipeline sind falsch
Die standardmäßige Fiduzialerkennungs-Pipeline von OpenPnP verwendet eine BlobDetector-Stufe mit konservativen Voreinstellungen. Für 1,0 mm Kupferfiduziale auf Standard-Lötstopplack funktionieren diese Voreinstellungen. Für alles Nichtstandardmäßige tun sie das nicht.
Öffnen Sie den Pipeline-Editor: Job → PCB Fiducials → Rechtsklick auf ein Fiduzial → Edit Pipeline.
Passen Sie diese Stufen in der folgenden Reihenfolge an:
| Stufe | Was zu prüfen ist | Typischer Wert |
|---|---|---|
ImageCapture | Kamera ausgewählt = Top Camera | — |
Threshold | thresholdValue entspricht der Helligkeit Ihres Lötstopplacks | 100–140 (grün), 60–80 (rot) |
BlobDetector | minArea und maxArea umfassen Ihre Fiduzialgröße in Pixel² | Für 1,0 mm Fiduzial bei 0,05 mm/px: ~400–2000 |
BlobDetector | minCircularity | 0,85 (gelockert für matte Platinen) |
MaskCircle | Suchradius um die erwartete Position | 20–40 px |
Klicken Sie nach jeder Änderung mit einem stillstehenden Platinenbild auf Process Pipeline, um zu sehen, was jede Stufe übersteht.
3. Die Kamera ist unscharf
Das Objektiv der oberen Kamera hat einen festen Fokusabstand, der während der Herstellung eingestellt wird. Wenn Sie ihn für die Bauteilvision (Näherfokus) angepasst haben, wird die Fiduzialerkennung auf PCB-Höhe unscharf erscheinen, und der BlobDetector wird die weichen Kanten zurückweisen.
Schnelltest:
- Fahren Sie die obere Kamera über ein Fiduzial.
- Beobachten Sie das Live-Bild – scharfe Kanten oder unscharf?
- Bei Unschärfe haben Sie zwei Optionen:
- Stellen Sie den Fokusring der Kamera auf Fiduzialhöhe ein (verringert die Schärfe für die Bauteilaufnahmeprüfung – normalerweise nicht empfehlenswert).
- Besser: Reduzieren Sie die
minCircularitydesBlobDetectorauf 0,7, um weichere Kanten zu akzeptieren, und verkleinern SieMaskCircle, um Fehlalarme zu kompensieren.
4. Die mm/Pixel-Kalibrierung ist abgedriftet
OpenPnP muss wissen, wie viele Millimeter ein Kamerapixel darstellt. Ist dieser Wert auch nur um 5 % falsch, wird das Suchfenster in MaskCircle nicht auf der tatsächlichen Fiduzialposition zentriert sein.
Kalibrieren Sie mit einer bekannten Referenz neu – einem Fiduzial, das Sie mit einem Messschieber vermessen haben:
- Legen Sie die Referenzplatine auf Höhe der Auflageplatte.
- Machine Setup → Cameras → Top Camera → Calibration → mm/Pixel Calibration.
- Folgen Sie dem Assistenten mit dem bekannten Fiduzialdurchmesser.
- Speichern. Führen Sie die Fiduzialerkennung erneut aus.
Symptom, das darauf hindeutet: Die Erkennung findet etwas, aber es ist durchgängig 1–3 mm vom tatsächlichen Fiduzial versetzt.
5. Das Fiduzial befindet sich nicht dort, wo OpenPnP es vermutet
Wenn Sie eine PCB importiert haben, die Fiduzialkoordinaten in der PCB-Datei jedoch nicht mit der physischen Platine übereinstimmen (z. B. falscher Ursprung, gespiegeltes Design oder die Platine wurde gedreht), sucht OpenPnP im leeren Raum.
Überprüfen Sie dies durch:
- Öffnen Sie die PCB-Datei in OpenPnP und notieren Sie die X/Y-Koordinaten des Fiduzials.
- Fahren Sie den Kopf manuell zu diesen Koordinaten.
- Betrachten Sie das Live-Kamerabild. Das Fiduzial sollte ungefähr zentriert sein.
Bei einer Abweichung um exakt die Breite oder Höhe der Platine liegt ein Ursprungskonflikt vor. Exportieren Sie die PCB erneut mit dem Ursprung auf dem unteren linken Fiduzial.
Kurz-Checkliste
Wenn die Fiduzialerkennung fehlschlägt, gehen Sie diese Liste durch:
- PCB mit IPA gereinigt
- Ringlicht zeigt nicht direkt in die Kamera
- Belichtung der oberen Kamera nicht maximal
- Vision-Pipeline
ThresholdundBlobDetectorim Pipeline-Editor überprüft - Kamera auf PCB-Höhe scharfgestellt
- mm/Pixel-Kalibrierung innerhalb des letzten Monats durchgeführt
- PCB-Dateikoordinaten mit der physischen Platine abgeglichen
Wenn Sie jeden Punkt abgehakt haben und es immer noch fehlschlägt, liegt das Problem meist am Lötstopplack selbst. Versuchen Sie eine andere Testplatine oder eine andere Fiduzialform (1,5 mm Kreis statt 1,0 mm).
Für eine Maschineneinrichtung, die ab Werk für die Fiduzialerkennung vorkalibriert ist, siehe die PikkoBot JUKI-Konfiguration – sie enthält eine abgestimmte Pipeline für standardmäßige grüne und schwarze Lötstopplacke. Für praktische Tests von Kamera und Beleuchtung außerhalb von OpenPnP verwenden Sie das PikkoBot Debug Tool.
