piątek, 1 kwietnia 2011

Jak projektować czytelne schematy?


Autor: Dondu

Rys Apple-1 (rok 1976)
Początkujący elektronicy projektując schematy mają tendencję do "łączenia na siłę" wszelkich połączeń, co w przypadku mikrokonrlolerów (które posiadają wiele pinów) powoduje krzyżowanie połączeń i zmniejszenie czytelności schematu. Nawet początkujący Steve Woźniak projektując Apple-1 miał z tym problem.

Dochodzi do tego zapominanie o wstawianiu symbolu połączenia (kropki), co potęguje kłopoty.




Dlatego też warto zastosować inna technikę projektowania schematów. Tą techniką jest rozbijanie schematu na wirtualne moduły, realizujące konkretne funkcjonalności projektu np. zasilanie, USB, pomiar temperatury, wyświetlacz LCD, itd. Łączenia pomiędzy  wirtualnymi modułami realizuje się za pomocą etykiet (ang. Label).

Takie podejście znacznie zwiększa czytelność schematu, a jednocześnie zachowuje jego pełną zgodność połączeń elektrycznych niezbędnych do zaprojektowania płytki PCB (płytki drukowanej).



Przykład schematu tradycyjnego wykonany w programie EAGLE:

Rys. Schemat tradycyjny



Niby czytelny, ale czy można go zrobić jakoś inaczej?

Można! Poniżej ten sam schemat w wersji podzielonej na wirtualne moduły:


Rys. Schemat modułowy

Pobierz plik Eagle: Schemat modułowy

Jak dla mnie o wiele czytelniejszy :-)

Jeżeli jesteś dociekliwy zapytasz na pewno: Co to za samotny kondensator C4? 
To kondensator filtrujący napięcie zasilania mikrokontrolera, który powinien być umieszczony jak najbliżej jego pinów zasilających. Na schematach zaznacza się go lub je (gdy jest ich więcej) właśnie jako osobno występujące w tym module. W ten sposób schemat jest jeszcze bardziej czytelny.


Grupowanie etykiet

Gdy tworzymy większe schematy w szczególności, gdy są podzielone na arkusze, dobrą praktyką jest grupowanie etykiet. Polega to na tym, że etykiety danego fragmentu schematu (modułu) rozpoczynają się od tego samego przedrostka.

Gdy na przykład mamy na schemacie moduły LCD, sterownika silników oraz USB, odpowiednie etykiety oznaczamy na przykład tak:
  • LCD_DB0, LCD_DB1,  LCD_DB2, LCD_DB3, LCD_E, LCD_RW, itd.
  • USB_D+, USB_D-,
  • SILNIK_PWM, SILNIK_KIERUNEK_A,  SILNIK_KIERUNEK_B, itd.

Wytłuściłem przedrostki, by było lepiej je widać. Na schemacie oczywiście wytłuszczenia nie będzie :-)



Jak zrobić modułowy schemat?

Zapewne zauważyłeś, że na modułowych schematach są takie fajowe opisy sygnałów np. RESET:


To etykiety (ang. LABEL), którymi opisuje się połączenia (ang. WIRE). Najpierw tworzysz połączenie zakończone z jednej strony "w powietrzu". Po tej stronie dodasz etykietę poleceniem LABEL.  Poniżej pokazuję najistotniejsze elementy  właściwości etykiety, które pozwolą Ci utworzyć tak wyglądające etykiety, jak te powyżej (przykład dla etykiety, którą jest RESET):




Ale prościej jest tak:


Warto stosować rozmiar 0.05 ponieważ wtedy etykiety nie zachodzą na siebie.


Obwódki modułów tworzysz za pomocą polecenia WIRE ale na warstwie 95 NAMES. W ten sposób od razu stają się szare. Jeżeli chcesz tak jak ja mieć przerywaną linię, wybierz styl ShortDash:



Napisy oznaczające nazwę modułu tworzysz także na warstwie 95 NAMES za pomocą polecenia TEXT.

Zanim załapałem jak biegle się tym posługiwać minęło parę godzin :-)


Poniżej tutorial wykorzystania etykiet, od schematu, aż do PCB:



Możesz wypracować własny styl lub podglądnąć jak czytelne schematy robią inni :




Przeczytaj także:

10 komentarzy:

  1. U mnie eagle (ta sama wersja, tylko na linuksa) źle wyświetla te etykiety. Napis nie mieści się w tej "obwódce strzałki". Trzeba zmienić font na typ vector i wtedy jest ok. Może to wina buggnietej wersji na linuksa.

    OdpowiedzUsuń
  2. Aktualnie mam wersję Eagle 5.11.0 i na Windows działa prawidłowo - Linuxa nie mam.
    Ale zawsze możesz zostawić checkbox Xref niezaznaczony i wtedy etykieta będzie nadal, ale bez ramki.
    Z tym, że wtedy łączenie wielu arkuszy schematów jest niemożliwe, bo etykieta w takim przypadku musi mieć Xref zaznaczone.

    OdpowiedzUsuń
  3. Cześć.
    Próbowałem zrobić "czytelny" schemat, ale po zastosowaniu LABEL nie ma połączeń elektrycznych. Eagle (5.11.0, Windows) twierdzi przy ERC, że "Only one pin on net ...". W sumie to prawda - bo połączenia przy etykietach mają różne nazwy, natomiast Twoje połączenia przy etykietach mają nazwy tych etykiet, np. RESET. Jak to zrobić? Gdzie robię błąd?
    Pozdrawiam

    OdpowiedzUsuń
  4. Szczerze mówiąc nie wiem gdzie robisz błąd. Z takim błędem jeszcze się nie spotkałem. W trakcie tworzenia drugiej etykiety o tej samej nazwie Eagle w wersji 5 oraz 6 pyta czy ma połączyć te etykiety (w sensie, czy etykiety o nazwie np. RESET jak na rysunku w tym artykule). Spróbuj użyć polecenia NAME do zmiany nazwy - powinno pomóc.

    OdpowiedzUsuń
  5. Proszę nie wprowadzać w błąd młodych ludzi. Takie schematy modułowe są czytelne tylko dla autora i to pod warunkiem że ma pod ręką program w którym to rysował (np: EAGLE).
    Schemat czytelny to nie taki w którym są ładne proste kreski i dużo białego tła, ale taki w którym postronna osoba ma odczytać logikę urządzenia. Ja wolę po ścieżce "jechać długopisem" niż szukać w skomplikowanym schemacie chorej etykiety i na dodatek jeszcze nie wiadomo ile tych etykiet jest. Proszę pamiętać że te schematy będą czytali ludzie na papierze albo w PDF-ie.

    Gdybym schemat APPLE-1 rozrysował na moduły a następnie wydrukował i kazał autorowi tego artykułu diagnozować problem szukając ręcznie etykiet, to sądzę że ten artykuł miałby inne zabarwienie.

    Nie jestem przeciwnikiem rysowania schematów modułowych, ale każdy moduł musi mieć czytelną kompletną logikę (zasilacz, cześć analogowa itp) a jeszcze lepiej jak moduły odzwierciedlają fizyczne płytki urządzenia.

    Przykład autora z procesorem i czujnikiem temperatury jest skrajnie chorym podejściem do tematu. Autor krótkie ścieżki sygnałowe rozbił na etykiety. A gdyby było 10 procesorów i 10 czujników ? Przy takim podejściu nie widać który czujnik jest podłączony do którego procesora. Zanim sprawdzę 10-tą etykietę czujnika do którego procesora jest podłączona to nie będę pamiętał pierwszej :)
    I wiecie co w takiej sytuacji robię, biorę długopis i rysuje te linie, które autor właśnie "pominął" uczytelniając schemat.

    Proszę przyglądnąć się skomplikowanym schematom, którzy tworzą profesjonaliści i wówczas łatwiej będzie zrozumieć o czym ja piszę.

    Tomek

    OdpowiedzUsuń
    Odpowiedzi
    1. ??? :-)
      Kolega naprawdę wierzy w to co napisał?

      Etykiety mogą mieć dowolne napisy. Nic nie stoi więc na przeszkodzie, by w wielkich schematach etykiety zaczynały się przedrostkiem ułatwiającym zlokalizowanie fragmentu schematu.

      Producenci oprogramowania dostosowują się do potrzeb projektantów i dlatego też etykiety pojawiły się w środowiskach projektowych. W Eagle są aż dwa rodzaje etykiet - jedne do łączenia w ramach danego schematu, inne do łączenia między schematami przy projektach wieloczęściowych.

      Przykład schematów monitorów renomowanej firmy LG: LG32LN54** 32LN36** (kopia)

      cyt. "... Ja wolę po ścieżce "jechać długopisem" niż szukać w skomplikowanym schemacie chorej etykiety ..."

      Skoro kolega woli, to proszę bardzo, ale proszę nie zmuszać innych, by męczyli się razem z nim.

      cyt. "Nie jestem przeciwnikiem rysowania schematów modułowych, ale każdy moduł musi mieć czytelną kompletną logikę (zasilacz, cześć analogowa itp) a jeszcze lepiej jak moduły odzwierciedlają fizyczne płytki urządzenia."

      I właśnie temu służą etykiety i podział blokowy.

      Ale rozumiem, że trudno się przestawić, bo podobnie jest z przestawieniem się z programowania strukturalnego na obiektowe :-)

      Usuń
  6. Artykuł jest o czytelności schematu, a Kolega przedstawił schemat monitora ("renomowanej firmy LG" - z tą renomą to Kolega poszedł po bandzie) który jest zupełnym zaprzeczeniem tego o czym rozmawiamy.
    Proszę nie brać przykładu z takich firm, bo oni najpierw produkują urządzenia a później dorysowują do nich schematy :)

    I na koniec dalej nie wiem czy:
    Czy Kolega sugerował się tym schematem pisząc ten artykuł,
    czy Koreańczyk z LG narysował ten schemat po przeczytaniu tego artykułu :)
    Tomek

    OdpowiedzUsuń
    Odpowiedzi
    1. Jak już wspomniałem poprzednio to, że kolega chce sobie utrudniać życie, to kolegi wybór. Ja jedynie odpowiadam stanowczo na stanowcze kolegi stwierdzenie:

      cyt. "Proszę nie wprowadzać w błąd młodych ludzi."

      ponieważ to kolega wprowadza w błąd nie ja :-)

      Samsung_dvd_p191.pdf
      Philips_htb3560_blu-ray.pdf

      no to może coś mniejszego:

      Microchip Pickit 2
      EXPLORER 16 DEVELOPMENT BOARD


      Usuń
  7. Tytuł artykułu zwiastował że będzie mowa o „jeździe Mercedesem”  a autor ciągle pokazuje mi zdjęcia „Malucha”. 

    Ja chciałem tylko wytłumaczyć że etykietowanie elementów nie zawsze przynosi oczekiwany efekt czytelności schematu. W przypadku etykiet gdzie mamy np.: procesor i kilkadziesiąt innych układów scalonych to patrząc na etykietę (np.: I2C )  przy procesorze nie jesteśmy w stanie określić do ilu elementów  ta magistrala biegnie. W takim przypadku musimy wzrokowo przeanalizować kilkadziesiąt scalaków aby określić czy są przy nich te etykiety. 



    Nie spodziewałem się cudów po krótkim artykule ale miałem nadzieje że autor wspomni o:

    1)    schemacie blokowym (kluczowym przy schematach modułowych)

    2)    estetyce opisywania elementów

    3)    zasadach opisywania sygnałów i etykiet ( to było w artykule )

    4)    oznaczania kierunków przepływu sygnałów

    5)    poziomowania napięć (do góry zasilanie w dół masa)

    6)    tabela parametrów elementów

    Prześledzimy „czytelny modułowy schemat” autora.

    1) Kondensator C4 blokujący zasilanie procesora oderwany od rzeczywistości. Już na początku autor zdał sobie sprawę że to jest „ślepy zaułek” ale wmówił czytelnikom że jest ok. Schemat ma być jednoznacznie czytelny, to nie jest „rosyjska ruletka”. Skąd osoba patrząca na schemat będzie widziała przy którym elemencie ma być ten kondensator ?  A jak autor zinterpretuje sytuacje kiedy na schemacie będzie 3 procesory i 2 kondensatory, przy których procesorach mają być te kondensatory ?

    2) Estetyka opisywania elementów. Zasada jest taka aby przyjętą konwencje utrzymać w całym schemacie. Jeżeli np.: elementy poziome opisujemy (z lewej numer elementu z prawej wartość ) to tego się trzymajmy. A zobaczmy na rezystory R1 i R5, w jednym jest opis poziomo w drugim nad elementem i pod elementem. W tak prostym schemacie można to było narysować estetycznie.

    3) Zasada opisywania sygnałów i etykiet. W jednym z komentarzy autor wspomniał że nazwy sygnałów i etykiet  często wykorzystują programiści i tutaj ukłon w kierunku autora, oczywiście ma racje. Ale patrzymy na schemat i „ręce opadają”, nie można etykietom nadawać nazw których nie będą w stanie zadeklarować programiści (nigdy w nazwach sygnałów nie wprowadzamy znaków niedozwolonych dla zmiennych np.: (-). Mam tu na myśli np.: etykietę „1-WIRE” wystarczyło nazwać ją „1_WIRE” i już by było ok.

    4) Poziomowanie napięć i opisy zasilania. No z tymi VCC i GND to już kolega przesadził. Nigdy nie umieszczamy sygnałów zasilających poziomo !.  Jeżeli jest to GND to ma być zwrócone w dół a zasilanie zwrócone do góry. Proszę spojrzeć na załączniki które kolega złączył w komentarzu, czy są tam tak niechlujnie narysowane zasilania ?

    Mało tego etykiety zasilające zazwyczaj oznaczamy napięciem zasilania np.: +5V a nie VCC bo ta nazwa jest niejednoznaczna. W całym schemacie nie ma informacji co oznacza VCC wiec chyba można podłączyć go pod 220V. A na tym schemacie wyżej „nieczytelnym” było ładnie oznakowane +5V, ale kolega go uczytelnił :)

    Proszę nie mieć żalu. Ja tylko wyraziłem soją opinie na temat czytelności produkowanych przez autora schematów. 

    I na koniec wyrazy szacunku dla autora tekstu że miał czas nawiązać dialog z tak skrajnie odmienną osobą.

    Tomek

    OdpowiedzUsuń
  8. Po przeczytaniu artykułu mam dużo szacunku dla Autora za zamieszczenie tego wątku i poświęcenie swojego cennego czasu.
    Jednak mam kilka krytycznych uwag raczej tyczących się historii niż tego, co mamy obecnie. Przykład z Apple-1 jest trochę nieszczęśliwy, bo przełom lat 70 i 80 XX wieku to nie czas obecne gdzie nawet uczeń ma dostęp do komputera tysiące razy silniejszych od tamtych mini komputerów i darmowego oprogramowania. Trzeba wiedzieć, że w tamtych czasach, zazwyczaj kto inny rysował schemat i ktoś inny projektował PCB. Stanowisko do projektowania np. Pi-Cad to mini komputer wielkości biurka a dokumentacja to ponad 10 teczek nawet bogate firmy amerykańskie takie stanowisko miały jedno na dział konstrukcyjny a osoby znające oprogramowanie można było policzyć na palcach jednej ręki. Mam wielkie wątpliwości, aby firma garażowa mogła sobie pozwolić na taki wydatek na starcie. Więc schemat musiał być rysowany tak by osoba projektująca płytki drukowane i nieznająca elementów mogła go bez większych problemów zaprojektować pewnie gdzieś na zewnątrz.
    Z większością uwag pana Tomasza muszę się zgodzić chyba ze względu na wiek i doświadczenie w serwisie.
    Proszę pamiętać, że dokumentacja jest nie tylko dla twórcy schematu znającego doskonale temat, ale i dla ludzi z zewnątrz niezwiązanych z firmą a niekiedy słabo orientujących się w temacie. Myślę, że flagi na schematach powinno się ograniczać do koniecznego minimum a opisywanie ich własnymi wymyślonymi skrótami za niewskazane a na pewno powinny być oznaczone zgodnie z przepływem sygnału (wyjście wejście itd.).
    I taka generalna uwaga dla minie czytelny schemat to taki, z którego na pierwsze spojrzenie widać gdzie mamy wejście i wyjście czyta się od lewa do prawa z góry na duł zgodnie z zasadą zasilanie na do góry masa do dołu i nie muszę szukać połączeń i domyślać się, co ktoś miał na myśli.

    Z wyrazami szacunku dla Autora
    Wojtek

    OdpowiedzUsuń