AOI (Automated Optical Inspection) to zautomatyzowana inspekcja optyczna, stosowana w przemyśle do kontroli jakości wytwarzanych produktów na dużą skalę. Systemy tego typu wykorzystują kamerę oraz algorytmy analizy obrazu do wykrywania elementów elektronicznych, sprawdzania poprawności ich montażu i wychwytywania nieprawidłowości, takich jak brakujące komponenty, błędy lutowania czy niepoprawny stan pracy układu. Zastosowanie AOI pozwala przyspieszyć kontrolę, zwiększyć jej powtarzalność i ograniczyć błędy charakterystyczne dla inspekcji ręcznej. W przedstawionym projekcie koncepcja AOI została wykorzystana do lokalizacji komponentów na płytkach drukowanych PCB. 

Rys. 1. System automatycznej optycznej inspekcji (AOI) komponentów THT na płytkach drukowanych 

Wykonana makieta stanowi demonstracyjne stanowisko testowe z miniaturowym taśmociągiem, po którym transportowana jest płytka PCB z prostym przerzutnikiem astabilnym, gdzie poprzez zasilanie płytki PCB uzyskano naprzemiennie migające dwie diody. Na podstawie zachowania układu można potwierdzić jego poprawność działania. System umożliwia również sprawdzanie poprawności rozmieszczenia komponentów z wykorzystaniem ROI (Region of Interest), co jest szczególnie przydatne w przypadku układów, które nie posiadają łatwo dostępnych punktów stykowych, jak miało to miejsce w testowych płytkach PCB. 

Do realizacji zadania wytrenowano sieć neuronową z wykorzystaniem platformy Roboflow, służącej do oznaczania komponentów oraz przeprowadzania wstępnych treningów w chmurze. Zastosowano gotowy model detekcji obiektów czasu rzeczywistego YOLO v11. Zbiór danych został przygotowany głównie w warunkach odpowiadających rzeczywistej pracy makiety, dlatego obejmował przede wszystkim obrazy uzyskane przy stałym układzie oświetlenia i zbliżonych warunkach akwizycji. 

Rys. 2. Schemat obrazujący komunikację składowych elementów makiety 

Nad taśmociągiem umieszczono kamerę oraz oświetlenie, aby zapewnić dobre warunki obserwacji obiektu. Raspberry Pi 5 pełni w systemie rolę jednostki nadrzędnej odpowiedzialnej za przetwarzanie obrazu i komunikację, natomiast ESP32 steruje elementami wykonawczymi makiety, takimi jak napęd, oświetlenie oraz zacisk.  

Logika systemu po stronie Raspberry Pi została zaimplementowana w języku Python, natomiast sterowanie elementami wykonawczymi makiety napisano w języku C/C++. Komunikację pomiędzy modułami oparto na prostym protokole MQTT typu publish-subscribe, który jest szeroko stosowany w rozwiązaniach IoT ze względu na swoją prostotę oraz łatwość implementacji. 

Na bazie mikroframeworka Flask utworzono graficzny interfejs użytkownika umożliwiający sterowanie makietą oraz podgląd pracy układu. W interfejsie pozostawiono również miejsce do testowania różnych formatów splotowych sieci neuronowych (CNN). Aplikacja została zbudowana z wykorzystaniem prostych endpointów poprzez użycie HTML i JavaScript oraz uzupełniona o style CSS. 

Rys. 3. Graficzny interfejs użytkownika aplikacji służącej do sterowania makietą 

 System zbiera również dane, które następnie są przetwarzane przez algorytm sterowania. W makiecie zastosowano czujnik odległości HC-SR04, służący do wykrywania pojawienia się testowanej płytki na stanowisku pomiarowym. Dodatkowo wykorzystano czujnik temperatury DHT11, rejestrujący temperaturę otoczenia. Początkowo jego zadaniem był także pomiar temperatury w pobliżu silnika, aby kontrolować ryzyko jego przegrzewania się. 

Rys. 4. Wizualizacja historii zużycia zasobów mikrokomputera Raspberry Pi na podstawie danych w formacie JSON przesyłanych za pośrednictwem protokołu MQTT. 

Projekt jest kontynuacją projektu opisanego pod linkiem: https://github.com/SNS-Automatyk/ConveyorBelt-mqtt. Więcej szczegółów można znaleźć na Github Repo: https://github.com/KarolFra/PCB_AOI_MQTT.

Kategorie: Projekty

0 komentarzy

Dodaj komentarz

Symbol zastępczy awatara

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *