Báo Cáo Cân Điện Tử

62
MỤC LỤC LỜI NÓI ĐẦU..............................................3 CHƯƠNG 1: GIỚI THIỆU CHUNG...............................4 1.1. Giới thiệu chung...................................4 1.2. Mục đích nghiên cứu................................4 1.3. Phương pháp nghiên cứu.............................4 1.4. Phạm vi và giới hạn đề tài.........................5 CHƯƠNG 2: TỔNG QUAN HỆ THỐNG.............................6 2.1. Giới thiệu sơ lược về các loại cảm biến............6 2.1.1. Module cảm biến siêu âm HC-SR04...................6 2.1.2. Cảm biến nhiệt độ LM35............................6 2.1.3. Cảm biến khối lượng loadcell L6E 300kg............7 2.1.4. Cảm biến hồng ngoại RPR-359F......................8 2.1.5. Cảm biến áp suất loại MPXx5050....................9 2.2. Tổng quan về chuẩn giao tiếp I2C..................10 2.2.1.Định nghĩa.......................................10 2.2.2. Đặc điểm giao tiếp I2C...........................10 2.2.3. Điều kiện start và stop trong giao tiếp I2C......12 2.2.4. Định dạng dữ liệu................................13 2.2.5. Định dạng địa chỉ................................15 2.3. Khối điều khiển trung tâm.........................18 2.3.1. Truyền thông nối tiếp UART trong PIC 16F877A.....19 2.3.2. Giao tiếp I2C trong PIC 16F877A..................20 CHƯƠNG 3: MÔ HÌNH HÓA HỆ THỐNG..........................27 3.1. Mô hình hệ thống cơ khí...........................27 3.3. Mô hình tổng quan hệ thống điều khiển giao tiếp I2C và truyền thông nối tiếp...............................28 CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG..........................29 4.1. Thiết kế cơ khí...................................29 4.1.1.Khung dưới.......................................29 4.1.2.Khung trên.......................................30

description

Báo Cáo Cân Điện Tử

Transcript of Báo Cáo Cân Điện Tử

Page 1: Báo Cáo Cân Điện Tử

MỤC LỤC

LỜI NÓI ĐẦU.................................................................................................................3

CHƯƠNG 1: GIỚI THIỆU CHUNG..............................................................................4

1.1. Giới thiệu chung...................................................................................................4

1.2. Mục đích nghiên cứu............................................................................................4

1.3. Phương pháp nghiên cứu......................................................................................4

1.4. Phạm vi và giới hạn đề tài....................................................................................5

CHƯƠNG 2: TỔNG QUAN HỆ THỐNG......................................................................6

2.1. Giới thiệu sơ lược về các loại cảm biến...............................................................6

2.1.1. Module cảm biến siêu âm HC-SR04..............................................................6

2.1.2. Cảm biến nhiệt độ LM35................................................................................6

2.1.3. Cảm biến khối lượng loadcell L6E 300kg......................................................7

2.1.4. Cảm biến hồng ngoại RPR-359F....................................................................8

2.1.5. Cảm biến áp suất loại MPXx5050..................................................................9

2.2. Tổng quan về chuẩn giao tiếp I2C......................................................................10

2.2.1. Định nghĩa....................................................................................................10

2.2.2. Đặc điểm giao tiếp I2C.................................................................................10

2.2.3. Điều kiện start và stop trong giao tiếp I2C...................................................12

2.2.4. Định dạng dữ liệu.........................................................................................13

2.2.5. Định dạng địa chỉ..........................................................................................15

2.3. Khối điều khiển trung tâm..................................................................................18

2.3.1. Truyền thông nối tiếp UART trong PIC 16F877A.......................................19

2.3.2. Giao tiếp I2C trong PIC 16F877A................................................................20

CHƯƠNG 3: MÔ HÌNH HÓA HỆ THỐNG................................................................27

3.1. Mô hình hệ thống cơ khí....................................................................................27

3.3. Mô hình tổng quan hệ thống điều khiển giao tiếp I2C và truyền thông nối tiếp.

28

CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG....................................................................29

4.1. Thiết kế cơ khí....................................................................................................29

4.1.1. Khung dưới...................................................................................................29

4.1.2. Khung trên....................................................................................................30

4.1.3. Mặt cân.........................................................................................................32

4.1.4. Thanh đo chiều cao.......................................................................................32

4.1.5. Trụ đỡ hộp mạch...........................................................................................33

4.1.6. Hộp đựng mạch điện tử................................................................................33

4.2. Sơ đồ mạch trong đồ án......................................................................................34

4.2.1. Mạch điều khiển trung tâm...........................................................................34

Page 2: Báo Cáo Cân Điện Tử

4.2.2. Khối nguồn...................................................................................................35

4.2.3. Khối UART..................................................................................................35

4.2.4. Khối nạp chương trình..................................................................................36

4.2.5. Mạch cảm biến nhiệt LM35..........................................................................36

4.2.6. Mạch cảm biến HC-SR04.............................................................................37

4.2.7. Mạch cảm biến IR RPR-359F......................................................................37

4.2.8. Mạch cảm biến khối lượng HL-8.................................................................40

4.3. Code sử dụng trong mạch...................................................................................41

4.3.1. Code mạch đo chịp tim.................................................................................41

4.3.2. Code mạch đo nhiệt độ và chiều cao............................................................43

4.3.3. Code mạch đo khối lượng.............................................................................46

KẾT LUẬN 51

Page 3: Báo Cáo Cân Điện Tử

LỜI NÓI ĐẦU

Ngay nay với sự phát triển khoa học công nghệ, các hệ thống tích hợp đa chức

năng đã và đang được phát triển trong nhiều lĩnh vực. Trong lĩnh vực không gian vũ

trụ đó là các cố máy có thể tồn tại trong không gian, có thể tham dò cũng như phân

tích và truyền dữ liệu tự động về cho các trạm thu ở Trái Đất. Trong lĩnh vực quân sự

đó là các robot có thể làm nhiều chức khác nhau như do thám, sử dụng các loại vũ khí,

bảo vệ các mục tiêu đã định điển hình nhất chính là các loại máy bay không người lái.

Trong lĩnh vực thiết bị y tế các loại robot có thế giúp con người phẫu thuật và chúng

được điều khiển từ xa. Với những dẫn chứng ở trên phải chăng xu thế các hệ thống,

thông minh, tích hợp đa chức năng, nhỏ gọn, tinh giản là xu thế phát triển của khoa

học công nghệ thế giới.

May mắn khi nhận được đề tài “Hệ thống kiểm tra sức khỏe” vì đây là cơ hội

để chúng em có thể có thời gian để tìm hiểu, thiết kế, chế tạo một hệ thống tích hợp

này. Bởi với một hệ thống nhỏ gọn, thông minh, giá cả phù hợp và hoạt động hiệu quả,

nó sẽ rất có ích đối với một Đất Nước có tới trên 83 triệu dân cần phải được kiểm tra

sức khỏe thường xuyên qua đó sẽ góp phần nâng cao được sức khỏe của người Việt.

Vì kiến thức và thời gian tìm hiểu còn nhiều hạn chế nên khó tránh khỏi những

sai sót, đồ án chưa phát huy hết được ý tưởng của cả nhóm vào trong mô hình. Rất

mong sự chỉ bảo, giúp đỡ của các Thầy giáo trong khoa đặc biệt là sự giúp đỡ của

Thầy Duy người đã trực tiếp chỉ bảo chúng em thực hiện đồ án này.

Thành viên nhóm gồm 7 thành viên: Nguyễn Văn Hậu, Trần Xuân Hoàng,

Trịnh Quốc Hoàng, Võ Trọng Hoàng, Nguyễn Văn Luân, Vũ Văn Nghĩa, Đồng Đức

Nghiệp.

Hà Nội ngày 01 tháng 03 năm 2014.

Page 4: Báo Cáo Cân Điện Tử

CHƯƠNG 1: GIỚI THIỆU CHUNG

1.1. Giới thiệu chung

Ngày nay các thiết bị kiểm tra tình trạng sức khỏe cá nhân như nhiệt độ chiều

cao, cân nặng, nhịp tim, huyết áp ngày càng được quan tâm phát triển với nhiều chủng

loại khác nhau về mẫu giá cả, chất lương, tích hợp nhiều chức năng bởi nhiều hãng

công nghệ tại các nước trên thế giới nhưng tại Việt Nam các thiết bị được tích hợp này

chưa được quan tâm nghiên cứu và phát triển do đó nhóm chúng em đã phát triển đề

tài nghiên cứu: “Hệ thống kiểm tra sức khỏe”. Nhiệm vụ của nhóm là chế tạo một mô

hình có khả năng thực hiện thu thập dự liệu tử các cảm biến khác nhau sau đó đưa các

dữ liệu này hiện thị lên màn hình máy tính.

1.2. Mục đích nghiên cứu

Với đề tài nghiên cứu “Hệ thống kiểm tra sức khỏe” các vấn đề đặt ra cần phải

giải quyết đó là:

- Thiết kế hệ thống cơ khi nhỏ gọn, chắc chắn, đảm bảo tính thẩm mỹ cũng như

các chức năng sử dụng.

- Lập trình vi điều khiển PIC 16F877A để có thể thu thập dữ liệu từ các cảm biến

riêng biệt như nhiệt độ, siêu âm, IR, huyết áp, loadcell.

- Lập trình vi điều khiển để có thể giao tiếp truyền nhận dữ liệu giữa các vi điều

khiển ở đây là giao tiếp I2C truyền thông qua cổng RS232.

1.3. Phương pháp nghiên cứu

Từ các vấn đề ở trên phương pháp thiết kế phù hợp đó là lần lượt đi xây dựng

từng phần trong thiết kế sau đó ghép nối, thử nghiệm rồi sửa lỗi để thu được thiết kế

có kết quả tối ưu nhất với phương pháp thiết kế như trên, cụ thể công việc ở đây là:

- Bước đầu sẽ tìm hiểu về vi điều khiển PIC 16F877A cấu trúc phần cứng và

phần mềm, sau đó ghép nối với lần lượt các loại cảm biển siêu âm để đo chiều

cao, cảm biến nhiệt độ để đo nhiệt độ, cảm biến hồng ngoại đo nhịp tim, cảm

biến loadcell để đo khối lượng, cảm biến áp suất để đo huyết áp hiện thị lên

LCD.

- Bước hai tìm hiểu vể chuẩn giao tiếp I2C trong PIC 16F877A để có thể biết

cách các vi điều khiển trao đổi dữ liệu.

- Bước ba tìm hiểu về chuẩn giao tiếp UART trong PIC 16F877A để có thể

truyền dữ liệu từ vi điều khiển lên giao diện màn hình máy tính.

- Bước bốn tổng hợp, ghép lối để thu được hệ thống hoàn chỉnh, sau đó thí

nghiệm, sửa chữa để có được phương án tối ưu nhất.

Page 5: Báo Cáo Cân Điện Tử

1.4. Phạm vi và giới hạn đề tài

Do thời gian, tài chính và tầm hiểu biết nhóm chỉ chế tạo mô hình với những

đặc điểm sau:

+ Mô hình khung sẽ được chế tạo đơn giản bằng vật liệu sắt.

+ Sử dụng cảm biến siêu âm HC-SR04, cảm biến nhiệt độ LM35, cảm biến hồng

ngoại IR, cảm biến loadcell L6E 300kg, cảm biến áp suất MPXx5050.

+ Lập trình I2C giao tiếp giữa các vi điều khiển.

+ Lập trình truyền thông nối tiếp RS232.

Page 6: Báo Cáo Cân Điện Tử

CHƯƠNG 2: TỔNG QUAN HỆ THỐNG

2.1. Giới thiệu sơ lược về các loại cảm biến

2.1.1. Module cảm biến siêu âm HC-SR04

- Module cảm biến siêu âm HC-SR04 dùng để đo khoảng cách đến vật chắn bằng

sóng siêu âm. Module có 2 đầu thu và phát sóng, khoảng cách được xác định bằng

cách đo khoảng thời gian mà sóng siêu âm được phát ra từ module truyền đến vật

chắn rồi phản hồi về.

- Sử dụng bằng cách truyền 1 xung vào chân trigger của module, sau đó chờ 1 xung

trả về trên chân echo, độ dài của xung phản hồi tương ứng với thời gian của sóng

siêu âm truyền trong không khí, từ đó tính ra được khoảng cách đến vật thể chắn.

Hình 2.1: Cảm biến HC-SR04.

- Thông số cơ bản:

+ Điện áp hoạt động: 5V.

+ Dòng cấp: 30mA, 50mA Max.

+ Tần số: 40KHz.

+ Khoảng cách đo được xa nhất: 3m.

+ Phát hiện vật cản trong khoảng: 3cm đến 3m.

+ Kích thước nhỏ gọn: 43mm x 20mm x 17mm.

- Sơ đồ chân của modul cảm biến HC-SR04 có 4 chân bao gồm chân VCC,

GND, TRIGE, ECHO.

2.1.2. Cảm biến nhiệt độ LM35

Page 7: Báo Cáo Cân Điện Tử

LM35 là một loại cảm biến analog, nhiệt độ được xác định bằng cách đo hiệu

điện thế ngõ ra của LM35, nhiệt độ thay đổi tuyến tính 10mV/1 độ C, không cần phải

căn chỉnh khi sử dụng.

Hình 2.2: Cảm biến LM35.

- Thông số cơ bản:

+ Điện áp đầu vào từ 4V đến 30V.

+ Độ phân giải điện áp đầu ra là 10mV/oC.

+ Độ chính xác cao ở 25oC là 0.5oC.

+ Điện áp đầu vào từ 4V đến 30V.

- Sơ đồ chân có 3 chân:

+ Chân 1: chân nguồn.

+ Chân 2: Chân tín hiệu ra Vout.

+ Chân 3: Chân nối đất GND.

2.1.3. Cảm biến khối lượng loadcell L6E 300kg.

- Cảm biến khối lượng loadcell L6E là loại cảm biến analog, hoạt động dựa trên sự

thay đổi điện áp đầu ra của cảm biến.

- Thông số cơ bản:

Page 8: Báo Cáo Cân Điện Tử

+ Khối lượng đo lớn nhất: 300kg.

+ Cấp chính xác: OIML R60 C3.

+ Điện áp biến đổi (2 ± 0.002)mV/V.

+ Điện trở đầu vào : (381 ± 4) Ω.

+ Điện trở đầu ra : ( 350 ± 1 ) Ω.

+ Điện trở cách điện : ≥ 5000 (ở 50VDC) MΩ.

- Sơ đồ chân của loadcell L6E có 4 chân:

+ 2 chân input (dây đỏ + và dây đen -).

+ 2 output (dây xanh +, dây trắng -).

Hình 2.3: Cảm biến loadcell HL-8.

2.1.4. Cảm biến hồng ngoại RPR-359F

- Cảm biến hồng ngoại RPR-359F là cảm biến phản xạ quang học, với bộ phát là

một diode GaAS phát ánh ra ánh sáng hồng ngoại, bộ thu là một transitor quang

học có độ nhạy cao.

- Thông số cơ bản:

+ Một thấu kính bằng nhựa được dùng có độ nhạy cao.

+ Điện áp bão hòa tại các cực emitor và colector nhỏ.

+ Ánh sáng mạnh.

- Sơ đồ chân của cảm biến có 4 chân anode, chân cathode, chân colector, chân

emitor.

Page 9: Báo Cáo Cân Điện Tử

Hình 2.4: Cảm biến hông ngoại RPR-359F.

2.1.5. Cảm biến áp suất loại MPXx5050

- Cảm biến áp suất loại MPXx5050 hoạt động dựa trên hiệu ứng piezoresistive đây

là hiện tượng sự thay đổi điện trở suất của chất bán dẫn ở đây trong loại cảm biến

này là một khối silicon được thiết kế cho nhiều loại ứng dụng đặc biết khi sử dụng

các loại vi điều khiển có các bộ chuyển đổi A/D khi mà tín hiệu đầu ra là một tín

hiệu chính xác cao từ cảm biến nó tỉ lệ với áp suất tác dụng.

- Thông số cơ bản:

+ Dải áp suất: 0- 50kPa tương ứng điện áp đầu ra là 0.2-4.7 V.

+ Sai số 2.5% khi nhiệt độ vượt qua dải 0-85oC.

Page 10: Báo Cáo Cân Điện Tử

Hình 2.5: Cảm biến áp suất MPXx5050.

2.2. Tổng quan về chuẩn giao tiếp I2C

2.2.1. Định nghĩa

