Elektroda.pl
Elektroda.pl
X
Servizza
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

phanick 11 Wrz 2016 13:50 35841 95
  • KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Opisywane w artykule narzędzie to własnoręcznie napisany program, za pomocą którego na podstawie zdjęć PCB (górna i dolna strona), użytkownik odtwarza wszystkie połączenia, a następnie program generuje dla niego schemat w formacie SCH (Eagle).

    Motywacja
    Często, gdy zachodzi potrzeba naprawy jakiegoś urządzenia, trzeba zdiagnozować wadliwy układ, a do tego konieczne jest zwykle posiadanie schematu urządzenia. Schematy także przydają się, gdy chcemy dokonać jakiejś modyfikacji. Niestety, zwykle autor urządzenia (producent) ich nie dostarcza, ręczne odtwarzanie na podstawie oglądania PCB wymaga wielogodzinnych żmudnych prac z płytką - wzrokowa analiza wszystkich ścieżek i punktów lutowniczych, połączona z notorycznym odwracaniem płytki, czasami wspomagana testerem ciągłości obwodu. Gdy zanotujemy gdzieś sobie połączenia wszystkich pinów, następnie czeka nas praca z programem do tworzenia schematu, często wspomagana analizą not katalogowych układów, aby wcześniej przygotowane opisy połączeń doń wprowadzić

    Sam kilkukrotnie odczułem potrzebę skorzystania z oprogramowania, które by w tym pomogło. Niestety, w internecie kompletnie nie ma pod tym kątem żadnych wyników. Gdzieś na elektrodzie ktoś poruszał nawet takie tematy, ale zwykle dyskusja kończyła się bez podania rozwiązania. Jedyny program o podobnej funkcjonalności, który kiedyś znalazłem, miał automatyczną detekcję prowadzenia ścieżek i okazał się klapą (też gdzieś się walał po elektrodzie).

    Przygotowania
    Przed rozpoczęciem zabawy należy wykonać zdjęcia obu stron płytki, którą chcemy analizować. Najlepsze efekty uzyskamy, gdy z płytki wylutujemy wszystkie elementy, a zdjęcia wyonamy w skanerze o rozdzielczości co najmniej 300 dpi (polecane 600 dpi). Aczkolwiek samo zdjęcie aparatem także daje dobre efekty, ważne tylko, aby aparat trzymać równolegle do płytki. Posłużmy się jako przykładem - kardridżem od Pegasusa 4-in-1. Kardridż posiada oprócz pamięci, układy z rodziny 74XX, obsługujące przełączanie pamięci, którego mechanizm jest na razie nieznany. Odtwarzając schemat od razu będziemy mogli rozpracować sposób bankowania pamięci. Do dzieła.

    Gdy już mamy wykonane zdjęcia, nie musimy się martwić o ich obracanie, odbicie lustrzane, kadrowanie, itp. - to wszystko ustawimy już w programie (tutaj celowo zdjęcia wykonano różnych rozmiarów i pod różnymi kątami, aby zademonstrować możliwości programu).
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)





    Praca z programem - zgrywanie warstw
    Program tuż po uruchomieniu wita oknem roboczym, przedstawionym poniżej.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Główna część okna podzielona jest na dwie części - lewą, w której pracujemy z górną warstwą PCB i prawą, w której pracujemy z dolną warstwą PCB.

    W lewym górnym rogu mamy przyciski z akcjami: stworzenie nowego projektu, wczytanie projektu istniejącego oraz stworzenie schematu w Eaglu. Program sam podczas pracy tworzy kopię zapasową co 5 minut, więc nawet nagła awaria programu, który jest ciągle w fazie beta nie powinna kosztować nas utraty zbyt wielu minut pracy.

    W prawym górnym rogu widoczne są statystyki projektu.

    W dolnej części ekranu widać podpowiedzi ze skrótami klawiszowymi do głównych zadań w programie. Wszystkie czynności wykonujemy po naciśnięciu jakiegoś klawisza (mniej męczy to rękę, niż ciągłe klikanie myszą, wybór z menu kontekstowego) i przyspiesza pracę w programie - jedną ręką operujemy myszą (jedynie przesuwanie kursora), a drugą - klawiaturą poprzez naciskanie jednoklawiszowych skrótów.

    Po wybraniu New program poprosi nas o podanie lokalizacji do pliku ze zdjęciem górnej warstwy PCB, dolnej warstwy PCB, a następnie o wybranie lokalizacji, gdzie będzie zapisany plik projektu. Po wczytaniu plików, w oknie programu ujrzymy obie warstwy:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Kolejną czynnością jest "zgranie" ze sobą zdjęć. Widok na PCB w programie, podobnie jak w wielu programach typu EDA do tworzenia PCB jest `z góry`, tzn. górną warstwę widzimy tak jak widać na PCB od góry, natomiast dolną warstwę - tak, jakby prześwitywała przez laminat od góry. Dlatego powinniśmy przy zdjęciu dolnej warstwy wcisnąć checkbox `mirror`, który odbije nam lustrzanie zdjęcie.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Kolejnym krokiem jest obrót obu zdjęć i przeskalowanie w taki sposób, aby oba były w identycznym rozmiarze. Obie czynności wykonuje za nas program - wystarczy zaznaczyć na obu zdjęciach jakiś "wirtualny" odcinek, który powinien być równoległy do dolnej osi i być identycznej długości na obu zdjęciach - np. dolna krawędź PCB albo jakiś długi rządek punktów lutowniczych. Ja wybiorę to drugie.
    Zaczynamy od lewego zdjęcia - ustawiamy kursor na początku takiego odcinka, wciskamy przycisk R (od Rotate), potem ustawiamy kursor na końcu takiego odcinka i ponownie wciskamy klawisz R. Przesuwanie obu zdjęć odbywa się za pomocą strzałek.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Po tej operacji widzimy, że lewe zdjęcie jest już wyprostowane.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Podobnie postępujemy z prawym zdjęciem:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Po tej operacji prawe zdjęcie zostanie także obrócone, a dodatkowo - ponieważ na wszystkich zdjęciach zaznaczyliśmy już odcinek, program przeskaluje zdjęcia tak, aby były tych samych rozmiarów (najmniejsze zdjęcie zostaje niezmienione, a większe zdjęcia zostają pomniejszone):
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Ostatnim etapem jest zgranie zdjęć w ten sposób, aby pokazać programowi, gdzie znajdują się te same punkty na obu zdjęciach - np. aby w sytuacji, gdy ustawimy kursor na przelotce na jednym zdjęciu, na drugim zdjęciu także pokazał się kursor na tej samej przelotce. W tym celu należy przesunąć jedno ze zdjęć do odpowiedniej pozycji. Gdy trzymamy klawisz CTRL (CTRL jest po lewej stronie) - lewe zdjęcie pozostaje nieruchome, a gdy trzymamy ALT (ALT jest po prawej stronie) - prawe zdjęcie pozostaje nieruchome. Razem z trzymaniem tego klawisza, za pomocą strzałek przesuwamy jedno ze zdjęć. Jeśli dodatkowo będziemy trzymać klawisz SHIFT, to przesuwanie będzie odbywać się precyzyjniej - z mniejszym skokiem. Po tej operacji oba zdjęcia są zgrane - można się o tym przekonać wskazując kursorem na jakąś przelotkę na jednej warstwie. Wtedy na drugiej warstwie dokładnie w tym samym miejscu powinno być widać także kursor. Najlepiej to sprawdzić dla dwóch lub nawet czterech przelotek, w przeciwległych rogach PCB. Jeśli wykonaliśmy to poprawnie, to efekt powinien być taki, jak poniżej. Ta czynność kończy etap przygotowań.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Praca z programem - wskazywanie punktów lutowniczych
    Kolejnym etapem jest wskazanie na PCB, gdzie znajdują się punkty lutownicze (pady): dwustronne (THT) i jednostronne (SMD). Aby umieścić na PCB taki punkt, ustawiamy kursor w odpowiednim miejscu i wciskamy klawisz:
    * P (dla umieszczenia pada THT) lub
    * V (dla umieszczenia pada SMD).
    Jeśli dodatkowo włączona jest opcja wyrównania do siatki (SNAP) - klawisz S, to program po umieszczeniu pierwszego pada, kolejne będzie umieszczał z wyrównaniem do siatki 0.05 czyli połowa odstępu między nóżkami w standardowej obudowie DIP.
    Jest to przydatna opcja, pozwalająca przyspieszyć ten etap, gdyż nie trzeba wówczas dokładnie umieszczać kursora w środku pada.

    Bez włączonej opcji SNAP - jeśli nie będziemy dokładni, pady będą umieszczane nie centralnie.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Z włączoną opcją SNAP - idealnie rozmieszczenie padów:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Tu przy okazji warto wspomnieć, że jeśli w którymś momencie pomylimy się, wystarczy w programie kliknąć przycisk Undo, lub też - jeśli umieściliśmy jakiś element na PCB w złym miejscu, wystarczy go wskazać kursorem i kliknąć przycisk DELETE.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Padów typu SMD można "używać" nie tylko dla wskazywania faktycznych padów od elementów SMD, ale także np. do złącza krawędziowych czy generowania dodatkowych punktów lutowniczych, gdy np. dwa elementy są przylutowane do jednego pada `na pająka`. Wygląd po zaznaczeniu wszystkich padów w programie (przy okazji w statystykach możemy oglądać ilość umieszczonych padów):
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Praca z programem - wskazywanie połączeń
    Kolejnym krokiem jest wskazanie połączeń między padami - w tym celu w miejscu, gdzie chcemy rozpocząć rysowanie połączenia, umieszczamy kursor i wciskamy klawisz W (wire). Program zaznaczy niebieskim kursorem, że zapamiętał wskazaną lokalizacje. Kolejne wciskanie klawisza W będzie prowadziło połączenie do wskazanego miejsca i przenosiło kursor. W momencie, gdy połączenie zakończy się na padzie (lub wciśniemy klawisz ESC), kursor zniknie i będziemy mogli zacząć rysować nowe połączenie od innego miejsca:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Jeśli chcemy zacząć rysować połączenie od pada, wystarczy na niego wskazać i wcisnąć klawisz W)
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Podobnie, gdy chcemy zacząć rysować połączenie od jakiegoś istniejącego już połączenia (aby tworzyć rozgałęzienie) - wystarczy wskazać na punkt węzłowy takiego połączenia i wcisnąć klawisz W:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Ta część pracy z programem jest najdłuższym etapem projektu, w którym często może dochodzić do pomyłek. Być może dałoby się tą czynność chociaż częściowo zautomatyzować, np. poprzez automatyczne wykrywanie krawędzi celem detekcji przebiegu ścieżek, jednak komputer nigdy nie jest nieomylny, i często mogłoby to prowadzić do tworzenia fałszywych, nieistniejących połączeń lub niewskazywania połączeń istniejących. Często sam człowiek patrząc na zdjęcie ma wątpliwości co do przebiegu ścieżki i konieczne jest obejrzenie PCB pod światło, albo np. warstwa opisowa na PCB zasłania faktyczny przebieg ścieżek: KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle),
    dlatego chyba warto, aby człowiek od początku do końca wykonywał ten etap, jeśli można dzięki temu zminimalizować ryzyko pomyłek:

    Podczas pracy z programem mamy na bieżąco dostęp do statystyk - ilości poprowadzonych segmentów połączeń, czy ilości sygnałów (sygnał to zbiór punktów lutowniczych + segmentów połączeń, które są ze sobą powiązane). Często podczas pracy z programem możemy popełnić błąd poprzez naszą niedokładność, np. zostawiając niepołączoną końcówkę ścieżki. Takie połączenia program wykrywa jako złe ("wires BAD") i wskazuje w statystykach. Podobnie, niepołączone w obu warstwach pady SMD lub THT także są zliczane.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Wystarczy kliknąć na napis "wires BAD" / "unconn. pads" / "unconn. SMDs", a program sam wskaże elementy, co do których ma wątpliwości:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Kolejną ciekawą opcją jest śledzenie sygnałów. Jeśli wskażemy na jakąś część sygnału (pad SMD / THT lub ścieżkę) i wciśniemy klawisz I (info), program podświetli cały przebieg sygnału, a na górze wyświetli jego nazwę (o nazywaniu trochę później).
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Podczas umieszczania przelotek / ścieżek, jest możliwość ustawiania ich rozmiaru / grubości:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Natomiast opcja `alpha blending`, pozwala włączyć lub wyłączyć prześwitywanie ścieżek i punktów lutowniczych przez zdjęcie. Wyłączone prześwitywanie pozwala lepiej widzieć umieszczane przez nas ścieżki i punkty lutownicze, natomiast włączone - pozwala widzieć oryginalne ścieżki na zdjęciu i konfrontować je ze wskazywanymi przez nas.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Wygląd po wskazaniu wszystkich ścieżek:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Praca z programem - przypisywanie punktów lutowniczych
    Kolejnym etapem jest przypisanie punktów lutowniczych do elementów występujących na PCB. W tym celu wskazujemy jakiś punkt lutowniczy (np. pierwszą nóżkę układu U2 74LS174) i wciskamy klawisz A - assign. Otwiera się okno, ale ponieważ nie mamy dodanych żadnych urządzeń - lista urządzeń oraz dostępnych padów urządzenia jest pusta:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Aby dodać urządzenie, klikamy przycisk ADD. Otwiera się okno, w którym możemy wyszukać interesujący nas element (program po uruchomieniu wczytuję wszystkie biblioteki z programu Eagle, więc mamy bardzo dużą swobodę manewru). Wyszukiwanie elementów odbywa się podobnie jak w programie Eagle - wystarczy wpisać fragment interesującej nas nazwy i wstawić gwiazdkę w miejscu, gdzie może wystąpić dowolny ciąg znaków. W rozwijalnej strukturze hierarchicznej poniżej od razu pojawiają się tylko elementy spełniające kryterium. Po wybraniu elementu w interesującej nas obudowie, program sam ustawia jego nazwę wg prefiksu zdefiniowanego dla tego urządzenia w bibliotece Eagle-a, dodając pierwszy wolny numer. Nazwę możemy oczywiście ustawić też sami. Dodatkowo możemy zdefiniować wartość (np. dla elementów RLC) i ważność elementu przy ustalaniu nazw sygnału (o tym później). Wartość, obudowę czy nawet samo urządzenie można potem zmienić, klikając przycisk modify.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Po kliknięciu OK, wracamy do poprzedniego ekranu, gdzie mamy już dodane wybrane urządzenie, natomiast w liście jego końcówek pojawiają się wszystkie dostępne końcówki.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)
    Wybieramy interesujące nas wyprowadzenie, klikamy OK (lub ENTER), a na PCB pojawia się na zaznaczonym padzie nazwa urządzenia i numer przypisanego padu.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Podobnie postępujemy z kolejnymi padami - wskazujemy na kolejny PAD, wciskamy klawisz A, na liście urządzeń mamy zaznaczone ostatnio wybrane urządzenie, a na liście padów - pierwszy wolny pad. Jeżeli więc przypisujemy pady po kolei, wystarczy wcisnąć klawisz Enter i kolejny pad jest już przypisany.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Jeżeli chcemy teraz przypisać pady kolejnego elementu, znów wskazujemy na pierwszy jego pad, potem wciskamy klawisz A. Kliknięcie przycisku Add powoduje otwarcie okna dodawania nowego urządzenia, ale z domyślnie zaznaczonym urządzeniem takiego samego typu jak to, które było wybrane na liście na poprzednim ekranie. Bardzo przyspiesza to pracę, gdy np. mamy na PCB kilkanaście rezystorów, kondensatorów lub takich samych scalaków - nie trzeba go szukać za każdym razem od początku.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Po przypisaniu wszystkich padów:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Praca z programem - generowanie schematu
    Praca z programem w zasadzie dobiegła ku końcowi i możemy wygenerować gotowy plik SCH, zawierający odtworzony schemat PCB, gotowy do otwarcia w programie Eagle. W tym celu w głównym oknie programu klikamy przycisk Eagle, a następnie program zapyta nas o lokalizację, gdzie wygenerować schemat.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Wygenerowany plik otwieramy w programie Eagle i widzimy odtworzony schemat:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Poddając schemat analizie ERC nie ma nawet żadnych błędów, co świadczy o poprawnym odtworzeniu:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Program umieszcza elementy jeden po drugim, obok siebie, nie łącząc ich wyprowadzeń ze sobą, lecz etykietując. Wygenerowany schemat oczywiście warto ręcznie poprawić, zmieniając chociażby położenia elementów, odwzorowując kierunek przepływu sygnałów, ale jest to już dużo krótsza czynność, niż tworzenie schematu od zera samodzielnie i dodatkowo - niewymagająca zbyt dużego wysiłku intelektualnego. Podświetlanie danego sygnału w Eagle także koloruje wszystkie połączenia o tej samej nazwie, co ułatwia obserwację, które wyprowadzenia łączą się z którymi:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Praca z programem - nazewnictwo sygnałów
    Jak zapewne bystry czytelnik zauważył, na schemacie wygenerowanym dla programu Eagle, nazwy sygnałów są niezbyt przyjazne (SIG+kolejny numer):
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Oczywiście możemy (i pewnie dla niektórych sygnałów będziemy musieli) zmienić te nazwy dopiero w programie Eagle, ale czy nie dałoby się prościej? Oczywiście, że tak.
    W programie KrzysioPCB istnieje możliwość ręcznego ustawiania nazw pewnych sygnałów - wskazujemy w tym celu na jakimś elemencie danego sygnału (pad lub ścieżka) i wciskamy klawisz N (name). Pojawia się okno, w którym możemy wpisać nazwę sygnału.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Jeśli w programie wskażemy ten sygnał, będzie on od teraz określany nowoustawioną nazwą: KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Jednak nazywanie w ten sposób wielu sygnałów wciąż jest męczące. Czy nie dałoby się jeszcze prościej?
    Wiele elementów na PCB możemy uważać za tzw. elementy główne, których nazwy końcówek mogą jednocześnie ustawiać nazwy sygnałów, które do tych końcówek są podłączone - np. jeśli mamy mikroprocesor, który posiada np. szynę adresową A0..A15, szynę danych D0..D7, itp, to logicznym jest, aby nazwa sygnału dochodząca do tych końcówek była właśnie taka.
    Podobnie dla naszego projektu - sygnały dochodzące do złącze kardridża mogą dziedziczyć nazwy po jego końcówkach. Podczas dodawania nowego elementu, wspominałem o opcji ustawienia ważności elementu przy ustalaniu nazw sygnału.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Algorytm nadawania nazwy sygnału jest następujący: najpierw program sprawdza, czy użytkownik ręcznie nie nadał mu jakiejś nazwy. Jeśli tak - będzie on miał właśnie taką nazwę.
    Jeśli nie - program sprawdza wszystkie elementy, które łączą się z tym sygnałem. Jeśli choć jeden ma ważność większą od zera, to nazwa dla tego sygnału będzie taka, jak nazwa końcówki z elementem o największej ważności.
    Jeśli nie - program nadaję nazwę według wzorca: SIG + kolejny numer.

    Jeśli więc ustawimy ważność dla złącza kardridży na 1 i wygenerujemy ponownie schemat, tym razem będziemy mieli czytelniejsze nazwy sygnałów:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Ostatnim krokiem jest ręczne uporządkowanie schematu:
    * przesunięcie elementów, aby nie nachodziły na siebie oraz odwzorowywały logiczny kierunek przepływu sygnałów,
    * usunięcie etykiet i połączenie sygnałów, dla których będzie to czytelniejszy sposób określenia przepływu informacji (zwłaszcza, gdy dany sygnał łączy tylko dwa elementy - np. wyjście jednej bramki połączone z wejściem kolejnej)
    * nadanie nazw sygnałom, które wcześniej nie zostały nazwane

    Schemat po uporządkowaniu:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Od razu widać, ze sposób działania mappera został rozpracowany:
    zapis bajtu --PPCCCC przez CPU pod adres $8000-$FFFF ustawia bank programu (pod adresem $8000-$FFFF) na PP oraz bank grafiki (pod adresem $0000-$1FFFF) na CCCC.
    Skomplikowany, na pierwszy rzut oka, układ, składający się z czterech bramek NAND na górze to nic innego, jak multiplekser, ustalający mirroring:
    gdy PRG_A16=0 to CIRAM-A10<-PPU-A11
    gdy PRG_A16=1 to CIRAM-A10<-PPU-A10
    czyli dla pierwszych dwóch gier jest pierwszy przypadek (mirroring=H), a dla dwóch kolejnych drugi przypadek (mirroring=V). Jest to więc kardridż, zawierający cztery lekko zmodyfikowane gry typu CNROM.

    Szacunkowy czas pracy z programem (dla powyższej, niezbyt skomplikowanej płytki)
    - zgranie ze sobą warstw: 2 min
    - wskazanie padów SMD + THT: 5 min
    - rysowanie połączeń: 15 min
    - przypisywanie padów do urządzeń: 3 min
    - uporządkowanie schematu po wygenerowaniu: 5 min
    W sumie: ok. 30min

    Sam program okazał się dla mnie na tyle wygodny w użyciu, że przy okazji odtworzyłem PCB z kilku kardridży do Atari 2600, PCB od mikrokomputera CA82 (siostrzanego brata CA80) czy programatora pamięci do CA80:
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle) KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    Plany na przyszłość:
    1. Poprawić trochę sposób rozmieszczania elementów w generowanym pliku SCH, uwzględniając np. długość etykiet przy ustalaniu odstępów między elementami.
    2. Podczas przypisywania końcówek do elementów, podczas wyboru nowego elementu, warto byłoby dodać miniaturkę, jak ten element wygląda (aby było wiadomo, czy na pewno o ten nam chodzi - coś podobnego, jak w Eagleu podczas dodawania nowego elementu)
    3. Generowanie oprócz pliku SCH także pliku BRD z odtworzonym layoutem ścieżek
    4. Jakieś propozycje?

    Co do upubliczniania programu - na chwilę obecną raczej nie jestem do tego pozytywnie nastawiony, ale także jestem otwarty na propozycje co do ewentualnego typu licencji.


    Link

    ----
    2016-09-12 13:51:
    Załączam wersje do testów
    ----
    2016-09-12 20:47
    Załączam lekko poprawioną wersję 1.1 oraz film demonstrujący działanie
    ----


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Servizza
  • Servizza
  • #3 11 Wrz 2016 15:44
    zbyrek
    Poziom 23  

    Ja bym proponował, dodać opcję automatycznego przypisywania końcówek na podstawie elementu, to znaczy, wskazujemy jakiego typu jest to element, oraz w jakiej obudowie, zaznaczamy dwa punkty lutownicze, natomiast program automatycznie przypisuje resztę.

  • #4 11 Wrz 2016 16:05
    shadow0013
    Poziom 34  

    Kopiowałem płytki z pomocą zdjęcia i Acada, ale tym programem będzie szybciej i wygodniej. Szkoda że go nie upublicznisz (jak zresztą wielu swoich Krzysio...).

  • #5 11 Wrz 2016 16:28
    Simon79
    Poziom 18  

    Też chciałem wykonać CA82 ze skanów płytki, które są w temacie https://www.elektroda.pl/rtvforum/viewtopic.php?p=15873272#15873272 lecz nie wiedziałem jak się do tego zabrać. Widzę, że Koledze się udało. Gratulację. Szkoda, że nie upublicznisz programu.

  • #6 11 Wrz 2016 18:46
    Arni85
    Poziom 12  

    Czy jest w planach sprzedaż licencji na ten program/wersja freeware/inna forma podzielenia się ze światem? Może jakaś oficjalna forma wsparcia społecznościowego (Kickstarter czy inne platformy)?

  • #7 11 Wrz 2016 18:54
    leonow32

    Poziom 30  

    Dla mnie ten program to prawdziwe mistrzostwo świata!!! Czegoś takiego na Elektrodzie jeszcze nie było.

    Życzyłbym sobie, żeby był on standardowym dodatkiem do Kicada. Jakie masz dalsze plany na rozwój programu?

    Proponuję zmienić nazwę na jakąś bardziej poważnie brzmiącą

  • #8 11 Wrz 2016 19:14
    vipermat
    Poziom 13  

    Krzysio,
    ładnie proszę : Udostępnij.


    Pozdrawiam

  • #9 11 Wrz 2016 19:21
    takero
    Poziom 31  

    Nie bardzo rozumiem motywy działania - pokazujesz program, który działa jak twierdzisz, a którego nie zamierzasz w żaden sposób rozpowszechniać.
    Nie rozumiem tylko po co ?
    PS Nie wiem czy nie dałoby zrobić tego w postaci skryptu do eagle-a.

  • #10 11 Wrz 2016 19:49
    tos18
    Poziom 38  

    Autor stworzył konkretne narzędzie. Włożył w to sporo wysiłku. Więc nie dziwię się że nie chce ot tak rozpowszechniać swego dzieła. Myślę że czeka na konkretne oferty.

    Choć może mógłby wypuścić jakąś wersję demo z ograniczeniami powiedzmy do 50 połączeń.

  • #11 11 Wrz 2016 20:06
    piotrva
    Moderator na urlopie...

    phanick napisał:
    Co do upubliczniania programu – na chwilę obecną raczej nie jestem do tego pozytywnie nastawiony, ale także jestem otwarty na propozycje.

    Możesz rozwinąć? Planujesz sprzedaż programu?

    Czego mnie brakuje?
    1. Opcji eksportu do Altium
    2. Można by się pokusić o automatyczne rysowanie połączeń - w sumie na płytce z taką soldermaską można zrobić próbkowanie koloru z miedzia i bez i robić to automatycznie.

  • #12 11 Wrz 2016 22:29
    pawel01
    Poziom 24  

    W Sprint layout tez tak mozna po podlozeniu obrazka ze ścieżkami przerysować i stworzyć pcb. Robilem tak kilka razy i dawalo to rade.

  • #13 11 Wrz 2016 22:32
    piotrva
    Moderator na urlopie...

    pawel01 napisał:
    przerysować i stowżyć pcb.
    Stworzenie PCB to można zrobić nawet zdjęcie, dopasować skalę, dopasować próg kolorów i już mamy graficzną wersję mozaiki. Potem tylko przez dowolny program wektoryzujący grafikę i viola.

  • #14 11 Wrz 2016 23:10
    Defozo
    Poziom 17  

    Myślę, że jedną z wad tego programu jest to, że musimy zrobić zdjęcie płytki na której nie ma żadnych elementów.

  • #15 12 Wrz 2016 00:10
    19dbwa10
    Poziom 6  

    Patrząc od strony programistycznej to szczerze powiem że nie zrobiłeś na mnie wrażenia. Usunięcie tła, skalowanie jak i dopasowanie płytki można zrobić w dużej części przypadków automatycznie. Są na to gotowe algorytmy i biblioteki. Zainteresuj się również openCV (na pewno c++ i python) daje on gotowe algorytmy do detekcji (np twarzy, ale można praktycznie bez problemu zrobić detekcję tranzystorów, rezystorów czy samych dziur). A co do ścieżek też bym to zautomatyzował. Pobrać z rogów kolor płytki, usunąć znalezione w wcześniej elementy i rozpoznać kolor ścieżek. Wtedy tylko for po wszystkich pikselach i przy znalezieniu odpowiedniego koloru badać sąsiednie piksele czy są podobne i mamy gotowe ścieżki :) Jeśli zdecydujesz się to wdrożyć i miałbyś jakieś pytania to pisz na PW :) Swoją drogą w jakim języku to robisz?

  • #16 12 Wrz 2016 00:33
    tikka.masala
    Poziom 20  

    shadow0013 napisał:
    Kopiowałem płytki z pomocą zdjęcia i Acada, ale tym programem będzie szybciej i wygodniej. Szkoda że go nie upublicznisz (jak zresztą wielu swoich Krzysio...).


    To jest software skierowany do amatorów - a ci zazwyczaj nie mają pieniędzy i wolą spędzić czas z ołówkiem i kartką bo tak jest taniej.
    Firmy, które mogą zapłacić odpowiednio dużo, nie kupią tego software'u bo inżyniernia wsteczna często stoi na bakier z prawem. Więc prawdopodobnie software zestarzeje się na dysku autora.

  • #17 12 Wrz 2016 07:08
    matrix0606
    Poziom 14  

    Ja nie rozumiem jednego jak napisał jeden z kolegów wyżej. Pokazujesz coś, twierdzisz że działa a nie chcesz udostępnić choćby w formie demo?? Ja wiem że poszedł ogrom pracy podczas pisania takiego cuda, ale nie udostępnienie tego jak napisałem choćby w jakiejś wersji demo mija się z celem prezentacji tego programu. To tak jak bym napisał że mam perpetum mobile, wstawił kilka zdjęć i zapewniał że działa.
    Nagraj jakiś film może... Cokolwiek., jeśli liczysz że ktoś kupi licencję. Przecież nikt przy zdrowych zmysłach nie kupi przysłowiowego kota w worku. :)

    Przepraszam za ewentualne błędy. Pisane z telefonu.

  • #18 12 Wrz 2016 07:35
    Deepone
    Poziom 22  

    Fajny program tylko jak już ktoś napisał zestarzeje się na twoim dysku.

    Co do licencji to pewnie jak się zastanawiasz to nie zamierzasz udostępniać źródeł czyli nie będzie to Open Source czyli licencje GNU, GPL czy tam inne pewnie odpadają.

    Jeżeli chcesz udostępniać samą aplikację to pewnie sam będziesz musiał licencję napisać i tyle.
    Może chcesz go sprzedawać? Pozostaje kwota... 20zł/50zł/100zł itp. Pomyśl nad sklepem Microsoftu jeżeli chcesz sprzedawać, masz dużą skalę osób, które by skorzystały.

    Chyba, że nie chcesz udostępniać bo użyłeś dużo czyjegoś kodu...

  • #19 12 Wrz 2016 09:05
    piotrek2914
    Poziom 16  

    19dbwa10 napisał:
    Patrząc od strony programistycznej to szczerze powiem że nie zrobiłeś na mnie wrażenia.

    Użytkownicy Elektrody w tym ja chętnie zobaczą alternatywę z pod Twojego palca. :-) W sumie jakby coś fajniejszego się pojawiło to jestem skłonny 100- 200 zł na to wyłożyć.

  • #20 12 Wrz 2016 09:46
    19dbwa10
    Poziom 6  

    piotrek2914 napisał:
    19dbwa10 napisał:
    Patrząc od strony programistycznej to szczerze powiem że nie zrobiłeś na mnie wrażenia.

    Użytkownicy Elektrody w tym ja chętnie zobaczą alternatywę z pod Twojego palca. :-) W sumie jakby coś fajniejszego się pojawiło to jestem skłonny 100- 200 zł na to wyłożyć.

    Raczej nigdy czegoś takiego nie napiszę z braku wiedzy o samym pcb jak i czasu. Po prostu rzuciłem parę luźnych propozycji jak program można byłoby ulepszyć tak aby działał bardziej automatycznie.

  • #21 12 Wrz 2016 10:13
    eurotips
    Poziom 35  

    Kolega chyba zapomniał że teraz ze świecą nie znajdziesz urządzenia w którym nie ma mikroprocesora. Na dwustronnych pcb również się nie kończą. Mało użyteczna i bardzo pracochłonna metoda, no ale skoro działa i autor jest zadowolony to tylko pogratulować i jednocześnie ubolewać że nie udostępnia tego innym.

  • #22 12 Wrz 2016 13:09
    deus.ex.machina
    Poziom 32  

    piotrek2914 napisał:

    Użytkownicy Elektrody w tym ja chętnie zobaczą alternatywę z pod Twojego palca. :-) W sumie jakby coś fajniejszego się pojawiło to jestem skłonny 100- 200 zł na to wyłożyć.


    W sumie mógłbym posiedziec przy Gimpie i tez wkleić trochę obrazków...

    ...___...

    Degate który robi o niebo bardziej skomplikowana prace jest dostępny bez problemu i otwartoźródłowy...
    http://www.degate.org/
    Albo tez ręcznie ale trochę automatycznie:
    http://www.instructables.com/id/How-to-reverse-engineer-a-schematic-from-a-circuit/?ALLSTEPS
    albo:
    http://server.ibfriedrich.com/wiki/ibfwikien/index.php?title=Reverse_Engineering

  • #23 12 Wrz 2016 13:52
    phanick
    Poziom 28  

    Załączam wersję do testów (pod pierwszym postem). Program łączy się z internetem celem weryfikacji licencji. Nie miałem okazji przetestowac na innym systemie niż Windows XP, więc będę wdzięczny za uwagi.
    Jeżeli program się nie uruchamia, może być wymagany Microsoft .NET Framework: https://www.microsoft.com/en-us/download/details.aspx?id=24872

  • #24 12 Wrz 2016 16:16
    Marek2006
    Poziom 29  

    Chciałem wypróbować ten program ale naciąłem się na dość banalny problem: mam płytkę SMD ale tylko jednostronną i mam jedynie zdjęcie góry płytki. Program pyta się o zdjęcie dolnej warstwy i na tym się kończy jego działanie. Górna płytka nie wyświetla się w lewym oknie. Można to jakoś rozwiązać?

    Marek

  • #25 12 Wrz 2016 16:37
    Strumien swiadomosci swia
    Poziom 43  

    Dla mnie to projekt na który czekałem 30 lat, voila w końcu będzie można kopiować PCB .

  • #26 12 Wrz 2016 16:48
    LA72
    Poziom 40  

    Witam.
    Nie wiem jak u innych, ale u mnie program wywala błąd po wskazaniu katalogu do bibliotek Eagle.
    System Vista x32 z Frameworkiem 4.6.
    KrzysioPCB - program do inżynierii wstecznej PCB (tworzy schemat Eagle)

    W jakim pliku znajduje się konfiguracja ścieżki do bibliotek.

  • #27 12 Wrz 2016 17:09
    phanick
    Poziom 28  

    Marek2006 napisał:
    Chciałem wypróbować ten program ale naciąłem się na dość banalny problem: mam płytkę SMD ale tylko jednostronną i mam jedynie zdjęcie góry płytki. Program pyta się o zdjęcie dolnej warstwy i na tym się kończy jego działanie. Górna płytka

    Można przygotować jakiś pusty plik (np. z białym tłem) i wskazać na niego.
    Dzięki, dodam do rzeczy do zrobienia, że nie wszystkie warstwy są obowiązkowe.

    LA72 napisał:
    Nie wiem jak u innych, ale u mnie program wywala błąd po wskazaniu katalogu do bibliotek Eagle.
    System Vista x32 z Frameworkiem 4.6.

    Jesteś pewien, że masz Eagle 6.x.x? Wcześniejsze wersje Eagle'a miały zamknięty, binarny format bibliotek/plików SCH/plików BRD, dopiero od wersji 6.x.x zmieniono format na XML.

    Ścieżka przechowywana jest w rejestrze w kluczu:
    KHEY_CURRENT_USER\Software\KrzysioPCB

  • #28 12 Wrz 2016 18:34
    LA72
    Poziom 40  

    phanick napisał:
    Jesteś pewien, że masz Eagle 6.x.x? Wcześniejsze wersje Eagle'a miały zamknięty, binarny format bibliotek/plików SCH/plików BRD, dopiero od wersji 6.x.x zmieniono format na XML.

    Ścieżka przechowywana jest w rejestrze w kluczu:
    KHEY_CURRENT_USER\Software\KrzysioPCB


    Używam wersji 6.6.0.

  • #29 12 Wrz 2016 20:19
    Paweł Bilesza
    Poziom 6  

    Szacunek człowieku :P

  • #30 12 Wrz 2016 20:41
    krzy5iek1991
    Poziom 10  

    Ja bym "przepisał" program na platformy mobilne (o ile się da). Każdy smartfon ma aparat, więc można by było od razu wszystko na telefonie zrobić. Oczywiście aplikacja płatna, ale nie dużo, żeby ludzi nie zniechęcić.