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

Izolowany aktywny hub high speed USB

XS_Sowa 28 Mar 2023 10:30 3357 25
Altium Designer Computer Controls
  • Cześć.

    W związku z tym, że chciałbym zawodowo zająć się hardware designem, postanowiłem popracować nad skromnym portfolio. Ciągle uczę się Altium Designer, więc szukam ciekawych pomysłów do zrealizowania. W tym przypadku jest to też moja pierwsza płytka czterowarstwowa i stwierdzić muszę, że od teraz będe robił tylko takie ;) Jest to też pierwsza płytka, do której zamówiłem sito do lutowania SMD. Muszę przyznać, że przy takiej ilości elementów SMD sito jest bardzo dużym ułatwieniem.

    Jako, że jeden projekt, który planuje stworzyć w przyszłości, będzie miał element wysokiego napięcia, stwierdziłem że przydać się może izolacja ST-LINK'a. Kilka razy przez małe zwarcie udało mi się ubić CPU, a nie chciałbym aby w pewnym momencie mój projekt zamienił się w USB-KILLER. :)

    Izolację można zrobić pewnie na kilka sposobów. Jednym z nich jest izolacja sygnałów CLK i DATA interfejsu SWD. Po krótkim poszukiwaniu okazało się, że nie jest to optymalne rozwiązanie. Przykładowo, układ ADuM1250/51, który jest izolatorem szyny i2c, i który mógł by być wykorzystany w takim przypadku, ma maksymalne ograniczenie prędkości do 1 MHz. SWD działać będzie, ale niepotrzebnie będziemy zmuszeni do zmniejszenia taktowania.

    Można szukać innych, szybszych izolatorów, ale takie rozwiązanie i tak będzie miało kilka ograniczeń.

    Tak więc naturalnym wyborem wydaje się izolacja samego portu USB. Po głębszym przemyśleniu stwierdziłem, że gdy już podłączony będzie programator, dobrze było by mieć też opcje serial portu oraz podłączenia analizatora logicznego. Pierwotnie chciałem zakupić pojedynczne, gotowe, pasywne izolatory USB 1.1 z aliexpress, ale stwierdziłem, że bardziej rozwojowym będzie zrobienie czegoś własnego. Tak powstał pomysł na Izolowany Hub USB. Jako dodatek postanowiłem dodać tam izolowaną przetwornicę, tak aby hub był aktywny. Pierwotnie przekonany byłem, iż USB Full Speed będzie wystarczające, wszak takie urządzenie jest dość specyficzne i prędkość transmisji nie jest tutaj głównym założeniem. Wydaje mi się, że w okolicach stycznia na mouserze nie było żadnego izolatora z USB2.0. W googlach też coś ciężko było wyszukać, tak więc wybór padł na:

    - ISOUSB111DWEVM - izolator USB Full Speed. W wersji 0.2 zamieniony na ADUM3166BRSZ - USB High Speed.
    - USB2534I - HUB 4xUSB
    - IES0205S05 - Izolowana przetwornica 5V/5V 2W dla pasywnego USB.
    - LM5020 - Kontroler głównej przetwornicy DC/DC.
    - TPS2552DBVT - Kontroler zasilania portów USB z regulowanym maksymalnym prądem wyjściowym

    Pozwolę omówić sobie wersję 0.2 z pewnymi modyfikacjami, które narzucone są na schemacie i PCB w wersji 0.3, która będzie zamówiona być może w najbliższej przyszłości.

    Układ ADUM3166BRSZ to wręcz aplikacja z noty katalogowej. Chip nie wymaga żadnych zewnętrznych rezystorów, wszystko jest zintegrowane i automatycznie konfigurowane w samym układzie. Strona wtórna układu wymaga podłączenia izolowanego napięcia 5V. Teoretycznie w układzie znajduje się stabilizator liniowy 3.3V, który można wykorzystać do zasilenia układu U9, jednak eksperymenty w wersji 0.1 pokazały, że wydajność prądowa podczas uruchomienia nie jest wystarczająca do stabilnej pracy (przynajmiej w układzie USB111, aby uniknąć niespodzianek przy nowym układzie i nowej płytce, stwierdziłem że od razu użyję zewnętrznego stabilizatora). Do poprawnej pracy wymagany jest także rezonator kwarcowy 24 MHz oraz kilka kondensatorów filtrujących.


    Układ USB2534I jest także mało skomplikowany i w zasadzie jego aplikacja to także nota katalogowa. Wszelkie konfigurowanie układu polega na podciągnięciu konkretnych pinów do zasilania lub masy. W moim przypadku wszystkie porty są ustawione na porty, które mogą ładować baterie (BC_ENx), oraz na start z ustawieniami pobieranymi z wewnętrznego eepromu (SCL/SDA). Pin aktywności huba oraz informacji odnośnie komunikacji Full speed podłączone są do piętrowych diod. Pin LED0 (aktywność) musi być skonfigurowany poprzez aplikację MPLAB Connect Configurator, jednak wydaje się, że aplikacja ma problem z odpowiednimi sterownikami na Windows 10. Nie mam obecnie laptopa ze starszym Windowsem, więc ta opcja nie jest aktywna. RBIAS zgodnie z notą katalogową musi mieć 12 kΩ, zaleca się rezystor precyzyjny blisko układu.

    Układ TPS2552DBVT to kontroler zasilania portu USB. Zasilanie portu jest zawsze włączone (pin Enable ściągnięty do masy). Rezystor R6 ustawia maksymalny prąd wyjściowy. W przypadku gdy prąd ten zostanie przekroczony, sygnał Fault jest zwierany do masy, a w Windowsie pojawia się nam komunikat, że napięcie na porcie USB jest niestabilne. Dla rezystora 210 kΩ ograniczenie prądowe to ok. 100 mA. W momencie pojawienia się napięcia 5 V z głównej przetwornicy DC/DC, dodatkowo dołączany jest rezystor 66 kΩ, dzięki czemu maksymalny prąd jest zwiększony do ok. 550 mA. Na każdej linii zasilającej znajduje się kondensator 120 µF, zgodnie ze specyfikacją USB 8. Kondensator oraz rezystor przy porcie USB można, ale nie trzeba montować - w zależności jak wygląda kwestia uziemienia od strony hosta. W moim przypadku te elementy nie są przylutowane.

    IES0205S05 to izolowana przetwornica 5V/5V 2W, z której zasilane są porty, izolator oraz hub w trybie pasywnym. W założeniu chciałem, aby każdy port był ograniczony do 100 mA (co przy maksymalnym poborze ze wszystkich portów teoretycznie i tak było by za dużo). Teoria teorią, praktyka pokazała, że rezystor ograniczający prąd wyjściowy, 210 kΩ, jest trochę za duży i przyłączenie nawet zwykłego pendrive powoduje wyłączenie zasilania i pojawienie się komunikatu o "niestabilnym zasilaniu" w Windowsie. Koniec końców, wartość rezystancji została ustalona na 150 kΩ (więc prąd wyjściowy to ok. 180 mA). W przypadku maksymalnego obciążenia 2 portów spadek napięcia na USB jest na tyle znaczny, że komunikat i tak się pojawi i napięcie zasilania jest odcinane od portu. Tak więc używając trybu pasywnego trzeba to oczywiście robić z rozwagą, aczkolwiek w przypadku przeciążenia, nic się nie uszkadza. Wyższy pobór prądu = spadek napięcia = odcięcie obciążenia przez TPS2522.
    D5 oraz Q2 to przełączanie zasilania między aktywnym a pasywnym - w przypadku gdyby 5 V było niższe niż 5 V DC/DC, to drugie jest całkowicie odcinane mosfetem Q2 w przypadku podłączenia zewnętrznego zasilania.


    LM5020 to kontroler głównej przetwornicy flyback. Zastosowany transformator to POE13F-50LD. Napięcie wyjściowe to 5 V, maksymalny prąd przy 2 uzwojeniach połączonych ze sobą to 2.5 A. Przetwornica posiada zabezpieczenie nadprądowe w postaci pomiaru napięcia na rezystorach R41 i R42. W obecnym schemacie, oraz laminacie znajduje się mały błąd. Punkt pomiędzy rezystorami R30 oraz R31 nie jest połączony między sobą, zaś na schemacie zabrakło połączenia między nimi oraz C20. Tak czy inaczej, prosta modyfikacja w postaci usunięcia wszystkich komponentów oraz wlutowania kondensatora 1 µF uruchamia wewnętrzny stabilizator LDO, który wykorzystywany jest do sterowania bramki tranzystora.
    Napięcie wyjściowe przetwornicy zostało ustalone na 5.3 V, aby zrównoważyć spadek napięcia pojawiający się na diodzie D5.

    Trochę nasuwa się pytanie, czy izolowana przetwornica jest potrzebna, wszak można wykorzystać dowolną ładowarkę. Owszem, istnieje jednak możliwość, że PC oraz HUB będzie miało to samo zasilanie 24 V, wtedy jednak izolacja na płycie huba jest wymagana.

    Płytka jest zrobiona tak, aby pasować do obudowy 546-1455L801RD z Mousera. Wybrałem kolor czerwono-czarny, więc hub można nazwać też gamingowym :) Wszelkie otwory to rękodzieło dokonane za pomocą wiertarki stołowej oraz pilników. Nie wyszło idealnie, ale jak na samoróbkę jestem zadowolony. Trochę brakuje opisów i jakiegoś logo, może kiedyś coś wykonam termotransferem. Na chwilę obecną, zostawiam jak jest :) Płytka pasuje bez problemów do obudowy, ma odrobinę luzu który można zniwelować za pomocą jakiejkolwiek pianki. Jeżeli złoży się tak, że wykonam wersję 0.3, PCB będzie wydłużone o 3 mm, tak aby pasować "na styk".

    W załącznikach zostawiam schematy oraz pliki Gerber, jeżeli ktoś jest zainteresowany plikami projektu, zapraszam na priv.


    Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB Izolowany aktywny hub high speed USB

    Cool? Ranking DIY
    About Author
    XS_Sowa
    Level 13  
    Offline 
    Has specialization in: konsole, serwis laptopy, serwis apple
    XS_Sowa wrote 89 posts with rating 77, helped 6 times. Live in city Rotterdam. Been with us since 2014 year.
  • Altium Designer Computer Controls
  • #2
    ArturAVS
    Moderator HP/Truck/Electric
    Dlaczego tak bezsensownie rozłożyłeś linie sygnałowe USB?
  • #4
    XS_Sowa
    Level 13  
    ArturAVS wrote:
    Dlaczego tak bezsensownie rozłożyłeś linie sygnałowe USB?

    Fakt, wizualnie na pewno można je poprowadzić lepiej, zapewne poprawię to przy następnej okazji, w szczególności w okolicy huba. Ogólnie między portami a zasilaczami nie ma wiele miejsca, aby je oddzielić masą, a chciałem też wszystko trzymać w miarę daleko od transformatora. Przelotek też chciałem uniknąć.
  • #6
    PFC
    Level 12  
    Rozumiem, że 4 warstwy miedzi zrobiłeś w ramach samodoskonalenia, więc nie proponuję na siłę upychać tego na 2 warstwach, choć myślę, że w ramach zabawy w projektowanie mógłbyś spróbować. Natomiast fatalnie umieściłeś elektrolity, powinny być po stronie wysokich elementów, jak porty USB. Jeśli nie zmieściłeś ich obok monitorów zasilania, to mogłeś monitory zasilania przenieść na bottom layer, a elektrolity na top. Napis X2 schował się pod układem U1. Nie widzę, czy na gotowym PCB też tak jest, ale na renderze na pewno. Układ U9 postarałbym się przenieść za porty CN3 i CN4, aby przebieg linii D+ i D- do każdego złącza był krótszy. Opisy elementów w niektórych miejscach nachodzą na siebie, albo wyglądają, jakby były zostawione losowo, przykład: U9, C41, C42. Nie przyglądałem się mocno datasheet układu USB2534I, ale ten chip chyba nie posiada ochrony przed przepięciami na wyjściach do złączy USB, więc pasowałoby dodać transile na liniach D+ i D-, żeby trudniej było go ubić. Zastanawiałeś się może nad jakimś zabezpieczeniem zasilania, na przykład bezpiecznikiem? Tak to większych błędów nie ma, gratuluję pouczającego projektu. Chętnie obejrzę portfolio.
  • #7
    arti4-92
    Level 17  
    Super! Odnośnie prostokątnych otworów polecam wcześniej rysikiem zarysować dość pewnie zarys otworów (może być od linijki, a najlepiej to odpowiednimi narzędziami do trasowania), a następnie pilnikiem wybierać materiał aż do dojechania do tych rys. Efekt będzie taki, że otwory będą miały równe krawędzie.
  • Altium Designer Computer Controls
  • #9
    rosomak19
    Level 22  
    Jeśli autor nie ma nic przeciwko, chciałbym zapytać, jaką polecacie izolację galwanicznej USB, nie kosztującą majątek. Chciałbym odizolować przystawkę oscyloskopową USB, aby w razie coś, nie ubić laptopa.
  • #12
    XS_Sowa
    Level 13  
    PFC wrote:
    Rozumiem, że 4 warstwy miedzi zrobiłeś w ramach samodoskonalenia, więc nie proponuję na siłę upychać tego na 2 warstwach, choć myślę, że w ramach zabawy w projektowanie mógłbyś spróbować. Natomiast fatalnie umieściłeś elektrolity, powinny być po stronie wysokich elementów, jak porty USB. Jeśli nie zmieściłeś ich obok monitorów zasilania, to mogłeś monitory zasilania przenieść na bottom layer, a elektrolity na top. Napis X2 schował się pod układem U1. Nie widzę, czy na gotowym PCB też tak jest, ale na renderze na pewno. Układ U9 postarałbym się przenieść za porty CN3 i CN4, aby przebieg linii D+ i D- do każdego złącza był krótszy. Opisy elementów w niektórych miejscach nachodzą na siebie, albo wyglądają, jakby były zostawione losowo, przykład: U9, C41, C42. Nie przyglądałem się mocno datasheet układu USB2534I, ale ten chip chyba nie posiada ochrony przed przepięciami na wyjściach do złączy USB, więc pasowałoby dodać transile na liniach D+ i D-, żeby trudniej było go ubić. Zastanawiałeś się może nad jakimś zabezpieczeniem zasilania, na przykład bezpiecznikiem? Tak to większych błędów nie ma, gratuluję pouczającego projektu. Chętnie obejrzę portfolio.

    Dziękuje za post. 4 warstwy to właśnie kwestia nauki. Myślę, że spokojnie można wszystko upchać na 2 warstwach.
    Co do elektrolitów, w wersji pierwszej ich w ogóle nie było. W wersji obecnej stwierdziłem, że skoro ścieżki od zasilania, a dokładniej + z zasilacza USB, idą dolną warstwą, a miejsca w obudowie jest sporo, bo płytka jest zawieszona praktycznie w środku obudowy, po prostu dodam je na dole.

    Co do oznaczeń zgadzam się, gdzieś musiało mi umknąć kilka rzeczy.

    Układ nie ma zabezpieczeń linii danych, trafna uwaga, transile to bardzo dobry pomysł.

    Quote:
    Super! Odnośnie prostokątnych otworów polecam wcześniej rysikiem zarysować dość pewnie zarys otworów (może być od linijki, a najlepiej to odpowiednimi narzędziami do trasowania), a następnie pilnikiem wybierać materiał aż do dojechania do tych rys. Efekt będzie taki, że otwory będą miały równe krawędzie.

    Bardzo dobry pomysł, nie pomyślałem wcześniej o tym. Na pewno zastosuję taką metodę następnym razem.

    Quote:
    Przy tak prostym układzie ja bym ułożył elementy na jednej stronie PCB. Zawsze i prototyp wygodniej lutować i masowa produkcja też łatwiejsza. Jako zabezpieczenie na każdym porcie dałbym USBLC6.

    Wydaje mi się, że cena za montaż w fabrykach za top i bottom jest taka sama.

    Quote:
    Jeśli autor nie ma nic przeciwko, chciałbym zapytać, jaką polecacie izolację galwanicznej USB, nie kosztującą majątek. Chciałbym odizolować przystawkę oscyloskopową USB, aby w razie coś, nie ubić laptopa.

    Polecam ten izolator z tematu ;) Ale najtańsza opcja to chyba coś opartego na ADuM3160, z tym że to jest USB full speed. Z moich doświadczeń wynika, że w takim przypadku analizator logiczny i pulseview po prostu nie działają. Daj znać, jak zachowa się Twój oscyloskop, jestem ciekawy.

    Quote:
    Bardzo ładny projekt, jestem pod wrażeniem.
    Gdzie kupujesz/jak się nazywają takie ładne oprawki na dwie diody świecące?

    Kolega wyżej już podesłał linki, ja zamawiałem właśnie to z Mousera.
  • #13
    rosomak19
    Level 22  
    XS_Sowa wrote:
    Polecam ten izolator z tematu ;) Ale najtańsza opcja to chyba coś opartego na ADuM3160, z tym że to jest USB full speed. Z moich doświadczeń wynika, że w takim przypadku analizator logiczny i pulseview po prostu nie działają. Daj znać, jak zachowa się Twój oscyloskop, jestem ciekawy.

    Kwestia poboru prądu, muszę jeszcze zobaczyć, ile ten oscyloskop pobiera prądu z USB, bo być może opcja bez zasilania z zewnątrz nie wchodzi w grę.
  • #16
    szwagierszwagrow
    Level 10  
    Płytki czterowarstwowe to bardzo fajny gadżet nie kosztujący majątku. Tymczasem kilka dni temu zamawiałem płytki na JLCPCB i zauważyłem, że oferują już płytki 20-warstwowe. Ceny co prawda kosmiczne bo okolice 2 tysięcy za 5 sztuk małych płyteczek, ale mimo wszystko ciekaw jestem dokąd będzie zmierzało hobbystyczne dłubanie w kabelkach gdy w grę wchodzą takie możliwości :)
  • #17
    Jogesh
    Level 28  
    Pytanie do autora, czym kierował się w wyborze tego a nie innego układu HUBa? Ja na przykład lubię GL850G.
    Czterowarstwowe płytki są bardzo fajne i można naprawdę dużo upchać na małej PCB, przez co wychodzi taniej niż 2-warstwowa.
  • #19
    ElektrodaBot
    AI OpenAI ChatGPT4
    Cześć! Aby móc ocenić projekt, potrzebuję więcej informacji na jego temat. Proszę podaj szczegółowe informacje dotyczące projektu, takie jak schematy, opis funkcji, wymagane komponenty, itp. Im więcej informacji dostarczysz, tym lepiej będę mógł ocenić i doradzić w sprawie projektu.
    Jestem sztuczną inteligencją stworzoną przez OpenAI - ChatGPT. Moje odpowiedzi mogą zawierać błędy i proszę się nimi nie sugerować. Zawsze weryfikuj moje wiadomości i porady.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot
  • #21
    ElektrodaBot
    AI OpenAI ChatGPT4
    Przepraszam, ale jako AI nie mam możliwości przeglądania wątków na forum ani korzystania z historii konwersacji. Aby pomóc Ci w Twoim zapytaniu, potrzebuję więcej informacji na temat projektu, takich jak jego cel, konkretny problem, którego doświadczasz, lub szczegółów technicznych, które mogą być istotne.

    Proszę podziel się ze mną tymi informacjami, abyśmy mogli wspólnie przeanalizować Twój projekt i znaleźć rozwiązania dla wszelkich problemów, które napotykasz.
    Jestem sztuczną inteligencją stworzoną przez OpenAI - ChatGPT. Moje odpowiedzi mogą zawierać błędy i proszę się nimi nie sugerować. Zawsze weryfikuj moje wiadomości i porady.
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot
  • #22
    CosteC
    Level 37  
    Hej,
    Bardzo ładnie wykonany projekt. Jeśli chodzi o 4 warstwy i przechodzenie na 2 warstwy, to jestem zwolennikiem "Dobrze" zamiast "Tanio". Tylko te elektrolity od spodu są takie "nieoptymalne" :D

    Ciekawi mnie jakie cele izolacyjne sobie postawiłeś. HUB niby izolowany, ale obudowa 546-1455L801RD jest metalowa - masz zwarcie ekranów strony pierwotnej z wtórną. Jak nie masz, to przez przypadek - panele są metalowe i gniazda w nie wchodzą. Poza tym obudowa bardzo pozytywnie odstaje od większości elektrodowego poziomu.
    Widzę też mało ochrony ESD, co w przypadku "narażonego" urządzenia wydawałoby mi się sensowne.
  • #23
    j4rek
    Level 19  
    Na pcb 2-warstwowej trudniej o sensowną kontrolę impedancji (90/45 Ohm) dla par różnicowych USB. Polecam przydatne i darmowe oprogramowanie Saturn PCB Toolkit.
    Poza tym należy zadbać o wyrównanie długości par od danych D+ i D- oraz odsunąć w miarę możliwości pary różnicowe od innych par danych od siebie i sygnałów zegarów.
    W sieci można natrafić na sporo poradników do projektowania USB, np.:

    https://www.silabs.com/documents/public/appli...0046-efm32-usb-hardware-design-guidelines.pdf
  • #24
    XS_Sowa
    Level 13  
    Porty USB nie dotykają obudowy. Porty wyjściowe są delikatnie schowane w środku, taki był też zamysł. Zaś dla portu wejściowego dziura jest odpowiednio większa, tak aby po włożeniu kabla nie było możliwości kontaktu.
    Jeżeli ktoś na siłę powygina porty to tak, może wystąpić zwarcie. Jako dodatkowe zabezpieczenie można zastosować plastikowe śruby M4 montujące obydwa panele. Czarny plastik, który znajduje się z przodu oraz z tyłu, będzie izolował całość.
    W zamyśle chodziło o to, aby odizolować uziemienie. W Stąd moja uwaga odnośnie kondensatorów i rezystorów znajdujących się przy gniazdach USB - nie w każdym urządzeniu masa jest połączona z ekranem. W zależności co podłączamy, możemy je lutować lub nie, domyślnie nie lutuję tam nic.

    Co do impedancji ścieżek, to miałem to w głowie przy projektowaniu, jednak ani w altiumie ani w pcb toolkit nie mogłem znaleźć nic sensownego co pomogłoby przy projektowaniu ścieżek.
    Na stronie producenta odnośnie układu pod datasheet można także znaleźć informacje odnośnie projektowania urządzeń usb. Trochę się na tym wzorowałem, stąd też kondensatory 120 µF, w trochę niefortunnym miejscu ;)
  • #25
    CosteC
    Level 37  
    XS_Sowa wrote:
    W zamyśle chodziło o to, aby odizolować uziemienie

    Tak sądziłem, dlatego uważam, że najlepiej obudowę połączyć do PE, a zaizolować porty wejściowe i przedni panel. Łatwo o zwarcie przy wkładaniu złącza - to duży kawałek metalu. Nieuziemiona obudowa z kolei sprzyja wrażliwości na zakłócenia. Gdyby chcieć produkt izolować na jakieś konkretne napięcie, to rozmowa była by ciekawsza.

    Kondensatory od spodu to problem produkcyjności, nieistotny dla hobbystycznego wynalazku :)
  • #26
    tplewa
    Level 39  
    XS_Sowa wrote:
    ArturAVS wrote:
    Dlaczego tak bezsensownie rozłożyłeś linie sygnałowe USB?

    Fakt, wizualnie na pewno można je poprowadzić lepiej, zapewne poprawię to przy następnej okazji, w szczególności w okolicy huba.

    Generalnie niejako że to początki i projekt koncepcyjnie fajny, to nie będę tak brutalny ;)

    Owszem, przy USB HS nie ma jeszcze jakiś kosmicznych wymagań (nawet jak się spapra PCB, to często działa) to i tak dobrze nabrać nawyków i zwracać uwagę jak prowadzi się pary różnicowe, zwłaszcza aby zachować odpowiednią impedancję + zadbać o wyrównanie długości.

    Jak coś na schemacie w Altium możesz oznaczyć pary różnicowe i później stworzyć dla nich reguły, więc program pilnuje cię przynajmniej w jakimś stopniu, aby to dobrze zrobić.