Projekty

Budowa Platformy Tensometrycznej

1. Wstęp

Platforma tensometryczna (force plate) jest urządzeniem pomiarowym wykorzystywanym w biomechanice, fizjoterapii oraz treningu sportowym do pomiaru sił reakcji podłoża. Niniejsze sprawozdanie przedstawia proces budowy prototypowej platformy tensometrycznej opartej na mikrokontrolerze ESP32 i czujnikach tensometrycznych (load cells).

Głównym celem projektu było stworzenie ekonomicznego urządzenia umożliwiającego pomiar wysokości skoku, czasu lotu, mocy oraz prędkości startu. Platforma komunikuje się z aplikacją desktopową poprzez port szeregowy, z planowaną przyszłą integracją Bluetooth. W przeciwieństwie do komercyjnych rozwiązań, które kosztują tysiące dolarów, ten projekt wykorzystuje przystępne cenowo, gotowe komponenty (ESP32, Belki Tensometryczne), zachowując jednocześnie wysoką jakość danych dzięki zaawansowanemu przetwarzaniu programowemu.

Gotowa platforma tensometryczna
Rys. 1. Gotowa, zamknięta platforma tensometryczna (prototyp na płycie OSB 1m × 1m)

2. Komponenty Sprzętowe

2.1. Czujniki Tensometryczne (Load Cells)

Tensometr (strain gauge) to czujnik elektryczny służący do pomiaru odkształceń mechanicznych. Zasada działania opiera się na zmianie rezystancji przewodnika przy jego rozciąganiu lub ściskaniu. Zależność tę opisuje wzór:

ΔR/R = GF · ε
gdzie: ΔR – zmiana rezystancji, R – rezystancja nominalna, GF – współczynnik czułości (gauge factor, typowo ~2), ε – odkształcenie względne

W projekcie wykorzystano 8 czujników tensometrycznych typu belkowego (identycznych jak w wagach łazienkowych), każdy o maksymalnym obciążeniu 50 kg. Łączna nośność platformy wynosi więc teoretycznie 400 kg. Czujniki rozmieszczone są w układzie ośmiokąta foremnego, co zapewnia równomierny rozkład obciążenia.

Czujnik tensometryczny
Rys. 2. Czujnik tensometryczny typu belkowego
Rozmieszczenie czujników
Rys. 3. Rozmieszczenie 8 czujników w układzie ośmiokąta

2.2. Mostek Wheatstone'a

Czujniki tensometryczne łączone są w konfigurację mostka Wheatstone'a, co pozwala na precyzyjny pomiar niewielkich zmian rezystancji. 8 czujników podzielono na 4 pary, łącząc w każdej parze wszystkie 3 przewody (czerwony z czerwonym, czarny z czarnym, żółty z żółtym):

  • Para górna-lewa (TL): Czujniki 1 i 2
  • Para górna-prawa (TR): Czujniki 3 i 4
  • Para dolna-lewa (BL): Czujniki 5 i 6
  • Para dolna-prawa (BR): Czujniki 7 i 8

Tworzenie pętli mostka (przewody czarne i żółte):

  • Połącz czarny TL z czarnym TR (góra platformy, poziomo)
  • Połącz czarny BL z czarnym BR (dół platformy, poziomo)
  • Połącz żółty TL z żółtym BL (lewa strona, pionowo)
  • Połącz żółty TR z żółtym BR (prawa strona, pionowo)

Podłączenie do przetwornika CS1238 (przewody czerwone):

  • Czerwony TL → E+ (Excitation Positive)
  • Czerwony BR → E− (Excitation Negative)
  • Czerwony TR → A+ (Signal Positive)
  • Czerwony BL → A− (Signal Negative)

Podłączenie CS1238 do ESP32:

  • DOUT → GPIO 19
  • SCK → GPIO 18
  • VDD → 3.3V
  • GND → GND

2.3. Przetwornik ADC CS1238

CS1238 to precyzyjny 24-bitowy przetwornik analogowo-cyfrowy (ADC) zaprojektowany specjalnie do aplikacji wagowych. Kluczowe parametry:

Parametr Wartość
Rozdzielczość 24 bity
Częstotliwość próbkowania 10 / 40 / 640 / 1280 Hz (programowalna)
Wzmocnienie (PGA) 1 / 2 / 64 / 128 (programowalne)
Napięcie zasilania 2.6V – 5.5V
Interfejs Dwuprzewodowy (CLK + DATA)

W projekcie CS1238 skonfigurowano na częstotliwość 1280 Hz z wzmocnieniem PGA 128, co zapewnia wysoką rozdzielczość czasową niezbędną do precyzyjnego pomiaru dynamiki skoku.

Moduł CS1238
Rys. 5. Moduł przetwornika CS1238
Płytka ESP32
Rys. 6. Mikrokontroler ESP32 LOLIN32 Lite

2.4. Mikrokontroler ESP32

ESP32 to wydajny mikrokontroler dwurdzeniowy z wbudowanym WiFi i Bluetooth. W projekcie odpowiada za:

  • Odczyt danych z przetwornika CS1238 (GPIO18 – SCK, GPIO19 – DOUT)
  • Automatyczne tarowanie przy starcie (pomiar offsetu przez 2 sekundy)
  • Pomiar i raportowanie rzeczywistej częstotliwości próbkowania
  • Transmisję surowych danych przez port szeregowy (921600 baud)

