Od bitmapy do makra...

Spis treści

Od bitmapy do makra...

Tym co IMO stanowi silną stronę SL6 są m.in. makra. Czyli elementy biblioteczne zawierające w sobie definicję układu wyprowadzeń, ewentualnych połączeń, itp. Praktycznie wszystkie programy do projektowania PCB zawierają moduł do projektowania układów na podstawie tzw. footprintów, ale...

SL6 proponuje coś co w swej prostocie jest godne zauważenia. Otóż (chyba) każdy zaprojektowany w nim układ (layout) może stać się elementem bibliotecznym. Nie tylko pojedynczy element, ale cały moduł czy pakiet.

I to w wyniku przeprowadzenia 2-3 operacji. Makro filtra PP9A2-2RProstota tworzenia makr, ich używania czy też modyfikacji powoduje, że okres "rozgryzania" programu skraca się do minimum. Niewątpliwie wynika to m.in. z tego, że to wszsytko czego nauczyliśmy się tworząc płytkę PCB wykorzystujemy również przy tworzeniu makr.

Mało tego: każda płytka PCB zapisana jako plik *.lay* może być dla nas źródłem elementu bibliotecznego. Dlatego warto przeglądać inne projekty. Z nich możemy zaczerpnąć brakujące elementy.

W tym artykule chciałbym pokazać jak na podstawie danych z noty technicznej filtra kwarcowego PP9A2-2R można stworzyć przydatny element biblioteczny.


PP9A2-2R: wymiaryWstęp

Zacznę od tego, że... można prościej. Np. licząc kratki siatki i wstawiając pady w odpowiednich miejscach. Dlaczego zrobiłem inaczej?

Bo chciałem poznać SL6, a w tym artykule pokazać dwie IMO bardzo użyteczne funkcjonalności programu SL6. Są to:

  • dla każdej wartwy metalizacji istnieje możliwość wczytania do SL6 bitmapy (z możliwością jej pozycjonowania i to z natychniastowym podglądem).
    Obsługiwane formaty obrazków to: *.jpg, *.jpeg, *.bmp. Oczywiście mamy też możliwość usunięcia tej bitmapy bez ingerencji w projektowany layout,,
  • po wczytaniu bitmapy, korzystając z niej jako podkładu mamy możliwość stworzenia np. elementu bibliotecznego dokładnie zgodnego z obrazem zawartym w nocie technicznej.

Zacznijmy więc od przygotowania stosownego "podkładu".

Pamiętaj o tym, że nota pokazuje widok podstawy filtra "od spodu". Czyli jest on odwrócony (pionowe lustrzane odbicie) względem tego co winno znaleźć się w makrze. Ponieważ jednak wolę pracować na nieodwróconych np. napisach stosowne odbicie "zapodam" po opracowaniu całego makra.

Twój wybór może być oczywiście inny. Mój był taki.


Pobieranie obrazu podstawy filtraPobranie bitmapy z noty

Żródłem danych (topografii wyprowadzeń) filtra PP9A2-2R jest "Katalog Omig" (pdf pobrany z tej strony). Nie tylko ze względu na wielkość pliku (ok. 730kB), ale i format (pdf) nie można go wczytać do SL6. Topografię wyprowadzeń i elementów mocujących przedstawiono na stronie 61 dokumentu.

Co prawda SL6 w wielu operacjach korzysta ze Schowka (Clipboard), ale nie udało mi się wczytać obrazu bitmapy do SL6 bezpośrednio ze schowka. Jedyną metodą było zatem wczytanie do projektu fizycznego pliku.

Taki plik należy jednak odpowiednio przygotować. Ubuntu (a w takim środowisku korzystam z SL6. Użytkownicy innych systemów być może będą zmuszeni skorzystać z innych rozwiązań programowych) zapewnia wszystko co potrzebne. I to za free. Na rysunku widoczna jest nota otwarta na s. 61.

W celu skopiowania do Schowka wybranego fragmentu ekranu należy:

  1. ustawić kursor w miejscu, w którym ma się znajdować: lewy, górny róg kopiowanego obrazu (tu rysunku podstawy filtra),
  2. wciskamy jednocześnie klawisze: Ctrl+Shift+PrtScn (Print Screen),
  3. kursor przyjmuje postać białego krzyża. System jest gotów do skopiowania fragmentu ekranu do Schowka,
  4. wciskamy lewy przycisk myszy (LPM) i nie zwalniając go, przesuwamy kursor w miejsce, w którym znajduje się prawy dolny narożnik kopiowanego obrazu. W chwili zwolnienia LPM rozlegnie się dźwięk taki jaki wydaje aparat fotograficzny w chwili wykonania zdjęcia. Obramowany obraz został skopiowany do Schowka.