I2C là tên viết tắt của cụm từ Inter Intergrated Circuit-Bus giao tiếp giữa các IC

với nhau. Đây là chuẩn giao tiếp nối 2 dây. Dùng để giao tiếp IC hay thiết bị ngoại vi

cần giao tiếp với các IC hay thiết bị khác (tức giao tiếp với thế giới bên ngoài). Bus

I2C được sử dụng làm bus giao tiếp ngoại vi cho rất nhiều loai IC khác nhau như các

loại: Vi điều khiển 8051, PIC, AVR, ARM, chip nhớ như RAM tĩnh (Static Ram),

EEPROM, bộ chuyển đổi tương tự số (ADC), số tương tự (DAC), IC điều khiển LED,

LCD…

Hình 2.6: Ví dụ về I2C sử dụng 2 vi điều khiển

2.2.2. Đặc điểm giao tiếp I2C

- Một giao tiếp I2C gồm 2 dây: Serial Data(SDA) và Serial Clock (SCL).

+ SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ

và chỉ theo một hướng.

+ Khi một thiết bị ngoại vi kết nối vào đường I2C thì chân SDA của nó sẽ nối dây

SDA của bus, chân SCL sẽ nối với dây SCL.

Page 11: Báo Cáo Cân Điện Tử

Hình 2.7: Kết nối thiết bị vào Bus I2C ở chế độ chuẩn

- Mỗi dây SDA hay SCL đều được nối với điện áp dương của nguồn cấp thông qua

một điện trở kéo lên (Pull up resistor) điều này là cần thiết vì chân giao tiếp I2C

của các thiết bị ngoại vi thường là dạng cực máng hở (open dranin or open

collector). Giá trị của các điện trở này khác nhau tùy vào từng thiết bị và chuẩn

giao tiếp, thường dao động trong khoảng 1KΩ đến 4.7KΩ.

- Quy ước :

+ Một thiết bị hay một IC khi kết nối với bus I2C, ngoài một địa chỉ (duy nhất) để

phân biệt, nó còn được cấu hình là thiết bị chủ (master) hay tớ (slave). Mỗi thiết

bị này sẽ nhận ra một địa chỉ duy nhất với một quan hệ chủ/tớ tồn tại trong suốt

thời gian kết nối.

+ Trên một bus I2C thì quyền điều khiển thuộc về thiết bị chủ (master). Thiết bị

chủ đóng vai trò tạo xung đồng hồ cho toàn hệ thống, khi giữa 2 thiết bị chủ/tớ

giao tiếp thì thiết bị chủ có nhiệm vụ tạo xung đồng hồ và quản lý địa chỉ của

thiết bị tớ trong suốt quá trình giao tiếp. Thiết bị chủ giữ vai trò chủ động, còn

thiết bị tớ giữ vai trò bị động trong việc giao tiếp.

+ Mỗi thiết bị có thể hoạt động như là thiết bị nhận dữ liệu hay có thể vừa truyền

vừa nhận. Hoạt động truyền hay nhận còn tùy thuộc vào việc thiết bị đó là chủ

(master) hay tớ (slave).

Vì vậy khi có nhiều thiết bị (ICs) cùng được kết nối vào một bus I2C (như hình

2.6), trong quá trình sẽ không xảy ra chuyện nhầm lẫn giữa các thiết bị.

Page 12: Báo Cáo Cân Điện Tử

Hình 2.8: Truyền nhận dữ liệu giữa chủ/tớ.

- Về dữ liệu truyền nhận trên bus I2S, một bus I2C chuẩn truyền 8 bit dữ liều có

hướng trên đường truyền với tốc độ là 100Kbits/s – Chế độ chuẩn (standard mode).

Tốc độ truyền nhận lên đến 400Kbits/s – Chế độ nhanh (Fast mode) và cao nhất là

3,4Mbits/s – Chế độ cao tốc( Hight speed mode).

- Một bus I2C có thể hoạt động ở nhiều chế độ khác nhau:

+ Một chủ một tớ (one master- one slave).

+ Một chủ nhiều tớ (one master- multi slave).

+ Nhiều chủ nhiều tớ (multi master – multi slave).

- Giả thiết một thiết bị A muốn gửi dữ liệu đến thiết bị B, quá trình được thực hiện

như sau:

+ Thiết bị A (chủ) xác định đúng địa chỉ của thiết bị B (tớ), cùng với việc xác

định đại chỉ, thiết bị A sẽ quyết định việc đọc hay ghi vào thiết bị B.

+ Thiết bị A gửi dữ liệu đến thiết bị B.

+ Thiết bị A kết thúc quá trình truyền dữ liệu.

- Khi thiết bị A muốn nhận dữ liều từ thiết bị B, quá trình diễn ra như trên, chỉ khác

là thiết bị A nhận dữ liệu từ thiết bị B. Trong giao tiếp này, thiết bị A vẫn là chủ

thiết bị B vẫn là tớ.

2.2.3. Điều kiện start và stop trong giao tiếp I2C

- START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn

thiết lập giao tiếp với một thiết bị nào đó trong mạng I2C. Ban đầu khi chưa thực

hiện giao tiếp, cả hai đường SDA và SCL đều ở mức cao (SDA = SCL = HIGH).

Lúc này bus I2C được coi là rỗi (“bus free”), sẵn sàng cho một giao tiếp.

Page 13: Báo Cáo Cân Điện Tử

Hình 2.9: Điều kiện START và STOP của bus I2C.

- Điều kiện START: là điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp. Một sự

chuyển đổi trạng thái từ cao xuống thấp trên đường SDA trong khi đường SCL

đang ở mức cao (cao = 1, thấp = 0) báo hiệu một điều kiện START.

- Điều kiện STOP: báo hiệu kết thức một giao tiếp. Một sự chuyển đổi trạng thái từ

mức thấp lên cao trên đường SDA trong khi đường SCL đang ở mức cao.

- Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị chủ. Sau tín hiệu

START, bus I2C coi như đang trong trạng thái làm việc (busy). Bus I2C sẽ rỗi, sẵn

sàng cho một giao tiếp mới tín hiệu STOP từ thiết bị chủ. Sau khi có một điều kiện

START, trong quá trình giao tiếp, khi có một tín hiệu START được lặp lại thay vì

một tín hiệu STOP thì bus I2C vẫn trong trạng thái bận. Tín hiệu START và lặp lại

START đều có chức năng giống nhau là khởi tạo một giao tiếp.

2.2.4. Định dạng dữ liệu

- Dữ liệu được truyền trên bus I2C theo từng bit, bit dữ liệu được truyền đi tại mỗi

sườn dương của xung đồng hồ trên dây SCL, quá trình thay đổi bit dữ liệu xảy ra

khi SCL đang ở mức thấp.

Page 14: Báo Cáo Cân Điện Tử

Hình 2.10: Quá trình truyền 1 bit dữ liệu

- Mỗi byte dữ liệu được truyền có độ dài là 8bits.

- Số lượng byte có thể truyền trong một lần là không hạn chế.

- Mỗi byte được truyền đi theo sau 8 bit, một bit ACK để báo hiệu là đã nhận dữ

liệu. Đây là điều kiện bắt buộc, nhằm đảm bảo quá trình truyền nhận dữ liệu được

diễn ra chính xác.

Hình 2.11:Dữ liệu truyền trên bus I2C.

Hình 2.12: Bit ACK trên Bus 12C.

Page 15: Báo Cáo Cân Điện Tử

- Mô tả việc truyền dữ liệu:

+ Bit có trọng số cao nhất (MSB) sẽ được truyền đi đầu tiên, các bit sẽ được

truyền đi lần lượt.

+ Sau 8 xung clock trên SCL, 8 bit dữ liệu đã được truyền đi.

+ Lúc này thiết bị nhận, sau khi đã nhận đủ 8bit dữ liệu sẽ kéo SDA xuống mức

thấp tạo xung ACK ứng với xung clock thứ 9 trên dây SDA để báo đã nhận đủ

8 bit.

+ Thiết bị truyền khi nhận được bit ACK sẽ tiếp tục thực hiện quá trình truyền dữ

liệu hoặc kết thúc.

+ Khi không nhận được đúng địa chỉ hoặc muốn kết thúc quá trình giao tiếp, thiết

bị nhận sẽ gửi một xung NOT-ACK (SDA ở mức cao) để báo cho thiết bị chủ

