Skocz do zawartości

[Linefollower] V1


Pomocna odpowiedź

Na początek witam wszystkich. Forum obserwuję od pewnego czasu, wreszcie postanowiłem zbudować pierwszego robota.

Główne cele jakie chce osiągnąć budując tę konstrukcję:

- zdobycie doświadczenia w projektowaniu PCB

- wykonanie pierwszego projektu w SMD

- nauka programowania mikrokontrolerów AVR

Dobierając elementy oraz projektując robota wzorowałem się na wielu konstrukcjach zaprezentowanych wcześniej na tym forum.

Konstrukcja robota:

- 16 czujników KTIR podłączone przez komparatory LM339

- ATmega16

- Silniki 2 x Pololu HP 10:1

- Mostek H - TB6612

- Pakiet Lipol 7,4V, stabilizator LM1117 5V

- Sterowanie pilotem RC5

- Dodatkowy moduł z wyświetlaczem LCD i trzema przyciskami do wprowadzania nastaw

Zamieszczam schemat płytki z czujnikami oraz płytki głównej.

Proszę o sprawdzenie schematu i podzielenie się uwagami. Zwłaszcza czy ilość i umiejscowienie kondensatorów oraz ich wartości zostały dobrane odpowiednio.

Link do komentarza
Share on other sites

Tak, to prymitywne stosowanie komparatorów to już jakaś zmora. A ja bym jeszcze dodał:

1. Przy takiej liczbie czujników wiszących na jakimś złączu (i pewnie kabelku) już bym się zastanowił nad multiplekserem lub wczytywaniu przez rejestr szeregowy na SPI. Zamiast kilkunastu drutów masz wtedy kilka - dużo lżejsza taśma i.. bardziej estetycznie? CO więcej, zużyłeś wszystkie piny procesora a aż 16 z nich na proste wejścia z komparatorów. Zablokowałeś sobie UART i JTAG - nie masz już żadnej szansy uruchomienia kodu. Nie został ani jeden pin na którym mógłbyś powiesić choćby diodkę LED pokazującą czy procesor/program jest tam gdzie CI się wydaje i robi to co powinien. To będzie droga przez mękę. Można mieć tylko nadzieję, że LCD ruszy w miarę szybko, ale on nie potrafi szybko (jak LED) zapalić się np. na 1ms by pokazać, że program jest właśnie w obsłudze przerwania od czegośtam.

2. Cztery diody w szereg to już jazda po bandzie. Jesteś tak blisko napięcia zasilania +5V, że musiałeś wstawić opornik tylko 10R. To oznacza, że jakiekolwiek wahania tego napięcia (już nie mówiąc o jego bezwzględnej wartości na którą nie masz wpływu, bo dostaniesz taki stabilizator jaki się trafi) oraz wahania temperatury i rozrzuty technologiczne napięcia przewodzenia diod IR będą miały ogromny wpływ na płynący prąd. Opornik szeregowy jest "be" bo powoduje straty i im mniejszy tym lepiej, ale z drugiej strony jego rezystancja powoduje stabilizację warunków pracy diod. Myślę, że trzy diody mające razem napięcie przewodzenia rzędu 3*1.2=3.6V to dobre optimum przy zasilaniu +5V. Chciałeś dobrze, ale przegrupuj to na więcej łańcuchów po 3 diody. Będzie jeszcze lepiej 🙂 Dla pewności policz zmiany prądu przy zmianie zasilania np. 4.9V-5.1V przy czterech diodach i przy trzech, dla oporników policzonych każdorazowo dla +5.0V.

3. Kondensatory z wyjść mostka wywal z PCB i przenieś na zaciski silników. Tutaj są szkodliwe.

4. Złącze do wyświetlacza (czy tak?) SV3 - jeżeli już planujesz puszczanie sygnałów przez kabelek i masz zupełną swobodę przypisania pinów (oraz nie musisz spełniać jakiegoś standardu) to staraj się najważniejsze sygnały puszczać w otoczeniu masy, tzn. jeśli wysyłasz E do LCD to zrób tak, by na jego sąsiednich pinach (w sensie tasiemki) była masa lub co najmniej zasilanie. Tutaj tylko E jest ważne: jest zegarem od którego cały transfer danych zależy. 4 linie danych oraz RS i tak muszą być wcześniej i kończyć się później a ich zbocza nie są tak ważne jak sygnału strobu. Coś bym tu poprzekładał na złączu, a linii E dałbym jeszcze opornik szeregowy ze 100Ω a tuż przy pinie procesora opornik z 10k do masy. To zapewni śliczny kształt tego sygnału nawet na końcu długiej tasiemki 🙂 Dokładnie to samo z SCK.

5. Przyjrzyj się AVCC i dławikowi L1 - coś tu pokręciłeś.

EDIT: Zapomniałem dodać: witamy na Forum. Jak na pierwszy schemat robota i etap nauki - jest bardzo dobrze 🙂

Link do komentarza
Share on other sites

Na początek dzięki za uwagi 😉

@Tolo

Odnośnie komparatorów. Tak, czytałem notę katalogową. Układ podstawowego komparatora również tam się znajduje 😉

Jestem świadomy wad tego rozwiązania, wiem że sygnał będzie skakał jeżeli napięcie wejściowe będzie oscylować w okolicach referencyjnego. Przeglądałem jednak forbota i widziałem sporo robotów (chociażby nawet projekt Twojego robota Tolo 🙂 ) gdzie takie rozwiązanie było stosowane. Myślałem że taka implementacja jest wystarczająca dla tej aplikacji (dodatkowo upchnięcie tych kilkunastu rezystorów wymagałoby więcej miejsca i skomplikowałoby trochę płytkę).

@marek1707

1. Odnośnie rejestru lub multipleksera. W takim wypadku na płytce z czujnikami musiałbym upchnąć komparatory (z ew. układem histerezy) i jeszcze multipleksery lub rejestr. Wydaje mi się to nierealne aby zachować sensowne rozmiary i masę płytki.

Myślałem o zastosowaniu multipleksera analogowego, ale już na płytce głównej. Z tego powodu że jest to jednak mój pierwszy robot zdecydowałem się na zastosowanie komparatorów aby maksymalnie uprościć sobie obsługę sygnałów z czujników (przynajmniej w pierwszej konstrukcji).

Odnośnie reszty. Nie posiadam JTAGa ale faktycznie, potwierdziłeś moje wątpliwości że za bardzo chciałem upchnąć to w mniejszym kontrolerze. Myślę że po prostu zamienię go na ATmege128. Wyprowadzę UART, dodatkowo jeszcze zrobię pomiar napięcia na aku, starczy miejsca na diodę no i dodatkowo jeszcze wyprowadzę R/W do LCD.

2. Prawdę mówiąc zasugerowałem się tutaj opinią Trekkera i Sabre które znalazłem w innych tematach.

Ja z 5V zasilam 4 diody szeregowo z rezystorem 10R lub 12R i działa idealnie.
Przy zasilaniu z 5V możesz połączyć nawet 4 diody z KTIRów w szereg i dla prądu 20mA dać im rezystor 10Ω, zaoszczędzisz całą masę prądu .

3. Ok, tak zrobię. Z ciekawości - rozumiem że kondensator powinien być jak najbliżej ale w jaki sposób były by szkodliwe gdybym je umieścił przy złączu?

4. Ok

5. Faktycznie 😉

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Nie bój się komplikacji płytek. Posiedzisz nad nią dzień-dwa dłużej, ale potem będziesz zadowolony (i dumny z siebie) przez cały okres zabawy (miesiąc?).

10R i 4 diody w szereg to moim zdaniem przesada z powodów które wymieniłem. Policzyłeś zmiany prądów? Jakie przyjąłeś napięcia przewodzenia diod? Dlaczego akurat takie? Dla jakiej temperatury czujników to liczyłeś (bo przecież na pewno będą się grzały), jakie przyjąłeś różnice w napięciach diod? itd, itp. Tak, to nie jest apteka i będzie działało "idealnie" na 90%. Mi by to nie dało spać. Opornik właśnie takie rozrzuty wygładza i to jest tradeoff w którym musisz na coś postawić. Sam zdecyduj.

Kondensator jest dla mostka złem koniecznym, pojawiającym się wyłącznie z powodu zakłóceń generowanych przez silnik. Dlatego powinien być zamontowany wprost na zaciskach silnika. Wtedy liczysz na to, że indukcyjności i rezystancje kabli trochę ten kondensator od mostka "oddalą", bo przecież nie jest rozsądne obciążanie źródła sygnału prostokątnego - jakim jest mostek - pojemnością. On lubi tylko indukcyjności i dlatego silnik jest jego wymarzonym partnerem. Co więcej, w przypadku dużego kondensatora lub bardziej skomplikowanego filtra, silnik wraz z tym filtrem powinien być odseparowany od mostka dławikami.

Tak samo jak płytki, nie bój się stosowania bardziej skomplikowanych układów. Jeżeli już dzisiaj wiesz jak działa multiplekser lub rejestr przesuwający, to jest to najlepszy moment do ich użycia i sprawdzenia w praktyce swoich umiejętności. Tylko takie rzeczy ciągną do przodu. Tak, będziesz musiał napisać dwie linijki kodu więcej, może nawet dziesięć - to straszne - ale jaka satysfakcja. Ile na to poświęcisz? Godzinę? Dzień więcej? Co z tego, że nie od razu wczytasz stan czujników za pomocą dwóch odczytów z PINx? Prawdziwe problemy będą zupełnie gdzie indziej a najwięcej kodu (i potu) poświęcisz wcale nie na obsługę sprzętu tylko na warstwę behawioralną robota. Jak zrobić fuzję sygnałów z tylu czujników? Jak reagować na dziwne odczyty, na utratę śladu, jak zakręcać, jak pokonywać skrzyżowania i wreszcie jak dojechać pierwszy do mety 🙂 Jeśli masz jakieś pomysły, sprawdzaj je wrysowując w schemat. Zawsze możesz zapytać w razie wątpliwości.

Link do komentarza
Share on other sites

Z tego powodu że jest to jednak mój pierwszy robot zdecydowałem się na zastosowanie komparatorów aby maksymalnie uprościć sobie obsługę sygnałów z czujników

Ja sprawdziłem empirycznie ten patent z multiplekserem i jestem bardzo zadowolony też na początku miałem takie obawy jak ty ale okazało się że obsługa tego rozwiązania pod względem programowym jest bardzo prosto a daje to bardzo duże możliwości dlaczego ?

1. Możesz zastosować znacznie mniejszy procesor (np. ATmege8 )

2. Przy pomocy czterech układów w obudowie SOP16 możesz obsłużyć 32 czujniki normalnie musiałbyś dać 8 układów LM339 nie mówiąc już o tym że aplikacja pierwszego układu jest znacznie prostsza dosłownie jeden czy dwa rezystory pull up i tyle a jakby chcieć zastosować Lm339 w eleganckiej wersji to trzeba by było dać 5x8=40 rezystorów !

3. Zresztą stosując układ 4051 możesz obsłużyć nawet 64 czujniki na 11 zaledwie liniach uC !

Wady nie znajdziesz przykładowych programów do obsługi czegoś takiego ale jeśli uda ci się przez to przebrać to będziesz mógł powiedzieć że zrobiłeś coś jedynego w sowim rodzaju !

PS

