• No results found

Diskussion och slutsatser

Patienter med olika sjukdomar kan svimma eller tappa medvetandet och behöver då akut hjälp. Vi tänkte utveckla en produkt som skulle varna vid sådana situationer. Liknande produkter finns på marknaden fast med begränsade funktionalitet, så vår tanke är att förbättra redan existerande lösningar.

Vi kontaktade flera tänkbar intressanta kunder samt medicinska experter som visade ett stort intresse för iden. Tekniken i produkten kan användas i andra sammanhang inom larmteknik . Vi valde GSM system för att öka tryggheten och säkerheten inom ett större geografisk område där patienten vistas i. En fördel är att GSM också kan användas för positionering. Man kan utnyttja basstationernas position i mobilnätet för att bestämma var larmsystem befinner sig. Denna möjlighet skulle kunna användas i en framtida utveckling av vår produkt. Området var nytt för oss, vi insåg ganska snabbt att vi inte kunde utveckla hela produkten, därför bestämde vi i samråd med vår handledare att bygga en prototyp som demonstrerar konceptet.

Den största svårigheten var elektroniken i sensorn. För att kunna utveckla programmet samtidigt med konstruktion och test av elektroniken ersatte vi sensorn med en signalgenerator. När sensorn äntligen började fungera kunde vi koppla den till PICprocessorn istället för signalgeneratorn.

Efter att ha byggt en prototyp kan vi konstatera att prototypen fungerade och produkten går att implementera. Vi kan mäta pulsen och skicka SMS till ett förvald telefonnummer. Syftet med vårt examensarbete var att undersöka, testa och utveckla ett antal mål och utföra uppgifter med hjälp av kunskap som vi har fått under våra studier. Projektet var lärorikt och givande fast det var ett stort arbete och det krävdes mycket resurser och tid. Examensarbetet behandlade mjukvara och hårdvara och gav oss erfarenhet av att se helheten och sambandet mellan hårdvaran och mjukvaran. Vissa problem som uppstod under arbetet hade vi underskattat (t.ex. pulssensorns konstruktion). Med ett GSM modem hade vi aldrig arbetat förut.

Insamlingen av informationen för utvecklingen inom det området skedde huvudsakligen från olika källor som exempelvis artiklar från Internet. Den konkreta tekniska Informationen om andra liknande produkter inom detta område är begränsad eftersom det betraktas som företagshemligheter. Från början ville vi bygga ett eget GSM-modem. Vi fick använda extra tid för att undersöka och testa olika mobiltelefoner.

31 Signalfiltrering är oerhört viktigt när det gäller sensorer, därför är det lämpligt att använda digitala filter för att förbättra signalen. Dessa kan implementeras med ARMprocessor eller PIC.

För att få ett bättre resultat bör utvecklaren utgå från att designa hela systemet som ett ”embedded system”, i detta fall behöver man använda flera processorer men resultaten blir noggrannare och pålitligare. Samtidigt medför det att produkten skulle bli mycket dyrare. En viktig lärdom från vårt arbete är att en designer hela tiden måste göra kompromisser mellan teknisk perfektion och ekonomi.

Vi hoppas att vårt arbete kan bli inspiration för framtida examensarbeten inom data och telekommunikationsområdet.

32

Käll- och litteraturförteckning

Följande lista visar böcker och andra källor som vi konsulterade under vårt arbete.

IJ GWebster. Design Of Pulse Oximeters. Institute of Physics Publishing,1997.

S.J. Leno S. Pedrotti Frank L. Pedrotti. Introduction To Optics. John Wiley & Sons, 2nd edition, 1996.

Parin V.V., Baevsky R.M., Gazenko O.G. Heart and circulation under space conditions. Cor et Vasa, 1995

PIC C: an introduction to programming the microchip PIC in C / by Nigel Gardner Gardner, Nigel [Storbritannien]: Bluebirds electronics , cop. 1998

http://www.karlskrona.se/sv/Familj--omsorg/Aldre/Hjalp-och-Service/Trygghetslarm/ 2008-12-28 http://www.karistelefon.fi/sv/till-hemmet/vivago-halsoarmband 2008-12-28 http://trygghetslarm.nu/content/view/143/2/ 2008-12-28 http://www.triator.se/?art_id=3&_Triator_Care 2009-01-11 http://www.neatelectronics.se/se/index.htm 2009-01-11 www.medicinehatpolice.com/polygraph.html 2009-01-11 http://www.bluepoint-medical.com/documents//flyer_oxytruea_en.pdf 2009-01-12 http://www.nyteknik.se/nyheter/it_telekom/allmant/article2216.ece 2009-01-19 https://www1.elfa.se/elfa~se_sv/b2b/catalogstart.do?tab=catalog2009-01-20 http://www.allpinouts.org/index.php/Main_Page2009-02-01 http://www.developershome.com/sms/howToSendSMSFromPC.asp2009-02-05 https://www1.elfa.se/elfa~se_sv/b2b/start.do 2009-02-10 http://www.kirovregion.ru/cgi-bin/news/index.cgi?id=3872 2009-02-16 http://www.diplus.ru/di_history.html 2009-03-02 http://www.chip-dip.ru/product0/476454014.aspx 2009-03-04 http://www.sm.luth.se/csee/courses/sms/030/2003/puls/report.pdf 2009-03-05 http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%B3%D1%80%D0%B0%D1%8 4 2009-03-08

33 http://sv.wikipedia.org/wiki/L%C3%B6gndetektorhttps://www1.elfa.se/elfa~se_sv/b2b/catalogstart.do?t ab=catalog 2009-03-12 http://www.digitaldawgpound.org/wp-content/uploads/2006/08/max233.gif 2009-04-20 http://www.bloc.se/moodicator/moodicator.pdf 22.04.2009 http://www1.telecomsys.com/downloads/carriers/pdf/Xypoint_SUPL_server_070703.pdf28.04.29

34

Appendix

Mjukvaran

A. Inledning

Programmet i prototypen, se Bild 21, som exekveras av PIC-processorn, hanterar pulsmätningen, fattar beslut om att larma vid behov samt sänder SMS. Programmet är uppbyggt av följande delar:

 Initiering

 Avläsning av signalen från sensor

 Beräkning av pulsen

 Visning av pulsens värde på displayen

 Jämförelse men gränsvärdena

 Larmfunktion 1 - lampa/ avstängning  Larmfunktion 2 – SMS

Ett enkelt flödesschema. Bör man göra innan man börjar programmera ett system. Det visar hur programmet skall exekveras eller utföra.

35 Bild 21. Programmets uppbyggnad.

36

B. Initiering

Varje I/O pinna i PIC-processorn bör sättas eller nollställas för att den ska bete sig enligt den önskade funktionen. Detta avsnitt beskrivar vilka stiftpinnar användes för att kunna nå ett fullständigt styrprogram till vårt system. På Microchips hemsida finns mycket bra beskrivningar på hur de olika delarna i en PIC fungerar.

1. För att kunna använda tangentbord som finns på den utvecklade PIC-kort som kallas PCB bör ske en typ initiering där definieras varje knapp som i sin tur kopplades till en specifik pinna. Följande kod visar hur och vilka pinnar skulle initieras:

2. PICen har eget internräknare, initieringen ger mikrokontrollers internräknare ett starttecken. PIC16F876A utrustades med två interna räknare, följande beskrivningen visar hur man sätter räknaren igång. Räknarna kan användas för två olika syften, den ena är som en klocka och den andra är som en räknare. Här användes som en klocka .

3. CCP(Capture/Compare/PWM) är en PIC16F876 funktion som kan förprogrammeras. Funktionen är avsett för att kunna fånga, jämföra räknarens (i vårt fall TMR1) innehåll med en innehål av 16-bitars register CCP1 eller CCP2. En händelse kan inträffas omen av följande lägen:

 Vid fallande kant

 Vid stigande kant (användes i vårt fall)  Var fjärde stigande kant

 Var sextonde stigande kant void init_PCB(void){

ADCON1 = 0x8E; //RA0 analog

TRISA = 0xF9; //RA1 and RA2 outputs. RA0, RA3-RA5 inputs TRISB = 0; //PORTB output

}

void init_timer1(void){

T1CON = 0x01; //timer1 on T1CON = 0x01; //timer1 on

37 Följande koden visar hur konfigureras mikrokontroller för att implementera CCP funktion:

4. Interrupt är oerhört alldeles viktigaste funktion i vårt fall. Bild22 visar hur avbrottsstrukturen är uppbyggd i PIC16F876 familjen:

Bild 22 : Interruptsstruktur

Följande kod genomför initieringen av interrupt.

1.

5. Vid en ned knapptryck bör systemet detektera lätt det. Att tilldela en siffra ett mer lättförståelig namn kan lösa problemet. En ytterligare tangentbordsinitiering sker genom att nollställs de följande två variabeln .

void init_CCP(void) {

CCP1CON = 0x0A; //CCP1 in compare mode CCP2CON = 0x05; //CCP2 in capture mode } void init_CCP_interrupt(void) { TMR1IE= 1; CCP2IE = 1; CCP1IE = 1; PEIE = 1; GIE = 1; } void init_keyboard(void) { new = 0; down = 0 }

38 6. Initiering av LCD skärm , det är en färdig subrutin som anropas i programmet för att

redogöra skärmen klart för användning.

7. Initiering av USART port. USART19 står för (Universal Synchronous Asynchronous Receiver Transmitter). Med en USART kan data skickas och tas emot med hjälp av seriell kommunikation t.ex. RS232.

RS232 är den standard som man bl.a. använder för kommunikation mellan datorns com-port och ett modem. Det behövs även lite kringkomponenter för att få de spänningar som RS232 standarden kräver. I vårtfall, USART-port används för kommunikation med GSM modem. USART kan konfigureras i följande lägen:

• Asynchronous (full duplex)

• Synchronous - Master (halv duplex) • Synchronous - Slave (halv duplex)

Följande konfiguration aktiverar USART funktion i PIC: n

8. Initiering av GSM Modem. Modemet initieras genom ett antal AT-kommandon skickas till modemet via USART port. Nedanstående kommandon konfigurerar modemets funktionssätt:

C. Avläsning av signalen från sensor

Alla sensorns utsignaler skickas vidare till PIC genom en stiftpinne RC1 i PIC 16F876. När signalen detekteras av PICen, fångar CCP1 värdet som finns i räknaren ( i detta fall Timer1)för att lagras och behandlas vidare.

19 http://www.isk.kth.se/~jaka/PIC/picguide12.pdf void init_USART(void) { //SPBRG = 64; // 19200 KBS för 20 000 MHz SPBRG = 129; // 9600 KBS för 20 000 MHz

BRGH = 1; // Async High speed SYNC = 0; // Async transmission SPEN = 1; //enable serial port pins TXEN = 1; // enable the transmission }

AT+CSMP=17,167; antalet bokstäver AT+CMGF=1

39

D. Beräkning av pulsen

För att kunna beräkna det verkliga antalet pulser, räknade programmet tiden mellan fem insignaler för noggrannhetsskull . Sedan beräknades (löpande) medelvärde. På detta sätt

garanterar vi att fånga rätt insignal. Aktivitetsdiagram, se Bild 21, visar hur programmet

byggdes upp. Timer i PIC 16F876 är 16-bitars timer, den går från 0 till 65535 och varje steg är bestämt av intern processornsklocka. En timerpuls är 1/4MHz = 0.25 µ sekund. Timern löper automatiskt efter att systemet ger timern ett starttecken. Varje timersvarv behöver så långtid: 65535 * 0.25 µs ≈ 16,4 ms och det innebär att vid 1 Hz frekvens, som motsvarar 60 pulser/sekund, bör timern löpa (1000/16,4) ≈ 61 varv och för att kunna realisera denna operation i PIC finns det en Capture-funktion som konfigureras i PIC med en interrupt - funktion. Det betyder att varje gång en signal matas in, fångar Capture värdet som finns i timern, efteråt lagras värdet i en variabel, väntar på nästa insignal och lagrar den igen i en annan variabel. Skillnaden av de två värden beräknas och lagras in i en fempositionersvektor. På det sättet skull beräknas medelvärde för alla fem värden.

if(CCP2IF&&CCP2IE){ // när capture CCP2IF = 0;

timer_lap=timer_lap2-t

if(TMR1IF){ // när timer löper TMR1IF=0; timer_lap2++; }

if(CCP2IF&&CCP2IE){ // när capture sker CCP2IF = 0;

timer_lap=timer_lap2-timer_lap1;

for(i=5;i>0;i--){ //uppdate the array of the last 5 signals puls[i]=puls[i-1]; } puls[0]=timer_lap; timer_lap1=timer_lap2; period=0; for(i=0;i<=4;i++){ period+=puls[i]; } period=4600/(period/5);

send_instruction(0x01);// clear the display print_decimal(period);

40

E. Att visa de mättade pulsernas antal värde på displayen

Utvecklingskortet är utrustat med en LCD skärm. Pulsen visas med hjälp av metoderna send_character(){... }och send_instruction(){...}

F. Att jämföra de mättade antal pulserna med de angivna gränsvärdena

Att fatta beslut om pulsvärdet som över- eller understiger gränsvärdena, görs i en logisk sats som i sin tur kontrollera om antalet pulser är mindre än variabeln (min_value) eller större än variabeln ( max_value) som skulle dessa värden bestäms i verkligheten av en läkare.Om systemet inte nollställs, skickar GSM-modemet ett SMSmeddelande vidare till en mottagare på förutbestämt telefonnummer.

G. Den första larmfunktionen – som varningssignal är att tända lysdioden eller avbryta systemet:

Om pulsvärdet är utanför lagrade gränser, tänds en lysdiod som en varningssignal i 10 sekunder. Efter detta befinner systemet sig i ett vänteläge, då finns det möjlighet att nollställer larmet genom att trycka på en knapp för att undvika falskt larm.

send_instruction(0x01);// clear the display print_decimal(period); if(period<min_value||period >max_value ){ CCP2IE=0; wait_ten_sec(); period=60; } void wait_ten_sec(void){ for(i=0;!new&&i<252;i++){ wait_30ms(); PORTC &= ~ON; if(i%3==0)PORTC |= ON; } if(!new){ send_sms(); } PORTC=0x1;

send_instruction(0x01); //Clear The Display write_string(sms);

41

H. Den andra larmfunktionen – Att skicka SMSmeddelande:

Om patienten inte nollställer larmet samt en tiosekund tid har gått utan att avbryta lysdiodens blinkning, skickar GSM-modemet ett akut Sms-meddelande till den förprogrammerades telefonnummer.

// the function to send an sms void send_sms(void){

send_character_To_Comport(larm_Nr); // send the AT command with the desired mobile Nr. send_character_Comport(0x22);// send Citationstecken

send_character_To_Comport(Nr); // the sms text send_character_Comport(0x22);// send Citationstecken send_character_Comport(0x0D);// send Return Carrige <CR> send_character_To_Comport(text); // the sms text send_character_Comport(0x1A);// send Ctrl-z

send_character_Comport(0x0D);// send Return Carrige <CR>

Related documents