Tải bản đầy đủ
CHƯƠNG 3. THIẾT KẾ VÀ CHẾ TẠO MÁY ĐẾM CÔNG THỨC BẠCH CẦU

CHƯƠNG 3. THIẾT KẾ VÀ CHẾ TẠO MÁY ĐẾM CÔNG THỨC BẠCH CẦU

Tải bản đầy đủ

Hình 3. 2 Phần mềm Codevision
Phát triển: HP InfoTech
OS: Windows 98/2000/XP/Vista/7
Ngôn ngữ: English
CodeVisionAVR bao gồm các thành phần sau:
 Trình biên dịch ngôn ngữ C cho AVR
 Trình biên dịch hợp ngữ cho AVR
 Các máy phát điện của mã chương trình ban đầu cho phép khởi tạo thiết bị
ngoại vi
 Module giao tiếp với debug board STK-500
 Module tương tác với các lập trình viên
 Terminal
CodeVisionAVR cho tập tin đầu ra là:
 HEX, BIN hoặc tập tin ROM để nạp vào thiết bị thông qua lập trinh
 COFF - file có chứa thông tin cho trình gỡ lỗi
 OBJ – file
Hiện nay, CodeVisionAVR bao gồm các thư viện và các ví dụ sau đây:
 Alphanumeric LCD modules for up to 4x40 characters
 Philips I²C Bus
 National Semiconductor LM75 Temperature Sensor
28







Maxim/Dallas Semiconductor DS1621 Thermometer/Thermostat
Philips PCF8563 and PCF8583 Real Time Clocks
Maxim/Dallas Semiconductor DS1302 and DS1307 Real Time Clocks
Maxim/Dallas Semiconductor 1 Wire protocol
Maxim/Dallas Semiconductor DS1820/DS18B20/DS1822 1 Wire

Temperature – Sensors
 Maxim/Dallas Semiconductor DS2430/DS2433 1 Wire EEPROMs
 SPI
 MMC/SD/SD HC FLASH Memory Card drivers and FAT12, FAT16, FAT32
access libraries
 Power management
 Delays
 BCD and Gray code conversion
Nó hỗ trợ hầu hết các vi điều khiển Atmel AVR. Phiên bản mới thêm hỗ trợ
cho vi điều khiển với một kernel ATxmega.
3.1.3. Phần mềm mô phỏng Proteus
Proteus là phần mềm cho phép mô phỏng hoạt động của
mạch điện tử bao gồm phần thiết kế mạch và viết chương trình
điều khiển cho các họ vi điều khiển như MCS-51, PIC, AVR, …
Proteus là phần mềm mô phỏng mạch điện tử của Lancenter
Electronics, mô phỏng cho hầu hết các linh kiện điện tử thông
dụng, đặc biệt hỗ trợ cho cả các MCU như PIC, 8051, AVR,
Motorola. Phần mềm bao gồm 2 chương trình: ISIS cho phép mô
phỏng mạch và ARES dùng để vẽ mạch in. Proteus là công cụ mô
phỏng cho các loại Vi Điều Khiển khá tốt, nó hỗ trợ các dòng VĐK
PIC, 8051, PIC, dsPIC, AVR, HC11, MSP430, ARM7/LPC2000 ... các
giao tiếp I2C, SPI, CAN, USB, Ethenet,... ngòai ra còn mô phỏng các
mạch số, mạch tương tự một cách hiệu quả. Proteus là bộ công cụ
chuyên về mô phỏng mạch điện tử.

29

Hình 3. 3Phần mềm Proteus
ISIS đã được nghiên cứu và phát triển trong hơn 12 năm và có hơn
12000 người dùng trên khắp thế giới. Sức mạnh của nó là có thể
mô phỏng hoạt động của các hệ vi điều khiển mà không cần thêm
phần mềm phụ trợ nào. Sau đó, phần mềm ISIS có thể xuất file
sang ARES hoặc các phần mềm vẽ mạch in khác. - Trong lĩnh vực
giáo dục, ISIS có ưu điểm là hình ảnh mạch điện đẹp, cho phép ta
tùy chọn đường nét, màu sắc mạch điện, cũng như thiết kế theo
các mạch mẫu. Những khả năng khác của ISIS là:






Chạy trên nền Windows 98/Me/2k/XP/Win7
Tự động sắp xếp đường mạch và vẽ điểm giao đường mạch.
Chọn đối tượng và thiết lập thông số cho đối tượng dễ dàng
Xuất file thống kê linh kiện cho mạch
Xuất ra file Netlist tương thích với các chương trình làm mạch

in thông dụng.
 Đối với người thiết kế mạch chuyên nghiệp, ISIS tích hợp nhiều
công cụ giúp cho việc quản lý mạch điện lớn, mạch điện có
thể lên đến hàng ngàn linh kiện.
 Thiết kế theo cấu trúc (hierachical design) • Khả năng tự động
đánh số linh kiện

30

3.1.4. Phần mềm thiết kế mạch Altium Designer
Phần mềm thiết kế mạch tự động Altium Designer là một môi trường thiết kế
điện tử đồng nhất, tích hợp cả thiết kế nguyên lý, thiết kế mạch in PCB, lập trình hệ
thống nhúng và FPGA.

Hình 3. 4Phần mềm Altium
Các điểm đặc trưng của Altium Designer :


Giao diện thiết kế, quản lý và chỉnh sửa thân thiện, dễ dàng biên dịch, quản lý
file, quản lý phiên bản cho các tài liệu thiết kế.

 Hỗ trợ mạnh mẽ cho việc thiết kế tự động, đi dây tự động theo thuật toán tối
ưu, phân tích lắp ráp linh kiện. Hỗ trợ việc tìm các giải pháp thiết kế hoặc
chỉnh sửa mạch, linh kiện, netlist có sẵn từ trước theo các tham số mới.
 Mở, xem và in các file thiết kế mạch dễ dàng với đầy đủ các thông tin linh
kiện, netlist, dữ liệu bản vẽ, kích thước, số lượng…
 Hệ thống các thư viện linh kiện phong phú, chi tiết và hoàn chỉnh bao gồm tất
cả các linh kiện nhúng, số, tương tự…
 Đặt và sửa đối tượng trên các lớp cơ khí, định nghĩa các luật thiết kế, tùy
chỉnh các lớp mạch in, chuyển từ schematic sang PCB, đặt vị trí linh kiện trên
PCB.
 Mô phỏng mạch PCB 3D, đem lại hình ảnh mạch điện trung thực trong không
gian 3 chiều, hỗ trợ MCAD-ECAD, liên kết trực tiếp với mô hình STEP, kiểm
tra khoảng cách cách điện, cấu hình cho cả 2D và 3D
 Hỗ trợ thiết kế PCB sang FPGA và ngược lại.
31

Altium Designer có nhiều điểm mạnh so với các phần mềm khác như đặt luật
thiết kế, quản lý dự án dễ dàng ,giao diện thân thiện ….
3.1.5. Giới thiệu phần mềm Corel Draw
CorelDraw là một trong những phần mềm đồ họa phổ biến dùng để biên soạn
các

hình

ảnhđồ

họavectorCorelDraw được

phát

triển

bởi

công

ty CorelCorporation có trụ sở chính tại Ottawa, Canada.CorelDraw có mặt tại Việt
Nam khá sớm với phiên bản 3.0 vào những năm 1992 – 1993. Ở thập niên
90, CorelDraw gần như là phần mềm chủ lực trong các công việc thực hiện bản vẽ
quảng cáo, in ấn …

Hình 3. 5 Giới thiệu phần mềm Corel Draw

32

3.2. Nguyên lý hoạt động của máy
Máy hoạt động chỉ dựa trên nguyên lý Đếm số lần Ngón tay bấm phím chức
năng - tương ứng là mỗi loại tế bào trong máu, từ đó tính tỉ lệ % số lần bấm của
từng phím chức năng này (tương ứng tỉ lệ % của từng loại tế bào trong máu). Tất cả
các kỹ thuật đếm tế bào đều thực hiện bằng mắt trên kính hiển vi, kỹ thuật viên sẽ
thao tác bấm các ngón tay lên các phím trên máy. Máy sẽ ghi lại số lần bấm của mỗi
phím và thực hiện tính tỉ lệ phần trăm số lần đếm của từng phím đó sau khi kết thúc
quá trình và hiển thị kết quả trên màn hình – căn cứ kết quả hiển này các kỹ thuật
viên sẽ thực hiện các bước tính toán khác để từ đó đưa ra được kết quả cuối cùng
của Công Thức máu.

3.2 Sơ đồ khối
Dựa vào nguyên lý và yêu cầu bài toán đặt ra, ta có sơ đồ khối của thiết bị
như hình vẽ dưới đây:

Adapter 12V

Khối bàn
phím

Power 5V

Khối VXL

Khối hiển thị

Khối báo
hiệu

Hình 3. 6 Sơ đồ khối máy đếm công thức bạch cầu
Khối xử lý sẽ nhận tín hiệu từ khối bàn phím để hiển thị lên màn hình người dùng
nhập vào cho kết quả lên màn khi có nhấn nút và đưa ra báo hiệu lên khối báo hiệu.
Để hiểu rõ hơn, ta sẽ đi phân tích từng khối trong hệ thống trên. Phần này sẽ được
trình bày ở phần tiếp theo.
33

3.3.Chi tiết các khối
3.3.1. Khối nguồn.
Khối nguồn DC là nơi cung cấp nguồn hoạt động cho vi điều khiển và các
thiết bị ngoại vi khác, như màn hình LCD 20x4, nguồn cho vi khiển 5V.
Để đảm bảo nhóm nhóm sử dụng nguồn Adapter 12V 1A như hình ảnh dưới đây.

Hình 3. 7 Adapter 12/1A
Nguồn Adapter có các thông số cơ bản sau:
-

Điện áp vào: AC 100-240V (50-60Hz)
Điện áp ra : DC 12V-2A
Đầu jack DC 5.5x2.1 MM
Tương thích với các loại jack DC 5.5x2.1 và 5.5x2.5

Để có nguồn +5V cho các khối khác ta sử dụng mạch chuyển đổi mức điện áp có sơ
đồ nguyên lý như sau:

34

Hình 3. 8 Khối nguồn
Phân tích mạch:
Nguồn được sử dụng lấy từ nguồn Adapter 12V/DC-1A. Các tụ trong hình
trên có tác dụng san phẳng điện áp ra hay lọc nhiễu. LM7805 là IC ổn áp cho điện
áp ra là +5V, nó chỉ có tác dụng ổn áp khi điện áp vào lớn hơn điện áp ra( trong
khoảng giá trị cho phép của nó).
Linh kiện:
-

IC ổn áp LM 7805(x1)
Tụ không phân cực 104uF(x2)
Tụ phân cực 1000uF 16V(x1)
Tụ phân cực 470uF 16V(x1)

3.3.2. Khối bàn phím.
Đây là khối dùng để tương tác giữa người dùng và máy

Hình 3. 9 Khối bàn phím

Linh kiện:
35

Loại nút nhấn nhóm sử dụng là nút nhấn 4 chân 12x12x7.3mm (OMRON B3F)

