Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

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

phanick 11 Sep 2016 13:50 52011 137
phoenixcontact
  • 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

    Cool? Ranking DIY
    About Author
    phanick
    Level 28  
    Offline 
    Has specialization in: energetyk najwyższych napięć
    phanick wrote 2658 posts with rating 2614, helped 61 times. Live in city Warszawa. Been with us since 2007 year.
  • phoenixcontact
  • #3
    Anonymous
    Level 1  
  • #4
    shadow0013
    Level 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
    Simon79
    Level 20  
    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
    Arni85
    Level 13  
    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
    leonow32
    Level 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
    vipermat
    Level 14  
    Krzysio,
    ładnie proszę : Udostępnij.


    Pozdrawiam
  • #9
    takero
    Level 32  
    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.
  • phoenixcontact
  • #10
    tos18
    Level 41  
    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
    piotrva
    VIP Meritorious for electroda.pl
    phanick wrote:
    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
    pawel01
    Level 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
    piotrva
    VIP Meritorious for electroda.pl
    pawel01 wrote:
    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
    Defozo
    Level 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
    19dbwa10
    Level 9  
    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
    tikka.masala
    Level 20  
    shadow0013 wrote:
    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
    matrix0606
    Level 15  
    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
    Deepone
    Level 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
    piotrek2914
    Level 16  
    19dbwa10 wrote:
    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
    19dbwa10
    Level 9  
    piotrek2914 wrote:
    19dbwa10 wrote:
    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
    eurotips
    Level 39  
    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
    deus.ex.machina
    Level 32  
    piotrek2914 wrote:

    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
    phanick
    Level 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
    Marek2006
    Level 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
  • #26
    LA72
    Level 41  
    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
    phanick
    Level 28  
    Marek2006 wrote:
    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 wrote:
    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
    LA72
    Level 41  
    phanick wrote:
    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
    Paweł Bilesza
    Level 9  
    Szacunek człowieku :P
  • #30
    krzy5iek1991
    Level 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ć.