Hangiu Alexandru (1) [302190]
Universitatea POLITEHNICA din București
Facultatea de Inginerie Electrică
PROIECT DE DIPLOMĂ
Sistem de control al mișcării pentru un echipament de chinetoterapie
Autor: Alexandru-Mihai HANGIU
Conducător științific: Liviu KREINDLER
BUCUREȘTI
2020
Introducere
0.1. Motivația
De-a [anonimizat] a jucat un rol foarte important în studierea corpului uman pentru asigurarea sănătății acestuia și vindecarea cât mai rapidă în urma bolilor sau accidentelor ce au avut loc la nivelul corpului uman. În toți acești ani au avut loc numeroase descoperiri ce au dus la formarea medicinii moderne din zilele noastre.
[anonimizat]-se în amănunt de problemele legate de om și sănătatea acestuia. Unele din aceste domenii au rezultat din îmbinarea a două sau mai multe tipuri de nevoi necesare omului.
[anonimizat] s-ar traduce ca ,,terapie prin mișcare’’.
Chinetoterapia face parte din medicina fizică și studiază mecanismele neuromusculare și articulare care îi asigură omului activitățile motrice normale și necesare. [anonimizat], afecțiunea pe care o are, tipul de activitate pe care o desfășoară, stadiul de evoluție a bolii și existența altor afecțiuni. [anonimizat].
Principalele obiective ale terapiei prin chinetoterapie sunt:
[anonimizat]
0.2. Obiective
Lucrarea de față urmărește:
– [anonimizat] 8.6 pe baza cerințelor aplicației pentru aparatul folosit în chinetoterapie
Lucrarea este structurtă pe cinci capitole.
[anonimizat]. [anonimizat].
În capitolul trei este prezentat programul EasyMotion Studio și codul implementat în acest program pentru controlul mișcării pentru prototip. [anonimizat]. În ultimul capitol sunt prezentate rezultatele experimentale realizate pe baza unor teste pentru verificarea funcționării corecte a noii aplicații.
Capitolul 1. Metodologia pentru prevenirea și compensarea tulburărilor măduvei spinării
1.1. Prezentarea problemei și a [anonimizat], [anonimizat]. Aceste probleme sunt datorate unei vieți sedentare și a unui diagnostic dat foarte târziu care în unele cazuri poate fi prea târziu.
Consecințele la nivel social și personal sunt uriașe și destul de alarmante. Software-ul prezintă o abordare inovatoare care face posibilă analiza cauzelor care au generat problemele legate de măduva spinării (mers asimetric, dezechilibru muscular, modificări ale posturii). În consecință, cu cât evaluarea se realizează mai repede și are loc intervenția corectivă asupra problemei, cu atât rezultatele vor fi mai bune.
Deci se poate spune că software-ul servește ca o tehnologie pentru realizarea unui diagnostic și a unor mijloace de corecție, încă din stadiul incipient al dezechilibrelor musculare.
1.2. Set de cerințe pentru software
Aplicația descrisă este bazată pe un sistem cu indicatori numerici numiți CETAP și CETOLO ale căror valori caracterizează o poziție a măduvei spinării corecte. CETAP reprezintă indicele de echilibru muscular și articular anterior și CETOLO reprezintă indicele de echilibru al toracelui muscular și articular. [1]
Pe baza acestora s-a stabilit ca parametru pentru aplicație diagrama amplitudine – forță deoarece se obțin informații despre limitările amplitudinii mișcării și cele legate de nivelul forței. Însă evaluarea acestor indici nu poate să înceapă în orice situație și de aceea s-a considerat un algoritm format din 2 cazuri, în funcție de capacitate sau incapacitatea pacientului de a efectua contracții maxime nedureroare.
Dacă pacientul nu poate efectua contracții maxime se realizează testarea pentru identificarea pragului durerii, se lucrează asupra pragului determinat și în final se verifică contracția maximă. Dacă aceasta este posibilă se trece la exercițiul pentru capacitatea efectuării unei contracții maxime, dacă nu se refac pașii menționați anterior. [1]
Dacă pacientul poate efectua contracții maxime se efectuează un test pentru determinarea capacității mușchilor care susțin coloana vertebrală, se calculează parametrii CETAP și CETOLO, se realizează modelele pentru dezvoltarea forței prin exerciții de control la forțe pe care le poate exercita pacientul. În urma a 10 ședințe dacă rezultatele se află în zona normală problema este rezolvată, dacă nu se reiau ședințele. [1]
Din cercetarea efectuată de firmă s-a constatat că pe curba forță – amplitudine începutul miscării realizate de pacient poate fi deficitar din două motive, supraestimarea sarcinii de pornire și subestimarea sarcinii de pornire (figura 1.1.).
În timpul mișcării pacientul trebuie să mențină nivelul acestei forțe în parametrii necesari pentru a beneficia de un efect terapeutic optim pentru o recuperare cât mai rapidă. Însă acesta nu poate efectua exercițiul perfect și vor exista o serie de desincronizări ce se pot vedea în figura 1.2.
Timpul opririi mișcării va fi dificil la început, deoarece apar cele două situații menționate la început, supraestimarea sarcinii de oprire și subestimarea sarcinii de oprire (figura 1.3.).
Figura 1.1. Deficiența sincronizării la început [1]
Figura 1.2. Deficiența sincronizării în timpul mișcării [1]
Figura 1.3. Deficiența sincronizării la oprire [1]
În figura 1.4. este prezentat modelul de referință în forță – amplitudine după care pacientul trebuie să reproducă mișcarea, fiind folosit pentru a obține remiterea efectelor blocării reflexelor musculare. În ceea ce privește sistemul de frânare se poate spune spune că un coeficient de frânare mare este echivalent cu un timp de contracție mare și un mic coeficient de frânare este echivalent cu un timp de contracție mic.
Figura 1.4. Modelul de referință pentru dezvoltarea dinamică a coordonării [1]
Pe baza considerațiilor prezentate s-au impus următoarele setări de software:
– Capacitatea de a vizualiza și înregistra graficul amplitudinii forței.
– Calcul amplitudinii medie, forța medie, durata medie a fazei active a mișcării și puterea ciclului de mișcare;
– Utilizarea valorilor de referință pentru indicatori în interpretarea evaluării.
– Investigarea zonei nedureroase, definirea limitelor (amplitudine, forță).
– Reajustarea rapidă și redefinirea zonei nedureroase.
– Capacitatea de a efectua testul de rezistență maximă.
– Posibilitatea de a defini modelul de control al mișcării pentru a echilibra valoarea indicilor prin exerciții de control al mișcării.
– Urmărirea calității controlului mișcării în fazele de inițiere, variație constantă și de oprire.
– Crearea unei baze de date pentru stocarea rezultatelor
Capitolul 2. Descrierea funcționalității aparatului
2.1. Aspecte teoretice
Aparatul va opune rezistența direcției de tragere a sforii în funcție de viteza actuală și parametrii introduși în aplicația ErgoControl.
Funcționarea aparatului se bazează pe 2 moduri, unul pasiv și celălalt activ.
Modul pasiv reprezintă momentul de tragere a sforii de către utilizator și este reprezentat de ecuația:
Curent=constantă_frână*(viteză disc – limita viteză frână)
Unde:
Curent = curentul dezvoltat în frâna electromagnetică ce încetinește discul conectat la mosorul aparatului .
constantă_frână= parametru introdus de către utilizator
Viteză disc = viteza actuală a discului
Limită viteză frână = viteza dupa care frâna începe să funcționeze
În modul activ sfoara este eliberată de către utilizator iar curentul va fi egal cu forța impusă de programul ErgoControl de a trage sfoară înapoi.Acest proces poate fi scris sub forma:
Curent=Force_M2
Unde :
Curent = forța cu care motorul va trage înapoi de sfoară
Force_M2= forța impusă din programul ErgoControl de a trage sfoara înapoi
Cele 2 moduri explicate anterior pot fi prezentate sub forma unui grafic ca în figura următoare:
Figura 2.1. Evoluția forței de tragere și retragere în funcție de viteză
2.2. Starea aparatului
Aparatul este compus din 3 driver-uri Technosoft:
1. IDM640-8EI cu firmware-ul F147C . Acest drive controlează frâna electromagnetică prin aplicarea unor pulsuri de curent pe iesirile A si B . [axa 5]
2. IM233-MA – cu firmware-ul F148D . Acesta învârte discul mare ce este conectat la mosor și poate fi încetinit de electromagneți. [axa 1]
3. IM233-MA cu firmware F148D. Acesta trage înapoi de mosor cu o forță stabilită de utilizator prin programul ErgoControl. [axa 2].
Aceste driver-uri sunt conectate între ele prin rețeaua CAN.
Comunicarea din exterior se face prin portul serial RS232 al driver-ului IDM640-8EI.
Acesta primește comenzile necesare rulării aplicației, apoi le distribuie la rândul lui celorlalte două driver-uri.
Driver-urile IM233-MA reprezintă o familie de motoare digitale fară perii inteligente, bazate pe cea mai nouă tehnologie DSP și oferă performanțe motorii inteligente combinate cu un control în mișcare încorporat. Datorită acestui control, aceste motoare combină controlller-ul, motorul inteligent și funcționalitatea unui PLC într-o singură unitate compactă și sunt capabile să execute mișcări complexe fără a necesita intervenția unui controller de mișcare extern. Folosind limbajul Technosoft Motion (TML), următoarele operații pot fi executate direct la nivel motorului:
Setarea diferitelor moduri de mișcare (profiluri, PVT, PT etc.)
Modificarea modurilor de mișcare și / sau a parametrilor de mișcare
Controlul fluxului programului prin salturi condiționate și apeluri ale funcțiilor TML, întreruperi TML generate în condiții predefinite sau programabile (protecții declanșate, tranziții pe întrerupătorul de limitare sau intrări de captare etc.) și așteparea apariției unor evenimente programate
Manipularea semnalelor I / O digitale și a semnalelor de intrare analogice
Executarea operațiunilor aritmetice și logice
2.3. Funcționarea aparatului
La punerea sub tensiune se vor aprinde led-urile paratului, vor porni ventilatoarele din dreptul motoarelor IM233-MA și sfoara se va trage înapoi cu o forță mai slabă decât cea de funcționare normală. De asemenea în interiorul driver-urilor, adică în program, se vor reseta valorile variabilelor de lucru.
Atunci când aplicația este pornită din programul ErgoControl, variabila status_IDM va fi schimbată din 0 în 1. Aparatul va începe să tragă de sfoară înapoi cu o forță constantă și va fi limitat la o viteză maximă de retragere. Discul mare va fi învârtit de motorul axei 1 cu o viteză constantă reprezentată de variabila Speed_Running din Ergosim.
Când se va trage de sfoară, frâna electromagnetică va fi inactivă până când viteza tragerii de sfoară va fi egală cu cea a discului mare. După ce acestea nu vor mai fi egale, va apărea o rezistența la tragere proporțională cu viteza. Dacă viteza de învârtire a mosorului este mai mică decât cea a discului, atunci discul se va învârti independent de mosor cu viteza impusă la început. Când viteza mosorului depășeste cea impusă a discului, atunci discul se va învârti mai repede, odată cu mosorul. Astfel dacă se frânează rotirea discului fară să se ajungă sub viteza minimă impusă, atunci acea frânare se va resimți negativ în forța de desfășurare a mosorului. Adica pentru a trage de sfoară, operatorul, după ce depășește forța minimă de depășire a vitezei impuse, va trebui să tragă în plus și de forța de frânare a discului.
Energia produsă de motorul cu axa 2 la tragerea sforii se disipă într-un circuit rezistiv.
Acest circuit este activat atunci când tensiunea sistemului depășește 48V DC și cuplează o sarcină rezistivă astfel încât să apară o cădere de tensiune controlată.
2.4. Descrierea aparatului
Figura 2.2. Privire lateral Figura 2.3 Privire spate
Figura 2.4. Vedere de sus
Figura 2.5. Frâna rezistivă
Figura 2.6. Privire lateral/dedesubt
2.5. Prototipul folosit pentru testarea aplicației
După ce am înțeles scopul, funcționarea aparatului și am văzut câteva aplicații ale acestuia, în locul lui am folosit un motor de tip brushless cu encoder și de putere mai mică pentru a putea implementa codul în EasyMotion Studio, pentru a realiza modificările cerute de cerințele aplicației în aplicatia ErgoControl și pentru a nu mă răni deoarece aparatul are o forță foarte mare și dacă se greșește ceva se riscă rănirea operatorului la nivelul mâinilor.
Pe lângă motor am folosit un driver technosoft iPOS4808 MY-CAN cu un port serial RS232 pentru a putea realiza conectarea la laptop, o sursă de laptop de 24V, un driver care are rol de canal de comunicație și protecția cu două rezistențe ceramice. Pentru a putea funcționa, fazele motorului și encoder-ul sunt conectate la driver-ul iPOS. Cele două driver-uri sunt conectate între ele prin Ethernet, unul este folosit pentru motor în EasyMotion Studio și celălalt pentru aplicația LabView.
Protecția cu rezistențele ceramice este folosită deoarece atunci când se trage de sfoară se genereaza tensiune ce poate ajunge la peste 30V și drive-ul se poate arde. Această protecție previne acest lucru și este setată din program ca să se activeze când tensiunea crește de valoare de 30V.
Inițial era folosită doar o rezistență ceramică însă de-alungul utilizării am observat că aceasta se încălzește foarte tare și în mod repetat. De aceea am mai utilizat încă o rezistență ceramică pe care am montat-o în paralel cu prima și le-am legat de un radiator.
Utilizarea acestui prototip are ca scop implementarea funcționării programului de pe aparatul actual, prezentat în capitolul 2, pe un singur motor și drive pentru a se găsi o soluție mai simplă și economică care va fi folosită de către pacienții care apelează la acest tip de terapie. Faptul că este folosit un motor de o putere mai mică reprezintă un avantaj deoarece va scădea riscul de accidentare în timpul executării exercițiilor.
Figura 2.7. Motorul și protecția prin rezistențe Figura 2.8. Driver Technosoft
Figura 2.9. Montajul complet
Capitolul 3. Controlul mișcării realizat pe prototip în aplicația EasyMotion Studio
3.1. Aplicația EasyMotion Studio
EasyMotion Studio reprezintă o platformă software pentru configurarea și programarea mișcărilor driverelor și motoarelor inteligente Technosoft.
EasyMotion Studio include două module:
– EasySetUp – pentru configurarea unității inteligente / motorului;
– Motion Wizard – pentru programarea mișcării.
Modulul EasySetUp ajuta la configurarea rapida a unui drive pentru o anumite aplicatie, folosind doar 2 dialoguri. Acesta este instrumentul recomandat atunci când programarea mișcării și controlul se fac printr-un dispozitiv extern (cum ar fi un PC).
Ieșirea din EasySetUp este un set de date de configurare care pot fi descărcate în memoria EEPROM a unității sau salvate pe PC. La pornire, datele de configurare salvate în EEPROM-ul unei unități sunt utilizate pentru inițializare.
Cu EasySetUp este de asemenea posibilă recuperarea informațiilor complete de configurare de la o unitate programată anterior. EasySetUp include un programator de firmware cu care se poate să actualiza firmware-ul drive-ului inteligent.
Motion Wizard oferă un mod simplu, grafic de a crea programe de mișcare scrise în Technosoft Motion Language (TML). Se generează automat toate instrucțiunile TML, prin urmare nu este nevoie să învățați sau să scrieți vreun cod TML.
Figura 3.1. Pagina de start a EasyMotion Studio
În figura 3.2. se poate vedea că o aplicație este formată din setup și motion
În Setup (figurile 3.3 și 3.4) trebuie să se introducă datele nominale ale motorului care este folosit și se pot realiza teste pentru a vedea dacă totul este în regulă cu datele introduse pentru motor. După se introduc datele pentru driver-ul ce se folosește pentru placă, acestea sunt folosite în controlul curentului, a vitezei și a poziției motorului. De asemenea se pot introduce și protecții la supracurent.
După ce Setup-ul a fost descărcat în driver-ul plăcuței, în secțiunea Motion se pot introduce comenzile care fac ca motorul să se miște așa cum vrea operatorul.
Figura 3.2. Deschiderea unei aplicații în EasyMotion Studio
Figura 3.3. Realizarea Setup-ului
Figura 3.3. Setup pentru motor
Figura 3.4. Setup pentru driver
3.2. Descrierea codului folosit pentru controlul mișcării
Așa cum a fost descris în subcapitolul 4.1. a fost realizat un proiect denumit Prototype Motor. În Setup au fost introduse datele nominale ale motorului din prototipul folosit iar în secțiunea Motion a fost realizat codul pentru controlul mișcării așa cum este explicat în capitolul 2.
Mai întâi s-au declarat variabilele necesare pentru aplicație iar pe parcursul proiectului au mai fost adăugate alte variabile necesare aplicației.
Variabilele declarate sunt de 2 tipuri.
Primele variabile sunt declarate în ordine astfel încât aplicația LabVIEW-ErgoControl să le citească și să le poată folosi pentru măsurători. Aceste variabile au fost primite odată ce mi s-a prezentat software-ul folosit de firmă și mi s-a cerut să nu le modific din cauza că aplicația EasyMotion nu va mai putea comunica cu LabVIEW.
Ultimele variabile pot fi schimbate deoarece sunt cele folosite în aplicația EasyMotion si nu de către ErgoControl. După aceea variabilele folosite în EasyMotion sunt inițializate cu valorile necesare în aplicație.
După declarare și inițializare se realizează un profil de control în cuplu unde motorul va trage de sfoară cu 2A. Acesta este dat de variabila EREFT=3276, echivalent cu 2A.
Se inițializează partea HIGH a variabilei de 32 de biți Force_cmd_M2 cu valoarea lui EREFT, apoi și variabila initial_force_cmd. Acest lucru este facut deoarece vreau să mențin aceeași valoare pentru EREFT iar la final aceasta se va modifica cu noua valoare calculată.
După aceea a fost pus un timp de așteptare de 1 s pentru motor.
A fost realizat un loop unde, dacă variabila command_and_status este 0 să nu se continue programul. Acest lucru este făcut pentru a începe programul folosit pentru aplicația LabVIEW-Ergosim.
S-a inserat un label denumit RUN_and_wait_st_by_cmd pentru a marca începutul buclei de calculare a forței de frănare pentru motor.
După aceea a fost citită viteza medie prin variabila Ltemp1=aspd_avg, s-a efectuat shift-area ei la stanga cu 5 biți pentru a o putea egala cu parte HIGH a lui Speed_arc_M2, iar force_cmd va fi egal cu initial_force_cmd. Această shiftare este efectuată pentru a crește precizia de calcul deoarece driver-ul este în virgulă fixă iar atunci când se calculează cu o variabilă tot ce este după virgulă se poate pierde.
Dacă variabila Speed_arc_M2 este mai mare decât 0 atunci se va sări direct la label-ul Apply_force_cmd unde valoarea lui EREFT va fi înlocuită cu force_cmd, adică cu 2A de la începutul programului. Dacă nu atunci se va continua programul.
Variabila Ltemp1 va fi initializată cu viteza de mers aspd_avg_sqr, s-a shifttat spre stânga cu 2 biți pentru a o putea egala partea HIGH cu variabila temp1.
temp1 se va înmulți cu variabila constant_BRAKE care reprezintă constanta de frânare folosită pentru a realiza forța de frânare ce acționează asupra motorului la tragerea de sfoară. Produsul dintre cele 2 variabile se stochează în registrul PROD.
Dacă PROD este diferit de 0 atunci se va sări la label-ul Saturated1, dacă nu atunci temp1 va fi egal cu PROD.
Înainte de Saturated1 se verifică dacă temp1 este mai mare sau egal cu 0. Dacă este atunci se va sări la not_saturated1, dacă nu se va sări la Saturated1 unde force_cmd va fi egal cu 32767 și după aceea la Apply_force_cmd.
Acest lucru reprezintă o verificare ca temp1 să nu fie mai mare de 32767 deoarece, în binar, numerele mai mari de 32767 reprezintă numerele negative iar în program când se va aduna la force_cmd pe temp1 valoarea acesteia s-ar putea să devină foarte mare. După când se va egala cu EREFT și se va rula programul, în momentul tragerii de sfoară valoarea lui EREFT va fi așa mare încât motorul va trage extrem de tare de brațul pacientului riscând accidentarea acestuia.
Cum am zis, se adună la force_cmd valoarea lui temp1 și se va pune în variabila temp3 în caz că trebuie să schimbăm ceva la ea.
Aceeași verificare ca la temp1 o vom face și la force_cmd.
Dacă force_cmd este mai mare sau egal decât 0 atunci se va sari la not_saturated2, dacă nu atunci o vom egala cu 32767.
După această verificare se egalează EREFT cu force_cmd. La sfârșit se alocă variabila temp cu command_and_status și se va scădea cu 3.
Dacă temp este diferit de 0 atunci se va reîntoarce la label-ul RUN_wait_st_by_cmd, dacă nu atunci command_and_status va fi 0 și se reîntoarce la set_init_force. Astfel programul va rula încontinuu ca într-o buclă while.
Variabila command_and_status este utilizată pentru a activa rularea programului așa cum trebuie pentru programul LabVIEW.
Adică s-au realizat 2 butoane în fereastra Motion Status al programului EasyMotion Studio. La apăsarea primul buton variabila command_and_status va fi 1 și astfel se va rula întreg programul. La al doilea buton command_and_status va fi 3, se va sări peste partea de calculare a noii forțe și EREFT va fi egal doar cu 2A.
3.3. Programul TML pentru implementarea codului descris
Acesta reprezintă începutul codului unde sunt declarate și inițializate variabilele folosite de aplicația ErgoControl și cele folosite în cod.
După aceea se impune un profil de referință în cuplu unde motorul va trage de sfoară cu 2A, se vor egala variabilele prezentate în figură cu această valoare și se așteaptă apăsarea butonului start din fereastra Motion Status care va modifica valoarea lui command_and_status în 1. Astfel se va ieși din bucla loop și va începe calcularea forței de frânare.
În această secvență are loc tot procedeul descris în subcapitolul anterior unde se egalează variabila temp1 cu viteza de mers a motorului, se înmulțește cu const_BRAKE și în final se egalează cu produsul final.
Pe urmă se efectuează verificarea ca acest produs să nu fie mai mare decât 32767, după se va aduna la force_cmd. Se verifică și dacă aceasta nu este mai mare decât 32767, dacă nu este atunci valoarea acesteia se va egala cu EREFT.
La final se efectueză operația de scădere a variabilei command_and_status cu 3, astfel dacă rezultatul va fi diferit de 0 atunci se va reia bucla panâ la apăsarea butonui stop din Motion Status
Capitolul 4. Aplicația ErgoControl și modificările aduse acesteia
4.1. Platforma LabVIEW 8.6
După ce a fost realizat controlul mișcării în aplicația EasyMotion Studio, s-a trecut la programul ErgoControl pentru a putea face schimbările cerute de acesta.
Programul Ergocontrol a fost realizat în platforma LabVIEW 8.6, care reprezintă o platformă de proiectare a unui sistem și mediul de dezvoltare pentru limbajul de programare vizuală de la National Instruments.
LabVIEW este utilizat în mod obișnuit pentru achiziția de date, controlul instrumentelor și automatizarea industrială pe o varietate de sisteme de operare (Microsoft Windows, Linux, macOS etc). Limbajul de programare folost de LabView, uneori numit G, se bazează pe disponibilitatea datelor, adică dacă există suficiente date pentru o funcție aceasta se va executa.
Fluxul de execuție este determinat de structura unei diagrame de blocuri grafice (codul sursă LabVIEW) pe care programatorul conectează diferite noduri funcționale desenând fire. Aceste fire propagă variabile și orice nod poate fi executat imediat ce toate datele sale de intrare devin disponibile. [3]
LabVIEW integrează crearea de interfețe utilizator (denumite panouri frontale) în ciclul de dezvoltare. Programele-subrutine LabVIEW sunt denumite instrumente virtuale (VI). Fiecare VI are trei componente: o diagramă bloc, un panou frontal și un panou de conector.
Panoul de conector este folosit pentru a reprezenta VI-ul în diagramele bloc ale altor VI-uri.
Panoul frontal este construit folosind controale și indicatoare. Controalele sunt intrări, permit unui utilizator să furnizeze informații către VI. Indicatorii sunt rezultate, indică sau afișează rezultatele pe baza intrărilor date la VI.
Panoul din spate, care este o diagramă bloc, conține codul sursă grafică. Toate obiectele plasate pe panoul frontal vor apărea pe panoul din spate ca terminale. Panoul din spate conține, de asemenea, structuri și funcții care efectuează operațiuni la controale și furnizează date indicatorilor. Structurile și funcțiile se găsesc în paleta Funcții și pot fi plasate pe panoul din spate. Controale, indicatori, structuri și funcții colective sunt denumite noduri. Nodurile sunt conectate între ele folosind fire. Astfel, un instrument virtual poate fi rulat fie ca un program, cu panoul frontal servind ca o interfață de utilizator sau, atunci când este pus ca un nod pe diagrama blocului, panoul frontal definește intrările și ieșirile pentru nod prin panoul conectorului. Aceasta presupune că fiecare VI poate fi testat cu ușurință înainte de a fi încorporat ca subrutină într-un program mai mare. [3]
4.2. Prezentarea și funcționarea programului ErgoControl
După ce a fost realizat controlul mișcării în aplicația EasyMotion Studio, am trecut la programul ErgoControl pentru a realiza cerințele impuse pentru aplicație.
Aplicatia realizată în LabVIEW este compusă din 2 părți:
– Legătură cu utilizatorul (panoul frontal);
– Diagrama logică (bloc) din spate securizată cu parola: ,,flori".
În partea de legătură cu utilizatorul sunt prezentate panourile de introducere a datelor exercițiului, de calibrarea a aparatului chinetoterapeutic, graficele forță-lungime, afișarea notelor și rezultatelor.
În diagrama logică sunt prezentate toate funcțiile de citire a forței, a lungimii, reprezentările grafice, calculul notelor și a rezultatelor.
4.2.1. Legătura cu utilizatorul
Aceasta este formată din:
Figura 4.1. Panoul de configurare si calibrare a parametrilor diagramei din spate
În acest panou sunt introduse calibrările ce se pot face pentru un aparat. Pentru a măsura curentul vs Kg pentru un nou aparat se setează în EasyMotion Studio să se stea în mod poziție și astfel se menține sfoara. După aceea se agață de sfoară cât mai mult greutăți și se notează curentul în [A] citit din EasyMotion. Aceste măsurători se vor trece în panoul de calibrare.
În Setari ERGOSIM sunt trecute COM portul la care este conectat driver-ul și calea fișierului unde se află toate fișierele legate de program.
La Filtrari este trecută frecvența filtrului trece jos folosit și protecția la vibrații dată de motorul echipamentului.
În cadrul Rezolutiei sunt trecute numărul de eșantioane stabilit, frecvența de eșantionare și divizorul. Aceste valori nu se modifică deoarece sunt date de către utilizatorul ce folosește echipamentul.
Amplificare CONS_BRAKE este introdusă dacă se dorește ca forța de frânare să fie amplificată.
Calibrare POS reprezintă câți IU sunt pe cm. Pentru a afla această valoare se masoară variabila apos din EasyMotion când sfoara este menținută în poziția inițială și cănd se trage pâna la lungimea maximă a acesteia. Valoarea introdusă va fi diferența între valoarea când lungimea sforii este maximă și poziția inițială.
Figura 4.2. Panoul de configurare al tipului de exercitiu
În acest panou sunt trecute numele de exerciții făcute, Numele și Prenumele pacientului, dacă este sportiv de performanță sau nu, dacă se vrea să se vadă modelul după care trebuie să tragă pacientul și numărul de curse programat pentru exercițiu.
Pe lângă acestea în Setări curente Ergosim sunt trecute Forta_M2 care reprezintă o valoare în IU care este comparată cu cea citită în EasyMotion și dacă se trece de aceasta va apărea un mesaj de eroare ce va face ca programul să se oprească. Const_Frana reprezintă variabila constant_BRAKE din EasyMotion și poate fi modificată aici fară a mai interveni în programul EasyMotion. Viteza este trecută pentru a avea același rol ca în cazul variabilei Forța_M2.
Pentru a se determina Const_Frana se pornește programul în mod normal pe aparatul vechi. Se prinde de sfoară o greutate de 10 kg și se lasă să cadă până la podea. Se măsoară distanța parcursă a sforii și timpul de cădere de 2-4 ori. Pe noul aparat se va proceda la fel și se va modifica Const_Frana până când distanța parcursă și timpul de cădere sunt aproximativ la fel ca la primul aparat.
Figura 4.3. Graficul pe care se trasează caracteristica f(Lungime) = Forță
În acest grafic se va reprezenta forța cu care pacientul va trage de sfoară în funcție de lungimea sforii și modelul reprezentat cu verde este cel după care pacientul trebuie să realizeze tragerea sforii.
Figura 4.4. Graficele pentru reprezentarea notelor
Aceste grafice afișează nota pentru fiecare repetare sau cursă realizată în timpul exercițiului și a seriei efectuate. Nota se calculează în funcție de cât de aproape este graficul forță în funcție de lungime de modelul prestabilit în aplicație.
Figura 4.5 Butoanele pentru controlul aplicației
Pentru începerea exercițiul se apasă butonul verde, iar în timpul rulării programului se poate, dacă se ține apăsat pe butonul Renunțare, programul se va opri. După terminarea exercițiului se apasă pe butonul rezultate pentru a se vizualiza rezultatele fiecărei curse realizate în timpul exercițiului și a parametrilor calculați.
Figura 4.6. Rezultate obtinute
4.2.2. Diagrama logică
Diagrama logică din spate, așa cum este explicat în subcapitolul 4.1, reprezintă codul sursă care odată rulat va realiza funcționarea dorită de utilizator. La prima vedere diagrama bloc arată așa:
Figura 4.7. Diagrama bloc
Aceasta este împărțită în Stacked Sequence Structure care pot fi numerotate de la 0 până la câte structuri sunt folosite de către utilizator. Rolul acestora este de a realiza o cronologie în timpul rulării programului, adică atunci când se apasă butonul Run se va rula tot ce se află în secvența numerotată cu 0, apoi cea numerotată cu 1, cu 2, până la ultima secvență.
În secvența numerotată cu 0 sunt realizate elementele prezentate în subcapitolul 4.2.1. legat de setările aplicației, calibrarile pentru aparat, setările pentru filtre și cele legate de pacient.
În secvența 1 este realizat modelul după care pacientul trebuie să realizeze exercițiul, posibilitatea de a putea fi adaugat un nou exercițiu și numele acestuia și calea spre fișierul text ce conține exercițiile.
În secvența 2 sunt realizate setările de comunicare a aplicației LabVIEW cu PC/laptopul și cu aplicația EasyMotion Studio, condiția de stabilizare a vitezei și măsurarea offset-ului. La condiția de stabilizare a vitezei, aceasta se va citi la fiecare secundă și se va compara cu viteza impusă și dacă nu sunt egale cele două valori se va intra în bucla de așteptare a aplicației. În cazul offset-ului, aici a avut loc prima modificare a aplicației.(figura 4.7)
În vederea funcționalității aplicației s-a decis ca citirea pentru forță să se facă în curentul de la driver ci nu în viteză cum era inițial. Acest lucru este făcut deoarece driver-ul prezintă o buclă de control care ajustează curentul în motor și astfel curentul va fi proporțional cu forța necesară pentru program.
Figura 4.8. Stabilizarea vitezei și măsurarea offset
Această măsurare a fost realizată pe baza variabilei varfil_val care este configurată să arate IQREF(curentul motorului) plus filtrarea setată din varfil_cfg. Însă aceasta ca unitate de măsură este în [IU] și a trebuit convertită în [A]. Aceasta este prezentă în figura 4.8.
Formulă de convertire a [IU] în [A] este:
unde: Ipeak este curentul maxim al driver-ului exprimat în [A]. În cazul driver-ului folosit în prototip acesta este de 20 A.
Figura 4.9. Convertire varfil_val în [A]
Aceeași modificare s-a realizat în VI-ul din secvența 3 din figura 4.9 la Forta_Senzor și IQ_Motor_Sus. Variabila Forta_Senzor este folosită pentru calcularea forței de tragere a pacientului, aceasta fiind reprezentă în graficul forță-lungime.
Figura 4.10. Citirea parametrilor pentru aplicație
Figura 4.11. Calcularea variabilei Forta_Senzor
Figura 4.12. VI-ul pentru calcularea forței de tragere
Figura 4.13. Schema pentru calcularea forței de tragere
Pe lângă forța de tragere mai sunt calculate lungimea sforii în funcție de poziția motorului, numărul de curse ale exercițiului, notele pentru fiecare și media notelor. După calcularea acestor parametri se va calcula forța de tragere care este reprezentă în grafic pe baza calibrărilor efectuate pe aparat, a Forta_Senzor și a Offset-ului.
Secvențele 4,5,6 reprezintă partea de calculare a parametrilor doriți de cel care a realizat aplicația, afișarea acestora într-un tabel pentru fiecare cursă a exercițiului, un grafic cu toate curbele fiecărei curse, un grafic cu forța medie și dispersia medie și partea de salvare a datelor exercițiului.
4.3. Exerciții izometrice
După terminarea acestor modificări s-a cerut un nou tip de aplicație denumit Exerciții izometrice în care forța să nu mai fie reprezentată în funcție de lungime ci de timp. Adică pe un interval de timp dorit de către utilizator, de exemplu 10 secunde, pacientul să execute mișcări repetate de tragere și lăsare a sforii. În acest interval de 10 secunde pacientul trebuie să lase sfoară un anumit timp, după să tragă de aceasta și să mențină forța în jurul unei valori stabilite și la final din nou să nu mai tragă. Aceste etape reprezintă o cursă din cele 10 pe care le conține un exercițiu.
Pentru acest tip de exercițiu motorul trebuie lăsat într-o poziție astfel încât pacientul să poată să tragă cât mai bine și corect de sfoară. Astfel înainte de rularea programului se trage de sfoară pâna la o poziție favorabilă pacientului și după se începe programul din aplicația EasyMotion Studio unde s-a păstrat declararea variabilelor de la aplicația veche și a fost adaugat un profil de poziție, iar restul liniilor de cod au fost date pe disable pentru a nu fi parcurse la rularea programului.
Figura 4.14. Programul pentru noul tip de exercițiu
În partea de legătură cu utilizatorul panourile descrise în subcapitolul 4.2.1. nu au suferit nicio modificare, doar graficul forță – lungime care a fost schimbat să arate forța de tragere a pacientului în funcție de timp. Au mai fost adaugate 2 căsuțe unde utilizatorul poate să introducă timpul maxim pe care să îl aibe o cursă și forța maximă. Pe baza acestor parametri introduși graficul forță – timp se va scala după valorile introduse. Pe lângă cele 2 căsuțe a fost adaugat un afișaj unde pacientul poate să vadă timpul scurs de la începerea exercițiului și să vadă când trebuie să tragă de sfoară sau să lase de sfoară.
Ce a ma fost modificat și se poate observa în figura 4.14. este modelul (cel reprezentat de linia roșie) după care pacientul trebuie realizeze exercițiul. Acesta a fost modificat din panoul Setări astfel încât primele 3 secunde pacientul să nu tragă de sfoară deci forța să fie nulă, după forța va crește la o valoare dorită de utilizator (de exemplu 100N cum este reprezentat în figura 4.14.), astfel pacientul va trage ca să ajung la valoarea dorită și va menține forța în jurul acestei valori timp de 4 secunde. După terminarea celor 4 secunde forța scade spre 0, pacientul începe să lase sfoara și așteaptă 3 secunde până să înceapă altă cursă. Suma acestor timpi reprezintă timpul maxim introdus de către utilizator. Menționez ca o cursă poate dura un timp mai lung, poate avea o altă forță maximă sau pacientul să tragă către o forță mai mică decât cea maximă și modelul poate fi alcătuit din mai multe secvențe de lăsare și tragere a sforii.
Figura 4.15. Modificarea reprezentării forței de tragere
Figura 4.16. Modificarea modelului
În diagrama logică a fost modificată constanta Pozitie_Motor_sus cu Timp care este reprezentat de un timer care numără de la 0 până la timpul maxim dat de operator iar la ieșire este înmulțit cu 100 deoarece în aplicație 100 de unități reprezintă echivalentul a o secundă. (figurile 4.16. și 4.17.)
Figura 4.17. VI-ul modificat pentru Timp
Figura 4.18. Timer
Același timer a fost folost în schema principală pentru a realiza condiționarea de începere a unei noi curse. În mod normal este setat ca un exercițiu să conțină 10 curse, astfel odată ce timpul maxim s-a terminat numărul de curse se decrementeză cu 1 până la 0 unde se va termina exercițiul. La fiecare decrementare graficul forță – timp se resetează pentru o nouă cursă iar pe graficul de note se va reprezenta nota pentru fiecare cursă. (figura 4.18.)
Figura 4.19. Modificare schema principală
Capitolul 5. Rezultate experimentale
Pentru noul tip de exercițiu s-au efectuat diferite teste pentru a se putea vedea eficiența utilizării timer-ului pe diferite modele, forțe și timpi. S-a urmărit și dacă acordarea notelor este corectă în funcție de cât de aproape sau departe a fost forța de tragere față de model.
În primul test s-a realizat o cursă cu un model în care forța este nulă de la 0 la 3 secunde, după crește și se menține constantă la 40 N timp de 4 secunde și la final scade spre 0 până se termină timpul maxim de 10 secunde.
Figura 5.1. Primul test aproape de model
Figura 5.2. Primul test îndepărtat de model cu forță mai mică
Figura 5.3. Primul test îndepărtat de model cu forța mai mare
În prima figură se poate observa că s-a încercat ca forța de tragere să fie cât mai aproape de model și la final s-a obținut o notă bună. În a doua figură forța de tragere este mai mică decât modelul rezultând o notă mai mică, la fel se poate spune și în a treia figură unde s-a tras cu o forță mai mare decât cea de referință.
Al doilea test constă într-un timp maxim de 15 secunde în care până la 2 secunde să nu se tragă de sfoara, după până la 4 secunde forța este constantă la 40 N, după timp de 3 secunde forța să fie nulă și iar pâna la 4 secunde să avem forță constantă de 40 N și în ultimele 2 secunde să se lase sfoară. Rezultate sunt asemănătoare cu cele de la primul test, doar că s-a mai efectuat o cursă prezentată în figura 5.7. în care forța este sub model în prima parte și în a doua este deasupra modelui. Cum se poate aștepta nota pentru aceasta va fi mult mai mică decât celelalte curse.
Figura 5.4. Al doilea test aproape de model
Figura 5.5. Al doilea test îndepărtat de model cu forța mai mică
Figura 5.6. Al doilea test îndepărtat de model cu forța mai mare
Figura 5.7.Al doilea test cu variații ale forței
Ultimul test a fost făcut cu timpul maxim de 25 secunde. Acesta este asemănător cu testele anterioare doar că secvențele de creștere și menținere a forței constante sunt diferite, adică la prima creștere forța va fi de 20 N, la a doua va fi de 40 N și la a treia va ajunge la 60 N. Notele date sunt asemănătoare ca în cazurile anterioare.
Figura 5.8. Al treilea test aproape de model
Figura 5.9. Al treilea test îndepărtat de model cu forța mai mică
Figura 5.10. Al treilea test îndepărtat de model cu forța mai mare
Figura 5.11. Al treilea test cu variații ale forței
Observații și concluzii
În cadrul acestei lucrări s-a realizat un sistem de control al mișcării pentru un aparat de chinetoterapie în aplicația EasyMotion Control și modificările pentru aplicația ErgoControl. Se poate observa din studiul de caz realizat că această aplicație prezintă un număr mare de rezultate pozitive în rândul pacienților ce urmează acest tip de terapie.
După terminarea acestor modificări s-a cerut o nouă aplicație denumită Exerciții izometrice. În cadrul acesteia s-au efectuat părțile legate de citire a forței în funcție de timp și verificarea acordării corecte a notei bazate pe același criteriu ca în aplicația veche. În urma testelor efectuate pentru diferite modele prestabilite s-a constatat că aplicația rulează corect din punct de vedere al cerințelor aplicației. Noua aplicație mai poate fi îmbunătățită prin schimbarea părții de calculare și afișare a parametrilor pe baza formulelor de calculare al acestora.
Contribuțiile personale aduse în această lucrare pot fi rezumate astfel:
Relizarea unui studiu a aplicației
Crearea sistemului de control al mișcării pe un prototip
Modificarea și testarea aplicației ErgoControl pe prototip
Realizarea noii aplicații pe prototip
Testarea funcționării corecte a noii aplicații pe prototip
Referințe bibliografice
[1] SOFTWARE AND METHODOLOGY FOR THE PREVENTION AND THE EARLY COMPENSATION OF SPINE DISORDERS, Vladimir SCHOR, Daniela SCHOR, Gheorghe SINDILĂ, Corina TIFREA, April 24-25, 2014
[2] USING THE BACKFIX METHOD FOR REHABILITATION AND POSTURAL CORRECTION, Vladimir Schor, Daniela Schor, Monica Stanescu, April 19-20, 2018
[3] https://en.wikipedia.org/wiki/LabVIEW
[4] P091.027.iPOS4808.MY.CAN.UM.0117 – user manual iPOS 4808 MY- CAN
[5] P091.042.IM23x-MA.UM – user manual IM233-MA
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Hangiu Alexandru (1) [302190] (ID: 302190)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