biết, thiết bị chủ sẽ tạo xung STOP để kết thúc hay lặp lại một xung START để

bắt đầu quá trình mới.

2.2.5. Định dạng địa chỉ

- Mỗi một thiết bị ngoại vi tham gia vào bus I2C đều có một địa chỉ duy nhất, nhằm

phân biệt các thiết bị với nhau. Độ dài địa chỉ là 7 bit, điều đó có nghĩa là trên 1

bus I2C ta có thể phân biệt tối đa 128 thiết bị.

Hình 2.13: Cấu trúc byte dữ liệu đầu tiên.

- Khi thiết bị chủ muốn giao tiếp ngoại vi trên bus 12C, nó sẽ gửi 7 bit địa chỉ của

thiết bị đó ra bus ngay sau khi xung START. Byte đầu tiên được gửi bao gồm:

+ 7 bit địa chỉ. Mỗi thiết bị ngoai vi sẽ có một địa chỉ riêng do nhà sản xuất quy

định. Địa chỉ đó có thể thay đổi hoặc cố định.

+ Bit thứ 8 (R/W) quy định chiều truyền dữ liệu. Nếu bit này bằng “0” có nghĩa là

byte tiếp theo sẽ được truyền từ chủ đến tớ. Còn ngược lại nếu bằng “1” thì các

byte tiếp theo sau byte đầu tiên sẽ là dữ liệu từ con tới chủ. Việc thiết lập giá trị

Page 16: Báo Cáo Cân Điện Tử

này do con chủ thi hành, con tớ sẽ tuy theo giá trị đó mà có sự phản hồi tương

ứng đến con chủ.

Hình 2.14:Quá trình truyền dữ liệu

Truyền dữ liệu từ chủ đến tớ (ghi dữ liệu): Thiết bị chủ muốn ghi dữ liệu đến con

tớ, quá trình thực hiện là:

- Thiết bị chủ tạo xung START.

- Thiết bị chủ gửi địa chỉ của thiết bị tớ mà nó cần giao tiếp cùng với bit R/W = 0

ra bus và đợi xung ACK phản hồi từ con tớ.

- Khi nhận được xung ACK báo đã nhận diện đúng thiết bị tớ, con chủ bắt đầu

gửi dữ liệu đến con tớ theo từng byte một. Theo sau mỗi byte này là một xung

ACK. Số lượng byte truyền là không hạn chế.

- Kết thúc quá trình truyền, con chủ sau khi truyền byte cuối sẽ tạo xung STOP

báo hiệu kết thúc.

Hình 2.15: Ghi dữ liệu từ chủ đến tớ.

Truyền dữ liệu từ tớ đến chủ (đọc dữ liệu): thiết bị chủ muốn đọc dữ liệu từ thiết bị

tớ, quá trình thực hiện như sau:

Page 17: Báo Cáo Cân Điện Tử

- Khi bus rỗi, thiết bị chủ tạo xung START, báo hiệu bắt đầu giao tiếp.

- Thiết bị chủ gửi địa chỉ của thiết bị tớ cần giao tiếp cùng với bit = 1 và đợi xung

ACK từ thiết bị tớ.

- Sau xung ACK đầu tiên, thiết bị tớ sẽ gửi từng bit ra bus, thiết bị chủ sẽ nhận

dữ liệu và trả về xung ACK. Số lượng byte không hạn chế.

- Khi muốn kết thúc quá trình giao tiếp, thiết bị chủ gửi xung Not ACK và tạo

xung STOP để kết thúc.

Hình 2.16: Đọc dữ liệu từ thiết bị tớ.

- Quá trình kết hợp ghi và đọc dữ liệu: giữa hai xung START và STOP, thiết bị chủ

có thể thực hiện việc đọc hay ghi nhiều lần, với một hay nhiều thiết bị. Để thực

hiện việc đó, sau một quá trình ghi hay đọc, thiết bị chủ lặp lại một xung START

và lại gửi lại địa chỉ của thiết bị tớ và bắt đầu một quá trình mới.

- Chế độ giao tiếp Master‐Slave là chế độ cơ bản trong một bus I2C, toàn bộ bus

được quản lý bởi một master duy nhất. Trong chế độ này sẽ không xảy ra tình trạng

xung đột bus hay mất đồng bộ xung clock vì chỉ có một master duy nhất có thể tạo

xung clock.

Hình 2.17: Quá trình kết hợp đọc và ghi dữ liệu.

Page 18: Báo Cáo Cân Điện Tử

2.3. Khối điều khiển trung tâm

Trong hệ thống mạch điện tử vi điều khiển trung tâm đóng vai trò là bộ não,

tiếp nhận, xử lí và đưa ra thông tin cho toàn hệ thống. Dựa trên yêu cầu về chức năng

và tốc độ xử lí nhóm đã lựa chon vi điều khiển PIC 16F877A của hãng Microchip sản

xuất, với một số chức năng và thông số cơ bản sau:

- Sử dụng công nghệ tích hợp RISC CPU.

- Người sử dụng có thể lập trình với 35 câu lệnh cơ bản.

- Tất cả câu lệnh thực hiện trong một chu kỳ lệnh, ngoại trừ một số câu lệnh rẽ

nhánh thực hiện trong 2 chu kỳ lệnh.

- Tốc độ hoạt động xung đồng hồ là 20MHZ.

- Bộ nhớ hoạt động là flash 8k x14 words.

- Bộ nhớ RAM 368x8 bytes.

- Bộ nhớ EFPROM 256x8 bytes.

- Khả năng ngắt lên đến 14 ngắt trong và ngắt ngoài.

- Ngăn nhớ Stack được phân chia làm 8 mức.

- Truy cập bộ nhớ bằng địa chỉ trực tiếp hoặc gián tiếp.

- Nguồn khởi động (POR).

- Bộ tạo xung (PWRT) và bộ tạo dao động (OST).

- Bộ đếm thời gian (WDT) với nguồn dao động trên chíp (nguồn dao động RC) hoạt

động đáng tin cậy.

- Có mã chương trình bảo vệ.

- Phương thức cất giữ SLEEP.

- Có bảng lựa chọn dao động.

- Công nghệ CMOS FLASH/EFPRO nguồn mức thấp tốc độ cao.

- Thiết kế hoàn toàn tĩnh.

- Mạch chương trình nối tiếp có 2 chân.

- Mạch xử lý đọc ghi tới bộ nhớ chương trình.

- Dải điện thế hoạt động 2.0 đến 5.5V.

- Nguồn điện sử dụng 25mA.

- Dãy nhiệt độ công nghiệp và thuận lợi.

- Công suất tiêu thụ thấp.

- TIMER0: 8 bits của bộ định thời, bộ đếm với hệ số tỉ lệ trước.

- TIMER1: 16 bits của bộ định thời, bộ đếm với hệ số tỉ lệ trước, có khả năng tăng

trong khi ở chế độ sleep qua xung đồng hồ được cung cấp bên ngoài.

- TIMER2: 8 bits của bộ định thời, bộ đếm với 8 bits của hệ số tỉ lệ trước, hệ số tỉ lệ

sau.

Page 19: Báo Cáo Cân Điện Tử

Hình 2.18: Sơ đồ chân của PIC 16F877A.

+ Chân 13, 14 là các chân kết nối với thạch anh tạo dao động cho chip. Ta mắc thêm

vào 2 tụ điện có điện dung 33pF để tăng độ ổn định cho dao động thạch anh.

+ PORTB: Vì PORTB lúc này đóng vai trò là ngõ xuất nên các thanh ghi TRISB

trong chíp phải được đặt giá trị logic 1 (Nếu ta đặt ngõ B là ngõ nhập thì ta phải đặt

giá trị logic 0).

+ VDD: Là điện áp cấp nguồn cho vi điều khiển, nguồn điện cấp là 5V.

+ GND: Là chân nối mass khi sử dụng cần thiết kế một mạch ổn áp để bảo vệ cho vi

điều khiển, thường sử dụng IC ổn áp 7805.

+ PORTA: Có 6 pin từ chân 2 đến chân 7.

+ PORTB: Có 8 chân từ 34 đến 40, ngoài chức năng làm cổng xuất nhập còn có thêm

một số chức năng phụ khác.

+ PORTC, PORTE: Tương tự như PORTB.

+ Chân Reset (MCLR): Ngõ vào ở chân 1 dùng để thiết lập điều kiện đầu cho vi điều

khiển.

+ OSC1, OSC2: Hai chân này được sử dụng để nhận nguồn xung clock từ bên ngoài

cụ thể là từ thạch anh dao động.

+ Các chân RC3, RC4 dùng để kết nối I2C.

+ Các chân RC6, RC7 là chân kết nối RS232.

2.3.1. Truyền thông nối tiếp UART trong PIC 16F877A.

Page 20: Báo Cáo Cân Điện Tử

- UART được viết tắt của Universal Asynchronous Receiver – Transmitter thường là

một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy

tính và thiết bị ngoại vi thông qua cổng nối tiếp. Rất nhiều vi điều khiển hiện nay

đã tích hợp UART. Để bắt đầu việc truyền dữ liệu bằng UART, một start bit được

gửi đi, sau đó là 5‐8 bit dữ liệu, sau đó là stop bit. Start bit có trạng thái ngược với

trạng thái bình thường của đường truyền dữ liệu. Stop bit có cùng trạng thái với

trạng thái bình thường của đường truyền dữ liệu. Tốc độ của UART được quy định

bởi tốc độ baud. Một số chuẩn của UART là EIA, RS 232, RS 422 và RS 485.

- Như vậy để làm việc với UART chúng ta phải quan tâm đến các thông số sau:

+ Tốc độ Baud: thường là 9600.

+ Số bít được dùng để truyền Data: thường là 8 bít.

+ Bit Stop 1, hay 2 thường chọn 1.

+ Bit chẵn lẻ mục đích để kiểm tra dữ liệu truyền hoặc gửi có đúng hay không.

- PIC 16F877A có tất cả 5 thanh ghi cho quá trình điều khiển UART: Bao gồm 2

thanh ghi chức năng TXSTA, RCSTA, 2 thanh ghi dữ liệu RCREG và TXREG.

Thanh ghi tốc độ baund SPBRG.

- Trong PIC 16F877A có hai chế độ truyền High speed và Low speed được quy định

bởi Bit BRGH của thanh ghi TXSTA. Việc phân chia hai mức tốc độ này để có sự

chọn lựa cho trường hợp sai số với tốc độ baud chuẩn của PC, mà trong PC có các

mức chuẩn: 300, 2400, 9600, 19200, 28800.

- Trong PIC 16F877A có nhiều chế độ truyền nhận khác nhau: Chế độ truyền nhận

dùng bit 9 để định chẵn lẻ, hay cho mạng vi điều khiển một master và nhiều slave.

Và chế độ chuyền đồng bộ ứng dụng cho việc giao tiếp với A/D, D/A hay với các

EEPRO. Các chế độ này sẽ được thiết lập bởi các bit trong thanh ghi TXSTA, và

TCSTA.

- Quá trình nhận dữ liệu: Trong PIC 16F877A để nhận biết được dữ liệu truyền tới

người ta dùng bit cờ RCIF trong thanh ghi PIR1. Như vậy khi thanh ghi đệm dữ

liệu chứa dữ liệu thì RCIF sẽ được đưa lên 1 và chính cờ này cho phép PIC

16F877A có hai phương thức để nhận biết lúc nào có dữ liệu truyền tới. Sử dụng

ngắt và sử dụng kiểu Polling (quay vòng).

- Quá trình truyền dữ liệu: Trong quá trình truyền dữ liệu cũng có hai chế độ sử dụng

ngắt và Polling, tuy nhiên quá trình truyền dữ liệu lên PC không phải là thời điểm

bất kỳ mà dặt dưới sự kiểm soát của chương trình cho nên người ta thưòng sử dụng

kiểu polling khi cần truyền thì truyền đi.

2.3.2. Giao tiếp I2C trong PIC 16F877A

Page 21: Báo Cáo Cân Điện Tử

a. Tổng quát

- RC3/SCK/SCL: chân truyền dân xung clock.

- RC4/SDI/SDA: chân truyền dữ liệu.

- Các khối cơ bản trong sơ đồ khối của I2C không có nhiều khác biệt so với SPI. Tuy

nhiên I2C còn có thêm khối phát hiện bit START và STOP của dữ liệu (START

and STOP bit detect) và khối xác định địa chỉ ( match detect).

Hình 2.19: Sơ đồ khối MSSP ( I2C slave mode).

- Các thanh ghi liên quan đến I2C bao gồm:

+ Thanh ghi SSPCON và SSPCON2: điều khiển MSSP.

+ Thanh ghi SSPSTART: thanh ghi chứa trạng thái hoạt động của MSSP.

+ Thanh ghi SSPBUF: buffer truyền nhận nối tiếp.

+ Thanh ghi SSPSR: thanh ghi dịch dung để truyền nhận dữ liệu.

+ Thanh ghi SSPADD: thanh ghi chứa địa chỉ của giao diện MSSP.

b. Thiết lập I2C.

- Thanh ghi SSPADD: thanh ghi chứa địa chỉ của giao diện MSSP.

Page 22: Báo Cáo Cân Điện Tử

+ Ở chế độ Master mode, thanh ghi SSPADD sẽ không được sử dụng để chứa địa

chỉ, thay vào đó chức năng của SSPADD là thanh ghi chứa giá trị của BRG giá

trị tạo ra tốc độ baud cho xung clock dùng để truyền nhận dữ liệu.

SSPADD (khởi tạo tốc độ Baud).

VD: Set tốc độ baud của đường truyền: với 100Kb thì SSPADD = 28H. Xung giao

tiếp nối tiếp sẽ được tạo ra từ BRG (Baud Rate Generator ), giá trị ấn định tần số xung

clock nối tiếp được lấy từ 7 bit thấp của thanh ghi SSPADD. Khi dữ liệu được đưa vào

thanh ghi SSBUF bit BF được set vad BRG tự động đếm ngược về 0 và dừng lại, pin

SCL được giữ nguyên trạng thái trước đó. Khi dữ liệu tiếp theo được đưa vào, BRG

cần một khoảng thời gian TBRG tự động reset lại giá trị để tiếp tục quá trình đếm

ngược. Mỗi vòng lệnh (có thời gian TCY) BRG sẽ giảm giá trị 2 lần.

.

Hình 2.20: Sơ đồ khối BRG của I2C Master mode.

Các giá trị cụ thể của tần số xung nối tiếp do BRG tạo ra được liệt kê trong bảng sau:

- Thanh ghi SSPCON: địa chỉ 14H. Thanh ghi điều khiển chuẩn giao tiếp MSSP.

Bit 7: WCOL – Write Collition Detect bit

Page 23: Báo Cáo Cân Điện Tử

- Khi truyền dữ liệu ở chế độ I2C Master mode:

+ WCOL = 1: đưa dữ liệu truyền đi vào thanh ghi SSPBUF trong khi chế độ

truyền dữ liệu của I2C chưa săn sàng.

+ WCOL = 0: không xảy ra hiện tượng trên.

- Khi truyền dữ liệu ở chế độ I2C Slave mode:

+ WCOL = 1: dữ liệu mới được đưa vào thanh ghi SSPBUF trong khi dữ liệu

cũ chưa được truyền đi.

+ WCOL = 0: không xảy ra hiện tượng trên.

- Ở chế độ nhận dữ liệu (Master and Slave): bit này không có tác dụng chỉ thị các

trạng thái.

Bit 6: SSPOV – Receive Overflow Indicator Flag bit

- Khi nhận dữ liệu:

+ SSPOV = 1: dữ liệu mới được nhận vào thanh ghi SSPBUF trong khi dữ

liệu cũ chưa được đọc.

+ SSPOV = 0: không có hiện tượng xảy ra.

- Khi truyền dữ liệu: Bit này không có tác dụng chỉ thị các trạng thái.

Bit 5: SSPEN – Synchronuos Serial Port Enable bit

- SSPEN = 1: cho phép cổng giao tiếp MSSP ( các pin SDA và SCL).

- SSPEN = 0: không cho phép giao tiếp MSSP.

Cần chú ý là các pin SDA và SCL phải được điều khiển trạng thái bằng các

bit tương ứng trong thanh ghi TRISC trước đó.

Bit 4: CKP – SCK Release Control bit

Ở chế độ Slave mode:

+ CKP = 1: cho xung clock tác động.

+ CKP = 0: giữ xung clock ở mức logic thấp (để đảm bảo thời gian thiếp lập

dữ liệu).

Bit 3, 0: SSPM3, SSPM0

