Tạo sóng vng 50kH từ vi điều khiển

Một phần của tài liệu Thiết kế và thi công hệ thống phân tích mỡ dựa trên tín hiệu điện sinh học của cơ thể (Trang 83 - 84)

4.4 Hệ thống phân tích và xử lý tín hiệu điện trở kháng của cơ thể

4.4.2 Tạo sóng vng 50kH từ vi điều khiển

Để có thể thu nhập giá trị điện sinh học và tín tốn thơng số lượng mỡ cơ thể, một dòng điện 10uA, tần số 50 kHz được tạo ra và truyền qua cơ thể thông qua hai điện cực như đã đề cập.

Theo cách thông thường, các xung vuông sẽ được tạo ra bằng cách sử dụng một IC dao động (ví dụ IC tạo xung 555). Tuy nhiên, nếu làm như vậy, phần cứng sẽ cần được bổ sung thêm. Thay vào đó, sóng vng được tạo ra từ bộ đếm thời gian Timer0 của chip bằng cách đặt bộ đếm chia trước cho 8, thanh ghi so sánh đầu ra thành 20 và cho phép ngắt tràn. Các cài đặt này sẽ làm cho Timer0 chạy ở tần số 2MHz và kích hoạt ngắt tràn

68

ở mỗi 20 nhịp. Khi bật tắt bằng ngắt tràn trong Timer0, chân B3 được đặt sẽ xuất ra một sóng vng với tần số 50kHz. Với cách làm này, có thể dễ dàng tùy chỉnh và tạo ra các tần số khác nhau của sóng vng bằng cách chỉnh sửa thanh ghi so sánh đầu ra.

Giải thuật được viết cho việc tạo xung vuông 50kHz:

ISR (TIMER0_COMPA_vect) // tạo ngắt ngồi có so sánh {

PORTB ^= (1<<PINB3); //tạo ra sóng vng thơng qua chân PB3 }

//set up timer0

{ TIMSK0= (1<<OCIE0A); //bật timer0 chế độ so sánh ngắt tràn ngoài

OCR0A = 20; //cho phép ngắt khi giá trị đếm bằng 20

TCCR0B= 2; //cài giá trị prescaler = 8

TCCR0A= (1<<WGM01);//cho phép xuất tín hiệu xung vng trên chân OC0A (PB3)

}

Đây là giải thuật dùng cho các chương trình lập trình thơng thường với ngơn ngữ C. Đối với CodevisionAVR, thanh ghi Timer0_Compa_vect đã được cài đặt trong phần lựa chọn ban đầu, do đó, phần code chọn thanh ghi này sẽ không được hiện thị trong chương trình.

Một phần của tài liệu Thiết kế và thi công hệ thống phân tích mỡ dựa trên tín hiệu điện sinh học của cơ thể (Trang 83 - 84)

Tải bản đầy đủ (PDF)

(126 trang)