Professional Documents
Culture Documents
Thuyết Minh
Thuyết Minh
Thuyết Minh
Lớp: 20CDT1
Trong nền kinh tế ngày nay, cùng với sự phát triển của quá trình công
nghiệp hóa hiện đại hóa. Ngành Y học nói chung và sức khỏe con người nói
riêng là vấn đề được quan tâm hàng đầu. Các thiết bị điện tử sử dụng Vi điều
khiển được sử dụng rộng rãi trong quá trình công nghiệp hiện đại hóa. Vi điều
khiển ngày càng hiện đại, tốc độ xử lý nhanh hơn, ứng dụng rộng hơn. Nhiều
máy móc hiện đại để phục vụ điều trị bệnh tật cho con người. Những ứng dụng
này vô cùng quan trọng trong Y học hiện đại. Tuy nhiên trước khi đi sâu vào
bên trong cơ thể để khám nghiệm thì chúng ta phải có thông tin cơ bản về trạng
thái cơ thể như chiều cao, cân nặng,... để đánh giá sơ bộ sức khỏe của con người
thường xuyên hàng tháng. Vì vậy, yêu cầu đặt ra là thiết bị phải tiện lợi, giá
thành rẻ và chính xác. Việc nghiên cứu, chế tạo cân điện tử đo các chỉ số sức
khỏe con người đã mở ra cho nhóm rất nhiều vấn đề cần được giải quyết.
Đề tài “nghiên cứu sức khỏe đo cân nặng và chiều cao” là cơ hội để chúng
em có thời gian để tìm hiểu, thiết kế, chế tao một hệ thống tích hợp này. Qua đó,
sẽ góp phần nâng cao được sức khỏe của người Việt.
Lần đầu làm quen với Vi điều khiển và các sensors hệ thống nên kiến thức
còn nhiều hạn chế. Trong quá trình hoàn thành đồ án môn học có hạn, kiến thức
và trình độ còn hạn chế nên không tránh khỏi những sai sót.
Trong quá trình thiết kế không tránh khỏi sai sót. Nhóm em xin chân thành
cảm ơn sự chỉ bảo, giúp đỡ của thầy cô trong khoa đặc biệt là sự giúp đỡ của
thầy Đặng Phước Vinh đã trực tiếp hướng dẫn nhóm tác giả thực hiện đồ án.
Xin chân thành cảm ơn quý thầy cô.
Hình 2.3 Tóm tắt các thanh ghi được liên kết với PORT A
PORT B
Cổng B rộng 8 bit có thể được sử dụng làm I/O
Thanh ghi quyết định chức năng cho mỗi chân là thanh TRISB, nếu ghi 1
vào các bit thì các bit tương ứng trong thanh ghi PORTB sẽ có chức năng
nhập, còn nếu ghi 0 thì chức năng xuất
Dựa vào địa chỉ của thanh ghi ta có thể truy xuất từng bit trong thanh ghi
TRIS và thanh ghi PORT để cấu hình chức năng thư và xuất tín hiệu
Port B thường dùng để đọc các nút tín hiệu
Chức năng của các chân
Hình 2.4 Chức năng PORT B
Hình 2.5 Tóm tắt các thanh ghi liên kết với PORT B
PORT C
Cổng C rộng 8 bit có thể dùng làm I/O
Thanh ghi quyết định chức năng cho mỗi chân là thanh TRISC, nếu ghi 1
vào các bit thì các bit tương ứng trong thanh ghi PORTC sẽ có chức năng
nhập, còn nếu ghi 0 thì chức năng xuất
Dựa vào địa chỉ của thanh ghi ta có thể truy xuất từng bit trong thanh ghi
TRIS và thanh ghi PORT để cấu hình chức năng thư và xuất tín hiệu
PORTC được ghép kênh với một số chức năng ngoại vi. Các chân PORTC
có bộ đệm đầu vào kích hoạt schmitt.
Hình 2.6 Chức năng PORT C
Hình 2.7 Tóm tắt các thanh ghi liên kết với PORT C
PORT D
PORTD là một cổng 8 bit với bộ đệm đầu vào kích hoạt schmitt.
Mỗi chân có thể cấu hình riêng lẻ làm đầu vào hoặc đầu ra.
PORTD có thể được cấu hình như một cổng bộ vi xử lý rộng 8 bit (Cổng
Slave song song) bằng cách đặt bit điều khiển, PSPMODE (TRISE<4>).
Trong chế độ này, bộ đệm đầu vào là TTL.
Hình 2.11 Tóm tắt các thanh ghi liên kết với PORT E
Nhóm sinh viên sử dụng cổng I/O của PIC16F877A như sau:
PORT A: Chân dư
PORT B : được sử dụng để nhận dữ liệu từ hai cảm biến ở dạng tín hiệu
điện áp và nhận dữ liệu cho nút nhấn
PORT C: truyền dữ liệu lên khối hiển thị là LCD và led
PORT D: truyền dữ liệu lên khối hiển thị là LCD
PORT E: cổng dư
2.2 Các loại cảm biến sử dụng
a) Cảm biến lực
Cảm biến lực là thiết bị cảm biến dùng để chuyển đổi lực hoặc trọng lượng
thành tín hiệ điện áp.
Do tín hiệu đầu ra của loadcell rất nhỏ, được tính bằng mV, nên tín hiệu này
không thể đưa trực tiếp vào vi điều khiển mà phải thông qua một bộ khuếch đại tín
hiệu cho loadcell đó là module HX711.
HX711 là module dùng để đọc sự thay đổi giá trọ điện trở của loadcell với bộ
ADC được tích hợp có độ phân giải là 24 bit. Tín hiệu đầu ra sẽ truyền cho vi điều
khiển thông qua 2 dây là SCK (serial clock) và DT (data).
thông số kỹ thuật
Điện áp hoạt động: 2.7 – 5 VDC
Dòng tiêu thụ tối đa: 1.5 mA
Tốc độ lấy mẫu: 10 – 80 mẫu/giây (có thể tùy chinh)
Độ phân giải: 24 bit ADC
Độ phân giả điện áp: 40mV
Có 2 ngỏ vào: kênh A và kênh B
Kết nối module HX711 với vi điều khiển
VCC : kết nối điện áp cung cấp 5V
GND: nối đất
SCK: Nối chân RD1 để truyền tín hiệu về vi điều khiển
DT: Nối chân RB2 để truyền tín hiệu về vi điều khiển
Nguyên tắc làm việc
Chân DT có nhiệm vụ truyền dữ liệu đã được biến đổi ADC với bộ phân
giải là 24 bit từ HX711 đến vi điều khiển, trong đó bit MSB được truyền đi
trước. Việc truyền các bít này được điều khiển thông qua xung clock được
tạo ở chân SCK. Sau khi truyền xong 24 bit dữ liệu (tương ứng 24 xung
clock), người dùng sẽ phải truyền thêm 1 – 3 bit để xác định hệ số khuếch
đại cho lần chuyển đổi ADC tiếp theo của HX711. Như vậy, tổng số xung
clock mà chíp vi điều khiển truyền cho chân SCK là 25 – 27 xung.
Khi dữ liệu đầu ra chưa sẵn sàng cho việc truyền nhận thì chân DT ở mức
“1”. Khi đó chân SCK nên duy trì ở mức “0”. Khi chân DT chuyển từ mức
“1” xuống mức “0” thì việc truyền nhận dữ liệu đã sẵn sàng. Cứ 1 xung
clock đưa và chân SCK thì 1 bit dữ liệu sẽ được dịch chuyển từ HX711
sang vi điề khiển.
c) Cảm Biến siêu âm HC-SR04
Hình 2.15 Sơ đồ kết nới vi điều khiển PIC 16F877A với cảm biến siêu âm HC-SR04
Sơ đồ kết nối vi điều khiển PIC16F877A với cảm biến siêu âm HC-SR04
được mô tả ở Hình 2.15. Hai chân I/O của vi điều khiển được kết nối với hai
chân TRIG và ECHO của cảm biến. Khi cảm biến được kích hoạt, bộ phận phát
sẽ phát ra sóng siêu âm đi đến vật thể cần xác định khoảng cách và dội ngược
lại bộ phận thu. Giả sử sóng siêu âm truyền trong môi trường không khí với
vận tốc bằng vận tốc âm thanh (v= 340 m/s). do đó khoảng cách cần xác định
sẽ bằng d = (v*t)/2. Trong đó, t là thời gian mà sóng siêu âm đi đến vật thể và
trở về.
Hình 2.16 mô tả chi tiết giản đồ thời gian quá trình truyền nhận sóng siêu âm
của cảm biến HC-SR04. Đầu tiên, một chân của vi điều khiển sẽ gửi một xung
ở mức “1” đến chân TRIG của SR04 trong khoảng thời gian lớn hơn 10 µs. Lúc
này, bộ phận phát của SR04 sẽ phát ra tám xung vuông với tần số 40 kHz. Khi
sóng siêu âm bắt đầu được phát ra, chân ECHO sẽ được đưa lên mức cao cho
đến khi bộ phận thu nhận được sóng siêu âm phản hồi về. Khoảng thời gian mà
chân ECHO duy trì ở mức cao này chính là thời gian mà sóng siêu âm đi đến
vật cản và trở về bộ phận thu. Tuy nhiên, nếu khoảng thời gian này lớn hơn
38ms thì có thể kết luận là không có vật cản.
Hình 2.16 Biểu đồ thời gian của cảm biến siêu âm HC-SR04
2.4 Thành phần hiển thị LCD
LCD (Liquid Crystal Display) là thiết bị ngoại vi dùng để hiển thị dữ liệu một
cách trực quan. Module LCD 16x2 chuyên dùng hiển thị ký tự trong bảng
Hình 2.17 Thành phần hiển thị LCD
thông số kỹ thuật
Điện áp hoạt động: 5V
Mô-đun gồm 32”ô” được phân bố trên 16 cột và 2 hàng
Sơ đồ chân và mô tả chân của Mô-đun LCD 16x2
Chân VSS: chân nhóm của LCD
Chân VCC: chân cấp nguồn của LCD
Chân VEE : điều chỉnh độ tương phản của LCD
Chân RS: Chuyển đổi giữa Thanh ghi Lệnh/Dữ liệu
Chân RW: Chuyển đổi màn hình LCD giữa Thao tác Đọc/Ghi
Chân E: Phải được giữ ở mức cao để thực hiện thao tác Đọc/Ghi
Chân D0 – D7: Chân dùng để gửi lệnh hoặc dữ liệu lên LCD
Chân A: Đèn LED bình thường giống như hoạt động để chiếu sáng màn
hình LCD
Chân K : Hoạt động giống như đèn LED bình thường để chiếu sáng : CD
được kết nối với GND
Kết nối chân giữa LCD và vi điều khiển
Chân RS kết nối chân RC0 của vi điều khiển
Chân RW nối chân RC4 của vi điều khiển
Chân E nối chân RC3 của vi điều khiển
Chân D4 nối chân RD0 của vi điều khiển
Chân D5 kết nối chân RD1 của vi điều khiển
Chân D6 nối chân RD2 của vi điều khiển
Chân D7 kết nối chân RD3 của vi điều khiển
2.5 Các mạch điện quan trọng
a) mạch nguồn
công dụng
Cung cấp điện áp 5V ổn định để cấp nguồn cho vi điều khiển và các thành
phần điện từ khác
UART
UART (Universal Asynchronous Receiver – Transmitter) là mạch tích hợp
dùng trong truyền dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi
đặc trưng
Truyền một bit trên một đơn vị thời gian với tốc độ dữ liệu xác định
Tín hiệu “0” tương đương với điện áp 0VDC
Tín hiệu “1” tương đương với điện áp từ 3,3 đến 5VDC
RS232 (Chuẩn khuyến nghị 232)
Kết nối các thiết bị ngoại vi với máy
đặc trưng
Kết nối tối đa 2 thiết bị
Khoảng cách kết nối tối đa cho phép để bảo mật dữ liệu là 15m , tốc độ
20 Kbit/s
Tốc độ truyền dữ liệu phổ biến: 1200 bps, 4800 bps, 9600 bps và
19200bps
Mức logic điện áp tiêu chuẩn “0” : +3VDC ÷ +15 VDC( SPACE)
Điện áp tiêu chuẩn mức logic “1” : -15 VDC ÷ -3 VDC( MARK)
Giao tiếp UART-RS232
Để kết nối boear từ vi điều khiển với cổng COM trên máy tính ta cần sử dụng
RS232 để kết nối. Sơ đồ nối dây sử dụng giao tiếp UART- RS232 được mô tả như
hình 2.9
Hình 2.19 Sơ đồ nối dây
1. Chân 1 (C1+): Nguồn cấp đầu vào dương cho bộ điều khiển tín hiệu.
2. Chân 2 (C1-): Nguồn cấp đầu vào âm cho bộ điều khiển tín hiệu.
3. Chân 3 (C2+): Nguồn cấp đầu ra dương cho bộ điều khiển tín hiệu.
4. Chân 4 (C2-): Nguồn cấp đầu ra âm cho bộ điều khiển tín hiệu.
5. Chân 5 (T2OUT): Tín hiệu đầu ra TTL tương ứng với tín hiệu RS232
đầu vào.
6. Chân 6 (T2IN): Tín hiệu đầu vào TTL tương ứng với tín hiệu RS232 đầu
ra.
7. Chân 7 (R2IN): Tín hiệu đầu vào RS232 tương ứng với tín hiệu TTL
đầu ra.
8. Chân 8 (R2OUT): Tín hiệu đầu ra RS232 tương ứng với tín hiệu TTL
đầu vào.
9. Chân 9 (R1OUT): Tín hiệu đầu ra RS232 tương ứng với tín hiệu TTL
đầu vào.
10.Chân 10 (R1IN): Tín hiệu đầu vào RS232 tương ứng với tín hiệu TTL
đầu ra.
11.Chân 11 (T1IN): Tín hiệu đầu vào TTL tương ứng với tín hiệu RS232
đầu ra.
12.Chân 12 (T1OUT): Tín hiệu đầu ra TTL tương ứng với tín hiệu RS232
đầu vào.
13.Chân 13 (C3+): Nguồn cấp đầu vào dương cho bộ điều khiển tín hiệu.
14.Chân 14 (C3-): Nguồn cấp đầu vào âm cho bộ điều khiển tín hiệu.
15.Chân 15 (C4+): Nguồn cấp đầu ra dương cho bộ điều khiển tín hiệu.
16.Chân 16 (C4-): Nguồn cấp đầu ra âm cho bộ điều khiển tín hiệu.
Các chân C1+ và C1- được sử dụng để cấp nguồn cho bộ điều khiển tín
hiệu, trong khi các chân C2+ và C2- được sử dụng để cấp nguồn cho các
thiết bị khác được kết nối với IC. Các chân R1IN, R1OUT, T1IN và T1OUT
được sử dụng để kết nối với các thiết bị RS232 khác, trong khi các chân
R2IN, R2OUT, T2IN và T2OUT được sử dụng để kết nối với các thiết bị TTL
khác. Các chân C3+ và C3-, C4+ và C4- thường không được sử dụng trong
các ứng dụng thông thường.
Sơ đồ đấu dây của MAX232 với năm tụ điện 1uF được kết nối giữa (C1+ và
C1-), (C2+ và C2-), (V+ và Vcc), (V- và GND), (Vcc và GND)
Theo sơ đồ đấu dây như hình 2.9, chúng ta chỉ sử dụng 1 đường truyền: T1IN
(chân 11) và T1OUT (chân 14), R1IN (chân 13) và R1OUT (chân 12)
Sơ đồ chân RS232
Chân 2 RXD : nhận dữ liệu – kết nối với chân RC7 của vi điều khiển
Chân 3 TXD : Truyền dữ liệu – kết nối với chân RC6 của vi điều khiển
2.6 .Timer 1
Áp dụng
Khởi tạo timer1 với bộ chia trước là 2, giá trị đầu vào của thanh ghi TMR1 là
0, khi đó giá trị TMR1 chính là thời gian ECHO từ mức “1” xuống mức “0”
( thời gian sóng siêu âm đi đén vật thể và trở về).
CHƯƠNG 3 : NGUYÊN TẮC LÀM VIỆC
3.1 Nguyên lý làm việc của mạch
- Nếu tinh thể 4MHz được sử dụng thì chu kỳ của một lệnh là 40ns
- Để đạt được độ ổn định của bộ dao động rất cao, Tinh thể thạch anh thường
được sử dụng làm thiết bị xác định tần số để tạo ra một loại mạch dao động
khác thường được gọi là Bộ tạo dao động tinh thể thạch anh, (XO).
· Nút ấn dùng để điều khiển các thiết bị: động cơ DC, bóng đèn, hoặc
chuyển đổi trạng thái giữa tự động và thủ công
Ø Màn hình LCD
· Mạch chuyển đổi ADC 24bit Loadcell HX711 được sử dụng để đọc
giá trị điện trở thay đổi từ cảm biến Loadcell (thường rất nhỏ không
thể đọc trực tiếp bằng VĐK) với độ phân giải ADC 24bit và chuyển
sang giao tiếp 2 dây (Clock và Data) để gửi dữ liệu về Vi điều khiển,
thích hợp để sử dụng với Loadcell trong các ứng dụng đo cân nặng.
Ø ghim phụ
· Dùng để kết nối các linh kiện điện tử hoặc các thiết bị khác khi cần
Ø dẫn thử nghiệm
· Kiểm tra xem mạch còn hoạt động bình thường không
CHƯƠNG 4 : LƯU ĐỒ THUẬT TOÁN
4.1 Lưu đồ thuật toán của chương trình chính
Hình 4.3 Lưu đồ thuật toán của chương trình đo chiều cao bằng cảm biến siêu âm
Hình 4.4 Lưu đồ thuật toán của chương trình đo cân nặng bằng cảm biến lực
Giải thích lưu đồ
Bắt đầu chương trình
Xác định khối lượng sàn cân (tấm đế) đang đặt lên bàn cân ( sàn cân ban
đầu).
Đọc giá trị cân nặng “WEIGHT = Present value – Weight floor”.
Tách giá trị của thanh ghi “WEIGHT” thành các số đơn vị, chục,..
Hiển thị giá trị cân nặng lên LCD
Kết thúc chương trình.
float distance;
int16 i;
unsigned int32 ReadCount(){
unsigned int32 Count = 0; // thanh ghi Count dung de luu gia tri bien doi ADC 24bit
unsigned int8 j, convert_1, convert_2, convert_3;
output_high(DOUT);
output_low(PD_SCK);
Count = 0;
while(input(DOUT));
void main(){
set_tris_c(0);
set_tris_d(0);
set_tris_B(0b00000001);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
set_timer1(0); // set timer to 0 for fresh count
lcd_init();
lcd_gotoxy(1,1);
printf(lcd_putc, " CAN DIEN TU ");
delay_ms(1000);
weigh = ReadCount();
lcd_init();
lcd_gotoxy(1,1);
lcd_putc("\fHeight:");
lcd_gotoxy(15,1);
lcd_putc("cm");
lcd_gotoxy(1,2);
lcd_putc("Weight:");
lcd_gotoxy(15,2);
lcd_putc("kg");
while(TRUE)
{
KHOI_LUONG = ReadCount() - weigh;
donvi = KHOI_LUONG % 10;
chuc = (KHOI_LUONG / 10) % 10;
tram = (KHOI_LUONG / 100) % 10;
nghin = (KHOI_LUONG / 1000) % 10;
output_high(trig);
delay_us(10); // 10us pulse
output_low(trig);
lcd_gotoxy(9,2);
printf(lcd_putc, "%d.%d%d%d" , nghin, tram, chuc, donvi );
printf("%.1f",24.0f - distance);
printf("@");
printf("%d.%d%d%d",nghin, tram, chuc, donvi );
printf("@");
}
}
5.2 Lập trình trên Visual Studio 2013
Ø Giao diện
Ø Chương trình
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;
using Emgu.CV;
using Capture = Emgu.CV.Capture;
using Emgu.CV.Structure;
using System.Drawing.Imaging;
using System.Diagnostics;
using Aspose.Words;
using Aspose.Words.Tables;
using pbl_1.Resport.AsposeWordExtension;
namespace pbl_1
{
public partial class Form1 : Form
{
Capture _camera;
String FileName = DateTime.Now.ToString("dd-MM-yyyy-HH-mm-ss") + ".png";
string FolderName = @"E:\PBL3 VI DIEU KHIEN\pbl\1\pbl_1\pbl_1\bin\Debug\Luuanh";
string a = string.Empty;
string b = string.Empty;
private object ofdOpenFile;
public Form1()
{
InitializeComponent();
serialPort1.DataReceived += NHAN_DATA;
}
try
{
// lệnh đúng
String sql = "insert into khachhang (ID, Hovaten, Gioitinh, Ngaykham, DiaChi,Sodienthoai, Cannang,
chieucao, Anh) values ('"
+ cbbID.Text + "','"
+ cbbten.Text + "','"
+ cbbgioitinh.Text + "','"
+ ngaykham.Text + "' ,'"
+ cbbdiachi.Text + "','"
+ cbbsodienthoai.Text + "' ,'"
+ tbcannang.Text + "','"
+ tbchieucao.Text + "','"
+ (FolderName + FileName) + "')";
OleDbDataReader reader = Program.Database.SelectSQL(sql);
loadData();
}
catch
{
MessageBox.Show("Có lỗi");
}
}
pictureBox2Des.ImageLocation = dataGridView1.Rows[row].Cells["Anh"].FormattedValue.ToString();
}
private void dataGridView1_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
for (int i = 0; i < dataGridView1.RowCount; i++)
{
dataGridView1.Rows[i].Cells[0].Value = Convert.ToString(i + 1);
}
}
tbcannang.Invoke(D, s);
}
else
{
tbcannang.Text = s + " kg";
}
}
baoCao.SaveAndOpenFile("BaoCao.doc");
}
}
}
}
CHƯƠNG 6 : THIẾT KẾ MẠCH VÀ MẪU SẢN PHẨM
6.1 Bố cục PCB