- Các bit đóng vai trò lựa chọn các chế độ hoạt động của MSSP.

+ 1111: I2C Slave mode 10bit địa chỉ và cho phép ngắt khi phát hiện bit

START và STOP.

+ 1110: I2C Slave mode 7 bit địa chỉ và cho phép ngắt khi phát hiện bit

START và STOP.

Page 24: Báo Cáo Cân Điện Tử

+ 1011: I2C Frimwave Controlled Master mode ( không cho phép chế độ

Slave).

+ 1000: I2C Master mode, xung clock = FOSC/(4*(SSPADD + 1)).

+ 0111: I2C Slave mode 10bit địa chỉ.

- Các trạng thái không được liệt kê hoặc không có tác dụng điều khiển hoặc chỉ

có tác dụng đối với chế độ SPI mode.

- Thanh ghi SSPCON2: địa chỉ 91h.

+ Thanh ghi điều khiển các chế độ hoạt động của chuẩn giao tiếp I2C.

Bit 7: GCEN General Call Enable bit

+ GCEN=1 cho phép khi ngắt địa chỉ 0000h được nhận vào thanh ghi SSPSR

(địa chỉ của chế độ General Call Address).

+ GCEN=0 Không cho phép chế độ địa chỉ trên.

Bit 6: ACKSTAT Acknowledge Status bit

Bit này chỉ có tác dụng khi truyền dữ liệu ở chế độ I2C Master mode).

+ ACKSTAT=1 Nhận được xung từ I2C Slave.

+ ACKSTAT=0 Chưa nhận được xung.

Bit 5: ACKDT Acknowledge Data bit

Bit này chỉ có tác dụng khi nhận dữ liệu ở chế độ I2C Master mode.

+ ACKDT=1 chưa nhận xung.

+ ACKDT=0 Đã nhận được xung.

Bit 4:ACKEN Acknowledge Sequence Enable

Bit này chỉ có tác dụng khi nhận dữ liệu ở chế độ I2C Master mode.

+ ACKEN=1 Cho phép xung xuất hiện ở 2 pin SDA ca SCL khi kết thúc

quá trình nhận dữ liệu.

+ ACKEN=0 không cho phép tác động trên.

Bit 3: RCEN Receive Enable bit

Bit này có tác dung ở chế độ I2C Master mode.

Page 25: Báo Cáo Cân Điện Tử

+ RCEN =1 Cho phép nhận dữ liệu ở chế độ I2C Master mode.

+ RCEN =0 Không cho phép nhận dữ liệu.

Bit 2: PEN Stop Condition Enable bit

+ PEN =1 cho phép thiết lập điều kiện Stop ở 2 pin SDA và SCL.

+ PEN =0 Không cho phép tác động trên.

Bit 1: RSEN Repeated Start Condition Enable bit

+ RSEN =1 Cho phép thiết lập điều kiện Start lặp lại liên tục ở 2 pin SDA và

SCL.

+ RSEN =0 Không cho phép tác động trên.

Bit 0: SEN Start Condition Enable/Stretch Enable bit

- Ở chế độ Master mode:

+ SEN = 1 Cho phép thiết lập điều kiện Start ở 2 pin SDA và SCL.

+ SEN = 0 Không cho phép tác động trên.

- Ở chế độ Slave mode:

+ SEN = 1 Cho phép khóa xung clock từ pin SCL cua I2C Master.

+ SEN = 0 Không cho phép tác động trên.

+ Thanh ghi SSPSTAT: Địa chỉ 94h.

+ Thanh ghi chứa các bit trạng thái chuẩn giao tiếp MSSP.

Chọn baud chuẩn với 100kb thì SMP=1.

Bit 7: SPM Slew Rate Control bit.

+ SPM=1 Dùng tốc độ chuẩn (100KHz va 1MHz).

+ SPM=0 Dùng tốc độ cao (400KHz).

Bit 6: CKE MSBus select bit.

+ CKE=1 Cho phép MSBus.

+ CKE=0 Không cho phép MSBus.

Bit 5: Bit

+ I2C Master Mode :Không quan tâm.

+ D/A=1 byte vừa truyền đi hoặc nhận là dữ liệu.

Page 26: Báo Cáo Cân Điện Tử

+ D/A=0 byte vừa truyền đi hoặc nhận là địa chỉ.

Bit 4: P Stop bit.

+ P=1 vừa nhận được bit Stop.

+ P=0 chưa nhận được bit Stop.

Bit 3: S Start bit.

+ S=1 vừa nhận được bit Start.

+ S=0 chưa nhận được bit Start.

Bit 2: Bit information

- 12C Slave mode:

+ =1 Đọc dữ liệu.

+ =0 Ghi dữ liệu.

- 12C Master Mode:

+ =1 Đang truyền dữ liệu.

+ =0 Không truyền dữ liệu.

Bit 1: UA Update Address

- Bit này chỉ có tác dụng với chế độ 12C Slave mode 10 bit địa chỉ.

+ UA=1 vi điều khiển cần cập nhật thêm địa chỉ từ thanh ghi SSPADD.

+ UA=0 Không cần cập nhật thêm địa chỉ.

Bit 0: BF Buffer Full Status.

- BF=1 Thanh ghi SSPBUF đang chứa dữ liệu truyền đi hoặc nhận được.

- BF=0 Thanh ghi SSPBUF không có dữ liệu.

Page 27: Báo Cáo Cân Điện Tử

CHƯƠNG 3: MÔ HÌNH HÓA HỆ THỐNG

3.1. Mô hình hệ thống cơ khí

3.2.

Hình 3.1: Mô hình cân đo sức khỏe

1. Hộp đựng mạch điện tử và màn hình LCD.

2. Trụ đỡ hộp mạch.

3. Bệ đỡ (2 chiếc), nơi lắp ghép cân với thanh đo chiều cao vào trụ đỡ.

4. Chân đỡ cân (4 chiếc).

5. Khung chịu lực của cân (2 chiếc).

6. Mặt cân, cũng là là vỏ của cân.

7. Thanh đo chiều cao.

Page 28: Báo Cáo Cân Điện Tử

3.3. Mô hình tổng quan hệ thống điều khiển giao tiếp I2C và truyền thông nối

tiếp.

Lm24vf

Hình 3.2: Tổng quan hệ thống điều khiển.

PIC16F877ALM35

PIC16F877AHL-8

PIC16F877A HC-SR04

PIC16F877ARPR-359F

PIC16F877A

MÀN HÌNH

LCD

SCL

SDA

Page 29: Báo Cáo Cân Điện Tử

CHƯƠNG 4: THIẾT KẾ VÀ THI CÔNG

4.1. Thiết kế cơ khí

Yêu cầu của cân là phải chắc chắn, chịu được trọng tải lớn, tận dụng được

những chi tiết có sẵn trên thị trường để tiết kiệm tối đa giá thành, có tinh thẩm mĩ về

hình thức.

4.1.1. Khung dưới

- Chức năng: Làm khung đỡ cho cân, cột trụ hộp mạch, thanh đo chiều cao và là

chỗ để cố định một đầu loadcell.

- Vật liệu: Sắt.

- Cấu tạo: Thể hiện trên hình 4.1

Hình 4.1: Khung chịu lực dưới.

- Kích thước: Thể hiện trên hình 4.2.

Page 30: Báo Cáo Cân Điện Tử

Hình 4.2: Bản vẽ chi tiết khung chịu lực dưới

4.1.2. Khung trên

- Chức năng: Chịu lực tải trực tiếp từ mặt cân và là nơi cố định đầu còn lại của

loadcell.

- Vật liệu: Sắt.

- Cấu tạo: Thể hiện trên hình 4.3.

Page 31: Báo Cáo Cân Điện Tử

Hình 4.3: Khung chịu lực trên.

- Kích thước: Thể hiện trên hình 4.4.

Page 32: Báo Cáo Cân Điện Tử

Hình 4.4: Bản vẽ chi tiết khung chịu lực dưới.

4.1.3. Mặt cân

- Chức năng: Nâng cao thẩm mỹ cho cân, che kín đi phần khung và loadcell.

- Vật liệu: Tôn.

- Cấu tạo: Thể hiện trên hình 4.5.

Hình 4.5: Mặt cân (Vỏ cân).

- Kích thước: 464x404x80, dày 1mm.

4.1.4. Thanh đo chiều cao

