Ten dokument opisuje odłączalny moduł testowy LED, który pozwala zmontować i przetestować całą elektronikę sterującą bez silnika, cewek i toru mocy — oraz organizację pracy trzech równoległych ekip (CNC / cewki / elektronika).
1. Zasada modułu testowego
Zamiast podów produkcyjnych w port Zmod A wpinany jest gotowy breakout Opal Kelly SZG-BRK-STD, a do niego ring 32× WS2812 — adresowalne diody RGB sterowane jedną linią danych. Dzięki temu:
- 28 diod (indeksy 0–27) świeci dokładnie wtedy, kiedy docelowo byłaby zasilana odpowiednia cewka (0 = najniższa, 27 = najwyższa),
- kolor koduje nastawę prądu: niebieski = prąd trzymania (sekwencja 1), czerwony = prąd impulsowy (sekwencja 2),
- 4 diody statusowe (28–31): zasilanie/awaria, sekwencja 1, sekwencja 2, tryb diagnostyczny,
- całość montuje się bez lutowania (goldpiny + płytka stykowa),
- po testach moduł się odpina, wpina pody produkcyjne i przebudowuje firmware — architektura sterownika pozostaje identyczna.
2. Lista zakupowa modułu testowego
| Element | Przykład | Ilość | Uwagi |
|---|---|---|---|
| Breakout SYZYGY | Opal Kelly SZG-BRK-STD (~30 USD) | 1 | DNA fabrycznie zaprogramowane (VIO 1,2–3,3 V); headery w rastrze 2 mm |
| Ring LED | moduł 32× WS2812 5050, Ø110 mm, 5 V (np. mikrobot.pl) | 1 | jedna linia danych; pobór przy jasności 40/255 < 150 mA |
| Przewody 2 mm → 2,54 mm | kabelki żeńskie 2 mm + zestaw zworek 2,54 mm | 1 kpl. | headery breakoutu mają 2 mm — zworki od Arduino NIE pasują wprost |
| Płytka stykowa | dowolna 400/830 pól | 1 | punkt zbiorczy, zero lutowania |
| Rezystor 330 Ω | THT, wpinany w płytkę | 1 | szeregowo w linii danych ringu (ochrona pierwszej diody) |
| Kondensator 470 µF / ≥6,3 V | THT | 1 | przy zasilaniu ringu (dobra praktyka WS2812) |
| Dioda 1N4148/1N5817 | THT | 1 | patrz uwaga o poziomach niżej |
| Przycisk START | monostabilny NO | 1 | na kabelkach do Pmod A |
| Przełącznik E-STOP | grzybek NC (albo zwykły przełącznik na czas testów) | 1 | rozwarcie = zadziałanie |
| Przełącznik DIAG | dwupozycyjny | 1 | kluczyk niepotrzebny na stole |
| (opcjonalnie) drugi SZG-BRK-STD | do portu Zmod B | 1 | symulacja czujników przełącznikami — patrz §8 |
Zasilanie ringu: 5 V z headera breakoutu (port Zmod udostępnia szynę 5V0; budżet 1 A na port — zapas duży). Jeśli dana rewizja breakoutu nie wyprowadza 5V0 — dowolny zasilacz 5 V/1 A (wspólna masa z breakoutem!).
3. Okablowanie co-do-pinu
Ring WS2812 ← breakout (Zmod A)
| Sygnał ringu | Skąd | Przez co |
|---|---|---|
| DIN (dane) | linia S0 portu Zmod A (header breakoutu) | rezystor 330 Ω |
| +5 V | 5V0 z headera breakoutu (lub zasilacz zewn.) | dioda 1N5817 (patrz niżej) + kondensator 470 µF do GND |
| GND | GND breakoutu | wprost (masa wspólna!) |
Uwaga o poziomach: WS2812 zasilany z 5 V formalnie wymaga „1" ≥ 0,7·5 V = 3,5 V, a FPGA daje 3,3 V. Przy krótkim przewodzie zwykle działa, ale pewne rozwiązanie kosztuje jedną diodę: zasilić ring przez diodę (5 V − 0,4 V ≈ 4,6 V), wtedy próg spada do ~3,2 V < 3,3 V ✓.
Przyciski operatorskie → Pmod A
Wejścia czytane przez axi_gpio_operator; w projekcie stołowym FPGA ma włączone wewnętrzne pull-downy (patrz XDC), więc rozwarty przycisk = 0.
| Pin Pmod A | Bit firmware | Element | Podłączenie |
|---|---|---|---|
| pin 1 | WE_START | przycisk NO | pin 1 ↔ przycisk ↔ VCC Pmod (3,3 V) |
| pin 2 | WE_ESTOP_OK | grzybek NC | pin 2 ↔ styk NC ↔ 3,3 V (wciśnięcie rozwiera → 0 → STOP) |
| pin 3 | WE_DIAG | przełącznik | pin 3 ↔ przełącznik ↔ 3,3 V |
| pin 4 | WE_FAULT | — | niepodłączony (pull-down = brak awarii); do testu FAULT: chwilowo zewrzeć z 3,3 V |
VCC (3,3 V) i GND są na pinach 6/12 i 5/11 złącza Pmod.
Mapa diod ringu
| Diody | Znaczenie | Kolor |
|---|---|---|
| 0–27 | cewki 0–27 (0 = najniższa; indeks 0 przy strzałce na module) | niebieski = prąd trzymania, czerwony = impulsowy |
| 28 | zasilanie / stan | zielony = praca, czerwony = STOP AWARYJNY |
| 29 | sekwencja 1 w toku | niebieski |
| 30 | sekwencja 2 w toku | pomarańczowy |
| 31 | tryb diagnostyczny | fioletowy |
4. Firmware i projekt FPGA w wariancie stołowym
- Firmware: budować z flagą
-DTRYB_STOLOWY=1(bez edycji plików). Różnice względem eksploatacyjnego — patrz tabela wfirmware/README.md(ring aktywny, +~1 ms na przełączenie, pominięta kontrola czujnika, baner ostrzegawczy na UART). Odcisk FNV tabel pozostaje ten sam. - Projekt sprzętowy: jak produkcyjny, plus:
- w konfiguracji Zynq PS włączyć SPI0 przez EMIO; MOSI wyprowadzić jako port
ws2812_doi przypiąć do pinu linii S0 Zmodu A (w wariancie stołowym S0 nie jest podpięte dobramki_tri_o[0]), - pull-downy na wejściach Pmod A (
set_property PULLTYPE PULLDOWN). Wzorce wfirmware/constraints/eclypse-z7.xdc.
- w konfiguracji Zynq PS włączyć SPI0 przez EMIO; MOSI wyprowadzić jako port
- Dane do ringu nadaje sprzętowo kontroler SPI (1 bit WS2812 = 3 bity SPI @ ~2,6 MHz) — bez bit-bangowania, szczegóły w
firmware/src/ws2812.c.
5. Scenariusz testu odbiorczego (stół)
| # | Akcja | Oczekiwany efekt na ringu |
|---|---|---|
| 1 | włączenie zasilania | dioda 28 zielona, reszta zgaszona; baner „KOMPILACJA STOLOWA" na UART |
| 2 | START | dioda 29 niebieska; para niebieskich diod wędruje 27→0 co 400 ms (~11 s) |
| 3 | koniec opuszczania | świeci tylko dioda 0 (niebieska) + 28 zielona — stan OCZEKIWANIE |
| 4 | START (ponownie) | dioda 30 pomarańczowa; pojedyncza czerwona dioda przebiega 0→27 coraz szybciej (całość <1 s, końcówka zlewa się w smugę — to poprawne) |
| 5 | po wyrzucie | wszystko gaśnie poza 28 zieloną — stan SPOCZYNEK |
| 6 | przełącznik DIAG + pełny cykl | dioda 31 fioletowa; oba przebiegi krokowo co 1 s (dobrze widać przekazywanie par) |
| 7 | E-STOP w trakcie dowolnej sekwencji | natychmiast: wszystkie diody cewek gasną, dioda 28 czerwona |
| 8 | reset E-STOP + START | dioda 28 wraca na zielono — stan SPOCZYNEK |
| 9 | zwarcie pinu FAULT z 3,3 V w trakcie sekwencji | jak w kroku 7 |
Wynik każdego kroku odnotować w protokole razem z odciskiem FNV z banera.
6. Przejście z testów na produkcję (moduł jest odłączalny)
- wypiąć breakout + ring (zostają jako narzędzie serwisowe),
- wpiąć pody produkcyjne w Zmod A i B,
- przebudować projekt FPGA w wariancie produkcyjnym (S0 →
bramki_tri_o[0], bez SPI0/EMIO) i firmware zTRYB_STOLOWY=0, - potwierdzić na UART: brak banera ostrzegawczego + zgodny odcisk FNV.
7. Podział pracy na trzy ekipy
| Ekipa | Zakres | Dokumenty wejściowe |
|---|---|---|
| A — mechanika (CNC) | rura PMMA, zatyczki, tłok, pierścienie | wyliczenia.md + STL/DXF/SCAD z kreatora |
| B — cewki | 28 cewek z karkasami, pomiary odbiorcze | elektryka.md §2.2–2.4 |
| C — elektronika | szafa (tor mocy), pody, sterownik, firmware | elektryka.md §3–7, pcb/, firmware/, ten dokument |
Zamówienia długoterminowe — złożyć od razu (niezależnie od ekip): spieki WHA (4–8 tyg.), rura PMMA 3,6 m (zamówienie specjalne), moduły IGBT, Eclypse Z7 + SZG-BRK-STD, złącza Samtec.
Punkty integracji (każdy z protokołem):
- I. Stół (tylko ekipa C) — ten dokument, §5. Zero wysokiego napięcia, można wykonać w pierwszym tygodniu.
- II. Ława z jedną cewką (C + B) — pierwsza prawdziwa cewka od ekipy B podpięta do jednej gałęzi toru mocy: weryfikacja drivera, regulacji histerezowej 10/40 A, pomiar rzeczywistych R/L i czasu narastania prądu (tu wraca uwaga z
elektryka.md§3.1 o ograniczeniu di/dt!). Zasilanie przez autotransformator, wygrodzone stanowisko. - III. Montaż na silniku (A + B + C) — cewki na rurze, czujniki przez przezroczystą ścianę, pierwsze przebiegi wyłącznie w trybie DIAG.
Protokół odbiorczy każdej cewki (ekipa B, przed przekazaniem do C):
| Nr cewki | R [Ω] (norma: wyliczona ±5%) | L [mH] | R izolacji [MΩ] (≥100 @ 500 V) | Oznaczony początek uzwojenia | Podpis |
|---|---|---|---|---|---|
| 1–28 | … | … | … | tak/nie | … |
Wersjonowanie: każdy protokół (stół, ława, silnik) musi zawierać odcisk FNV tabel czasowych z banera UART oraz informację o fladze TRYB_STOLOWY — dzięki temu nadzór techniczny wie dokładnie, który przebieg został sprawdzony którym firmware.
8. Opcja: symulacja czujników (drugi breakout)
Kompilacja stołowa pomija kontrolę czujników, więc do podstawowych testów Zmod B może być pusty. Jeśli chcesz przetestować też logikę czujników (np. przed integracją II), wepnij drugi SZG-BRK-STD w Zmod B i podłącz przełączniki suwakowe między linie S0–S15 a 3,3 V (pull-downy w FPGA analogicznie jak dla Pmod A). Wtedy buduj firmware bez TRYB_STOLOWY — kontrola czujnika po sekwencji 2 będzie aktywna i można ręcznie symulować „pierścień doszedł do góry" (przełącznik S14/S15).