Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Europejski lider sprzedaży techniki i elektroniki.
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków

jacu007 26 Lip 2013 16:19 4602 0
  • But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków Projekt wykonany przez dwójkę studentów integruje 3 rodzaje pomiarów: pomiar ilości przebytych kilometrów, pomiar szybkości kroków oraz prawidłowości chodu poprzez analizę nacisku na poszczególne punkty na stopie, wykrywając przy tym skrzywienie stopy i kilka innych parametrów, które mogą być przydatne lekarzom ortopedom.

    Podczas normalnego poruszania się, nasze stopy absorbują uderzenia powstałe podczas kontaktu z podłożem poprzez kołysanie się do środka ciała, dystrybuując ciężar równomiernie na całe stopy. Niestety tylko jedna czwarta populacji może się pochwalić naturalnym chodem bez zauważalnych problemów. Reszta populacji dzieli się na tych cierpiących z powodu zbyt dużej rotacji wewnętrznej (pronacji) lub zbyt dużej rotacji zewnętrznej (supinacji). W pronacji stopy podczas kołysania oddalają się od siebie zbyt daleko powodując nadmierne obciążenie łuku stopy. Supinacja powoduje, że podczas chodzenia stopy zbytnio zbliżają się do siebie, co również jest niekorzystne dla stóp. Problemy z chodzeniem mogą mieć późniejszy wpływ na kondycję kolan, stawów skokowych oraz samych stóp.

    Projekt wyposażono w kartę SD, dzięki której będzie można przekazać lekarzowi wyniki badań zebrane podczas chodzenia w ciągu całego dnia.

    Projekt wykonuje 3 główne funkcje:
    1. Pomiar
    2. Przetwarzanie danych
    3. Zapis danych

    Mikrokontroler zastosowany w projekcie powiela tak naprawdę działanie inercyjnego zespołu pomiarowego IMU (Inertial Measurement Unit) w sposób bardziej określony. Autorzy rozważali zakup takiego układu bezpośrednio, ale żeby zmniejszyć koszty, zdecydowali się na zakup osobnych akcelerometrów oraz żyroskopów oraz późniejszą implementacją sygnałów w mikrokontrolerze. Wybrano mikrokontroler ATMega644, ponieważ posiada osiem kanałów przetwornika analogowo-cyfrowego, dzięki którym autorzy byli w stanie obsłużyć wszystkie czujniki, w tym rezystory reagujące na nacisk (FSR - Force-Sensing Resistor ). Zmniejszają one swoją rezystancję po przyłożeniu do nich odpowiedniej siły. Poprzez umieszczenie tego rodzaju rezystorów w odpowiednich miejscach, jesteśmy w stanie dowiedzieć się o rozkładzie sił na całej stopie. W projekcie pracuje również żyroskop z wyjściem analogowym a nie cyfrowym, ponieważ po wielu testach wydał się być bardziej rozsądny i dokładniejszy.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków




    Przetwarzanie danych

    Moduł przetwarzania danych poprzez zaimplementowane algorytmy, wykrywa kroki użytkownika, stwierdza pronację lub supinację oraz daje informację o przechyleniu kątowym stopy. Za pomocą sieci czujników, zabudowanych w bucie, można generować podstawowy model tego, jak porusza się użytkownik.

    Zapis danych

    Po kilku próbach zdecydowano się na akwizycję danych na karcie pamięci SD, gdyż daje ona możliwość łatwego przeniesienia ich w inne miejsce i analizę np. za pomocą programu MATLAB, w którym łatwo można stworzyć wykresy i analizować je. Próbowano zaimplementować transmisję bezprzewodową poprzez interfejs USART, jednak ze względów czasowych oraz ogromu pracy została ona odłożona na późniejszy czas.

    Projektowanie oprogramowania

    Oprogramowanie zostało podzielone na 3 główne moduły ze względu na jego ogrom. Final_Project.c/.h odpowiada za wykonywanie poszczególnych funkcji sterujących oraz gromadzenie danych. Za przetwarzanie zgromadzonych danych odpowiadają funkcje zawarte w calculations.c/.h, obsługa karty pamięci SD wykonywana jest w sdcard.c/.h. W przyszłości planowane jest przepisanie programu na wielowątkowy, tak, aby wszystkie zadania monitorujące wykonywały się jednocześnie i wychodziły do funkcjonalnego GUI.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Główna funkcja sterująca

    Wzorem poprzednich projektów wykonywanych przez grupę wykorzystano Timer0 do wyzwalania przerwania ISR, co każdą milisekundę, w celu zarządzania czasowego kilkoma krytycznymi komponentami. Dekrementujący się licznik programu wyzwala odczyt czujników, co każde 100ms, dodatkowo zastosowano jeden dodatkowy Timer o częstotliwości 100Hz do obsługi opóźnienia dla karty SD.

    Matryca czujników składa się z trzech czujników, FSR, dwóch akcelerometrów oraz jednego dwu-osiowego żyroskopu. Wszystkie czujniki korzystają z wyjść analogowych, co zmusza do wykorzystania siedem z ośmiu ADC mikrokontrolera. Do przełączania pomiędzy poszczególnymi kanałami, przypisano 3-bitową wartość odpowiadającą poszczególnemu kanałowi do bitów MUX2:0 w rejestrze ADMUX.
    Wykorzystano tutaj cały 10-bitowy zakres przetworników mikrokontrolera ATMEGA644. Zamiast zapisywać odczyt danych na karcie SD po każdorazowej konwersji za pomocą przetwornika, zdecydowano się zapisywać je w buforze. Gdy bufor się przepełni program automatycznie wywołuje funkcje pomocnicze, które przepisują całą wartość z bufora na kartę SD.

    Monitoring danych

    Tryb debug urządzenia pozwala mikrokontrolerowi na odczyt danych ADC z wszystkich czujników i przekazanie ich do odpowiedniej analizy. W aplikacji medycznej buty mogłyby stale przesyłać strumień danych poprzez USART do przetwarzania ich na innym komputerze.

    Wykrywanie kroków

    Podczas gromadzenia danych, okazało się, że można wdrożyć wykrywanie kroków na kilka sposobów. Zarówno FSR, pokazujące przykładanie i uwalnianie stopy z nacisku jak i wyjścia akcelerometrów, które wskazują wzrastanie i opadanie przyśpieszenia, mogą być wykorzystane do wykrycia kroku. W projekcie użyto akcelerometr do wdrożenia trzy stanowej maszyny do zliczania i odpowiedniego analizowania ruchu. Kiedy wartość wyjściowa przetwornika ADC z akcelerometru przewyższa wartość progową, maszyna stanów wchodzi w stan STEPUP, w którym wykrywane jest podniesienie stopy i czeka na sekwencję opadania. Jeżeli taka sekwencja nie nastąpi w czasie 0,8s, bramka czasowa zamyka się i układ przechodzi z powrotem do stanu wyczekiwania TRACKING. Jeżeli opadanie zostanie zarejestrowane przez akcelerometr przed wyznaczoną wartością czasową, krok jest zaliczany. Podczas testów i ustalania odpowiednich wartości progowych udało się całkiem ładnie wykrywać kroki.

    Wykrywanie rotacji

    Wykrywanie to odbywa się również poprzez zaimplementowanie maszyny stanów, ale w tym przypadku postanowiono postawić na czujnik siły nacisku. Wykrywanie rotacji zaczyna się, gdy czujniki FSR na pięcie przewyższa określony próg, ponieważ właśnie tam odkłada się największa siła, gdy stopa kołysze się do przodu. Maszyna stanów czeka potem krotki okres, aż czujnik z przodu stopy przekroczą określony próg w zadanym okresie czasu. Jeżeli określona siła zostanie wykryta, analizowane jest, który czujnik został bardziej dociśnięty, co pozwala zdefiniować wewnętrzną lub zewnętrzna rotację.

    Projektowanie sprzętu

    Dla prezentowanego projektu stworzono następujące bloki funkcjonalne:
    - Płytka sterująca z mikrokontrolerem ATMEGA644
    - Akcelerometr Freescale MMA1260D
    - Rezystory FSR firmy Sensitronic
    - Dwu-osiowy żyroskop LPR503AL
    - Moduł karty SD
    - Przetwornik napięcia z 5V do 3,3V

    Płyta sterująca

    Płytka zapewnia wygodne połączenie się interfejsami mikrokontrolera ATMEGA644. Wszystkie elementy są montowane za pomocą lutowania powierzchniowego. Piny połączeniowe zostały umieszczone na krawędzi płytki, co umożliwia znacznie łatwiejsze połączenie ich z innymi elementami. Do mikrokontrolera przylutowano oscylator o częstotliwości 16MHz. Na płytce zastosowano także port USB służący do debugowania. Autorzy preferują użycie interfejsu FT232R USB-to-serial, UART ponieważ nie ufają oni konwerterom serial-to-USB. Dioda zamontowana na pytce sygnalizuje napięcie zasilania, podawane przez klips z zacisków baterii 9V.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Elementy zastosowane na płytce sterującej:

    - Mikrokontroler Mega644-20PU Atmel
    - Podwójny interfejs RS232 MAX233CPP lub FT232RL
    - Żeńska złączka USB
    - Stabilizator LM340LAZ-5.0
    - Oscylator CTX077 16 MHz
    - Przełącznik SPDT do montażu powierzchniowego AYZ0102AGRL 401-1001-1-ND
    - Wtyczka zasilania 2,1 mm CP-002A-ND
    - Klip baterii 9V 84-6k-ND
    - Rezystory w obudowie 1206

    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków

    Akcelerometr Freescale MMA1260D

    Autorzy mieli do wyboru wiele wariantów o różnym przyśpieszeniu, zdecydowali się jednak na 1260D z przyśpieszaniem +/- 1,5G, co okazuje się w zupełności wystarczające. Podczas chodu w normalnej postawie akcelerometr wykrywa przyśpieszanie około 1G. Nie zauważono żeby podczas normalnego chodu akcelerometr przekroczył skale. Zastosowane rozwiązanie z wyjściem analogowym przetwarzanym przez ADC jest wygodniejsze niż interfejs SPI. Sygnał analogowy jest wstępnie filtrowany przez prosty filtr dolno-przepustowy RC w celu usunięcia szumu zegara.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Rezystor FSR

    W projekcie użyto trzy FSR podłożone pod wkładki buta, aby wspomagać wykrywanie pronacji i supinacji, analizując zarówno wewnętrzną jak i wewnętrzną krawędź buta. Rezystancja FSR znacznie różni się wartościami w zależności od przyłożonej do niej siły. Chociaż spadek oporności nie jest liniowy, można uzyskać przybliżoną wartość siły w zależności od rezystancji. Rezystory FSR podłączono do Vcc poprzez dzielnik napięcia. Metodą prób i błędów ustalono, że rezystor 1K podłączony do masy daje najlepszą rozdzielczość przy zakresie siły oddziałującej poprzez człowieka na krawędź zewnętrzną i wewnętrzną podczas normalnego chodu.

    Dwu-osiowy żyroskop LPR503AL

    Do pomiaru przechylenia kątowego buta postanowiono wykorzystać żyroskop. Początkowo zastosowano akcelerometr ADXRS450, ale został on prawdopodobnie uszkodzony podczas montażu powierzchniowego. Płytka żyroskopu LPR503AL zawiera już wszystkie potrzebne kondensatory filtrujące i piny podłączeniowe. Zapewnienie zasilania 3,3V oraz podłączenie wyjścia analogowego do ADC dało najlepsze rezultaty.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Moduł karty SD

    Po pocztowych trudnościach zdecydowano się zakupić kartę SD z płytą breakout, co jest znacznie pewniejszym rozwiązaniem. Ponieważ logika mikrokontrolera pracuje z napięciem 5V a pamięć z 3,3V, w celu dostosowania napięć zastosowano diodę umieszczoną pomiędzy napięciem zasiania 3,3V a pinem kary SD. Rezystor o wartości 1K został umieszczony na linii pomiędzy kartą SD a mikrokontrolerem.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Konwerter napięć 5V do 3,3V

    Ponieważ żyroskop i karta SD korzystają z napięcia 3,3V a mikrokontroler z napięcia 5V zbudowano konwerter. Po kilku nieudanych próbach ze stabilizatorem zbudowanym z tranzystora NPN, 5K rezystora i potencjometru zastosowano stabilizator napięcia LT1584. Napięcie wyjściowe jest regulowane poprzez ustawienie odpowiedniego Vref w oparciu o dzielnik napięć. Zgodnie z dokumentacją napięcie wyjściowe powstaje z formuły Vout = Vref(1 + R2/R1) + Iadj* R2. Po zastosowaniu rezystorów o wartościach R1 = 330 Ω, R2 = 500 Ω: osiągnięto stabilne napięcie 3,2V, zgodne ze specyfikacją obu podzespołów.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Rezultaty

    Podczas testów wszystkie elementy spisywały się znakomicie, w przyszłości może będzie jeszcze lepiej po zaimplementowaniu wielowątkowości.

    Analiza wyników
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Na powyższym wykresie akcelerometr 1 to ten po lewej stronie stopy, akcelerometr 2 to ten po prawej. Czujnik nacisku 1 znajduje się na pięcie, 2 na środku, 3 natomiast pod dużym palcem. W głównym stopniu to akcelerometr jest używany do wykrywania podniesienia stopy i momentu uderzenia w ziemię. Oba te wydarzenia maja ostre piki, które są analizowane w oprogramowaniu. Pierwszy etap składa się z dwóch pików oraz dwóch lub trzech następnych po położeniu stopy na ziemię. Okazało się ze dokładność akcelerometrów nie jest wystarczająco dobra, aby wykrywać zewnętrzna/wewnętrzna rotację. Zamiast tego można polegać na czujnikach nacisku. Badany użytkownik ma supinację, ze względu na to, że jego trampki są noszone na dalszej krawędzi. Krzywe siły pokazują, że podczas chodu najpierw uderza pięta, co pokazuje zielona linia przed fioletową lub niebieską.

    Zakłócenia

    But nie wykazały żadnych zakłóceń. Brak interfejsu bezprzewodowego zapobiega powstawaniu większości zakłóceń z fal radiowych.

    Wnioski

    Autorzy uważają, że udało im się zrealizować projekt wedle przyjętych założeń. Jako urządzenie do pomiarów medycznych wykonuje naprawdę dużo przy niewielkiej cenie użytych elementów. W normalnej produkcji urządzenie może się znacznie skurczyć i służyć również hobbystom do śledzenia przebytej drogi, pomiaru kroków, spalonych kalorii lub pomiaru siły na poszczególne stopy.
    But z czujnikami do wykrywania poprawności chodu oraz zliczania kroków
    Dzięki posiadaniu juz kilku elementów przez konstruktorów koszty były następujące:

    SD karta Sparkfun - $10.00 1 $10.00
    Stabilizator $0.00 1 $0.00
    Akcelerometr $0.00 3 $0.00
    Żyroskop Sparkfun $30.00 1 $30.00
    Rezystory FSR $0.00 3 $0.00
    Diody $0.00 3 $0.00
    Mała płytka $2.00 3 $6.00
    9V Bateria $2.00 1 $2.00
    Custom PC Board - $4.00 1 $4.00
    ATMega644 $8.00 1 $8.00
    DIP sockets $0.50 1 $0.50
    Piny podłączeniowe $0.05 16 $.80
    Rezystory, kondensatory $0.00 1 $0.00
    Całkowita $68.50

    Źródło:
    http://people.ece.cornell.edu/land/courses/ece4760/FinalProjects/s2011/ylw3/webpage/


    Fajne!
 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME