Evolutia Sistemelor de la Sisteme Mecanice la Sisteme Mecatronice

REZUMAT

Proiectul își propune realizarea unui sistem mecatronic pentru monitorizarea activitații musculare prin implementarea practică a unui sistem electronic de monitorizare a potențialului electric generat de celulele musculare.

La nivel internațional, telemonitorizarea reprezintă o metodă viabilă, a cărui eficacitate a fost probată de numeroase studii din care unele încă mai sunt în desfășurare. În prezent există numeroase sisteme de telemonitorizare, cu diferite complexități. Astfel de sisteme sunt implementate cu precădere în țările avansate economic și tehnologic deoarece acestea dispun de potențialul economic și tehnologic necesar și, poate mai important, au nevoie de asemenea sisteme având un procent din populație din ce în ce mai mare în situația de a necesita astfel de îngrijiri.

În lucrarea de față am demonstrat că senzori simpli, discret atașați pe braț pot fi folosiți pentru capta activitatea musculara în timpul activitaților specifice de mână și braț. Am folosit un senzor electromiografic (EMG) pentru a detecta contracțiile mușchilor mâinii.

În final am demonstrat că pe lângă telemonitorizare, semnalele electrice generate de celulele musculare mai pot fi folosite și pentru a comanda anumite dispozitive electrice și electronice, in proiectul de față fiind comandat un motor pas cu pas.

ABSTRACT

The project aims to create a system to monitor muscle activity in mechatronics practical implementation of an electronic system for monitoring the electrical potential generated by muscle cells.

Internationally, telemonitoring is a viable method, whose efficacy has been proven by many studies, some of which are still ongoing. Currently there are numerous telemonitoring systems with different complexities. Such systems are deployed mainly in the economically and technologically advanced countries because they have the necessary economic and technological potential and, perhaps more importantly, such systems require a percentage of the population having ever higher in conditions requiring such care.

In this study I demonstrate that simple, unobtrusive sensors attached to the arm can be used to capture muscle activity during specific activities of hand and arm. I used an EMG sensor (EMG) to detect the hand muscle contractions.

Finally we have demonstrated that telemonitoring besides the electrical signals generated by muscle cells can be used to control certain electrical and electronic devices in the present project being controlled a stepper motor.

1.INTRODUCERE

1.1. MECATRONICA

Termenul de "Mecatronică" (MECAnică + elecTRONICĂ) apare in anul 1969 la firma japoneza numita "Yaskawa Electric", fiind protejat până in anul 1982 ca marcă a acestei firme. Inițial, termenul "mecatronică" se referea la completarea cu structuri electronice a structurilor mecanice din construcția aparatelor.[1]

Mecatronica este o știință inginerească vastă care se bazează pe îmbinarea mai multor elemente din industria constructoare de mașini, electrotehnică și informatică. Această știință are ca principal scop îmbunătățirea performanțelor si funcționalității sistemelor tehnice.[1]

Ca și în cazul multor altor domenii de mare complexitate, în literatura de specialitate nu există o definiție unitară a noțiunii de mecatronică. În IEEE/ASME Transactions on Mechatronics (1996) mecatronica a fost definită astfel: “Mechatronics is the synergetic integration of mechanical engineering with electronic and intelligent computer control in the design and manufacturing products and processes.”, în traducere: “Mecatronică este integrarea sinergetică a ingineriei mecanice cu controlul electronic și cel inteligent cu calculatoare în proiectarea și fabricația produselor și proceselor.”. Termenul “sinergetică” impune o detaliere. În Mic Dicționar Enciclopedic (Editura Enciclopedică Română, 1972) termenul “sinergie” este definit astfel:[1]

gr. Synergia (“conlucrare”) s.f. (FIZIOL.) Asociație a mai multor organe sau țesuturi pentru îndeplinirea aceleiași funcțiuni.[1]

In cadrul Universității "Transilvania" din Brasov conceptul de "Mecatronică" are la bază urmatorul principiu:[1]

"Studiul mecatronicii, proiectarea și realizarea sistemelor mecatronice trebuie clădite pe trei piloni principali: mecanică, electronică, tehnică de calcul, fiecare cu subsistemele si subdomeniile lui principale, iar intersecția acestora conduce la sisteme si produse cu caracteristici remarcabile, superioare unei simple reuniuni a componentelor de diferite tipuri. Acest lucru impune înzestrarea specialistului in mecatronică cu cunoștințe temeinice din domeniul mecanicii, electronicii și tehnicii de calcul, dar și al sistemelor mecatronice, de cele mai diferite tipuri, și al principiilor și etapelor de proiectare și realizare a acestora."[1]

Fig. 1. Diagrame pentru ilustrarea noțiunii de mecatronică: a) Conceptul Universității Stanford; b) Conceptul Universității Missouri-Rolla; c) Conceptul Universității Purdue[1]

Fig. 2. Diagramă cu detalierea subsistemelor[1]

1.2. EVOLUȚIA SISTEMELOR DE LA SISTEME MECANICE LA SISTEME MECATRONICE

Dezvoltarea conceptului de mecatronică, a produselor și tehnologiilor mecatronice reprezintă o etapă concretă in evoluția științei si tehnologiei, iar revelatia inginerului de la Yaskawa era inevitabilă, din cauza faptului ca deja eletronica devenise o componenta ce deja nu mai putea fii separată de sistemele mecanice.[1]

De-a lungul timpului, omenirea a avut parte de o dezvoltare lentă a uneltelor, a sistemelor create de om și a dispozitivelor. Sistemele tehnice au cunoscut o evoluție rapidă o data cu inventarea mașinii cu abur de către James Watt in anul 1788. Acest lucru a marcat începutul revoluției industriale. Construcția mașinii cu abur a reprezentat un pas important in ceea ce privește înlocuirea muncii fizice efectuată de către om și animale, cu lucrul mecanic realizat de mașini.[1]

În timpul secoului al 19-lea, inginerii de geniu ai acelei perioade s-au axat foarte mult pe realizarea unor mijloace de transport rutiere. Astfel, apar și se dezvoltă cu o rapiditate crescută motoarele cu ardere internă. Dintre acestea se amintesc următoarele:[1]

1807 – brevet pentru un motor cu un cilindru vertical, cu funcționare cu gaz și cu aprindere cu ajutorul scânteiei electrice;

1872 – invenția motorului cu benzină și supape laterale – motorul Otto;

1887 – motorul Daimler, cu ardere internă, cu doi cilindri in V, la care combustibilul din camera pistonului se aprindea la fiecare rotație a arborelui.

Situația începe să se schimbe o dată cu apariția motoarelor electrice. Acestea au condus, în jurul secolului al 20-lea, la dezvoltarea unor sisteme mecanice acționate electric (pompe, mașini-unelte, etc.).[1]

Abia după cel de-al doilea Război Mondial apar realizările științifice importante, dintre care se amintesc: [1]

1945 – primul calculator electronic numeric;

1948 – tranzistorul cu germaniu;

1958 – tiristorul;

1959 – primul circuit integrat;

laserul.

Anul 1953 are o mare însemnătate pentru sistemele mecatronice deoarece, in decursul acestui an la M.I.T (Massachussets Institute of Technology) se realizează practic și se fac demonstrații cu prima mașină de frezat cu comandă numerică.[1]

1.3. CONCEPTUL DE SISTEM MECATRONIC

Un sistem mecatronic este un sistem tehnic care integreaza, intr-o configurație flexibilă, componente mecanice, electronice și de comandă cu sisteme numerice de calcul, pentru generarea unui control inteligent al mișcărilor, in vederea obținerii unei multitudini de funcții. In continuare este prezentată schema bloc a unui sistem mecatronic:[1]

Fig. 3. Schema bloc a unui sistem mecatronic[1]

Sistemele mecatronice pot fi caracterizate după mai multe criterii, însă principalele caracteristici ale sistemelor mecatronice au in vedere:[1]

INTEGRAREA : poate fii spațiala (prin introducerea subsistemelor mecanice, electronice și de comanda) și funcțională (asigurată prin software).

INTELIGENȚA: această caracteristică a sistemelor mecatronice se referă la comportarea adaptivă, bazată pe raționament, capacitatea de autoînvățare, percepție, diagnosticarea erorilor și reconfigurarea sistemului.

FLEXIBILITATEA: aduce in discuție capacitatea sistemului de a fii adaptat sau de a se adapta singur la un nou mediu, in timpul funcționarii. Această caracteristică implică schimbarea programelor de control (software) și nu a structurii mecanice sau electrice a sistemului.

Sistemele mecatronice au largi domenii de utilizare:[1]

In industrie:

– lagăre magnetice;

– elemente constructive ale mașinilor, cu electronică integrată;

– sisteme de injecție electronice;

– sisteme automate pentru comanda autovehiculelor;

– mașini unelte cu comandă numerică;

– roboți industriali;

– roboți mobili și pășitori, de diferite tipuri și configurații;

– vehicule cu ghidare automată;

– avioane militare autonome;

– rachete autoghidate;

– sisteme pentru condiționarea aerului;

– imprimate laser și plottere;

– sisteme pentru citirea/scrierea informației, etc.

In agricultură:

– roboți agricoli;

– roboți pentru industria alimentară;

– mașini agricole autonome;

– sisteme pentru irigații comandate prin calculator.

In medicină si biomecanică:

– roboți medicali;

– organe artificiale;

– dispozitive chirurgicale;

– aparate pentru investigații medicale complexe, etc.

Pentru uz general:

– camere foto și video;

– aparatură video;

– antene TV cu poziționare automată;

– automate comerciale și bancare;

– o gamă largă de aparatură electro-casnică "inteligentă".

In construcții:

– roboți pentru construcții;

– sisteme de securitate automate;

– automatizarea locuințelor si a clădirilor, etc.

Produse micro-mecatronice:

– Micro-Mechanic-Electro-Systems (MEMS);

– Micro-actuatori;

– Micro-senzori;

– Microsisteme, etc.

Un criteriu foarte important de clasificare al sistemelor mecatronice are in vedere caracteristicile comportamentale ale acestora. Astfel, sistemele mecatronice se împart in:[1]

Sisteme mecatronice automate;

Sisteme mecatronice inteligente;

Rețele mecatronice inteligente.

Sistemele mecatronice automate sunt capabile să manevreze materiale și energie, comunicând cu mediul înconjurător și au capacitatea de auto-reglare, care le permite să reacționeze la schimbări previzibile ale mediului într-un mod programat anterior. Marea majoritate a sistemelor mecatronice aparțin acestei categorii.[1]

Sistemele mecatronice inteligente sunt capabile să realizeze un scop impus în condiții de incertitudine. Spre deosebire de sistemele automate, care sunt programate pentru a se comporta într-un mod dorit și sunt, în consecință, previzibile, sistemele inteligente pot atinge un scop specificat într-un mod imprevizibil. Ele sunt înzestrate cu un înalt nivel de flexibilitate, fiind capabile să răspundă la schimbări frecvente ale mediului, fără a fi necesară o reprogramare a lor. Această diferență calitativă în comportament este determinată de separarea bazei de cunoștințe (knowledge base) de motorul de rezolvare a problemei (inference engine), concept de bază în inteligența artificială.[1]

Rețelele mecatronice inteligente sunt capabile să decidă asupra comportamentului lor prin negocieri intre unitățile componente autonome (nodurile rețelei). Fiecare componentă este un sistem mecatronic inteligent. Pentru acest tip de rețele este semnificativă capacitatea fiecărei unități de a-și îmbunătăți performantele prin auto-organizare (modificarea relațiilor dintre unitățile componente, în scopul îmbunătățirii performanțelor globale ale sistemului). Cele mai evoluate rețele sunt supuse unui continuu proces de evoluție (prin deconectarea și eliminarea unităților mai puțin utile și conectarea unor noi unități cu efecte benefice pentru scopurile urmărite de rețea).[1]

Domeniile de utilizare ale sistemelor mecatronice sunt în mare măsură clare pentru majoritatea oamenilor: în industrie, sistemele mecatronice sunt reprezentate de roboți, mașini de lucru cu comandă numerică, sisteme flexibile, sisteme de măsurare și de control; in vehicule civile: automobile, trenuri de mare viteză, avioane, rachete, etc., însă, foarte puțini oameni pot sa realizeze însemnătatea pe care sistemele mecatronice o au pentru agricultură.[1]

Pentru majoritatea oamenilor, sistemele mecatronice prezente în agricultură sunt reprezentate de către mașinile agricole autonome, roboții agricoli și sistemele de irigații comandate prin calculator. Însă, rolul sistemelor mecatronice în agricultură este mult mai amplu.[1]

2.ANALIZA SISTEMELOR EXISTENTE

In ultimiii ani sistemele mecatronice si-au facut simtita prezenta in diverse domenii cum ar fi: industrie, agricultura, alimentatie dar si in domeniul medical

Situată în cadrul mai larg al tele-asistenței medicale, telemonitorizarea este definita ca “totalitatea sistemelor care ajută îngrijirea sănătății prin schimbul cât mai eficient de informație medicală”, telemedicina se constituie ca un sistem integrat de îngrijire a sănătății (asistență medicală și educație) bazat pe resurse tehnologice, organizaționale și/sau sistemice.[2]

Telemedicina reprezintă furnizarea de servicii medicale, bazată pe utilizarea tehnologiei informației și a telecomunicațiilor, în situația în care cadrul medical și pacientul se află în locații diferite. Aceasta presupune transmiterea în siguranță a datelor și informațiilor medicale, sub formă de text, sunet, imagine sau alte formate necesare pentru prevenirea, diagnosticarea, tratarea și urmărirea pacienților. Telemedicina cuprinde o mare varietate de servicii. Cele mai des menționate sunt telemonitorizarea, teleradiologia, telepatologia, teledermatologia, teleconsultația și teleoftalmologia, cu excepția telechirurgiei.[3]

Printre alte posibile servicii se numără centrele de apel/centrele de informare online pentru pacienți sau consultațiile la distanță, respectiv videoconferințe între medici. Ca aplicații principale de telemedicină se remarcă telemonitorizarea, care împreună cu teleradiologia reprezintă la acest moment aproximativ 50% din piața de telemedicină europeană. Telemonitorizarea este definită ca un serviciu de telemedicină ce presupune monitorizarea de la distanță a funcțiilor vitale ale unui pacient prin intermediul unor dispozitive și tehnici corespunzătoare.[3]

Monitorizarea clasică presupune prelevarea de la pacient a unor semnale biomedicale sau parametri fiziologici, pe un interval de timp de ordinul zilelor, descărcarea și analiza acestora pe un sistem de calcul făcându-se la sfârșitul perioadei de monitorizare (off-line). Sistemele de telemonitorizare prelevează, stochează și transmit la distanță (prin intermediul unei rețele de comunicații) semnalele biomedicale sau parametrii fiziologici la un interval de timp mult mai scurt, realizează automat analiza acestora (on-line), și pot transmite alarme către un centru de telemonitorizare, în cazul în care valorile parametrilor monitorizați depășesc anumite limite. Parametri fiziologici pot fi prelevați fie în mod automat, prin intermediul dispozitivelor personale de monitorizare, fie pe baza colaborării active a pacienților (de exemplu, prin utilizarea unui instrument on-line pentru completarea zilnică a valorilor presiunii arteriale sau glicemiei). Aceste dispozitive sunt de regulă portabile și utilizate de obicei în monitorizarea parametrilor fiziologici vitali de tipul: presiune arterială, frecvență cardiacă, frecvență respiratorie, saturație de oxigen din sânge etc. După ce au fost prelucrate și transmise cadrelor medicale, datele pot fi utilizate pentru optimizarea procedurilor de monitorizare și tratament ale pacienților.

2.1.SISTEME DE TELEMONITORIZARE

La nivel internațional, telemonitorizarea reprezintă o metodă viabilă, a cărui eficacitate a fost probată de numeroase studii din care unele încă mai sunt în desfășurare. În prezent există numeroase sisteme de telemonitorizare, cu diferite complexități. Astfel de sisteme sunt implementate cu precădere în țările avansate economic și tehnologic deoarece acestea dispun de potențialul economic și tehnologic necesar și, poate mai important, au nevoie de asemenea sisteme având un procent din populație din ce în ce mai mare în situația de a necesita astfel de îngrijiri. În continuare se prezintă câteva asemenea sisteme, cu titlu de exemplu.

Sistemul EPI-MEDICS (Enhanced Personal, Intelligent and Mobile System for Early Detection and Interpretation of Cardiological Syndromes), realizat în colaborare de cercetatori din Franța, Italia și Suedia între anii 2001 – 2004, a avut ca scop dezvoltarea unui dispozitiv pentru telemonitorizare a semnalului ECG numit PEM (Personal ECG Monitor) pentru detecția diferitelor afecțiuni cardiologice (de tipul aritmiilor cardiace).[4]

Dispozitivul PEM achiziționează 3 canale ECG timp de 10 secunde, reconstruiește cele 12 derivații standard ale ECG folosind un algoritm bazat pe rețele neuronale artificiale și memorează valorile numerice ale semnalului ECG împreuna cu datele personale ale pacientului pe un card personal (de tip SmartCard) în dispozitivul PEM.[5]

Semnalul ECG este apoi prelucrat și funcție de rezultate se activează (sau nu) alarmele. Dacă alarma are nivel ridicat de importanță ea este transmisă automat către cel mai apropiat centru de urgență, în caz contrar aceasta fiind transmisă către un server web. Este anunțat medicul curant printr-un SMS și un email, trimise automat de server.

Datele și alarmele de la pacient sunt transmise spre serverele de telemonitorizare/centrele de urgență prin intermediul Bluetooth (către telefonul mobil) și de acolo mai departe prin GSM/GPRS. Cel mai cunoscut sistem de telemonitorizare, CodeBlue este un sistem bazat pe rețele de senzori wireless, cu capabilitate de comunicare radio. Senzorii permit transmisia de date pe distanțe care pot ajunge la 100m și pot transmite aceste informații diferitelor dispozitive: PDA-uri, laptop-uri, terminalelor ambulanțelor etc. Acești senzori pot fi programați să proceseze semnele vitale, de exemplu să alarmeze atunci când parametrii vitali nu sunt în limitele de normalitate.[6]

În cadrul proiectului AMON (Advanced Care and Alert Portable Telemedical MONitor) realizat în Israel între anii 2001 – 2002 s-a pus la punct o brățară (wrist-mounted monitoring device) cu biosenzori pentru monitorizarea parametrilor vitali de tipul ritmului cardiac, semnalului ECG pe două canale, presiunii arteriale, saturației oxigenului din sânge, temperaturii corpului, cu posibilitatea transmiterii datelor prin GSM/GPRS către centrul de telemedicină.[7]

Proiectul MobiHealth, dezvoltat în Germania, în cadrul programului FP5 între anii 2002 – 2003, a avut ca scop dezvoltarea unui sistem de telemonitorizare bazat pe rețele de senzori (BAN – Body Area Network) atașați pacientului care achiziționează și transmit date continuu către un PDA. Senzorii ce formează rețeaua achiziționează un canal ECG sau saturația oxigenului din sânge, transmit datele PDA-ului folosind protocolul wireless Bluetooth, și de la acesta mai departe către centrul de telemonitorizare prin GPRS/UMTS.

Fig. 2.1 Sistem de monitorizare pacient – Monitor VitaLogik 6000[8]

Fig. 2.2 Sistem modular de monitorizare pacient – Monitor ENVOY[8]

Fig. 2.3 Sistem de monitorizare – Monitor portabil ENMOVE 1200[8]

Fig. 2.4 Sistem de monitorizare ambulatorie prin telemetrie MENNEN[8]

3.ANALIZA SOLUȚIEI ALESE

Sistemul mecatronic pentru monitorizarea activitatii musculare este un sistem inteligent care monitorizează activitatea musculara prin masurarea potentialului electric generat de celulele musculare. Acest lucru se numește electromiografie (EMG). Senzorul amplifică și prelucrează activitatea electrică a unui mușchi convertind-o într-un semnal analogic, care poate fi ușor de citit de către orice microcontroler care dispune de un convertor analog-digital (ADC), in cazul de fata Arduino – sau chiar un servo controler Maestro. Atunci când este activată o grupă de mușchi, tensiunea de ieșire a senzorului crește. Relația exactă dintre tensiunea de ieșire și activitatea musculară poate fi ajustată folosind un potentiometru existent pe placa de circuit. Sistemul monitorizeaza activitatea musculara si cu ajutorul softului Processing este generat un grafic care afiseaza activitea in timp real.[9]

Proiectul urmărește realizarea unui sistem inteligent care să monitorizeze activitatea musculara. Acesta poate fi mai departe implementat in alte sisteme din diverse domenii precum cel medical sau industrial.

Atunci când proiectul va fi finalizat, sistemul creat va fi capabil să comande un robot medical sau industrial, acțiune ce va fi posibilă cu ajutorul mai multor dispozitive ce formează sistemul.

Această soluție a fost aleasă deoarece, chiar dacă la ora actuală au fost făcute sisteme asemănătoare, sistemul ales implică o complexitate redusă, dimensiunile sunt relativ mici, iar costurile de realizare ale proiectului sunt reduse.

3.1.DESCRIEREA GENERALĂ A SISTEMULUI

Sistemul ales este alcătuit din următoarele părți componente:

Plăcuța de dezvoltare

Senzor pentru monitorizarea activității musculare

Pompă de apă (pe post de electrovalva)

Placă de test

Prelungitor cu 3 prize și buton ON/OFF

3.2.ALEGEREA MICROCONTROLLER-ULUI

Pentru realizarea acestui proiect s-a ales mediul de dezvoltare ARDUINO. Acest mediu de programare are câteva caracteristici care îl fac să iasă în evidență față de celelalte medii de dezvoltare. Dintre aceste caracteristici se amintesc următoarele:

permite utilizarea pe orice sistem de operare (MacOS, Windows, Linux), însă multe dintre aceste plăci de dezvoltare sunt limitate la sistemul de operare Windows;

plăcile de dezvoltare cât și mediul de programare sunt "open-source", adică cel ce creează softul îl pune gratis la dispoziția tuturor, inclusiv sursele și documentația. Oricine intră în posesia acelor resurse le poate transforma, îmbunătăți, poate corecta erorile sau poate remedia "bug-urile" după bunul său plac, pentru ca apoi ceilalți să poată beneficia de aceste "updrade-uri";

costurile de achiziție ale acestor medii de dezvoltare sunt reduse;

mediul de programare este foarte accesibil începătorilor, fiind simplu și foarte ușor de învățat.[10]

3.3 MEDIUL DE DEZVOLTARE ARDUINO

Arduino este una dintre cele mai simplu de utilizat platforme cu microcontroller. O placă de dezvoltare Arduino este formată dintr-un microcontroller Atmel 8-bit AVR cu componente complementare pentru a face mai ușoară programarea și încorporarea în cadrul altor circuite. Un aspect important și standard al plăcilor Arduino este acela că are conectorii expuși, permițând plăcii cu microcontroller să fie atașat(conectat) la o gamă largă de module interschimbabile, cunoscute sub numele de "shield-uri". Unele "shield-uri" comunică cu placa de dezvoltare Arduino în mod direct prin intermediul diferiților pini, dar multe dintre "shield-uri" sunt adresabile individual prin intermediul interfeței seriale, permițând astfel ca mai multe "shield-uri" să fie folosite in paralel. Plăcile de dezvoltare folosesc chip-uri de tip megaAVR, în special chip-urile ATmega8, ATmega168, ATmega328, ATmega1280 și ATmega2560. Multe alte tipuri de procesoare au fost folosite pe plăcile Arduino. Majoritatea plăcilor de dezvoltare Arduino includ un regulator liniar de voltaj de 5V si un oscilator de 16 MHz (sau un rezonator ceramic în unele variante), deși unele variante cum ar fi LilyPad Arduino funcționează la 8 MHz și depind de regulatorul de voltaj datorită restricțiilor impuse din cauza formei. Microcontroller-ul de pe plăcile de dezvoltare Arduino este pre-programat cu un bootloader, ceea ce simplifică încărcarea programelor în memorie, în comparație cu alte dispozitive care au nevoie de un programator extern.[11]

Plăcile de dezvoltare Arduino sunt disponibile într-o serie foarte variată, fiecare din aceste placi de dezvoltare având diferite caracteristici și dimensiuni. Câteva dintre aceste plăci de dezvoltare sunt prezentate în imaginile ce urmează

Fig.3.1. Arduino Diecimila[12]

Fig.3.2. Arduino Duemilanove (2009)[13]

Fig.3.3. Arduino Leonardo[14]

Fig.3.4. Arduino UNO[15]

Fig.3.5. Arduino MEGA[16]

Fig.3.6. LilyPad Arduino[17]

In cele ce urmează s-a realizat o analiză critică a specificațiilor tehnice care a dus la alegerea modelului cel mai indicat de plăcuță de dezvoltare pentru aplicația propusă:

Din gama variată de plăci de dezvoltare prezentate în imaginile anterioare și în tabelul de mai sus, soluția fiabilă pentru realizarea sistemului mecatronic pentru monitorizarea activitatii musculare a fost Arduino Leonardo. Este evident că din cele prezentate mai sus reiese că placă de dezvoltare Arduino MEGA este cea mai puternică din toate punctele de vedere, însă datorită complexității reduse a proiectului și datorită costului relativ redus de achiziționare, soluția optimă pentru acest proiect s-a dovedit a fi plăcuța de dezvoltare Arduino LeonardO.

3.4. PLACUȚA DE DEZVOLTARE "ARDUINO LEONARDO"

Fig.3.7. Arduino Leonardo[13]

Arduino Leonardo este o plăcuță de dezvoltare bazată pe microcontroller-ul ATmega32u4. Această plăcuță dispune de 20 pini digitali I/O (7 dintre acești pini putând fi folosiți ca iesiri PWM si 12 ca pini de intrare analogici), un osclator cu cristal de quartz cu o frecventa de lucru de 16 MHz, conexiune USB (Universal Serial Bus), mufă de alimentare, un header ISCP și un buton de reset. Plăcuța conține totul pentru a susține microncontroller-ul; pentru a se putea începe lucrul cu această plăcuță de dezvoltare pur și simplu se conectează la computer via USB sau se alimentează cu adaptorul AC-DC sau cu baterii.[18]

Placuta Leonardo este diferita de toate placile precedente prin faptul ca Atmega32u4 are comunicare USB integrata, eliminand prin asta nevoia unui al doilea procesor. Asta permite placii Leonardo sa apara conenctata la calculator ca un mouse sau o tastatura in plus fata de portul virtual (CDC) serial / COM.

3.4.1. Caracteristicile plăcii:

Microcontroller : ATmega32u4;

Tensiune de funcționare : 5V;

Tensiune de intrare recomandată : 7V – 12V;

Tensiune de intrare limită : 6V – 20V;

Pini digitali I/O : 20;

Canale PWM : 7

Pini de intrare analogici : 12;

Curentul pe pinii I/O : 40 mA;

Curentul pe pinul 3.3V : 50 mA;

Memorie FLASH : sau 32kb (ATmega32u4) din care 4 kb sunt folosiți de bootloader;

Memorie SRAM : 2.5kb (ATmega32u4);

Memorie EEPROM : 1kb (ATmega32u4);

Frecvența de ceas : 16 MHz.[18]

3.4.2.Alimentare

Placa de dezvoltare ARDUINO Duemilanove poate fi alimentată cu conexiunea USB sau cu o sursa de alimentare externă. Sursa de alimentare este selectată automat.

Sursele de alimentare externe (non-USB) pot fi adaptoare AC-DC sau baterii. Adaptorul poate fi conectat prin introducerea unei mufe de 2.1 mm în slot-ul de alimentare al plăcuței. Firele de la baterie pot fi introduse in pinii Gnd si Vin de pe plăcuță.

Placa poate funcționa cu o tensiune de alimentare externa cu valori cuprinse între 6V și 20V. În cazul în care plăcuța este alimentată cu o tensiune mai mică de 7V, deși, pinul 5V se poate alimenta cu mai puțin de 5V și plăcuța poate deveni instabilă. În cazul în care se folosesc tensiuni care depășesc 12V, regulatorul de voltaj se poate supraîncalzi și poate deteriora plăcuța. Tensiunea de alimentare recomandată este între 7V și 12V.[18]

Pinii de alimentare sunt următorii:[18]

VIN. Tensiunea de intrare a plăcuței de dezvoltare atunci când se folosește o sursă de alimentare externă( în opoziție cu folosirea conexiunii USB). Plăcuța se poate alimenta prin acest pin, sau, dacă alimentarea se face prin mufa de alimentare, se poate accesa prin intermediul acestui pin;

5V. Sursa de alimentare folosită pentru funcționarea microcontroller-ului și a componentelor de pe plăcuța de dezvoltare. Aceasta poate veni fie prin pinul VIN printr-un regulator on-board, fie prin alimentarea via USB sau alt tip de alimentare regulată de 5V;

3V3. O sursă de 3.3V generată de chipul on-board FTDI (Future Technology Devices International);

GND. Pini de ground (masă).

3.4.3. Memoria

Plăcuța de dezvoltare folosită în cadrul acestui proiect dispune de un microcontroller ATmega32u4, astfel încât dispune de o memorie FLASH de 32kb pentru salvarea codurilor, însa 4kb din această memorie sunt folosiți pentru bootloader. Plăcuța dispune de asemenea de 2.5kb de memorie SRAM și 1 kb de memorie EEPROM.[18]

3.4.4. Input și Output

Fiecare dintre cei 20 pini digitali ai plăcii de dezvoltare Arduino Leonardo pot fi folosiți ca input sau output folosind funcțiile pinMode(), digitalWrite() și digitalRead(). Ei funcționează la 5V. Fiecare pin poate să ofere și să primească maxim 40 mA si are o rezistenta de 20-50 kOhms deconectata in mod implicit. Unii dintre pini au funcții specializate:[18]

Serial : 0 (RX) și 1 (TX). Folosiți pentru a primi (RX) și pentru a transmite (TX) date seriale de tip TTL.;

TWI: 2 (SDA) and 3 (SCL). Suporta comunicatie TWI folosind biblioteca Wire;

External Interrupts: 3 (interrupt 0), 2 (interrupt 1), 0 (interrupt 2), 1 (interrupt 3) and 7 (interrupt 4). Acești pini pot fi configurați în așa fel încât să declanșeze și să întrerupă pe o valoare scăzută, o muchie în creștere sau în descreștere, sau o schimbare a valorii;

PWM: 3, 5, 6, 9, 10, 11 si 13. Pot oferi o ieșire PWM de 8 biți prin intermediul funcției analogWrite();

SPI: pe header-ul ICSP. Acești pini suportă comunicația SPI folosiți de biblioteca SPI;

LED: 13. Pe plăcuța de dezvoltare există un pin încorporat conectat la pinul digital 13. Atunci când pinul este încărcat cu o valoare HIGH (1), LED-ul este aprins, iar atunci când pinul este încărcat cu o valoare LOW (0), LED-ul este stins.

Intrari Analogice: A0-A5, A6 – A11 (pe pini digitali 4, 6, 8, 9, 10, si 12). Aduino Leonardo are 12 intrari analogice, marcate de la A0 la A11, din care toate pot fi folosite ca intrari/iesiri digitale. Pini A0-A5 sunt in aceleasi locatii ca si Adruino Uno; intrarile A6-A11 sunt pe pinii i/o digitali 4, 6, 8, 9, 10, respectiv 12. Fiecare intrare analogica asigura o rezolutie de 10 bits. In mod implicit intrarile analogice masoara de la masa la 5 volts, prin care se poate schimba limita superioara a gamei lor folosind pinul AREF si functia analogReference().

Mai sunt si alte tipuri de pini pe placa Aduino:

AREF. Tensiune de referinta pentru intrarile analogice. Folosit cu functia analogReference().

Reset. Folosit de obicei pentru a adauga un buton de reset pe shield-uri care il blocheaza pe cel de pe placa.

3.4.5. Comunicația

Plăcuța de dezvoltare Arduino Leonardo dispune de câteva facilități pentru a comunica cu un computer, cu un alt ARDUINO, sau cu alte tipuri de microcontroller-e. Microcontroller-ul ATmega32u4 furnizează comunicație serială de tip UART TTL (5V), care este disponibilă pe pinii digitali 0 (RX) și 1 (TX). Microcontroller-ul 32u4 permite de asemenea pentru comunicatia seriala (CDC) pe USB si apare ca un port com virtual pentru software-ul pe calculator. Cipul, de asemenea, acționează ca un dispozitiv USB 2.0, folosind drivere COM USB standard. Pe Windows, este necesar un fișier .inf. Software-ul Arduino include un monitor serial care permite ca date textuale simple sa fie trimise la și de la placuta Arduino. LED-urile RX și TX de pe bord vor clipi atunci când datele sunt transmise prin conexiunea USB la calculator (dar nu pentru comunicare seriala de pe pinii 0 și 1). [18]

3.4.6. Automatic (Software) Reset

În loc sa aibă nevoie de o apăsare fizică a butonului de reset înainte de încărcarea unui program, plăcuța de dezvoltare ARDUINO Leonardo este proiectată în așa fel încât să permită să fie resetată prin software atunci când este conectată la un computer. Resetarea se declanșează atunci când portul virtual (CDC) serial / COM este deschis la 1200 baud și apoi închis. Atunci când se întâmplă acest lucru, procesorul se va reseta, intrerupand conexiunea USB la calculator (ceea ce înseamnă că portul virtual serial / COM va dispărea). După ce procesorul se resetează, aplicația bootloader începe, rămânând activ timp de aproximativ 8 secunde. Bootloader poate fi, de asemenea, inițiat prin apăsarea butonului de resetare de pe placuta Leonardo. .[18]

3.4.7. Identificarea principalelor componente ale placii de dezvoltare Arduino Leonardo

În cele ce urmează vor fi prezentate pe figură elementele componente principale ale plăcii de dezvoltare Arduino Leonardo:

Fig.3.8. Principalele componente ale Arduino Duemilanove[18]

Componente:

1. Buton de Reset

2. Portul de comunicație seriala USB

3. Mufa de alimentare de tip

4.Pini digitali

5. Mufa ICSP

6. Microcontroller Atmega32u4

7. Intrari analogice

3.4.8. Mediul de programare Arduino IDE

După cum s-a amintit, mediul de programare al celor de la Arduino este un mediu de programare prietenenos cu utilizatorul (user-friendly), ceea ce îi conferă un avantaj sporit deoarece aproape orice persoana pasionată de programare poate începe un proiect nou, cu un minim de cunoștințe, însă beneficiind de tot ajutorul din partea firmei datorită punerii la dispoziție a tuturor materialelor necesare pentru începerea imediată a proiectelor (librării cu funcții, librării cu exemple de programe, tutoriale, etc.).

În cele ce urmează se va face o scurta prezentare a ceea ce înseamnă mediul de programare Arduino IDE. Mediul de programare este relativ simplist și se configurează astfel:

1. Din bara de meniuri se selectează meniul "Tools". Acest meniu conține mai multe sub-meniuri, însă sub-meniul vizat este "Boards". In cadrul acestui sub-meniu se găsesc toate modelele de plăci de dezvoltare ale firmei Arduino. Din acest sub-meniu se selectează modelul de plăcuță folosit in cadrul proiectului, în acest caz selectându-se Arduino Leonardo.

Fig.3.9. Alegerea plăcii de dezvoltare

2.Din cadrul aceluiași meniu "Tools" de această dată se selectează sub-meniul "Port serial". Din cadrul acestui sub-meniu se selectează portul COM pe care plăcuța de dezvoltare îl folosește pentru realizarea comunicației seriale.

Fig.3.10. Alegerea portului COM pentru realizarea comunicației seriale

3. În continuare se va face o scurtă descriere a mediului de programare.

Fig.3.11. Interfața soft-ului cu utilizatorul

Urmează o scurtă trecere în revistă a butoanelor care apar în cadrul interfeței cu utilizatorul:

Buton pentru verificarea programului;

Buton de încărcare a codului pe plăcuța de dezvoltare;

Buton de începere scriere cod nou;

Buton de deschidere a unui cod existent;

Buton de salvare a codului scris;

Buton de monitorizare a comunicației seriale.

In figura următoare este prezentata zona în care se efectuează scrierea efectivă a codului ( a programului):

Fig.3.12. Zona de scriere a codului.

Următoarea figură evidențiază zona unde se poate observa compilarea programului. În cadrul acestei zone se pot observa eventualele erori din cadrul codului.

Fig.3.13. Zona de compilare a codului

4. STUDIUL DE PROIECTARE AL SISTEMULUI MECATRONIC PENTRU MONITORIZAREA ACTIVITATII MUSCULARE

După realizarea unei analize critice a componentelor ce formează sistemul mecatronic pentru monitorizarea activitatii musculare, s-a trecut astfel la proiectarea acestuia. Însă pentru acest fapt, primul pas care trebuie făcut este testarea plăcuței de dezvoltare.

Pentru a putea începe testarea plăcuței de dezvoltare, în primul rând este nevoie de instalarea pe computer a mediului de programare Arduino IDE disponibil pe site-ul producătorului (http://arduino.cc/en/Main/Software), cablul USB pentru realizarea conexiunii dintre computer și plăcuța de dezvoltare și driverele pentru sistemul de operare cu care rulează computerul (în cazul de față Windows 8.1).

În primă fază se verifică dacă plăcuța de dezvoltare folosită în cadrul proiectului funcționează corespunzător. Acest lucru se realizează prin conectarea plăcuței cu ajutorul cablului USB la computer, ca în imaginea următoare:

Fig. 4.1 Conectarea plăcuței la computer

Fig. 4.2 Cablul pentru realizarea conexiunii USB[19]

După realizarea acestui pas urmează testarea propriu-zisă a plăcuței de dezvoltare. Cel mai simplu test care se poate realiza pe plăcuță este acela de a aprinde un LED. Placa de dezvoltare folosită in cadrul acestui proiect (Arduino Leonardo) este concepută în așa fel încât pe suprafața acestuia se află montat, din fabrică, un LED legat la pinul 13 al microcontroller-ului.

Fig. 4.3 Aprinderea LED-ului de pe plăcuță

Așa cum a fost amintit și în capitolul precedent, mediul de programare Arduino IDE este prietenos cu utilizatorul (user-friendly), acesta oferind ajutor tuturor tipurilor de programatori, însă în special începătorilor. Pentru aprinderea LED-ului amintit anterior, mediul de programare întinde o mână de ajutor cu mai multe exemple de programe. Aceste exemple sunt oferite utilizatorului pentru ca acesta să se poată obișnui cu limbajul de programare. Între aceste exemple se poate găsi un exemplu de cod care permite ca LED-ul legat la pinul 13 al microcontroller-ului să se aprindă intermitent ("Blink").

Efectuarea acestei operații se realizează astfel : din bara de meniuri a mediului de programare se selectează meniul "File". Din cadrul acestui meniu se selectează sub-meniul "Examples". Selectarea acestui sub-meniu implică deschiderea unei cutii de dialog care conține mai multe categorii, însă pentru efectuarea operației dorite se selectează categoria "Basics", iar din cadrul acestei categorii se selectează căsuța "Blink".

Fig. 4.4 Selectarea programului Blink

După realizarea operațiilor descrise detaliat mai sus, mediul de programare afișează codul programului de aprindere intermitentă a LED-ului.

Fig.4.5 Codul de funcționare Blink

In continuare se realizează o explicare a exemplului dat de mediul de programare. Astfel:

1. "void setup() {

pinMode(13, OUTPUT);

}"

In cadrul acestei secvențe se definește pinul 13 ca și ieșire digitală. Acest lucru se întâmplă de fiecare dată când plăcuța de dezvoltare este alimentată, de fiecare dată când placa este restartata sau de fiecare data când se încarcă un program nou.

2. "void loop() {

digitalWrite(13, HIGH);

delay(1000);

digitalWrite(13, LOW);

delay(1000);

}"

În secvența de program prezentată mai sus se efectuează aprinderea efectiva a LED-ului. Astfel, in prima faza LED-ul se aprinde, urmează apoi un delay de 1000 ms (1 secunda), după care LED-ul se stinge, se așteaptă din nou 1000 ms, și tot procesul se reia. Reluarea acestui proces este determinată de introducerea funcției "loop()", funcție care permite programului să se reia la infinit, fără pauză.

Pentru testarea exemplului de cod este nevoie ca acesta să fie încărcat pe microcontroller-ul de pe plăcuța de dezvoltare. Acest lucru se realizează ca în explicația următoare:

Din pagina principală a mediului de programare Arduino IDE se efectuează click pe butonul

În cazul în care codul este scris corect și nu conține nici o eroare, acesta urmează să fie compilat și încărcat în memoria microcontroller-ului. Toată această operație se poate observa in zona destinată compilării.

Fig. 4.5 Zona de compilare

4.1. SENZORUL ELECTROMIOGRAFIC (EMG)

In cadrul acestui proiect a fost folosit, așa cum a fost specificat și in capitolul anterior, un senzor care amplifică și prelucrează activitatea electrică a unui mușchi convertind-o într-un semnal analogic, care poate fi ușor de citit de către orice microcontroler care dispune de un convertor analog-digital (ADC)

Fig. 4.6 Senzor electromiografic[20]

Pentru a putea functiona mai este nevoie si de cabluri de conectare si de electrozi medicali. Electrozii se lipesc pe corp.

Fig. 4.7 Cabluri de conectare si electrozi medicali[20]

Specificații electrice:

Schema electrică:

Fig. 4.8 Schema electrică a senzorului EMG[20]

Dimensiunile senzorului:

Fig. 4.9 Dimensiunile senzorului EMG[20]

In imaginea următoare este prezentat modul de funcționare al senzorului electromiografic.

Fig. 4.10 Diagrama bloc a senzorului electromiografic[20]

4.2.CONECTAREA SENZORULUI EMG

Pentru funcționare senzorul are nevoie de două baterii de 9V. Acestea fiind conectate in serie. În imaginea de mai jos este prezentată o schema de conectare a senzorului.

Fig. 4.11 Conectarea senzorului[20]

Indicații pentru conectarea senzorului:

Conectarea sursei de alimentare (doua baterii de 9V)

se conectează borna pozitivă a primei baterii la pinul +Vs de pe senzor.

se conectează borna negativă a primei baterii la borna pozitivă a bateriei a doua, apoi se conectează la pinul GND de pe senzor.

Se conectează borna negativă a bateriei a doua la pinul –Vs de pe senzor.

Conectarea electrozilor medicali

După stabilirea grupei de mușchi (ex. Biceps, antebraț etc.), se curață bine pielea.

Se lipește un electrod in mijlocul mușchiului, apoi se conectează acest electrod la conectorul cablului roșu.

Se lipește al doilea electrod la un capat al mușchiului, apoi se conectează acest electrod la conectorul cablului albastru.

Se lipește al treilea electrod pe o parte osoasă sau fară mușchi aproape de mușchiul testat, apoi se conectează acest electrod la conectorul cablului negru.

Conectarea la un microcontroller (in cazul de față Arduino)

Se conecteaza pinul SIG al senzorului la un pin analog de pe Arduino (ex.A0)

Se conecteaza pinul GND al senzorului la pinul GND de pe Arduino.

În imaginile următoare sunt prezentați pașii necesari pentru conectarea senzorului.

Fig. 4.12 Conector pentru baterie

Fig. 4.13 Aplicarea conectorilor pe baterie

Fig.4.14 Conectare baterii la pinul +Vs de pe senzor

Se leagă bateriile in serie, apoi se conecteaza la pinul GND.

Fig.4.15 Conectare baterii la pinul GND de pe senzor

Fig.4.16 Conectare baterii la pinul –Vs de pe senzor

Fig.4.17 Dezlipire folie de protecție de pe electrozi

Fig.4.18 Aplicare electrod roșu pe mijlocul muschiului

Fig.4.19 Aplicare electrod albastru la un capat al muschiului

Fig.4.20 Aplicare electrod negru pe cot

Fig.4.21 Conectarea pinilor SIG și GND la Arduino

Fig.4.22 Conectarea mufei senzorului de tip jack 3.5

4.2.1. Testarea senzorului electromiografic (EMG)

După realizarea montajului evidențiat în imaginile precedente, s-a trecut la testarea senzorului electromiografic, pentru a observa modul de funcționare al acestuia. Acest lucru s-a realizat prin scrierea unei secvențe de cod în mediul de programare Arduino IDE.

Fig.4.23 Codul de testare al senzorului electromiografic

În continuare se va face o explicație a codului afișat mai sus:

1. "void setup() {

Serial.begin (9600);

} "

În cadrul acestui pas a fost inițiată comunicația serială pentru transmiterea serială a datelor și a fost stabilită rata de transmitere (baud rate) la 9600 de biți pe secundă (bits per second).

2. "void loop() {

Serial.print("Valoarea potentialului electric:");

Serial.printIn(analogRead(2));

delay(100);

}"

Acest pas folosește funcția "loop" (buclă de temporizare infinită) pentru a afișa valoarea potențialului electric, lucru realizat prin intermediul pinului analogic 2 (A2) la care a fost conectat cablul de semnal al senzorului de umiditate. Astfel, prin introducerea unui delay de 100 ms, senzorul trimite prin intermediul comunicației seriale câte o citire la fiecare 100 ms.

Fig.4.24 Achiziția de date de catre senzor

4.3. CONTROLUL UNUI MOTOR PAS CU PAS CU AJUTORUL SENZORULUI EMG

4.3.1. Motor pas cu pas Mitsumi

S-a studiat o modalitate de a controla un motor pas cu pas cu ajutorul senzorului electromiografic, aceasta fiind cu succes in final.

S-a folosit un motor pas cu pas Mitsumi M42SP-Nka de la o imprimanta nefunctională.

Fig.4.25 Motor pas cu pas Mitsumi M42SP-Nka[21]

4.3.2. Driver pentru motoare pas cu pas

De asemenea pentru controlul motorului s-a mai folosit si un driver pentru motoare pas cu pas EasyDriver – Stepper Motor Driver.

Fig.4.25 Driver pentru motoare pas cu pas EasyDriver – Stepper Motor Driver[22]

Specificații tehnice ale motorului pas cu pas.

Dimensiuni.

Fig.4.26 Dimensiunile motorului pas cu pas[21]

4.3.3. Schema de conectare a motorului si a driverului la Arduino

Fig.4.27 Schema de conectare a motorului[22]

4.3.4. Testarea motorului pas cu pas

Fig.4.28 Programul pentru testarea motorului pas cu pas

4.3.5. Realizarea programului pentru comanda motorului pas cu pas cu ajutorul senzorului EMG

#include <AccelStepper.h>

AccelStepper stepper(AccelStepper::FULL2WIRE, 8, 9);

int spd = 0; // viteza actuala in pasi/secunda

int sign = 1; // 1, 0 or -1

void setup()

{

Serial.begin(9600);

stepper.setMaxSpeed(1000);

stepper.setSpeed(1000);

}

void loop()

{

delay(100);

if (analogRead(2)>250)

{

sign = 1;

spd = 1000;

}

if (analogRead(2)<250)

{

sign = 0;

}

stepper.setSpeed(sign * spd);

stepper.runSpeed();

}

4.3. REALIZAREA PAS CU PAS A PROIECTULUI

Pasul 1

Datorita faptului ca senzorul este implicit fara pini este necesar ca sa fie adaugați si lipiți cu sacâz și cositor.

Fig.4.29 Senzor EMG cu pini

Pasul 2

Asemănator pasului 1 este si pasul 2 cositorirea pinilor pe driver-ul de motor.

Fig.4.30 Cositorirea pinilor pe driverul de motor

Pasul 3

Realizarea tuturor conexiunilor intre senzorul EMG, Arduino, driver-ul de motor si motorul.

Fig.4.31 Varianta finala a conexiunilor intre senzor, Arduino, driver si motor

5. REALIZAREA PROGRAMULUI PENTRU AFISAREA ACTIVITATII MUSCULARE

Pentru realizarea programului de afișare a activitații musculare s-a folosit atat mediul de programare Arduino IDE pentru achiziția de date, cât și mediul de programare Processing pentru generarea graficelor. Processing folosește trei limbaje de programare:

CoffeScript Mode

JavaScript Mode

Python

În prezentul proiect s-a folosit limbajul de programare JavaScript Mode.

În continuare este prezentat codul sursă scris in mediu de programare Arduino IDE.

// variables for input pins and

int analogInput[2];

// variable to store the value

int value[6];

void setup()

{

// declaration of pin modes

for(int i=0;i<6;i++)

{

analogInput[i] = i+1;

value[i] = 0;

pinMode(analogInput[i], INPUT);

}

// begin sending over serial port

Serial.begin(9600);

}

void loop()

{

// read the value on analog input

for(int i=0;i<6;i++)

{

value[i] = analogRead(analogInput[i]);

}

// print out value over the serial port

for(int i=0;i<6;i++)

{

Serial.println(10000 + i + 1); //prefix

Serial.println(value[i]);

Serial.println(10010); //end signal

}

// wait for a bit to not overload the port

delay(10);

}

În continuare sunt prezentate programele pentru realizarea graficelor in mediul de programare Processing. Acestea fiind compuse dintr-un program principal și trei subprograme.

Fig.5.1 Testarea codului sursă pentru monitorizarea activitații musculare

Fig.5.2 Aspectul graficului in timpul contracției mușchiului

Fig.5.3 Aspectul graficului in timpul relaxarii mușchiului

Acesta este programul principal în care sunt setate porturile serial, fereastra principala limitele senzorilor, etc.

import processing.serial.*;

// definition of window size

// you can change the size of the window as you like

// the thresholdGraph will be scaled to fit

// the optimal size for the thresholdGraph is 1000 x 400

int xWidth = 1000;

int yHeight = 500;

// xPos input array, using prefix

int[] xPosArr= {0,0,0,0,0,0};

//

int[] messageArr= {0,0,0,0,0,0};

// Arrays for threshholding

int[] threshMax= {0,0,0,0,0,0};

int[] threshMin= {0,0,0,0,0,0};

// variables for serial connection. portname and baudrate are user specific

Serial port1;

//Set your serial port here (look at list printed when you run the application once)

String V3 = Serial.list()[0];

String portname1 = V3;

int baudrate = 9600;

int prefix = 10001;

boolean myCatch = false;

String serialIN = "";

String serialINPUT = "";

String buffer = "";

int value = 0;

// ThresholdGraph draws grid and poti states

ThresholdGraph in;

void setup(){

// set size and framerate

size(xWidth, yHeight);

frameRate(25);

background(255);

strokeWeight(5);

stroke(0);

smooth();

strokeCap(ROUND);

// establish serial port connection

port1 = new Serial(this, portname1, baudrate);

port1.bufferUntil('\n') ;

println(Serial.list()); // print serial list

// create DisplayItems object

in = new ThresholdGraph();

// THRESHOLD VALUES:

// using the thresholdGraph you can determine the MIN and MAX values

// of your sensors. Enter these here. They must lie between 0 and 1000.

//MIN trashhold

threshMin[0] = 20; // one

threshMin[1] = 20; // two

threshMin[2] = 20; // three

threshMin[3] = 20; // four

threshMin[4] = 20; // five

threshMin[5] = 20; // six

//MAX trashhold

threshMax[0] = 600; // one

threshMax[1] = 600; // two

threshMax[2] = 600; // three

threshMax[3] = 600; // four

threshMax[4] = 600; // five

threshMax[5] = 600; // six

}//end setup

// draw listens to serial port, draw

void draw(){

// listen to serial port and trigger serial event

while(port1.available() > 0){

serialIN = port1.readStringUntil('\n');

//println((int)float(serialIN));

if(serialIN != "")

serialEvent(serialIN);

else

println("found empty");

}

// threshold serial input

threshHolding();

// draw serial input

in.update();

}//end draw()

Următorul este un subprogram pentru functia “serialEvent”.

void serialEvent(String serialINPUT) {

try

{

int inByte = Integer.parseInt(serialINPUT.replaceAll("(\\r|\\n)", ""));

if (myCatch == true) {

if (inByte != 10010) {

// add event to buffer

value = inByte;

xPosArr[(prefix-10001)] = value;

//println("found data");

println(value);

}

else {

// if serial is line break set value to buffer value and clear buffer

myCatch = false;

//println("found footer");

}

}

//myCatch is the beginging of the each sended number used to define the port

// myCatch gets true if serial is less than 10010 since header is 10001-10009

if (!myCatch && inByte < 10010 && inByte > 10000) {

myCatch = true;

prefix = inByte;

//println("found header");

//println(prefix);

}

}

catch(NumberFormatException e)

{

//println(e.getMessage());

}

catch(NullPointerException e)

{

//println(e.getMessage());

}

}

În continuare este prezentat un subprogram pentru funcția “threshHolding”.

void threshHolding(){

for (int i=0; i<threshMin.length; i++) {

float maxi=threshMax[i];

float mini=threshMin[i];

float dif = (maxi-mini)/255;

messageArr[i]= xPosArr[i]-threshMin[i];

if (messageArr[i] <0) messageArr[i]=0;

float temp = messageArr[i];

temp = temp/dif;

messageArr[i] = int(temp);

if (messageArr[i] <0) messageArr[i]=0;

if (messageArr[i] >255) messageArr[i]=255;

}

}

Ultimul subprogram genereaza o grilă cu o scală de valori și niste triunghiuri colorate.

class ThresholdGraph{

// variables of DisplayItems object

PFont font;

int fontsize = 12;

String fontname = "Monaco-14.vlw";

String inputName = "";

float gridSpacing = width/42.0;

int gridValues = 25;

float potiHeight = height/6.0;

int potiWidth = 30;

int poti_ID = 0;

float scaleValue = width/1050.0;

//float scaleValueY = height/400.0;

// constructor

ThresholdGraph(){

font = loadFont(fontname);

textFont(font, fontsize);

}//end ThresholdGraph

// draws grid and value scale

void update(){

//refresh background

background(255);

//scale(scaleValueX, scaleValueY); //scale everything to fit window size

for (int i = 0; i < xPosArr.length; i++){

// draw thresholds in light(min) and dark(max) grey

noStroke();

fill(150);

rect(threshMin[i]*scaleValue-potiWidth/4, i*potiHeight, potiWidth/2, potiHeight);

fill(100);

rect(threshMax[i]*scaleValue-potiWidth/4, i*potiHeight, potiWidth/2, potiHeight);

// poti colours and names

if (i == 0){ fill(255, 107, 39); inputName = "one";}

if (i == 1){ fill(29, 224, 109); inputName = "two";}

if (i == 2){ fill(29, 141, 224); inputName = "three";}

if (i == 3){ fill(211, 82, 232); inputName = "four";}

if (i == 4){ fill(100, 141, 224); inputName = "five";}

if (i == 5){ fill(2, 82, 232); inputName = "six";}

// draw poti at xpos

rect(xPosArr[i]*scaleValue-potiWidth/2, i*potiHeight, potiWidth, potiHeight);

// draw xpos as text

fill(0);

text(xPosArr[i]+inputName, xPosArr[i]*scaleValue, i*potiHeight+potiHeight/2);

}//end for

// draw grid to fit window size

stroke(0);

strokeWeight(1);

// vertical lines

for (int i=0; i<width/gridSpacing; i++){

line(i*gridSpacing, 0, i*gridSpacing, height);

textAlign(LEFT);

text(i*gridValues, i*gridSpacing+2, fontsize);

}//end for

}// end update

}// end class Display