Hình 3. 10 Phím bấm thực tế
Để giao tiếp giữa bàn phím và vi điều khiển atmega16 (sẽ được giới thiệu ở phần
khối vi xử lý) sử dụng thuật quét phím. Cũng tương tự thuật toán quét keypad, cụ
thể ở đây các nút nhấn được sắp xếp theo dạng ma trận bàn phím có 3 hàng và 8 cột
( ta có 24 nút nhấn tất cả). 3 hàng là hàng 1, hàng 2, hàng 3 theo thứ tự đó nối với
PORTD.0, PORTD.1, PORTD.2 của PORTD, còn lại các cột được nối với PORTC
(PORTC có 8 pin từ PINC.0 đến PINC.7). Dùng thuật quét theo hàng, ta lần lượt
xuất giá trị logic 0 ra các chân PORTD.0 đến PORTD.2, và kiểm tra giá trị PINC
tương ứng trên PORTC, nếu có giá trị logic 0 thì khẳng định nút nhấn tại vị trí
tương ứng được nhấn. Cứ như vậy ta sẽ giao tiếp thành công với bàn phím.
Tuy nhiên trong thực tế xảy ra một hiện tượng gọi là hiện tượng dội phím hay rung
phím.
Khái niệm dội phím: Rung phím hay rung nút bấm là khi nhấn nút, công tắc, hai bộ
phận kim loại chạm vào nhau. Đối với người sử dụng, nó có vẻ như tiếp xúc ngay
lập tức, nhưng không phải vậy. Khi nhấn công tắc, hay nhấn nút ban đầu nó sẽ tiếp
36

xúc với những vùng kim loại khác ( có thể gọi là tiếp xúc chưa hoàn toàn), nhưng
chỉ trong một khoảng thời gian cực ngắn, cỡ vài micro giây. Quá trình diễn ra dần
dần cho đến khi tiếp xúc hoàn toàn.
Do phần cứng phản xạ cực nhanh với các tiếp xúc, nên khi trong quá trình nhấn nút
như trên thì phần cứng nó hiểu rằng bạn nhấn công tắc nhiều lần. Đây chính là hiện
tượng rung phím bấm.
Dưới đây là một hình minh họa cụ thể về hiện tượng này:

Hình 3. 11 Quá trình dội phim thực tế
Từ hình trên ta thấy thời điểm 2 và 4 ( xung màu đỏ) là thời điểm mà khi ta bắt đầu
nhấn nút và khi ta bắt đầu nhả nút, thời điểm 1 và 5 là thời điểm nút ở trạng thái ổn
định khi được nhả hoàn toàn, thời điểm 3 là thời điểm nút ở trạng thái ổn định khi
đang được nhấn.
Mỗi một nút bấm có những đặc điểm riêng về hiện tượng rung phím. Có nhiều giải
pháp để khắc phục hiện tượng này tuy nhiên chia làm 2 loại chính là chống rung
phím bằng phần mềm và chống rung phím bằng phần cứng.
Ngoài ra còn có những cách khác như dùng IC chống dội MC14490 có 6 lối vào
cho nút bấm và 6 lối ra tương ứng, hoặc có thể làm 1 mạch 2 IC NAND, …
-

Chống dội phím bằng phần cứng

Chúng ta mắc thêm tụ nối song song với nút nhấn, thường là tụ 104, tụ này có tác
dụng hấp thụ các xung nhọn đi vào chân vi điều khiển, như vậy sẽ triệt tiêu hoàn
toàn các xung kim.

37

Hình 3. 12 Phương pháp chống dội phím phần cứng
-

Chống dội bằng phần mềm:

Mỗi khi phát hiện có tín hiệu bấm phím, chúng ta cho vi điều khiển không đọc liên
tục giá trị của phím nữa bằng cách cho delay một khoảng thời gian, thường khoảng
trên 200 ms, sau khoảng thời gian đó, lại đọc phím như bình thường. Ví dụ code
sau:
if( phát hiện bấm phím){
Delay_ms (200);
Làm một số công việc khác

}
Tuy nhiên cách dùng trễ ở trên nếu với nhiều vòng lặp thì tốt nhưng tốn bộ nhớ. Có
một giải pháp khác đó là dùng vòng lặp có ngắt timer, tức là thoát khỏi chương trình
kiểm tra để giữ trạng thái sau một khoảng thời gian ví dụ khoảng 1 ms. Hoặc cũng
có thể dùng ngắt ngoài. Ví dụ code dùng ngắt sau:
Void INT_timer0(void)
{
If(!button){
t_push ++;
}
If( (pushed ^ button) && !button && t_push <15)
{
// làm công việc gì đó khi nút bị nhấn rồi nhả ra ngay
t_push = 0;

38