(chociażby nawet projekt Twojego robota Tolo

Oj to było prawie pół roku temu rzeczy szybko się zmieniają 😳

Link do komentarza
Share on other sites

Odnośnie diod - tak, policzyłem te zmiany. Dla zasilania 4,9V - 5,1V dla 4 diod w łańcuchu (10Ω) 10mA - 30mA, a dla 3 diod (68Ω) 19mA - 22mA. Dodatkowo policzyłem moc wydzielaną na rezystorach: dla 4x 4 diody - 16mW, dla 4x 3 diody + 2x 2 diody 213mW.

Dodatkowo wraz ze wzrostem temperatury napięcie przewodzenia maleje. Faktycznie te wahania są spore i zdecydowałem się jednak na zmniejszenie liczby diod w łańcuchu.

Odnośnie sposobu obsługi czujników, po przemyśleniach zdecydowałem się jednak na dwa multipleksery analogowe 74HC4052. Nie ma sensu upierać się przy tych komparatorach kiedy jedyną ich zaletą jest tylko trochę łatwiejsza obsługa. Multipleksery zajmą mniej miejsca na płytce, starczy mi pinów na wszystko, dodatkowo będę mógł jeszcze wyrzucić rezystory 20k przy każdym czujniku i zamienić je na 4 na płytce głównej.

Zamieszczam schemat z poprawkami.

Nasunęło mi się jedno pytanie:

1. Odnośnie sygnału E i SCK i rezystora 100Ω w szereg. Rozumiem że taki rezystor ogranicza prąd, ale jaka jest jego rola w kontekście zapewnienia ładnego sygnału?

Link do komentarza
Share on other sites

Wiesz co niedobrze że zablokowałeś sobie interfejs I2C moim zdaniem jest bardziej użyteczny niż UART

ponieważ dzięki niemu możesz podłączyć do uC więcej układów peryferyjnych np. wyświetlacz LCD, dodatkową pamięć, expandery , sterowniki led i wiele więcej. Mogę się mylić ale chyba takich układów na UART nie ma przynajmniej ja takich nie widziałem. A pamiętaj że apetyt rośnie w miarę jedzenia i nie ma sensu co tydzień trawić nowej płytki 😉

I jeszcze co do schematu to przekażę ci sekretną wiedzę 😃 Jak rysujesz schemat to spróbuj kliknąć prawym na element i wybrać opcję "Edit symbol" będziesz mógł wtedy edytować bibliotekę elementu i na przykład dowolnie poprzestawiać nóżki zobacz jak ja to zrobiłem

Prawda że czytelniej ?

Druga rzecz postaraj się ułożyć elementy na schemacie tak aby można go było czytać jak książkę od lewej do prawej podążając za sygnałem czyli najpierw multipleksery wejściami skierowanymi do lewej strony potem uC a zanim układy przez niego sterowane mostek itd. Może to pedantyzm ale tak jest o wiele bardziej czytelnie i logiczniej a nie mostek tam procek tu i ogólny chaos ten schemat jest jeszcze prosty ale jak by elementów było więcej to zrobiła by się niezła sieczka

Link do komentarza
Share on other sites

Przy takim obłożeniu procesora to każdy pin zaczyna się liczyć. Cóż, i UART jest potrzebny i I2C także się przydaje. UART przy uruchamianiu jest magicznym oknem do środka procesora i programu, przez I2C można mieć w każdej chwili więcej portów, wejścia/wyjścia analogowe itd.. Projekt wykorzystujący 100% pinów już na wstępie jest przytkany. Jeśli zajdzie konieczność rozszerzenia funkcjonalności o cokolwiek, będzie kłopot. Można wtedy wyciąć najmniej potrzebne rzeczy, np. diodki LED, ale być może już teraz dałoby się coś oszczędzić:

1. Z tabeli prawdy mostka 6612 wynika, że nie musisz mieć niezależnego sterowania wejściami IN1 i IN2. Zauważ, że dla PWM=0, niezależnie od stanu tych wejść masz "Short brake". Mógłbyś dać tylko jeden sygnał (do każdego silnika osobny) sterowania kierunkiem i podłączyć go np. do IN1, a IN2 sterować przez prosty inwerter. To daje 2 piny.

2. R/W do LCD przydaje się gdy rzeczywiście planujesz odczytywanie zawartości pamięci obrazu i/lub bitu gotowości. Ile bibliotek do HD44780 to robi?

3. Do LCD poszły trzy linie S1..3. Zapewne są potrzebne, choć fajnie byłoby poznać ich zastosowanie 🙂

4. Cały LCD można powiesić na SPI korzystając z jakiegoś rejestru przesuwającego. Wtedy potrzeba tam tylko MOSI i SCK. Linia E powinna zostać osobno więc zamiast 6 pinów portu (D3..0, RS, E) mamy tylko jedną bo SPI i tak jest w użyciu choćby przez programator.

W każdym razie gdyby udało Ci się zwolnić choćby dwa piny, to zrobienie złącza GND+SDA+SCL+VCC wg pomysłu Tolo pozwoliłoby - gdy już uporasz się ze śledzeniem linii - pobawić się na tej samej platformie np. czujnikami położenia (accel, gyro, baro), pomiarem temperatury silników itp 🙂

Szeregowy opornik 100Ω dopasowuje impedancję nadajnika (pinu portu) do impedancji kabla. Przy płaskiej tasiemce, linia w otoczeniu masy będzie miała ok. 120-150Ω a wyjście portu to kilkanaście Ω więc dopasowanie jest konieczne by zachować spójność sygnałów na LCD-owym końcu kabalka. Inaczej przesyłanie zboczy o czasach narastania/opadania <10ns na dalszą odległość może się smutno skończyć. To obszerny temat i nie ma tu miejsca na wykład. Jeśli jesteś zainteresowany, poszukaj haseł "signal integrity" lub "impedance matching". Możesz zacząć od tego:

http://www.marvintest.com/KnowledgeBase/KBArticle.aspx?ID=196

Link do komentarza
Share on other sites

W sumie do obsługi wyświetlacza LCD możesz użyć układu pcf8574 i obsłużyć wyświetlacz przy pomocy I2C czyli wykorzystując tylko dwa piny ! Dzięki temu zwalniasz 7 nóżek uC i możesz dać jeszcze trzy układy 4052 i mieć jeszcze 24 czujniki ! Więc zastanów się nad tym obsługa jest prosta bez trudy znajdziesz potrzebne biblioteki

Link do komentarza
Share on other sites

@Tolo

Tak na szybko sprawdzając to nie mam opcji "Edit symbol" pod prawym przyciskiem myszy (Eagle 6.3). W każdym razie dzięki za uwagę, poszukam później gdzie to dokładnie odnaleźć 😉

@marek

Dzięki za wyjaśnienie odnośnie dopasowania 😉

S1..S3 to przyciski 😉

A odnośnie małej ilości pinów to:

1. Mam jeszcze niewykorzystane MOSI I MISO.

2. Nie zamierzam raczej dorzucać tu niczego po I2C. Jak przyjdzie moment że chciałbym dorzucić żyroskop, akcelerometr, enkodery czy co tam jeszcze to zbuduję wtedy następnego robota z zastosowaniem tych pomysłów 😉

Rozsądnym kompromisem w tym przypadku wydaje mi się po prostu zamiana linii AIN2 i RW. W ten sposób gdybym faktycznie chciał przetestować jakiś sensor to będę miał taką możliwość. I tak podczas jazdy LCD nie byłby podpięty.

Po tej drobnej zmianie schemat płytki głównej wygląda tak. Dodatkowo jeszce dorzucam schemat płytki z LCD.

Link do komentarza
Share on other sites

Nie zamierzam raczej dorzucać tu niczego po I2C.

Czemu taka nie chęć do tego interfejsu 🙂 ?

To ja mam jeszcze kilka pytań. Albo raczej sugestii zauważ, że w czasie jazdy wyświetlanie czegokolwiek na LCD raczej mija się z celem. A więc czy nie lepiej by było zamiast pchać na płytę główną ten wyświetlacz (który nie jest ani mały a ni lekki) dorobić złącze do I2C i przy pomocy tylko 4 kabelków dołączać sobie ten moduł do płyty głównej w czasie debugowania ? Oszczędzisz miejsce na płytce a przede wszystkim zmniejszysz masę robota.

zbuduję wtedy następnego robota

Serio będzie ci się chciało ? Po za tym cała sztuka polega na tym aby zaprojektować konstrukcje którą będzie można z czasem zmieniać i ulepszać.

Po za tym zwróć uwagę na parametry dynamiczne twojego multipleksera

zauważ że czasy opóźnienia bramki tego układu spadają przy wzroście napięcia może warto było zasilić układy multipleksera z oddzielnego potrajacza napięcia np takiego

33_1226769332.jpg

Oczywiście nie wiem czy jet poprawny to tylko luźna propozycja.

Link do komentarza
Share on other sites

Teraz to ja muszę zapytać: jakie znaczenie ma walka o czasy przełączania multipleksera mieszczące się w granicach poniżej 100ns, jeżeli czas konwersji przetwornika w AVR jest grubo powyżej 50us? Czy to coś przyśpieszy? Przecież sama komutacja kanałów zajdzie wcześniej niż procesor 8MHz wykona następną instrukcję. Ponadto ADC pracuje z zegarem wielokrotnie wolniejszym (100-200kHz) więc jego start i próbkowanie napięcia zajdą dużo później.

Tak naprawdę w takich konfiguracjach dużo ważniejsze jest co innego: przeładowanie pojemności połączenia multiplekser-procesor. Zauważ, że pojemność ta jest ładowana ze słabego źródła - fototranzystora, a więc mówimy o prądach rzędu 100uA. Wystarczy, żeby na wyjściu multipleksera pojawiła się pojemność 1nF a potrzebujemy aż 20us by napięcie zmieniło się o 2V. Jeżeli jakiś czujnik odłoży sobie na oporniku obciążenia (tym 20k do plusa) napięcie 1V a kolejny będzie chciał zrobić tam 3V bo widzi coś innego, to stabilizacja sygnału na wejściu ADC nastąpi właśnie po ok. 20us po przełączeniu kanałów multipleksera. Jeżeli program, nie poczeka co najmniej tyle i odpali przetwornik tuż po komutacji kanałów to nagle okaże się, że kanały wykazują jakieś dziwne zależności między sobą. Co więcej, taka, a nawet większa pojemność powinna być wstawiona celowo na każdym wejściu ADC, bo jest to przetwornik niebuforowany i jego kondensator próbkujący widać na wejściu. To oznacza, że podczas fazy "sample" powinien być sterowany ze źródła o małej impedancji, potrafiącej szybko ten kondensator przeładować. Pojemność 1nF jest wystarczająco duża w stosunku do wewnętrznego kondensatora próbkującego by zapewnić jego szybkie przeładowanie, natomiast sam fototranzystor przepuszczony przez multiplekser - nie.

Link do komentarza
Share on other sites

@Tolo

Ale jaka niechęć? Czy Ty w swoim pierwszym robocie dawałeś np. żyroskop na I2C? Mi to jest całkowicie zbędne w pierwszej konstrukcji. Najpierw chciałbym zająć się bardziej podstawowymi rzeczami. Tak moim zdaniem powinna wyglądać nauka. Najpierw zacznijmy od rzeczy prostych, a później przejdziemy do bardziej skomplikowanych. Nie ma sensu pchać wszystkiego co przyjdzie na myśl do pierwszejgo projektu bo takich z reguły nigdy się nie kończy.

Jeżeli będę chciał się pobawić czymś na I2C to zostawiłem sobie (dzięki waszym radom) furtkę żeby coś sobie podłączyć 😉

Co do LCD to przecież już w pierwszym poście napisałem że będzie to dodatkowy moduł na taśmie, a w poprzednim napisałem że i tak podczas jazdy nie byłby podpięty.

@marek

Czyli dorzucić kondensatory między pinem a multiplekserem? Przy pomiarze aku też?

Link do komentarza
Share on other sites

Tak. Przy 4 wejściach ADC od czujników po 1nF - mało, ale powinno wystarczyć i jednocześnie niezbyt wydłużyć czas ustalania a przy dzielniku akumulatora to i 1uF nie zaszkodzi a min. 100nF to już obowiązkowo. Zrobisz przez to filtr wygładzający impulsy produkowane przez napędy i będziesz mierzył prawdziwą wartość średnią.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.