Vận hành mỏy

Một phần của tài liệu Nghiên cứu thiết kế và chế tạo máy trị liệu đa năng (Trang 85)

3.3.2.1. Bàn phớm và cỏc nỳt điều khiển

Bàn phớm mỏy CME1.0 gồm 7 phớm.

- 4 phớm mũi tờn: trỏi, phải, lờn, xuống. Cỏc phớm này cú chức năng di chuyển theo cỏc hướng để chọn menu hoặc dựng để chọn chế độ hoạt động hoặc thay đổi cỏc thụng số.

- Phớm OK để xỏc nhận lựa chọn - Phớm ESC để thoỏt khỏi cỏc menu

- Phớm F dựng để bật tắt cỏc chế đội hoạt động - Nỳm xoay điều chỉnh biờn độ điện chõm - Nỳm xoay điều chỉnh biờn độ siờu õm.

3.3.1.2. Menu

Khi khởi động hoàn thành. Mỏy hiển thị menu chớnh như sau:

Chọn cỏc menu bằng cỏch sử dụng phớm mũi tờn lờn và xuống, vào cỏc menu bằng cỏch nhấn phớm OK.

1. Dien cham: dựng để vào chức năng điện chõm, khi chọn chức năng này, màn hỡnh điện chõm hiển thị như sau:

Màn hỡnh này cho phộp người dựng làm cỏc thao tỏc: - Bật/tắt chế độ điện chõm bằng phớm F

MENU > 1. Dien cham

2. Sieu am

3. Den man hinh

DIEN CHAM: Off Che do : Ngat quang Tan so : 12 Hz Bien do: 30 V

- Chọn cỏc chế độ phỏt xung : xung đều, ngắt quóng và co dón bằng cỏch dựng phớm mũi tờn  hoặc 

- Tăng giảm tần số phỏt xung bằng cỏch sử dụng phớm mũi tờn  hoặc . - Thay đổi biờn độ xung bằng nỳm xoay thay đổi biờn độ điện chõm.

2. Sieu am: dựng để vào chức năng siờu õm trị liệu, khi vào chức năng này, màn hỡnh siờu õm hiển thị như sau:

Màn hỡnh này cho phộp người sử dụng thực hiện cỏc thao tỏc: - Bật/tắt chế độ siờu õm trị liệu bằng cỏch nhấn phớm F

- Thay đổi biờn độ siờu õm bằng nỳm xoay thay đổi biờn độ siờu õm.

3. Den man hinh: cho phộp người sử dụng bật/tắt đốn màn hỡnh.

SIEU AM: Off Tan so : 1 MHz Bien do: 30 V

Kết luận

Túm lại, nghiờn cứu thiết kế và chế tạo mỏy trị liệu đa năng là rất thực tế và cú tớnh ứng dụng cao. Bởi vỡ thiết kế cỏc thiết bị dựa trờn vi điều khiển là một xu thế tất yếu về chế tạo cỏc thiết bị hiện nay. Vi điều khiển giỳp cho cỏc thiết bị rẻ về giỏ thành, giảm về kớch thước, mềm dẻo về điều khiển. Giao diện cho người sử dụng thiết bị cũng dễ dàng hơn thụng qua điều khiển bàn phớm và màn hỡnh. Việc kết hợp tớnh năng điện chõm và siờu õm trị liệu cũng tiện dụng hơn cho bỏc sỹ khi sử dụng đối với người bệnh.

Trờn cơ sở nghiờn cứu về tỏc dụng, đặc tớnh của chõm cứu cổ truyền, kết hợp với tỏc dụng của dũng xung điện lờn con người, thụng qua vi điều khiển để thiết kế cỏc tớnh năng của thiết bị trị liệu đa năng, em đó hoàn thành luận văn với cỏc nội dung chớnh sau:

- Nghiờn cứu về chõm cứu, điện chõm và siờu õm trị liệu - Nghiờn cứu về vi điều khiển ATmega 32

- Chế tạo mỏy trị liệu đa năng với cỏc tớnh năng cơ bản.

Trong phần nghiờn cứu về chõm cứu, điện chõm và siờu õm trị liệu, luận văn chỉ đưa ra cỏc vấn đề cơ bản nhất để ứng dụng cho thiết bị trị liệu. Khụng đi sõu vào tớnh toỏn hay cơ sở vật lý của cỏc tớnh chất như tớnh toỏn năng lượng do xung điện tạo ra, năng lượng do siờu õm tạo ra. Đõy cũng là phần cơ sở rất quan trọng, giỳp cho bỏc sỹ định lượng được năng lượng cần dựng cho cỏc bệnh nhõn trong quỏ trỡnh điều trị. Tuy nhiờn, cỏc vấn đề này nằm ngoài khuụn khổ đề tài.

Phần giới thiệu về vi điều khiển ATmega 32 tập trung trỡnh bày những khối cú liờn quan và sử dụng để thiết kế mỏy trị liệu đa năng. Cũn nhiều khối khỏc của vi điều khiển chưa được đề cập đến. Tuy nhiờn, những phần được giới thiệu cũng tương đối cơ bản, thể hiện rừ cỏc tớnh năng của vi điều khiển, cú thể sử dụng để tham khảo cho bạn đọc đang tỡm hiểu về vi điều khiển.

Mỏy trị liệu đa năng CME1.0 được thiết kế với cỏc tớnh năng cơ bản của điện chõm và siờu õm trị liệu. Điện chõm cú cỏc chế độ xung khỏc nhau đú là xung vuụng, xung cú tần số biến thiờn liờn tục và xung cú quóng ngắt để sử

dụng cho cỏc mục đớch điều trị khỏc nhau. Ngoài ra, tớnh năng điều chỉnh tần số và thay đổi biờn độ xung ra làm cho thiết bị cú thể sử dụng tương thớch cho nhiều dạng bệnh nhõn như gầy-bộo, trẻ nhỏ-người lớn, thể trạng khỏe-yếu… Mỏy cũn cú thể hiển thị cỏc thụng số điện chõm như biờn độ, tần số, chế độ xung cho người dựng tiện điều chỉnh và theo dừi. (adsbygoogle = window.adsbygoogle || []).push({});

Tuy nhiờn, do điều kiện thời gian khụng cho phộp nờn tớnh năng điện chõm của thiết bị cũng cũn chưa đỏp ứng hết được yờu cầu của người sử dụng, xin được kiến nghị một số tớnh năng cú thể tớch hợp thờm cho điện chõm:

- Hệ thống bỏo lỗi về phần mềm và phần cứng - Phỏt hiện hở điện cực bệnh nhõn

- Chức năng dũ huyệt - Cú nhiều kờnh ra

- Cú nhiều dạng xung ra như xung sin, xung nhọn… - Cú tớnh năng đặt thời gian trị liệu.

Siờu õm trị liệu trong mỏy CME1.0 phỏt ra tần số 1MHz, cú thể điều chỉnh biờn độ hay năng lượng siờu õm phỏt ra phự hợp cho từng mục đớch trị liệu. Mỏy cũng cú thể hiển thị biờn độ tớn hiệu siờu õm ra giỳp cho người sử dụng dễ dàng điều chỉnh và lưu trữ thụng tin điều trị cho từng bệnh nhõn cho những lần điều trị sau. Tuy nhiờn cũng cú thể bổ xung thờm và cải tiến một số tớnh năng cho siờu õm, xin kiến nghị thờm một số tớnh năng sau:

- Sử dụng đầu phỏt siờu õm đa tần, mỏy cú thể điều chỉnh tần số phỏt. Tớnh năng này làm cho mỏy cú thể sử dụng nhiều mục đớch trị liệu hơn, sử dụng trị liệu cho cỏc vựng cơ thể nụng-sõu khỏc nhau. Tớnh năng đặt thời gian trị liệu.

Luận văn đó đạt được yờu cầu của một luận văn tốt nghiệp thạc sĩ. Mặc dự được sự hướng dẫn tận tỡnh của thầy hướng dẫn, của cỏc thày cụ trong Trường Đại học Cụng nghệ, sự gúp ý của bạn bố, đồng nghiệp, sự cố gắng tỡm tũi, nghiờn cứu của bản thõn, song do khả năng cũn hạn chế nờn luận văn khụng thể trỏnh khỏi những thiếu sút. Rất mong được sự gúp ý của cỏc thày cụ, cỏc đồng nghiệp và cỏc bạn đọc quan tõm để luận văn hoàn thiện hơn, thiết bị CME1.0

hoàn thiện hơn để đưa vào sử dụng rộng rói, phục vụ tốt cụng tỏc chăm súc và nõng cao sức khỏe người dõn.

Tài liệu tham khảo Tài liệu tiếng việt

1. GS. Phạm Văn ất (1999), Kỹ thuật lập trỡnh C, NXB Khoa học và Kỹ thuật. 2. PGS.TS. Trương Việt Bỡnh (chủ biờn), BSCKII. Phạm Chiờu Dương (2005),

Chõm cứu, NXB Y học, Hà Nội.

3. Lờ Văn Doanh, Phạm Khắc Chương (1998), Kỹ thuật vi điều khiển, NXB Khoa học và Kỹ thuật

4. PGS.TS. Phan Quan Chớ Hiếu (2007), Chõm Cứu Học, NXB Y học, Hà Nội. 5. KS. Nguyễn Hải Long (2006), Mỏy điện chõm, tài liệu đào tạo nghề bảo dưỡng-sửa chữa thiết bị y tế.

6. KS. Trương Minh Nguyệt (2006), Mỏy điện chõm KWD-808-I, Tài liệu học tập trường kỹ thuật thiết bị y tế.

7. Ngụ Diờn Tập (2006), Vi điều khiển với lập trỡnh C, NXB Khoa học và Kỹ thuật.

8. Hũa thượng Thớch Tõm ấn (1965), Biờn khảo về Chõm cứu học, Thư viện Online.

9. Quyết định số 5467/2003/QĐ-BYT của Bộ trưởng Bộ Y tế về việc ban hành

"Hướng dẫn ỏp dụng phương phỏp điện chõm hỗ trợ điều trị cai nghiện ma tỳy"

Tài liệu tiếng anh

10. Atmel Corporation (06/2008), ATmega32 , 8155A–AVR–06/08.

11. Atmega Corporation (04/2008), AVR Intruction Set , 0856G–AVR–07/08 12. Atmega Corporation (4/2008), Getting Started with the CodeVisionAVR C

Compiler, 2500C–AVR–04/08

13. Educational Engineering, Biomedical Physiological Stimulators, Italy.

14. Moheimani, PhD; Andrew J. Fleming, PhD (2006), Piezoelectric

Transducers for Vibration Control and Damping, University of Newcastle. .

15. Dr Xiaorui Zhang (2000), Acupunction: Review and Analysis of report on controlled clinical trials, Department of Essential Drugs and Medicines Policy (EDM) - WHO

17. Raman Sankar, Jong M. Rho, Josộ E. Cavzos (2005), Scientific and Clinical Foundations, Taylor & Francis Library.

18. WHO (26/6/2007), WHO international standard terminologies on traditional medicine in western facific region.

Một số Website tham khảo

19. WWW.Alldatasheet.com 20. WWW.atmel.com (adsbygoogle = window.adsbygoogle || []).push({});

21. WWW.moh.gov.vn 22. WWW.who.int

Phụ lục

Phụ lục 1. Chương trỡnh mó nguồn mỏy CME1.0

/***************************************************** This program was produced by the

CodeWizardAVR V1.24.6 Professional Automatic Program Generator

õ Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

e-mail:office@hpinfotech.com Project : may tri lieu da nang Version : 1.0

Date : 1/22/2009

Author : Nguyen Huu Tu Company : CMETS Comments:

Chip type : ATmega32 Program type : Application Clock frequency : 12.000000 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 512

*****************************************************/ #include <mega32.h> #include <delay.h> #include <stdio.h> #include <lcd.h> #define UP 4 #define DOWN 2 #define LEFT 3

#define RIGHT 1 #define OK 6 #define CANCEL 7 #define FUNCTION 5

#define ADC_VREF_TYPE 0x40 #define LED0 PORTB.0

#define LED1 PORTB.1 #define LED2 PORTB.2 #define LED3 PORTB.3 #define LED4 PORTB.4 #define LED5 PORTB.5

/ Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm

char screen = 0, bt=0, sel1=0, bt1=0, modeDienCham = 0, count1=0, tick=0; bit chieucodan = 0,x = 0, ADCbs = 0;

unsigned int adc0, adc1, ts=20;

// Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) {

if (tick < 20) tick++; else {

tick = 0; x = 1;

// khoi dong ADC cho sieu am if(!ADCbs){

ADMUX = ADC_VREF_TYPE | 0x07; LED0 = 1;

ADCSRA |= 1<<6 ; ADCbs = 1;

} }

//==========Dien Cham ============================== switch(modeDienCham){

case 0: // mode xung deu OCR1A = 3;

break;

case 1: //mode xung codan (adsbygoogle = window.adsbygoogle || []).push({});

if(OCR1A<1) chieucodan = 0; else

if(OCR1A > 24) chieucodan = 1; if(!chieucodan) OCR1A = ++OCR1A; else OCR1A = --OCR1A;

break;

case 2: // mode xung ngat quang

if (count1 <= 20) { OCR1A = 3; TCCR1A=0x82; TCCR1B=0x1D; count1 ++;} else if(count1 <= 40) { TCCR1A=0x00; TCCR1B=0x00; count1++;} else count1 = 0; break; }

//=== END Dien Cham ======================================

}

// Timer 1 overflow interrupt service routine interrupt [TIM1_OVF] void timer1_ovf_isr(void) {

// khoi dong ADC cho dien cham if(!ADCbs){ ADMUX = ADC_VREF_TYPE | 0x06; LED1 = 1; ADCSRA |= 1<<6 ; ADCbs = 1; } }

// ADC interrupt service routine

interrupt [ADC_INT] void adc_isr(void) {

// Read the AD conversion result

if((ADMUX & 0x07) == 0x07) {adc1=ADCW;} else {adc0=ADCW;} LED0 = 0; LED1 = 0; ADCbs = 0; } //============== Ham con ============ char keyboard(){ char temp=0; if(!PINA.0) temp= 1; else if(!PINA.1) temp= 2; else if(!PINA.2) temp= 3; else if(!PINA.3) temp= 4; else if(!PINA.5) temp= 5; else if(!PINB.6) temp= 6;

else if(!PINB.7) temp= 7; return temp; } void EnDienCham(){ TCCR1A=0x82; TCCR1B=0x1D; } void DisDienCham(){ TCCR1A=0x00; TCCR1B=0x00; } void EnSieuam(){ TCCR2=0x19; } void DisSieuam(){ TCCR2=0x00; }

void dis_sel(char chon,char dis){ lcd_gotoxy(0,chon+1); if(dis) lcd_putchar('>'); else lcd_putchar(' '); }

void dis_chedo(char chon){ char str[12];

lcd_gotoxy(10,1); switch(chon){

case 0: sprintf(str,"Xung deu "); modeDienCham=0; break; case 1: sprintf(str,"Co dan "); modeDienCham=1; break; case 2: sprintf(str,"Ngat quang"); modeDienCham=2; break; } lcd_puts(str); } void dis_ts (){ char str[20]; lcd_gotoxy(2,2); sprintf(str,"Tan so : %02d Hz",ts); lcd_puts(str); }

void onoffsieuam(char chon){ char str[12];

lcd_gotoxy(12,0); switch(chon){

case 0: sprintf(str,"Off "); DisSieuam(); break; case 1: sprintf(str,"ON "); EnSieuam(); break; }

lcd_puts(str); }

void onoffdiencham(char chon){ char str[12];

lcd_gotoxy(12,0); switch(chon){

case 0: sprintf(str,"Off "); DisDienCham(); break; case 1: sprintf(str,"ON "); EnDienCham(); break; }

lcd_puts(str); }

void dienchamscreen(void){ //screen 1 char str[20]; lcd_clear(); sprintf(str,"DIEN CHAM:"); lcd_gotoxy(2,0); lcd_puts(str); sprintf(str,"Che do :"); lcd_gotoxy(2,1); lcd_puts(str); sprintf(str,"Tan so : %02d Hz",ts); lcd_gotoxy(2,2); lcd_puts(str); sprintf(str,"Bien do:00 V"); lcd_gotoxy(2,3); lcd_puts(str); dis_chedo(sel1); onoffdiencham(bt); while(1){ switch (keyboard()){ case LEFT: if(sel1>0){ sel1--; dis_chedo(sel1); } delay_ms(300); break; case RIGHT: if(sel1<2){ sel1++; dis_chedo(sel1);

} delay_ms(300); break; case UP: if (ts<=100) {ts++; ICR1=(1000/ts)*12; dis_ts();} delay_ms(300); break; case DOWN: if (ts>0) {ts--; ICR1=(1000/ts)*12; dis_ts();} delay_ms(300); break; case FUNCTION: if(bt<1){ bt++; onoffdiencham(bt); } else { bt--; onoffdiencham(bt); } delay_ms(300); break;

case CANCEL: screen = 0; return; break;

default: break; } (adsbygoogle = window.adsbygoogle || []).push({});

sprintf(str,"Bien do:%02u V ",(adc0*2)/22 + 25); lcd_gotoxy(2,3); lcd_puts(str); x = 0; LED2 = ~LED2; } } }

void sieuamscreen(void){ //screen 2 char str[20]; lcd_clear(); sprintf(str,"SIEU AM:"); lcd_gotoxy(2,0); lcd_puts(str); sprintf(str,"Tan so : 1MHz"); lcd_gotoxy(2,1); lcd_puts(str);

sprintf(str,"Bien do: 00 V",adc1); lcd_gotoxy(2,2); lcd_puts(str); onoffsieuam(bt1); while(1){ switch (keyboard()){ case FUNCTION: if(bt1<1){ bt1++; onoffsieuam(bt1); } else { bt1--;

onoffsieuam(bt1); }

delay_ms(300); break;

case CANCEL: screen = 0; return; break; default: break; } if(x) {

sprintf(str,"Bien do:%02u V",(adc1*2)/30+10); lcd_gotoxy(2,2); lcd_puts(str); x = 0; LED3 = ~LED3; } } }

void menuscreen(void){ // screen 0 char str[20],sel = 0;

//trinh bay man hinh lcd_clear(); sprintf(str,"MENU"); lcd_gotoxy(6,0); lcd_puts(str); sprintf(str,"1.Dien cham"); lcd_gotoxy(1,1); lcd_puts(str); sprintf(str,"2.Sieu am");

lcd_gotoxy(1,2); lcd_puts(str);

sprintf(str,"3.Den man hinh"); lcd_gotoxy(1,3); lcd_puts(str); dis_sel(sel,1); while(1){ switch (keyboard()){ case UP: if(sel>0){ dis_sel(sel,0); // xoa > sel--; dis_sel(sel,1); // hien > } delay_ms(300); break; case DOWN: if(sel<2){ dis_sel(sel,0); // xoa > sel++; dis_sel(sel,1); // hien > } delay_ms(300); break; case OK: switch(sel){

case 0: screen = 1; return; break;

case 1: screen = 2; return; break;

case 2: PORTD.6 = ~PORTD.6; delay_ms(300); break; } break; default: break; } } } //======================================================== ==================== void main(void) {

// Declare your local variables here

// Input/Output Ports initialization // Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x2F;

DDRA=0x00;

// Port B initialization

// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out

// State7=1 State6=1 State5=1 State4=1 State3=1 State2=1 State1=1 State0=1 PORTB=0xC0;

DDRB=0x3F;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=Out Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=0 State6=T State5=0 State4=T State3=T State2=T State1=T State0=T PORTD=0x00; (adsbygoogle = window.adsbygoogle || []).push({});

DDRD=0xA0;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 11.719 kHz // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x05;

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: 11.719 kHz // Mode: Fast PWM top=ICR1 // OC1A output: Non-Inv. // OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off //TCCR1A=0x82; //TCCR1B=0x1D; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x09; ICR1L=0x60; OCR1AH=0x00; OCR1AL=0xA8; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: 12000.000 kHz // Mode: CTC top=OCR2

// OC2 output: Toggle on compare match //ASSR=0x00;

//TCCR2=0x19; TCNT2=0x00; OCR2=0x05;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off // INT2: Off

MCUCR=0x00; MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x05;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;

SFIOR=0x00;

// ADC initialization

// ADC Clock frequency: 187.500 kHz // ADC Voltage Reference: AVCC pin ADMUX=ADC_VREF_TYPE | 0x06; ADCSRA=0x8E;

// LCD module initialization lcd_init(20);

// Global enable interrupts #asm("sei") DDRD.6 = 1; screen = 0; while (1) { switch (screen){ case 0: menuscreen(); break;

case 1: dienchamscreen(); break; case 2: sieuamscreen(); break; } } }

Một phần của tài liệu Nghiên cứu thiết kế và chế tạo máy trị liệu đa năng (Trang 85)