Obróbka bitmapy: skalowanie....Obróbka bitmapy

Bitmapa ze schowka musi zostać przetworzona, gdyż:

  1. jak wspomniałem wcześniej nie znalazłem możliwości bezpośredniego przeniesienia kopii obrazu ze Schowka do SL6,
  2. jakkolwiek obraz w Schowku jest zgodny z tym co było widoczne na ekranie, to jednak często obszar skopiowany jest o 1-2 px za duży (jeśli za mały kopiowanie należy powtórzyć),
  3. jakkolwiek obraz z noty zachowuje proporcje długości do szerokości, to wymiary bezwzględne (z reguły) są mniejsze od rzeczywistych.

Do przetworzenia należy użyć dowolnego edytora graficznego, który zapewnia możliwość:

  1. wycinania fragmentów obrazu (Crop), z dokładnością do 1px,Było, a jest....
  2. dobrego (z dokładnością do 0,01mm) skalowania obiektu. Bardzo dobrze jeśli istnieje możliwość zamiany "w locie" jednostek wielkości obrazu (z px na mm i odwrotnie),
  3. zapisu przeskalowanego obrazu do pliku w formacie: *.jpg, *.jpeg lub *.bmp.

Ja do tego celu używam GIMP'a (dla Linux'a - "w standardzie", istnieje wersja dla MS Windows). Obrazek z lewej pokazuje okno skalowania obrazu ze Schowka do wymiarów rzeczywistych. Pierwotnie obrazek miał wymiary znacznie mniejsze. Różnice ilustruje obrazek po prawej.

Oczywiście wiele innych edytorów graficznych również może być tu wykorzystanych.

Po przeskalowaniu zapisujemy (w GIMP'ie eksportujemy) do jednego z wyżej wymienionych formatów.


Podstawa PP9A2-2R (1:1)Wczytanie bitmapy do SL6

Mając przygotowany obraz (footprint) w skali 1:1 pozostaje wczytać go do SL6. Do wyboru są dwie drogi:

  1. kliknąć ikonę przedstawioną na obrazku obok,
    ewentualnie
  2. na pasku komend wybrać opcję: "Extras", a następnie zakładkę "Scanned copy...".

Po kliknięciu przycisku "Load bitmap" pojawia się okno dialogowe ukazujące wszystkie pliki graficzne w obsługiwanych formatach. Po wskazaniu jednego z nich ukaże się podgląd i informacja o wymiarach obrazka (w px). Jest też możliwość podglądu (w osobnym oknie, ikona z lewej "Kartka z lupą") obrazka w skali 1:1.

Chciałbym zwrócić uwagę na fakt, że:

  1. Wczytywanie obrazków do poszczególnych warstw odbywa się niezależnie. Domyślnie obrazek wczytywany jest dla dolnej wartswy metalizacji (C2). Wczytanie do danej warstwy kolejnego obrazka usuwa poprzednio wczytany,Wczytanie obrazka do SL6...
  2. domyślną rozdzielczością bitmap jest 600dpi. Jednak program sam rozpoznaje DPI wczytywanego obrazka. Do większości rysunków używam DPI=300dpi i jest to wartość wystarczająca. Należy sobie jednak zdawać sprawę, że im większe DPI tym większa dokładność odwzorowania. Istotne dla układów VLSI. Ale jak ze wszystkim należy zachować umiar,
  3. po wczytaniu w oknie "Scanned copy..." zostaje wyświetlona pełna ścieżka do wczytaj bitmapy,
  4. obrazek może zostać (decyduje o tym użytkownik) przesunięty w stosunku do lewego, górnego rogu ekranu roboczego. Niezależnie od tego gdzie został ustawiony początek układu współrzędnych. Jednostką o jaką następuje przesunięcie jest 1/10mm,
  5. Jeśli znacznik "Show bitmap" jest zaznaczony, to obrazek staje się widoczny w oknie roboczym natychmiast po jego wczytaniu,
  6. Na dolnym pasku okna roboczego pojawia się pole (oznaczone piktogramem analogicznym jak ikona wywołująca opcję "Scanned copy") pozwalająca oglądać:
    1. tylko obraz bitmapy (Display only the scanned copy),
    2. tylko obraz elementów umieszczonych w oknie roboczym (Show the layout without the scanned copy).

Domyślnym ustawieniem jest, że równocześnie widoczne są: bitmapa i elementy.


Ustawienia okna roboczego...Ustawienia okna roboczego

Zanim przystąpimy do układania poszczególnych elementów na płytce trzeba odpowiednio skonfigurować okno robocze. Oczywiście każdy może działać zgodnie z własnymi preferencjami. Moja konfiguracja była następująca:

  1. z noty PP9A-2R wynika, że wyprowadzenia i elementy mocujące rozłożono w rastrze 7,6mm. Taki też raster siatki okna roboczego ustawiłem,
  2. by mieć swobodę w zakresie rysowania konturu podstawy filtra ustawiłem przesunięcie (lewego, górnego narożnika wczytanej) bitmapy na 76 jednostek, czyli 7,6mm,
  3. jako punkt odniesienia (jednocześnie początek układu współrzędnych okna roboczego) wskazałem bolec uziemiający (leżący na dłuższej osi filtra).
    Aby wskazać to miejsce jako początek układu współrzędnych wystarczy najechać na żądane miejsce kursorem i wcisnąć klawisz "0" (zero).
    Jeśli nie udało nam się trafić precyzyjnie to:
    1. powięszamy obraz (kręcąc kółkiem myszy),
    2. najeżdżamy kursorem na znacznik początku układu współrzędnych, wciskamy LPM i nie zwalniając go przesuwamy znacznik w wybrane miejsce. Zwalniamy LPM.

Okno robocze zostało przygotowane do edycji makra.


Edycja makra PP9A2-2REdycja makra

  • Jakkolwiek średnice otworów dla poszczególnych wyprowadzeń i mocowań są różne (3,8mm; 3,0mm, 1,4mm) to jednak w celu zapewnienia precyzji wiercenia wszystkie otwory padów mają (w projekcie) średnicę 0,6mm. Po nawierceniu zostaną rozwiercone do właściwej średnicy otworów,
  • dwa pady, przez które będą przechodzić wyprowadzenia wejścia i wyjścia filtra mają średnicę zewnętrzną 6,5mm,
  • dwa pady, przez które będą przechodzi dwie śruby M3 mocujące filtra mają średnicę zewnętrzną 5,0mm,
  • pad, przez który przechodzić będzie trzpień uziemiający filtr ma średnicę zewnętrzną 4,5mm
    Oczywiście wszystkie pady mogą mieć jednakową średnicę, byle była ona dobrze dobrana ze względu na wytrzymałość mechaniczną metalizacji po rozwierceniu otworów do właściwych średnic.

Do narysowania konturu podstawy filtra oraz obszaru masy raster 7,6mm zmieniłem na 0,95mm. Może być dowolny inny byle pozwalał ze swobodą rysować wewnątrz obrysu widocznego na bitmapie.

Kontur to ścieżka o szerokości 0,20mm narysowana w warstwie S1.

Obszar perforowanej masy to obszar wypełniony o szerokości konturu 0,5mm i zaokrąglonych końcach. Perforację ustawiłem jako: selfdefined, width=1,0mm. W obrębie masy (perforowanej, hatched) umieściłem:

  • znacznik wejścia oraz
  • nazwę filtru.

Trzeba pamiętać, że parametr "wycięcie" (cutout-area) oddziaływuje jedynie na metalizację podłoża (Groundplane) i zostanie "zamazany" przez obszary wypełnione. Opisując właściwości obszarów (wypełnionych) wskazywałem, że wypełniają one metalizacją wszystkie inne elementy. Jedynie otwory usuwają z ich powierzchni metalizację.

Okienko...

Jak zatem stworzyć: napis, znak graficzny, itp. wewnątrz obszaru wypełnionego?

Układ elementów...Nie jest to skomplikowane, ale... wymaga pewnej "zabawy". Trzeba po prostu wewnątrz obszaru wypełnionego stworzyć swoiste "okienka". Nie będę tu się rozpisywał. Myślę, że ten obrazek wyjaśnia wszystko.

A tak wygląda (jeszcze jako układ elementów na płytce) opracowane przeze mnie makro filtra PP9A2-2R. Tło (Groundplane) zostaje wycięte jedynie w obrębie: otworów w padach, znacznika wejścia, perforacji i nazwy filtra.

Nie jest zbyt skomplikowany, ale tu bardziej chodziło o analizę procesu tworzenia makra na podstawie bitmapy.


Przekształcenie ukłądu w makro...Zapis makra

Mając już przygotowany układ elementów (pady, obszary, kontury) możemy zapisać makro. W tym celu należy wszystkie elementy (jakie mają wystąpić w makro) zaznaczyć. Jeśli coś zostanie pominięte nie zostanie zapisane w makro.

Robię to najczęściej poprzez "obwiedzenie" elementów ramką (lewy górny narożnik obszaru do zaznaczenia, klik LPM, przesunięcie w dolny, prawy narożnik obszaru do zaznaczenia, puszczam LPM).

Dlaczego rzadziej używam kombinacji klawiszy CTRL+A?

Zdarza się, że na "peryferiach" okna roboczego pozostawię "coś" (np. pustą etykietę tekstową, co na ekranie widać jedynie jako kropkę). Kombinacja CTRL+A ujmie mi ją jako składnik makra. A podgląd makra obejmuje wszystkie składniki makra. I w takim przypadku na podglądzie zamiast oczekiwanego obrazu mogę zobaczyć coś zupełnie innego.

Po wybraniu metody zaznaczania składników makra przez kombinację CTRL+A proponuję skorzystać z opcji "Zoom objects" (lupa na poziomym pasku nad oknem roboczym). Ona powie nam prawdę, co zaznaczyliśmy.

Ale wróćmy do meritum.

Mamy zaznaczone składniki przyszłego makra. Przed zapisaniem niezbędne jest wykonanie pionowego lustrzanego odbicia wszystkich elementów. Widać to m.in po tym, że nazwa filtra nie jest lustrzanym odbiciem. A standardowo wszystkie napisy umieszczane w warstwie C2 (zielonej) winny być "odwrócone".Zapis makra....

Po odwróceniu mażemy zapisać makro. Wybieramy na pasku komend zakładkę: "File", a w niej pozycję "Save as macro...", po kliknięciu której otwiera się okno zapisu.

To w tym oknie masz możliwość stworzenia nowego katalogu w strukturze katalogów makr. Pamiętaj też, że pracując w Ubuntu z Wine rzeczywistym dyskiem odwzorowującym strukturę katalogów Twojej dystrybucji Linuksa jest dysk Z:.

W oknie tym możesz:

  • stworzyć nowy plik makra (poprzez podanie nowej, unikalnej nazwy pliku),
  • zapisać swoje makro pod nazwą istniejącą. Od tej chwili makro będzie zawierało wyłącznie elementy zaznaczone przez Ciebie jako składnik makro.

Makro PP9A2-2R...Jeśli wybrałeś opcję drugą (nadpisanie makra) program wyświetli monit ostrzegający i będzie czekał na potwierdzenie (lub rezygnację z) nadpisania.

Po zapisaniu makra następuje samoistne odświerzenie zawartości bibliotek makr, a program jako makro wybrane wyświetli to nowozapisane. Warto sprawdzić, czy to jest to co zaprojektowaliśmy. Program zapisuje poprawnie, ale autorowi zdarzało się...

Patrząc na makro może wydawać się, że czegoś brakuje (znacznika wejścia, nazwy filtra). Nie wszystko jest w porządku. Rzecz w tym, że oba wyżej wymienione elementy są typu "wycietego" (cutout-are), a ta jak pisałem oddziaływyje jedynie na metalizację podkładu (metalizacji, Groundplane). A makro nie zawiera informacji na jego temat. By zobaczyć wszystkie elementy makra wystarczy je zaznaczyć, a zostanę wyświetlone wszystkie elementy!

Wyszło dużo tekstu i obrazków, ale wykorzystanie makr do tworzenia układu płytek w SL6 jest wyjątkowo intuicyjna. I ten artykuł nie zamyka tematu. :)

Tu zródłem bitmapy była nota techniczna. Ale może to być dowolny dokument np. zeskanowane lub sfotografowane dawne projekty, skan gotowych płytek, itd. Możliwości są praktycznie niewyczerpane. W sieci widziałem również filmik prezentujący układanie elementów na "podkładzie"... prostego schematu.

Po tej lekturze zapraszam do Warsztatu krótkofalowca.