- Chức năng: Là thanh cố định cảm biến cảm biến siêu âm HC-SR04.

- Vật liệu: Sắt.

- Cấu tạo: Thể hiện trên hình 4.6.

Page 33: Báo Cáo Cân Điện Tử

Hình 4.6: Thanh đo chiều cao.

- Kích thước: Cao: 2100mm, thanh ngang dài: 300mm, đường kính: 30mm, dày:

1mm.

4.1.5. Trụ đỡ hộp mạch

- Chức năng: Là bộ phận giữ cố định hộp mạch ở độ cao vừa tầm với người sử

dụng để thuận tiện cho thao tác.

- Vật liệu: Sắt.

- Cấu tạo:

- Kích thước: Thanh trụ bán kính 30mm, cao 1m.

4.1.6. Hộp đựng mạch điện tử

- Chức năng: Chứa đựng những mảng mạch điện tử điều khiển, hệ thống nút bấm

và màn hình hiển thị LCD.

- Vật liệu: Tôn.

Page 34: Báo Cáo Cân Điện Tử

- Cấu tạo: Hình hộp chữ nhật có nắp đậy.

- Kích thước: 30x20x10mm.

4.2. Sơ đồ mạch trong đồ án

Từ sơ đồ thiết kế tổng quan về hệ thống điều khiển ta thấy rằng hệ thống bao

gồm 6 con vi điều khiển PIC 16F877A hoạt động theo kiểu truyền thông I2C trong hệ

thống này sẽ có 1 con đóng vai trò là chủ và 5 con đóng vai trò là tớ.

Các con vi điều khiển này sẽ hoạt động độc lập đóng các vai trò khác nhau. Các

vi điều khiển đóng vai trò là tớ có nhiệm vụ thu thập dữ liệu từ các cảm biến LM35 để

đo khối nhiệt độ, cảm biến HC-SR04 để đo chiều cao, loadcell L6E để đo khối lượng,

IR để đo nhịp tim, cảm biến áp suất MPXx500 để đo huyết áp. Vi điều khiển đóng vai

trò là chủ có nhiệm vụ nhận tín hiêu từ giao diện người dùng từ máy tính để sau đó đọc

dữ liêu từ các vi điều khiển tớ và cập nhật dữ liệu đó lên trên giao diện người dùng.

Sau đây ta sẽ tiếp tục tìm hiểu các thanh phần mạch cấu tao lên hệ thống.

4.2.1. Mạch điều khiển trung tâm

Để tiện lợi cho quá trình kết nối của hệ thống mạch điều khiển trung tâm sử

dụng với vai trò là chủ và tớ, ta sẽ dùng mạch kit PIC 16F877A được thiết kế theo

dạng module, sau đây ta sẽ nói rõ hơn về các thành phần của kít mà ta sẽ sử dụng trong

hệ thống.

Page 35: Báo Cáo Cân Điện Tử

Hình 4.7: Mạch điều khiển trung tâm.

Khối điều khiển trung tâm được thiết kế dạng các module riêng rẽ có các Jump

kết nối ngoài giúp dễ dàng thay thế mạch khi bị hỏng, thích hợp với nhiều dòng chip

có cùng số chân cũng như mức điện áp. Khi kết nối với các thiết bị hay module khác

dễ dàng tháo lắp, di chuyển. Mạch sử dụng thạch anh ngoài với tần số 20MHz, chuẩn

nạp code ICSP. Ngoài các Jump kết nối trực tiếp với các chân của vi điều khiển chúng

ta còn có các khối mạch kết nối với chức năng cụ thể.

4.2.2. Khối nguồn

Hình 4.8: Khối nguồn mạch điều khiển

- Khối nguồn 5V: Khối này bao gồm các jump sử dụng để cấp nguồn 5V cho vi

điều khiển, Led báo có điện áp.

- Khối nguồn 3.3V: Khối nguồn cung cấp điện áp đặc biệt 3.3V cho module

NRF24L01, sử dụng IC ổn áp AMS 117. Đầu vào của khối sử dụng cùng VCC

5V của khối nguồn 5V.

4.2.3. Khối UART

Bao gồm bốn chân Jump ngoài cho phép ghép nối với cổng kết nối chuẩn nối

tiếp cho phép kết nối máy tính với vi điều khiển với chức năng các chân:

+ Vcc cấp nguồn 5V.

+ GND nối đất.

+ Chân TX truyền dữ liệu từ máy tính xuống kết nối với RC6.

+ Chân RX nhận dữ liệu từ vi điều khiển truyền về máy tính kết nối với RC7.

Page 36: Báo Cáo Cân Điện Tử

Hình 4.9: Khối giao tiếp nối tiếp.

4.2.4. Khối nạp chương trình

Hình 4.10: Khối nạp chương trình cho vi điều khiển.

Nhóm sử dụng chuẩn nạp ICSP để nạp chương trình điều khiển cho PIC. Khối

kết nối mạch nạp sử dụng sáu jump ngoài. Chức năng các chân như sau:

+ Chân PGC: Tạo xung đồng bộ một chiều nối tiếp từ mạch nạp đến chip.

+ Chân PGD: Xung đồng bộ dữ liệu hai chiều.

+ Chân Vcc: Nguồn điện cấp cho Chip.

+ Chân MCLR: Khi được xác lập thông báo đưa chip vào trạng thái nạp dữ liệu.

4.2.5. Mạch cảm biến nhiệt LM35

- Chân 1 của LM35 : chân nguồn.

- Chân 2 của LM35 :chân tín hiệu.

- Chân 3 của LM35: chân nối đất.

Page 37: Báo Cáo Cân Điện Tử

Hình 4.11: Khối cảm biến nhiệt độ LM35.

4.2.6. Mạch cảm biến HC-SR04

Hình 4.12: Khối cảm biến siêu âm HC-SR04

- Chân 1 VCC: chân nguồn.

- Chân 2 TRIGE: chân TRIGE trên vi điều khiển.

- Chân 3 ECHO: với chân ECHO trên vi điều khiển.

- Chân 4 GND nối với chân GND.

4.2.7. Mạch cảm biến IR RPR-359F

Page 38: Báo Cáo Cân Điện Tử

Hình 4.13: Khối cảm biến IR RPR-359F.

+ Chân 1 và chân 4: GND.

+ Chân 2: Nối với một emitor của transistor 2N3904. Transistor này đóng

vai trò nhu một công tắc sẽ đóng mở cảm biến.

+ Chân 3: Nối với nguồn thông qua 1 trở điện trở 10k và đây chính là tín

hiệu đầu ra của cảm biến.

- Trong trương hợp này tín hiệu sẽ đi qua 3 quá trình trước khi vào vi điều khiển

xử lý.

+ Quá trình 1: tín hiệu đi qua tầng thứ nhất sẽ được khuếch đại và lọc

nhiễu.

Page 39: Báo Cáo Cân Điện Tử

Hình 4.14: Khối khuếch đại tin hiệu và lọc nhiễu lần1.

+ Quá trình thứ 2: Sau tín hiệu đi ra khỏi quá trình xử lý nhất tín hiệu sẽ

được tiếp tục lọc nhiễu ở quá trình thứ 2.

Hình 4.15: Khối khuếch đại tin hiệu và lọc nhiễu lần 2.

Page 40: Báo Cáo Cân Điện Tử

+ Quá trình thứ ba: Tín hiệu được xử lý để thu tín hiêu đầu ra là tín hiệu

số.

Hình 4.15: Khối thu tín hiêu số sau khi lọc nhiễu.

4.2.8. Mạch cảm biến khối lượng L6E

Cảm biến khối lượng L6E sẽ được kết nối với bộ ADC24bit HX711. Điện áp so

sánh sẽ được lấy trên 2 chân E+ và E- của HX711. Khi có sự thay đổi về trọng lượng

tại Loadcell có sự thay đổi điện áp tại 2 chân A+ và A-. HX711 sẽ đo sự thay đổi này

và trả về giá trị ADC 24 bit để cho vi điều khiển xử lý.

Page 41: Báo Cáo Cân Điện Tử

Hình 4.16: Khối cảm biến loadcell và HX711.4.3. Code sử dụng trong mạch

4.3.1. Code mạch đo chịp tim

//khai bao ket noi lcd

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_ENABLE_PIN PIN_D3

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

// ket thuc khai bao ket noi LCD

// khai bao cong tac dieu khien

#include <main.h>

#include <lcd.c>