Wszystkie obliczenia fizyczne (prędkość, moc, wysokość skoku) wykonywane są po stronie aplikacji desktopowej, co umożliwia elastyczne modyfikacje algorytmów bez konieczności przeprogramowania mikrokontrolera. ESP32 posiada wbudowany moduł Bluetooth, który zostanie wykorzystany w przyszłych wersjach do bezprzewodowej transmisji danych.

Zbliżenie elektroniki
Rys. 7. Zbliżenie na podłączenie modułów: ESP32, CS1238, bateria LiPo 1000mAh

3. Algorytm Pomiaru Skoku

3.1. Maszyna Stanów

Oprogramowanie implementuje maszynę stanów obsługującą cały cykl skoku:

  1. IDLE / WEIGHING: Oczekiwanie na stabilne obciążenie i automatyczny pomiar masy ciała
  2. READY: Masa zmierzona, platforma gotowa do skoku
  3. PROPULSION: Wykryto ruch – całkowanie sił w celu obliczenia prędkości
  4. IN_AIR: Siła poniżej progu – faza lotu
  5. LANDING: Lądowanie – zbieranie danych do wykresu mocy

3.2. Obliczenia Fizyczne

Wysokość skoku z czasu lotu:

h = (g · t²) / 8
gdzie: h – wysokość [m], g – przyspieszenie ziemskie (9.81 m/s²), t – czas lotu [s]

Prędkość startu z impulsu siły:

Podczas fazy propulsji (odpychania) system całkuje przyspieszenie wynikające z siły netto:

a = (Fnetto) / m = ((Fmierzona - m·g)) / m
v(t) = ∫ a · dt

Prędkość w momencie oderwania (takeoff velocity) pozwala obliczyć wysokość metodą impulsową:

himpulse = v² / (2g)

Moc chwilowa i uśredniona:

P(t) = F(t) · v(t)
Pavg = (1/n) · Σ P(t)

System rejestruje również moc szczytową (peak power) oraz stosuje wzory empiryczne Haramana i Sayersa

3.3. Kluczowe Funkcje Algorytmiczne

  • Retrospektywna Całkowanie Impulsu (Retroactive Pulse Integration): System buforuje dane w sposób ciągły. Po wykryciu ruchu algorytm "cofa się" o ~75ms, aby uchwycić początek impulsu, który wystąpił przed przekroczeniem progu wyzwalania.
  • Automatyczna Detekcja Faz: Precyzyjne rozróżnianie fazy głębokiego odciążenia (Unweighting) od fazy lotu (Flight) na podstawie analizy prędkości i czasu trwania niskiej wagi.
  • Dynamiczna Kontrola Stabilności: Podczas ważenia system analizuje statystyki (średnia, wariancja) w oknach 300ms, aby zatwierdzić pomiar tylko przy idealnym bezruchu.
  • Kompensacja Dryfu (Smart Auto-Tare): Monitorowanie platformy w stanie spoczynku (IDLE). Jeśli przez 1 sekundę nie wykryto ruchu, a waga dryfuje powyżej 0.2 kg lecz poniżej AIR_THRESHOLD, następuje automatyczne zerowanie czujników.
  • Fizyka Skoków Seryjnych: Przy skokach wielokrotnych (rebound), prędkość uderzenia z poprzedniego skoku (wyliczona z czasu lotu) jest zachowywana jako prędkość początkowa kolejnego, co zapewnia zachowanie pędu.
  • Ochrona przed Drganiami (Bounce Protection): Inteligentne filtrowanie ignoruje drgania mechaniczne platformy bezpośrednio po wybiciu, zapobiegając fałszywym detekcjom lądowania.

4. Aplikacja Desktopowa

Aplikacja napisana w Python (DearPyGui) umożliwia wizualizację danych w czasie rzeczywistym oraz analizę zarejestrowanych skoków.

Screenshot aplikacji
Rys. 8. Interfejs aplikacji – analiza skoku z wykresem Siły, Prędkości i Mocy

5. Komunikacja

Obecnie platforma komunikuje się z komputerem poprzez port szeregowy USB (baud rate 921600). Mikrokontroler przesyła czysty strumień JSON zawierający surową wartość:

{"w":156234} – surowa wartość z przetwornika ADC

Timestamping (znacznik czasu) jest nadawany przez aplikację na PC w momencie odebrania pakietu. Pozwala to na uproszczenie firmware'u mikrokontrolera (plik platform_send.ino), który zajmuje się jedynie szybkim próbkowaniem. Aplikacja desktopowa wykonuje wszystkie obliczenia fizyczne.

W przyszłości planowana jest komunikacja bezprzewodowa poprzez Bluetooth Low Energy (BLE) wbudowany w ESP32, co umożliwi pełną mobilność urządzenia zasilanego baterią LiPo.

6. Podsumowanie

Zbudowany prototyp platformy tensometrycznej stanowi funkcjonalne urządzenie do analizy skoków. Kluczowe osiągnięcia projektu:

  • Częstotliwość próbkowania 1280 Hz zapewniająca wysoką rozdzielczość czasową
  • Automatyczny pomiar masy ciała z detekcją stabilności
  • Całkowanie impulsowe do obliczenia prędkości, mocy i wysokości skoku
  • Wizualizacja danych w czasie rzeczywistym

Dalsze plany rozwoju obejmują: konstrukcję metalową zamiast OSB, zastosowanie przemysłowych czujników tensometrycznych o wyższej precyzji oraz pełną integrację komunikacji Bluetooth. Najnowszą wersję kodu źródłowego można znaleźć na GitHubie.