====== 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]]