6. CONCLUZII

Telemonitorizarea în timp real a pacienților, atât preventiv cât și după evenimente medicale majore, reprezintă o procedură din ce în ce mai utilizată în practica medicală. Ea cere dispozitive cu performanțe din ce în ce mai mari pentru achiziția și transmiterea parametrilor vitali.

O limitare a telemonitorizării parametrilor vitali constă în eșecul acestor sisteme de a detecta schimbări fiziologice importante: detectarea pierderilor masive de sânge, a unui volum plasmatic insuficient la pacienții cu arsuri sau identificarea bolilor grave la copii.

Parametrii vitali aflați în limite normale nu garantează o stare fiziologică stabilă, sugerând astfel faptul că utilitatea telemonitorizării acestora este mai degrabă un indicator al necesității mai multor investigații viitoare.

Sistemele de telemonitorizare prezentate pot fi folosite ca sisteme de alarmare în cazul monitorizării în timpul activității normale sau al exercițiilor fizice.

Sistemele pot fi extinse cu noi tipuri de intrări de date, incluzând corelații între stări fiziologice și emoționale, ceea ce ar putea dezvolta semnificativ interfața și interacțiunea om-calculator.Caracteristici importante sunt modularitatea și flexibilitatea sistemelor, astfel încât pot permite achiziția, monitorizarea, analiza unui domeniu larg de semnale biomedicale, cum sunt ECG, EEG, EMG, EGG, EOG, dar si controlul roboților, exoscheletelor sau dispozitivelor medicale.

Cercetarea în domeniul telemonitorizării în România va permite atingerea unui obiectiv important din punct de vedere al calității serviciilor medicale și anume cel al implementării teleservciilor medicale la noi în țară, aliniat la cerințele Uniunii Europene, precum și la standardele și recomandările tehnice actuale, elaborate de organisme tehnice consacrate, în domeniul telemedicinei.

Efectele introducerii pe scară largă a sistemelor de telemonitorizare se concretizează prin creșterea gradului de acces la tehnologii moderne, în domeniul medical, la creșterea calității actului medical, în condițiile scăderii costurilor de dotare și, implicit, la creșterea gradului de sănătate a populației, concomitent cu scăderea gradului de mortalitate. Din punctul lor de vedere, pacienții pot salva timp, bani și confort, cu menținerea sau creșterea calității actului medical, coborât fizic chiar la nivelul domiciliului pacientului.

Din punct de vedere economic, prin introducerea sistemelor de telemonitorizare se obține o reducere a costurilor sociale în domeniul sănătății, nu de puține ori destul de costisitoare. Se vor reduce semnificativ costurile privind achiziția, stocarea și administrarea datelor medicale prin automatizarea acestora. Telemonitorizarea continuă a pacienților va reduce perioadele de spitalizare și timpul petrecut de pacient în policlinici și cabinete medicale.

Sistemele de telemedicină vor completa treptat sistemele clasice de stocare a datelor medicale, care în momentul de față ocupa mult spațiu, necesită timp semnificativ pentru accesul la date și nu permit înregistrarea unor date complexe.

În final se constată că sistemele informatice, în cazul telemonitorizării bazate pe sisteme înglobate, concură activ și eficient la calitatea deciziei medicale mai ales în situații în care lipsa specialistului “in situ” este încă o realitate în prag de mileniu trei.

6.BIBLIOGRAFIE

[1] – "Bazele sistemelor mecatronice", Notite de curs

http://facultate.regielive.ro/cursuri/electrotehnica/bazele-sistemelor-mecatronice-16215.html?s=baz%20sistem%20mecatron, accesat la data de;

[2] – "Telemonitorizarea" Bennet A.M. et al., Telehealth Handbook. A Guide to Telecommunications Technology for Rural Health Care, US Department of Health, Education and Welfare, Publ.

[3] No. (PHS) 78-3210, 1978 [3] – "Irrigation"

http://en.wikipedia.org/wiki/Irrigation, accesat la data de;

[4] – Zona irigata prin metoda irigatiei la suprafata

http://en.wikipedia.org/wiki/File:LevelBasinFloodIrrigation.JPG, accesat la data de;

[5] – Sistem inteligent de irigatie prin picurare

http://en.wikipedia.org/wiki/File:Dripirrigation.gif, accesat la data de;

[6] – Picurator

http://en.wikipedia.org/wiki/File:Dripperwithdrop.gif, accesat la data de;

[7] – Sistem de irigatie cu pivot central

http://en.wikipedia.org/wiki/File:Center_Pivot.jpg, accesat la data de;

[8] – Pivot central

http://en.wikipedia.org/wiki/File:Center-pivot_irrigation.jpg, accesat la data de;

[9] – Sistemul inteligent de irigatie "AIRDROP"

http://stiintasitehnica.com/stiri/un-australian-a-inventat-un-sistem-de-irigatii-care-poate-fi-solutia-castigatoare-de-combatere-a-sec/index.html, accesat la data de;

[10] – AIRDROP

http://stiintasitehnica.com/stiri/un-australian-a-inventat-un-sistem-de-irigatii-care-poate-fi-solutia-castigatoare-de-combatere-a-sec/index.html, accesat la data de;

[11] – Arduino

http://en.wikipedia.org/wiki/Arduino, accesat la data de;

[12] – Arduino Diecimila

http://en.wikipedia.org/wiki/File:Arduino_Diecimila_6.jpg, accesat la data de;

[13] – Arduino Duemilanove

http://en.wikipedia.org/wiki/File:Arduino_Duemilanove_2009b.jpg, accesat la data de;

[14] – Arduino Leonardo

http://en.wikipedia.org/wiki/File:Arduino_Leonardo.jpg, accesat la data de;

[15] – Arduino UNO

http://en.wikipedia.org/wiki/File:Arduino_UNO_unpacked.jpg, accesat la data de [16] – Arduino MEGA

http://en.wikipedia.org/wiki/File:Arduino_Mega.jpg, accesat la data de;

[17] – LilyPad Arduino

http://en.wikipedia.org/wiki/File:LilyPad_Arduino_Main_Board.JPG, accesat la data de;

[18] – Detalii Arduino Duemilanove

http://arduino.cc/en/Main/arduinoBoardDuemilanove, accesat la data;

[19] – Cablu USB

http://www.coolgear.com/images/usb-a-to-b-10ft-cable.jpg, accesat la data de;

[20] – Detalii senzor de umiditate

http://www.dfrobot.com/wiki/index.php?title=Moisture_Sensor_(SKU:SEN0114), accesat la data de;

[21]

[22] – Cablu de conectare senzor

[23] – Schema electrica senzor

[24] – Exemplu de montare senzor

[25] – Definirea pinilor senzorului de umiditate

http://www.dfrobot.com/wiki/index.php/Moisture_Sensor_(SKU:SEN0114), accesat la data de 20.06.2013;

[26] – Detalii modul releu

http://hobbymarket.ro/index.php?main_page=product_info&cPath=4&products_id=43, accesat la data de;

http://www.robotshop.com/electronic-brick-5v-relay.html, accesat la data;

Similar Posts