====== KiCad ====== ===== Instalacja aplikacji ===== sudo dnf copr enable @kicad/kicad-stable sudo dnf install kicad kicad-packages3d kicad-doc ===== Struktura katalogów projektów ===== Dla wygody i utrzymania porządku warto korzystać z następującej struktury katalogów: katalogi_projektów/nazwa_projektu_I/dokumentacja/ produkcja/ rewizje/v1.0/ v1.1/ v2.0/ /nazwa_projektu_II/dokumentacja/ produkcja/ rewizje/v1.0/ v1.1/ v2.0/ ==== Struktura wersji ==== **vMAJOR.MINOR.PATCH** * **MAJOR (np. v1, v2, v3):** Duże zmiany, które mogą być niekompatybilne z wcześniejszymi wersjami. * **MINOR (np. .1, .2, .3):** Dodanie nowych funkcji lub usprawnień, które nie wpływają na istniejącą funkcjonalność. * **PATCH (opcjonalne, np. .0.1):** Drobne poprawki lub korekty błędów bez wprowadzania nowych funkcji. **Przykład zastosowania w projekcie PCB:** **Wersja v0.1:** Pierwszy prototyp, podstawowe funkcje działają, ale nie wszystkie testy zostały przeprowadzone. **Wersja v0.2:** Naprawiono błędy z poprzedniej wersji, wprowadzono modyfikacje w rozmieszczeniu komponentów. **Wersja v0.3:** Dodano kilka zaplanowanych funkcji, zoptymalizowano układ PCB. Dopiero po stabilizacji projektu i wdrożeniu wszystkich kluczowych funkcji oznaczenie zmienia się na v1.0. **Wersja v1.0:** Pierwszy działający prototyp. Wszystkie podstawowe funkcje są gotowe. **Wersja v1.1:** Dodano nową diodę sygnalizującą pracę urządzenia. Zmieniono rozmieszczenie złącz dla wygody użytkowania. **Wersja v1.1.1:** Poprawiono literówkę w nazwie wyprowadzeń na warstwie F.Silkscreen. Korekta szerokości ścieżki zasilania. **Wersja v2.0:** Przejście z mikrokontrolera ESP32 na STM32. Kompletnie nowy projekt schematu i PCB. ===== Edytor schematów ===== - Dodanie portów zasilania np +3.3V i GND. - +3.3V szukamy przez wpisanie tej wartości. - GND analogicznie gnd. - Dodanie flag zasilania **PWR_FLAG** przez umieść symbol tak samo jak klasyczne elementy klikając na **A** lub gdy chcemy symbol wyłącznie z grupy zasilania to możemy wybrać klawisz **P**. - Łączymy elementy przez **dodaj połączenie** lub klawisz **W**. - Elementy możemy obracać klawiszem **R**. - Przemieszczanie elementu na schemacie po zaznaczeniu klawisz **M**. - Dodajemy pozostałe elementy układu. - Łączymy pozostałe elementy układu. - Zamiana wartości elementów. - Numerowanie obiektów za pomocą opcji **numeruj schemat**. - Przydziel footprinty za pomocą **przydziel footprint**. - Dla porządku swoje symbole możemy umieszczać w pliku ''~/.local/share/kicad/8.0/symbols/MojaBibliotekaSymboli.kicad_sym''. Oczywiście 8.0 to wersja naszego programu KiCad i może się różnić. W odróżnieniu od footprintów każdy element w tej naszej bibliotece jest zawarty w tym pliku biblioteki. ===== Edytor footprint ===== - Obszar footprint czyli obszar który zajmuje element na płytce PCB musi być określony warstwą **F.Courtyard** w innym przypadku sprawdzenie reguł projektowych DRC wywali nam błąd. - Dla porządku swoje footprinty możemy umieszczać w pliku ''~/.local/share/kicad/8.0/footprints/MojaBiblioteka.pretty/''. Uwaga! ''MojaBiblioteka.pretty'' to cała nazwa katalogu. Końcówka ''.pretty'' nie jest rozszerzeniem pliku. W odróżnieniu od symboli każdy footprint ma osobny plik w tym katalogu. - **F.Fab** - Na tej warstwie możemy umieścić rzeczywisty kontur, zarys naszego elementu. Na tej warstwie umieszczamy również ''${REFERENCE}:'' gdzie pod tą wartością będziemy mieć odniesienie do oznaczenia U1, C1, R1, U3 itd. na schemacie. - **F.Silkscreen** - to jest w zasadzie to samo co powyżej ale pojawia się na nadruku płytki w toku produkcji. Oznaczenia elementu U1, C1, R1, U3 itd. umieszczamy pod ''REF* *''. - **F.Courtyard** - Zaznaczamy obszar zajmowany przez element z niezbędnymi odstępami w stosunku do innych elementów umożliwiający prawidłowy montaż. Przeważnie większy niż wcześniejsze **F.Fab** i **F.Silkscreen**. ===== Edytor płytek PCB ===== ==== Ustawienia ==== - Po utworzeniu nowego projektu przechodzimy do **Plik -> Ustawienia płytki**. - Następnie **Reguły projektowe -> Klasy sieci**. - Pierwszą klasę jaką mamy po otwarciu okna to klasa **Default**. - Do prostych domowych projektów **Szerokość ścieżki** z domyślnej 0,2 mm ustaw na **0,8 mm**. - Aby zachować proporcję **Rozmiar przelotki** z 0,6 mm na **0,8 mm**. - Od tego momentu wszystkie tworzone ścieżki będą miały takie domyślne parametry. - Warto dodać sobie klasy **VCC** i **GND**, które występują praktycznie w każdym projekcie i raczej są szersze niż sygnałowe. - Jeżeli mamy utworzony projekt a dopiero teraz tworzymy klasy to po ich konfiguracji używamy **Edycja -> Właściwości ścieżek i przelotek**. W tym oknie nie musimy stosować żadnego filtrowania a jedynie zaznaczamy ostatnią opcję **Ustaw do wartości z klas sieci/własnej reguły**. - Te ustawienia należy ustawić przy tworzeniu każdego nowego projektu. Oczywiście można zastosować **Import ustawienia z innej płytki** z innego dostępnego projektu. Wybieramy plik i zaznaczamy **Klasy sieci**. ==== Proces ==== - Ustaw siatkę, która dobrze spisuje się dla SMD to **0,635mm**. - Uaktualnij PCB na podstawie schematu. - Rozłożenie elementów. - Połączenie elementów przez **trasowanie ścieżek** lub klawisz **X**. - Ustawienie **B.Cu** umożliwia trasowanie ścieżek od dołu płytki. - Ustawienie **F.Cu** umożliwia trasowanie ścieżek od strony elementów. - Można sprawdzić przez **Widok -> Przeglądarka 3D** lub kombinację klawiszy **Alt+3**. - W czasie trasowania ścieżki możemy wstawić przelotkę na drugą warstwę za pomocą klawisza **V**. - Obrys płytki trasujemy na warstwie **Edge.Cuts**. - Na tej samej warstwie dodajemy otwory montażowe z footprint klawiszem **A** wyszukując **mountinghole**. - Wykonujemy wypełnienie stref masą poprzez uprzednie zaznaczenie **pokaż wypełnione obszary w strefach**. Następnie zaznaczamy warstwę na której chcemy wypełnić strefę i będzie to przykładowo górna **F.Cu**. Następnie dodajemy wypełnioną strefę zaznaczają dookoła obszar płytki. Następnie wypełnij strefę. - To samo wykonujemy na warstwie spodniej płytki czyli **B.Cu**. ==== Najważniejsze warstwy ==== - **Warstwy miedzi (Copper Layers):** * F.Cu (Front Copper) – ścieżki na przedniej stronie płytki (dla montażu SMD i nie tylko). * B.Cu (Back Copper) – ścieżki na tylnej stronie płytki (w przypadku PCB dwustronnych). * Dla PCB wielowarstwowych: In1.Cu, In2.Cu, ... – warstwy wewnętrzne miedzi. - **Edge.Cuts (Kontur płytki):** * Określa kształt i rozmiar płytki. * Warstwa ta jest absolutnie niezbędna dla wycięcia płytki. - **Warstwy maski lutowniczej (Solder Mask):** * F.Mask (Front Solder Mask) – określa miejsca, gdzie na przedniej stronie nie ma maski lutowniczej (np. pady). * B.Mask (Back Solder Mask) – analogiczna dla tylnej strony. - **Warstwy pasty lutowniczej (Paste Layers):** * F.Paste (Front Paste) – dla elementów SMD, określa obszary nakładania pasty na przedniej stronie. * B.Paste (Back Paste) – analogiczna dla tylnej strony (opcjonalna, gdy używamy SMD z obu stron). - **Otwory (Drill File):** * Informacje o wierceniach są zapisywane w osobnym pliku generowanym w formacie NC Drill. * Niezbędne dla otworów przelotowych (THT) i vias. - **Warstwa opisowa (Silkscreen):** * F.Silkscreen (Front Silkscreen) – oznaczenia elementów, ich numery referencyjne, symbole (np. R1, C1). * B.Silkscreen (Back Silkscreen) – opcjonalnie, dla oznaczeń na tylnej stronie. - **F.Courtyard/B.Courtyard:** * Określa obszar montażu elementów, co jest szczególnie przydatne w przypadku dużych lub złożonych projektów. Opcjonalnie dodaje się warstwy opisowe **F.Silkscreen/B.Silkscreen**, ale są one wysoce zalecane dla czytelności projektu i montażu. Bez tych warstw fabryka PCB nie będzie mogła poprawnie wyprodukować płytki, ponieważ będą brakować kluczowych informacji o strukturze i funkcjonalności PCB. ==== Zmienne z tabelki do warstwy F lub B.Silkscreen ==== * **${REVISION}** - Rewizja projektu (pole Rewizja). * **${TITLE}** - Tytuł projektu (pole Tytuł w tabelce projektu). * **${DATE}** - Data wygenerowania (automatycznie aktualizowana przy eksporcie/edytowaniu). * **${COMPANY}** - Nazwa firmy (pole Firma). * **${COMMENT1}**, **${COMMENT2}**, **${COMMENT3}** itd. - Pola komentarzy (pole Komentarz 1, Komentarz 2, Komentarz 3...). * **${FILE_NAME}** - Nazwa pliku PCB (np. project.kicad_pcb). * **${PROJECT_NAME}** - Nazwa projektu (bez rozszerzenia, np. project). * **${KICAD_VERSION}** - Wersja KiCad, w której otwarto projekt. ==== Pole masowe ==== ===== Wymiary typowych elementów ===== * **1206** - większy element SMD * **0805** - mniejszy jeszcze dość wygodny do klasycznego lutowania ===== Kopia bibliotek symboli i footprintów ===== Do utworzenia kopii można użyć poniższy skrypt wygenerowany przez ChatGPT. Utworzony plik najlepiej umieścić w katalogu ''~/bin''. #!/bin/bash # Skrypt do archiwizowania konfiguracji i bibliotek KiCad # Przeznaczenie: KiCad 8.0 # Autor: ChatGPT # Lokalizacje do archiwizacji (względem $HOME) CONFIG_REL=".config/kicad/8.0" SHARE_REL=".local/share/kicad/8.0" # Plik wynikowy ARCHIVE_NAME="KiCadBackup_$(date +%Y%m%d).tar.gz" echo "Rozpoczynam archiwizację plików KiCad..." # Sprawdzanie, czy katalogi istnieją if [[ ! -d "$HOME/$CONFIG_REL" || ! -d "$HOME/$SHARE_REL" ]]; then echo "Nie znaleziono wymaganych katalogów KiCad. Upewnij się, że KiCad jest zainstalowany i skonfigurowany." exit 1 fi # Przejście do katalogu domowego, aby archiwizować względne ścieżki cd "$HOME" || exit 1 # Tworzenie archiwum tar -czvf "$ARCHIVE_NAME" \ "$CONFIG_REL/sym-lib-table" \ "$CONFIG_REL/fp-lib-table" \ "$SHARE_REL/footprints" \ "$SHARE_REL/symbols" if [[ $? -eq 0 ]]; then echo "Archiwizacja zakończona sukcesem. Utworzono plik: $ARCHIVE_NAME" echo "Aby przywrócić dane, użyj polecenia:" echo "tar -xzvf $ARCHIVE_NAME -C \$HOME" else echo "Wystąpił błąd podczas tworzenia archiwum." exit 1 fi **Instrukcje przywracania:** Rozpakuj archiwum do katalogu domowego: tar -xzvf KiCadBackup_YYYYMMDD.tar.gz -C $HOME Sprawdź, czy dane znajdują się w odpowiednich lokalizacjach: $HOME/.config/kicad/8.0 $HOME/.local/share/kicad/8.0 Dane będą przywracane poprawnie niezależnie od różnic w ścieżkach $HOME na różnych komputerach. ===== Linki ===== * [[+tab|https://docs.kicad.org/]] * [[+tab|https://www.youtube.com/watch?v=3FGNw28xBr0&t=261s]]