Mérnöki tervezés beszámoló
Dolgozat címe: Izomstimulátor fejlesztés
Konzulens(ek) neve: Dr Laczkó József, Tihanyi Attila
A Hallgató a kitűzött feladatot megfelelő színvonalon és a kiírásnak megfelelően teljesítette
nem teljesítette
____________________________ Konzulens aláírása
Hallgató neve: Kormos Dávid Leadás dátuma: ………..……………
Izomstimulátor specifikáció ............................................................... 3 Izomstimulátor felépítése ................................................................... 4 Izomstimulátor vázlat ............................................................................................. 4 Mikrokontroller ....................................................................................................... 5 Szöghelyzet érzékelő............................................................................................. 5 MMC/SD kártya ..................................................................................................... 5 Stimulációs kimenetek ........................................................................................... 5 Hangjelzés............................................................................................................. 5 PC csatlakozások .................................................................................................. 5 LCD kijelző és billentyűzet ..................................................................................... 5 Izomstimulátor elkészítése................................................................. 6 Nyomtatott áramköri alaplap .................................................................................. 6 Szöghelyzet érzékelő áramkör............................................................................... 6 Kártyaolvasó áramkör............................................................................................ 8 Kimeneti áramkör................................................................................................... 8 RS232 adó-vevő áramkör .................................................................................... 10 Klaviatúra és LCD áramkör.................................................................................. 10 Izomstimulátor program (Software, alacsonszintű+driver) .............. 11 Programrendszer felépítése(blokkvázlat alapján az egyes részek,pl időzítő(alapidőhöz számol+hardware[lef]+PortTable kezelése), kártya(SPI-n MMCkezelés+filerendszer(free, implementáltuk,mekkora akód:D)+.stm file felépítés, adatok, használata), kijelző(Gergőtől vettem át), szöghelyzet(SPI+számolások), PC csatlakozás soros vonalon(RS232alacsonszintű+rajta menő adatformátum) stb,) .................................................... 11 Időzítő .............................................................................................................. 11 Kártya és file rendszer...................................................................................... 11 Kijelző .............................................................................................................. 11 Szöghelyzet ..................................................................................................... 12 Soros kommunikáció ........................................................................................ 12 Továbbfejlesztés ............................................................................... 12 Irodalomjegyzék................................................................................ 13
2
Izomstimulátor specifikáció A feladat célkitűzése olyan eszköz elkészítése, amely elektromos izomstimulációra alkalmas gerincsérültek rehabilitációjának céljából. Megkíséreljük elérni azt, hogy bizonyos idegrendszeri funkciók működése nélkül képes legyen a páciens helyváltoztatásra önerőből külső ingerlés hatására. Ez a helyváltoztatás triciklivel történne, amire viszonylag könnyedén fel tud szállni a sérült. Az izomstimulációs módszert, amihez készül az eszköz, Funkcionális Elektromos Stimulációnak (FES) hívják, ami annyit jelent, hogy elektromos áram hatására izom-aktivitást idézünk elő. Ennek sok fajtája van, hiszen ezt használják izommerevség csökkentésére, izomerő és az izom kitartóságának növelésére [1]. A következő pontok tartalmazzák a specifikációt szöveges formában. •
Bemeneti pedálszög 1-3 fokos pontosságú legyen
•
Akkumulátoros és/vagy hálózati üzemmód
•
A páciensre jellemző adatok tárolása
•
8 kimeneti csatorna (áram generátor), ahol állítható az ármerősség (tartomány: 0130mA), a frekvencia (tartomány: 10-200Hz) és az impulzusszélesség (tartomány: 10 usec – 1000 usec). A bemeneti pedálszög és a tárolt adatok függvénye a kimenet.
•
A stimulátor kezeléséhez szükséges kijelző és billentyűzet
•
A debug számára szükséges soros vonal
•
Az üzemi kommunikációhoz PC-s csatlakozás szükséges, ez szabvány USB-n keresztül valósítható meg
•
Hibák és egyéb állapotok jelzésére hang és LED kimenetek szolgálhatnak
3
Izomstimulátor felépítése Funkcionálisan három részre bontható a készülék. A vezérlőegységre, ami kiszámolja és előállítja a stimulációs impulzusokat. A kimeneti egységre, ami a vezérlő egység digitális impulzusait analóg formában bocsátja ki, illetve a bemeneti egységre, amely meghatározza, hogy milyen legyen a stimulációs mintázat. bemeneti egység
vezérlő egység
kimeneti egység
Izomstimulátor vázlat
Szöghelyzet adó SPI vagy analóg BEMENET
2x 16 char kijelző
VEZÉRLÉS
8 bit párthuzamos
Displaytech 162B
4 bit párthuzamos PIC24FJ256GB108
Billentyűzet RS232
SPI BUS USB
MMC/SD kártya
Memory stick kezelés
PC csatlakozás a debug számára PC csatlakozás a üzemi kommunikáció számára
KIMENET
Stimulátor kimenet 8 csatorna
Hangjelzés
A stimulátor blokkdiagramját az Hiba! A hivatkozási forrás nem található. mutatja, amely a specifikációt hivatott ábrázolni.
4
Mikrokontroller A stimulátort egy P24FJ256GB108 jelű PIC mikrokontroller vezérli. Az egyes perifériák kezelését végzi.
Szöghelyzet érzékelő A szöghelyzet-érzékelő szolgáltatja az MCU(Microcontroller Unit)–nak az abszolút szöghelyzetet. Ez egy digitális érzékelő, amely soros vonali kommunikációt használ.
MMC/SD kártya MMC/SD kártyán találhatók a páciensre jellemző szöghelyzet függő adatok (impulzus szélesség, frekvencia, amplitúdó).
Stimulációs kimenetek 2x8 (8 kimenet és 8 negált kimenet) kimeneti csatornán valósulnak meg a valódi analóg kimeneti impulzusok, amelyeket megfelelő izmokra kötve előállítható a bicikliző mozgás.
Hangjelzés Hangjelzéssel kritikus állapotokat lehet jelezni.
PC csatlakozások A soros vonal(RS232) illesztése fejlesztési célokat szolgál. STD OUT-ra vezérelve jó debug felületnek. Az USB üzemi kommunikációhoz szükséges.
LCD kijelző és billentyűzet A kijelző és billentyűzet segítségével lehet navigálni a menürendszerben, ahol állíthatók a paraméterek (amplitúdó, frekvencia, impulzusszélesség) és betölthetők a páciensre jellemző adatokat tartalmazó file-ok.
5
Izomstimulátor elkészítése Az izomstimulátor készülék egy alaplapból és a kimeneti áramkörből áll. Az alaplap és a kimeneti áramkör készen van. Csatlakoztatva, összeszerelve képes együttműködni a stimulációs cél érdekében.
Nyomtatott áramköri alaplap Az alaplap tartalmazza a P24FJ256GB108 típusú mikrovezérlőt, az RE22SC041D010F2A00 szöghelyzet érzékelő áramkörét és soros vonali csatlakozóját, az MMC/SD kártyaolvasó áramkört és kártyafoglalatot, a debug számára felhelyezett RS232 soros vonali áramkört és kilenc pin-es csatlakozóját, továbbá a kezelőfelületet, amely 2x8 darab nyomógombot, 1 db encoder gombot, illetve a 162b jelű, 2x16 karakteres LCD MODULE-t.
Szöghelyzet érzékelő áramkör Az RE22SC041D010F2A00 típusú szöghelyzet adó egység elektromos illesztését RS422/V11 [4] szerinti szimmetrikus hullámimpedanciával lezárt vezetővel kell megoldani. A szöghelyzet jeladó áramkör egy SPI [2] típusú soros kommunikációs eljárással képes a szöghelyzet információt közölni. Az SPI típusú eljárás jelen esetben annyit jelent, hogy a master oldal, azaz a mikrokontroller biztosítja az órajelet melyre a slave ráülteti a mérés eredményét, azaz az abszolút szöghelyzettel arányos információt. Az RE22SC041D010F2A00 típusú jeladó 1 teljes kör körüljárását 1000 részre osztja, így a belőle nyerhető információ 0-999-ig tart, ami 10 bites bináris kód, s mint ilyen tíz órajelre tudja a mikrokontroller beléptetni azt.
6
A fentieknek megfelelően a szöghelyzet-jeladót a MC3487-es meghajtó IC és a MC3486-os vevő IC-vel illesztettem a mikrokontrollerhez. A MC3487 meghajtót használtam az órajel megfelelő létrehozására, mely az IC8 2, 3 lábán áll elő. A 2-es
lábon az eredeti órajel, a hármas lábon ennek negáltja van. Az encoder áramkör a ROT ENC DATA lábakon küldi vissza az adat jelet. Amely 10 bit adattal válaszol(+1 stop bit ). A vett adatot és negáltját kiértékelve kapjuk meg az érzékelt abszolút szöghelyzetet. Ez az érték decimálisan 0-999 közötti szám. A mikrovezérlő SPI (Serial Peripheral Interface)-vel veszi az adatot, amit programban átszámolok.
7
Kártyaolvasó áramkör A paciens függő adatokat egy hordozható elektronikában gyakran szereplő SD/MMC kártya illesztésével valósítottam meg. Az SD/MMC kártya alapvetően két üzemmódban működtethető. Az egyik az un. SD mód ami egy clk-val vezérel parancs csatornát és egy hasonlóan vezérelt adat csatornát valósít meg. Ez utóbbi a nagyobb sebességű adatátvitel kialakítása miatt akár több párhuzamos bit-et is tartalmazhat. A másik csatolási lehetőség a mikrokontrollerek világában szokásosan használt SPI busz lehet amikor a vezérlő jelen esetben a mikrokontroller biztosítja az órajelet és egy adatkimeneten az adatot míg egy másik lábon az adatbemeneten képes fogadni a kártya kimeneti adatár. Ez a megoldás minimális számú vezetékkel és egy kicsit kisebb adatsebességgel való illesztést tesz lehetővé. A stimulátor felépítése során egy ilyen illesztést valósítottam meg.
A stimulátorban alkalmazott mikrovezérlő képes akár több SPI busz kezelésére is. az egyik esetünkben a kettes számú buszt használtam fel a memória kártya illesztésére. A kapcsolási rajz részlet szerint a bekötés a CLK, DI, DO vezetékeken túlmenően egy CS vezetéket is tartalmaz mert ennek a segítségével lehet kiválasztani, hogy melyik az aktív eszköz az SPI buszon.
Kimeneti áramkör A kimeneti áramkör tartalmazza a 2x8 analóg kimenetet. Minden egyes kimenet felépítése azonos. A kimentek elektromos szempontból elválasztott módon vannak kialakítva, így biztosítható, hogy az izomstimulátor elektromos zavar mentesen képes legyen elvégezni a feladatát. Ilyen körülmények között biztosított, hogy EMC-vel folyamatosan megfigyelhető legyen a reakció, és így elektronikusan követhető legyen a folyamat. A zavarvédelmen túlmenően ez a megoldás biztosítja, hogy a stimulátor kimenete a vezérlő elektronikától elegendően nagy elválasztási szigeteléssel rendelkezzen. A transzformátoros leválasztás további hatása az is, hogy bármilyen vezérlőelektronikai meghibásodás esetén sem marad folyamatos áram a stimulátor kimeneten. A kimenetek megfelelő áramának előállításához szükséges pimer áramot egy szabályozható áramgenerátor szolgáltatja. Így a vezérlő egység által meghatározott áram értékek állíthatók be a kimeneten. A 8 kimeneti csatorna kimeneti impulzusát időben egymáshoz képest eltolva állítom elő így az említett áramgenerátorból egyetlen is képes ellátni az összes csatorna ellátást. (ide egy impulzus diagram kell azzal a lépcsős áram vezérlő jellel és a meghajtó impulzusokkal.) 8
Egy-egy kimenet meghajtásához digitális oldalon a vezérlő egységből a következő jelekre van szükség. 1. U1 tranzisztor vezérlése digitális kimenő jel. 2. U3 tranzisztor vezérlése digitális kimenő jel. 3. Analóg áramgenerátor vezérlő jel (ez egy PWM kimenet) A felsorolt jelek segítségével megvalósítható a specifikáció szerinti ismétlődési frekvenciájú, és impulzus szélességű uni/bipoláris áramjelek előállítása tetszőleges 0130 mA áramerősséggel. Egy kimenet kapcsolása a következő ábrán látható.
C1 nem kell!! R2 és R3 értéke 47Kohm.
9
RS232 adó-vevő áramkör A vezérlő egységet kiegészítettem egy soros vonali interface-vel, melyet jól lehet használni a program fejlesztése során valamint a már elkészült stimulátor üzemszerű működésénél a folyamat megfigyelésére. Az illesztést egy RS232 illesztő áramkör (MAX232) segítségével oldottam meg. (ábra)
ábar …
Klaviatúra és LCD áramkör A stimulátor működtetésére kezelésére kialakított felület 8 db csatorna választó gombot 1 db általános kezelő encóder-t valamint 1 db 2 soros 16 karakteres kijelzőt tartalmaz. (ábra) Az egyes szerkezetek mire használhatók?
10
Izomstimulátor program A C nyelven írt programjaimat Assemblyre fordító MPLAB IDE nevű fejlesztőkörnyezettel dolgozom, amelyben egyszerre tudok C nyelven és Assemblyben programozni, ha szükséges. A fejlesztőkörnyezet a C32 fordítóprogram segítségével fordítja le a stimulátor programot a mikrokontroller számára. Ehhez, az oktatásban ingyenesen használható szoftveres környezethez, csatlakozik (fizikailag USB-n keresztül) az MPLAB ICD2 nevű programozó egység. Ez „égeti be” a programot a PIC-be.
Programrendszer felépítése(blokkvázlat alapján az egyes részek,pl időzítő(alapidőhöz számol+hardware[lef]+PortTable kezelése), kártya(SPI-n MMCkezelés+filerendszer(free, implementáltuk,mekkora akód:D)+.stm file felépítés, adatok, használata), kijelző(Gergőtől vettem át), szöghelyzet(SPI+számolások), PC csatlakozás soros vonalon(RS232-alacsonszintű+rajta menő adatformátum) stb,) (ezt kisbetűvel kell írni. vagy kihagyni)
Időzítő 50us felbontású alapidősítés segítségével valósítottam meg a pontos frekvencia beállítást és a teljes rendszer üzemeltetését is ez az időzítés biztosítja. Minden méretezés során és a real time számításoknál is ezt az alapidőt használom. Mivel a sitmulációs kimeneten szükséges enneél kisebb idők beállítása is így azokat egy másik egyszer egyszer hutó (monostabil működésű) interrupt segítségével valósítottam meg. ilyen körülmények között lehetséges, hogy a frekvencia és az impulzus szélesség is a specifikáció szerinti határértékek között állítható legyen. (kellen egy két program részlet ai időzítés számításáról, mind a frekvencia tekintetében mind az impulzus szélességében. majd rövid magyarárat a PortTableről.)
Kártya és file rendszer Az SD/MMC kártya illesztésénél az alacsonyszintű programot úgy alakítottam ki, hogy képes legyen mind az MMC mind az SD rendszerű kártyák kezelésére akár 2 GB-os méretig. Az alacsonyszintű hardware illesztésen túlmenően ki kellett alakítani egy FAT file rendszer kezelésére alkalmas programrészlet. Ezt a Tiny FAT file rendszer implementálásval oldottam meg. (ide még néhány tuljdonság a Tiny FAT rendszerről a honlapról) A felsorolt tulajdonságok egyértelműen kielégítik a stimulátor igényeit. A beüzemelt file rendszer felhasználásával elkészítettem a stimulátor vezérlő állomány beolvasását, és értelmezését. (ide néhány gondolatot kell írni a file formátumról. Az egyes kulcsszavakról és a megkövetelt formátumról.)
Kijelző Kijelző formátumok
11
Szöghelyzet A szöghelyzet érzékelő alacsony szintű kódja az SPI(Serial Peripheral Interface) modul használatára épül. A mikrovezérlőn 3 db SPI modul található. Itt az SPI2 modul van használatban. Az SPI2 modul inicializálása az SPI2CON1, SPI2CON2, SPI2STAT regiszterek beállításával történik a PIC24FJ256GB110 jelű mikrokontroller család adatlapja alapján. A helyes beállítást az alábbi kép tartalmazza.
Az SPI2 modul kimenete szolgáltatja a szöghelyzet érzékelő áramkör számára az órajelet. Az SCK2OUT szolgáltatás az, ami kimeneti láb szinten az SPI2 órajelét jelenti. Ehhez a szolgáltatáshoz be kell állítani egy kimeneti lábat az RPORx regiszterek közül. Az RB6 (pin 21)-os lábhoz az RPOR3 regiszter tartozik. Értékként 11-et kap, ami miatt a második SPI modul órajelét kiküldi erre a lábra. Az SPI2BUF bufferbe 0xffff-et írva, az SCK2OUT –on megjelenik az órajel, aminek hatására a rotary encoder értékét kapom vissza a szöghelyzet érzékelő áramkörétől az SPI2BUF bufferba. Ahhoz, hogy a kiküldött órajelre válaszul kapott adatot elkapjuk, egy SPI2DATA bemeneti lábat kell választanunk a mikrokontrolleren. A stimulátor esetében ez az RE8 (pin 13)-as láb.
Soros kommunikáció Jelenleg folyamatosan küldi a szöghelyzet, az izomreakció idővel lineáris interpolációval előrejelzett szöghelyzet valamint a pillanatnyi szögsebesség adatokat. Tervezem a folyamatosan küldött adatok kiegészítését az egyes kimeneti csatornák intenzitás adatainak átküldésével is. A kiegészítés után folyamatosan megfigyelhető monitorozható a stimulátor működésre és az egyes állítások hatása. (program részlet)
Továbbfejlesztés
12
Irodalomjegyzék [1] Recsnyik Zsolt: „Gerincsérültek végtagmozgatását segítő módszerek Funkcionális Elektromos Stimuláció segítségével”, diplomamunka, 2008 [2] Microchip Technology Inc: „Microchip PIC24FJ256GB110 Family Data Sheet”, DS39897B, 2008 [3] Microchip Technology Inc: „MPLAB C Compiler for PIC24 MCUs and dsPICÆ DSCs User’s Guide”, DS51284, 2008 [4] © Renishaw plc: „RE22 series rotary encoders” L-9517-9150-05-B, [5] ITU V.11: „ELECTRICAL CHARACTERISTICS FOR BALANCED DOUBLECURRENT INTERCHANGE CIRCUITS OPERATING AT DATA SIGNALLING RATES UP TO 10 Mbit/s”,1996 [6] SanDisk Corporation: „SanDisk SD Card Product Manual Version 2.2” Document No. 80-13-00169, November 2004 [7] ChaN: „FAT File System Module” http://elm-chan.org/fsw/ff/00index_e.html, 2008 [8] Dr. Laczkó József, Tihanyi Attila: „Izomstimulátor specifikáció”, 2008
13