unsigned int8 count=0,bpm=0;

#int_ext

void puse_hearth_irs(void)

count++ ;

#int_timer1

void timer1_irs(void)

unsigned int16 x=0;

x++;

if(x==100)

Page 42: Báo Cáo Cân Điện Tử

bpm=count;

x=0;

count=0;

void main()

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

setup_psp(PSP_DISABLED);

setup_spi(SPI_SS_DISABLED);//setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

setup_timer_2(T2_DISABLED,0,1);

setup_comparator(NC_NC_NC_NC);

setup_vref(FALSE);

setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);

enable_interrupts(INT_TIMER1);

enable_interrupts(INT_EXT_L2H);

enable_interrupts(GLOBAL);

// TODO: USER CODE!!

while(TRUE)

delay_ms(100);

lcd_init();

lcd_gotoxy(1,1);

lcd_putc("Hello....");

Page 43: Báo Cáo Cân Điện Tử

delay_ms(1000);

lcd_putc("\f");

lcd_gotoxy(1,1);

lcd_putc("Place your");

lcd_gotoxy(1,2);

lcd_putc("finger....");

delay_ms(4000);

lcd_putc("\f");

count=0;

set_timer1(15535);

lcd_gotoxy(1,1);

lcd_putc("processing.....");

delay_ms(5500);

//delay_ms(5000);

lcd_putc("\f");

lcd_gotoxy(1,2);

bpm=count;

printf(lcd_putc,"Heart Rate: %d",bpm*12);

while(input(PIN_A2));

delay_ms(500);

bpm=0;

4.3.2. Code mạch đo nhiệt độ và chiều cao

#define trig pin_B1

#define echo pin_B0

//khai bao ket noi lcd

Page 44: Báo Cáo Cân Điện Tử

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_ENABLE_PIN PIN_D3

#define LCD_DATA4 PIN_D4

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

// ket thuc khai bao ket noi LCD

#include <main.h>

#include <lcd.c>

void high_person(void);

void temperature(void) ;

void main()

setup_timer_1(T1_INTERNAL|T1_DIV_BY_8);

set_tris_b(0xfd);// cau hinh dau vao rb1 ouput, con lai la input

setup_adc(ADC_CLOCK_INTERNAL); // chon bo dao dong cho adc

setup_adc_ports(ALL_ANALOG); // bat tat ca port a la bo chuyen doi anlanog

set_adc_channel(0); // chon kenh ra0

lcd_init(); // khoi tao lcd

printf(LCD_PUTC, "\f HIG-TEM");

delay_ms(2000);

while(TRUE)

if(input(PIN_B4)==0)

delay_us(20);

Page 45: Báo Cáo Cân Điện Tử

if(input(PIN_B4)==0)

high_person();

if(input(PIN_B5)==0)

delay_us(20);

if(input(PIN_B5)==0)

temperature();

void high_person(void)

float distance, time;

output_high(trig); // dua chan trig len cao

delay_us(20); // tao ra 20u

output_low(trig);

while(!input(ECHO)) ; //cho cho toi khi chan echo len cao

set_timer1(0); // bat timer

while(input(ECHO)) ; // cho cho toi khi chan echo xuong thap

time=get_timer1(); //doc timer

distance=(time*0.028+1.093); // tinh khoang cach

lcd_gotoxy(1,1);

Page 46: Báo Cáo Cân Điện Tử

lcd_putc("your high:");

lcd_gotoxy(1,2);

printf(lcd_putc,"%6.3f cm",200-distance);

delay_ms(1000);

while(input(PIN_B5))||while(input(PIN_B4));// CHO CHO TOI KHI CONG TAC

B4 HOAC B5 DC NHAN

lcd_putc("\f");

void temperature(void)

float vin0, temp; // bien dau vao

vin0 =read_adc();

temp= vin0*1.95;

lcd_gotoxy(1,1);

lcd_putc("your temper:");

lcd_gotoxy(1,2);

printf(lcd_putc,"%6.3f C ",temp);

delay_ms(1000);

while(input(PIN_B4))|| while(input(PIN_B5));// CHO CHO TOI KHI CONG TAC

B4 HOAC B5 DC NHAN

lcd_putc("\f");

4.3.3. Code mạch đo khối lượng

//khai bao ket noi lcd

#define LCD_RS_PIN PIN_D1

#define LCD_RW_PIN PIN_D2

#define LCD_ENABLE_PIN PIN_D3

#define LCD_DATA4 PIN_D4

Page 47: Báo Cáo Cân Điện Tử

#define LCD_DATA5 PIN_D5

#define LCD_DATA6 PIN_D6

#define LCD_DATA7 PIN_D7

// ket thuc khai bao ket noi LCD

// khai bao 2 chan giao tiep : Dout va SCK

#define HX711_DOUT PIN_A0// input

#define HX711_SCK PIN_A1// output

#define Uee 4.05 // (volt)

#define Weight_Max 300000 // (gam)

#include <main.h>

#include <lcd.c>

// khai bao ham nguyen mau

unsigned int32 HX711_Read(void);

float Get_Weight(unsigned int32 Weight_ZeroPoint);

unsigned int32 Get_ZeroWeight(void);

void Delay__hx711_us(void);

// ket thuc khai bao ham nguyen mau

void main()

unsigned int32 Zero_ADC;

//float WEIGHT ;

setup_adc_ports(NO_ANALOGS);

setup_adc(ADC_OFF);

set_tris_a(0xFD);

// port_b_pullups(0x00);

lcd_init();

delay_ms(100);

Page 48: Báo Cáo Cân Điện Tử

lcd_putc('\f');

lcd_gotoxy(1,1);

lcd_putc(" load cell");

delay_ms(2000); // cho de on dinh loadCell

Zero_ADC=Get_ZeroWeight(); // lay diem 0 gram.

//delay_ms(100);

lcd_putc('\f');

while(TRUE)

lcd_gotoxy(1,2);

printf(lcd_putc,"%9.2f KG ",(float)Get_Weight(Zero_ADC));

delay_ms(2000);

while(input(PIN_A2));

void Delay__hx711_us(void)

delay_ms(2);

unsigned int32 HX711_Read(void)

unsigned int32 count;

unsigned char i;

while(!input(HX711_DOUT));//=1

Delay__hx711_us();

Page 49: Báo Cáo Cân Điện Tử

output_low(HX711_SCK);

count=0;

while(input(HX711_DOUT));

for(i=0;i<24;i++)

output_high(HX711_SCK);

count=count<<1;

output_low(HX711_SCK);

if(input(HX711_DOUT)==1) count++;

output_high(HX711_SCK);

count=count^0x800000;

Delay__hx711_us();

output_low(HX711_SCK);

return (count);

float Get_Weight( unsigned int32 Weight_ZeroPoint)

unsigned int32 Weight;

float kg;

Weight = HX711_Read();

if(Weight > Weight_ZeroPoint)

kg =(Weight - Weight_ZeroPoint);

Page 50: Báo Cáo Cân Điện Tử

kg = kg/14316;

return(kg);

unsigned int32 Get_ZeroWeight(void)

unsigned int32 Weight_Zero;

Weight_Zero = HX711_Read();

return (Weight_Zero);

Page 51: Báo Cáo Cân Điện Tử

KẾT LUẬN

Sau một thời gian nghiên cứu và làm việc một cách nghiêm túc, cùng với sự

giúp đỡ và hướng dẫn nhiệt tình của thầy Lê Ngọc Duy, đến nay chúng em đã hoàn

thành đề tài: “Hệ thống kiểm tra sức khỏe”. Trong quá trình thực hiện, chúng em đã

vận dụng những kiến thức đã được học, tự mình đánh giá trình độ bản thân, cùng nhau

nghiên cứu và học hỏi lẫn nhau tìm ra hướng giải quyết. Thông qua quá trình thực hiện

đề tài, chúng em đã dần làm quen với cách làm việc độc lập và phối hợp làm theo

nhóm. Điều quan trọng là đã biết cách tổ chức công việc và sắp xếp thời gian hợp lý.

Trọng quá trình thực hiện đề tài, mặc dù chúng em đã cố gắng nhưng vì kiến

thức và thời gian còn hạn chế nên không thể tránh khỏi những thiếu xót. Chúng em rất

mong thầy cô đóng góp ý kiến để đề tài được hoàn thiện hơn.

Chúng em xin chân thành cảm ơn!