CẤU TẠO CỦA BỘ ĐIỀU KHIỂN GHẾ BẰNG CẢM BIẾN VÂN TAY

Một phần của tài liệu Nghiên cứu, thiết kế ghế điện thông minh (Trang 44)

THƠNG QUA ARDUINO

Hình 3. 5: Hệ thống điều khiển ghế bằng cảm biến vân tay thông qua Arduino 3.2.1 Cảm biến vân tay (số lượng 1) 3.2.1 Cảm biến vân tay (số lượng 1)

Cảm biến nhận dạng vân tay sử dụng giao tiếp UART TTL hoặc USB 1.1 để giao tiếp với Vi điều khiển hoặc kết nối trực tiếp với máy tính (thơng qua mạch chuyển USB- UART hoặc giao tiếp USB 1.1). Được tích hợp nhân xử lý nhận dạng vân tay phía trong, tự động gán vân tay với 1 chuỗi data và truyền qua giao tiếp UART ra ngoài nên hoàn tồn khơng cần các thao tác xử lý hình ảnh, đơn giản chỉ là phát lệnh đọc/ghi và so sánh chuỗi UART nên rất dễ sử dụng và lập trình.

 Cảm biến nhận dạng vân tay có khả năng lưu nhiều vân tay cho 1 ID (1 người), thích hợp cho các ứng dụng bảo mật, khóa cửa, sinh trắc học,…

37

 Khu vực ứng dụng: Mô-đun vân tay được sử dụng rộng rãi, phù hợp với tất cả các hệ thống nhận dạng vân tay từ cao cấp đến thấp

cấp.

 Dựa vào những đặc điểm mà cảm biến vân tay đem lại nhóm em đã tận dụng việc lưu hình ảnh vân tay và sử dụng như công cụ bộ nhớ ghế thay thế các nút nhớ ghế truyền thống, cải thiện được thời gian nhớ ghế

Hình 3. 6: Cảm biến vân tay AS608

3.2.2 Arduino Mega 2560 R3 (số lượng 1)

Dùng để nhận code lập trình đã được viết và xử lý các tín hiệu input từ các nút nhấn và cảm biến vân tay, xuất tín hiệu output để điều khiển các motor và đọc xung encoder.

38

3.2.3 Module điều khiển động cơ XY-160D L298 (số lượng 2)

Được gọi với tên khác là mạch cầu H, có cơng dụng là chia dịng điện thành 2 đường riêng biệt để điều khiển động cơ DC thành 2 chiều là thuận và nghịch. Tránh trường hợp trùng 2 cực làm hư hỏng động cơ.

Hình 3. 8: Mạch cầu H XY - 160D L298

3.2.4 Encoder (30 xung, số lượng 3)

Encoder là thành phần quan trọng của động cơ, dùng để đọc tốc độ và vị trí của động cơ, nhờ các xung vng có tần số thay đổi phụ thuộc vào tốc độ của động cơ.

39

3.2.5 Cơng tắc gạt 3 vị trí MST – 103 (số lượng 5)

Công tắc gạt 3 chân 3 vị trí MTS-103 6A-125V có thể hoạt động được với 6A điện áp 125VAC, 2A với điện áp 250VAC, sử dụng làm công tắc đảo chiều động cơ hoặc tắt mở 2 hay nhiều thiết bị cùng dòng.

Hình 3. 10: Cơng tắc gạt 3 vị trí MST – 103

3.3 TÍNH TỐN THIẾT KẾ GHẾ ĐIỆN THÔNG MINH ĐIỀU KHIỂN VÂN TAY THÔNG QUA ARDUINO

3.3.1 Tính tốn lựa chọn các linh kiện

- Cơng suất có tải của 3 motor: P= 3.U.I = 3.12.2 = 72W; - Dòng điện định mức 3 motor: I = 3.i = 3.2 = 6A;

- Số lượng encoder cần dùng: 3 cái => cần 3 chân ngắt.

 Lựa chọn thiết bị cần thiết để motor vận hành:

- Nguồn: 12V - 10A; - Mạch cầu H:

 Điện áp cung cấp: 7 ~ 24 VDC. (Giới hạn: 6,5 ~ 27VDC);

 Mức tín hiệu điều khiển (Tương thích 3,3V / 5V);

40

 Dòng hoạt động liên tục tối đa: 7A;

 Dòng điện cực đại: 50A;

 Nhiệt độ làm việc: -25 ~ 85 ° C; - Arduino Mega 2560;

- Cảm biến vân tay AS608:

 Điệp áp hoạt động: 3.6 đến 6.0VDC;

 Phương thức giao tiếp: UART;

 Mức độ an toàn: 5;

 Tỉ lệ chấp nhận sai (FAR): <0.001% (mức bảo mật 3);

 Tỉ lệ từ chối sai (FRR): <1.0% (mức bảo mật 3); - Nút gạt;

41

3.3.2 THIẾT KẾ MẠCH TRÊN PHẦN MỀM MÔ PHỎNG PROTEUS

Hình 3. 11: Mạch điện mơ phỏng trên phần mềm Protues

 Nguyên lý hoạt động:

- Chế độ thêm mới dấu vân tay: Đưa vân tay để cảm biến quét, sau đó vân tay sẽ được lưu vào bộ nhớ của cảm biến, cùng với đó sẽ có một biến tên là ID đi cùng với dấu vân tay theo thứ tự tương ứng (từ 1 – 10). Ở chế độ này thì các nút điều khiển motor sẽ khơng hoạt động được. Khi muốn gạt về chế độ này thì tất cả các nút cịn lại phải ở chế độ chờ.

- Chế độ quét dấu vân tay: Gồm có 2 chế độ

 Chế độ thêm data vị trí ghế cho vân tay: Đưa vân tay để cảm biến quét và nhận dạng ID, sau khi cảm biến nhận dạng xong thì tiến hành điều khiển motor để lưu

42

data vị trí ghế vào vân tay tương ứng. Nếu dấu vân tay chưa có thì phải gạt nút chuyển về “chế độ thêm mới dấu vân tay” để tạo mới dấu vân tay.

 Chế độ trả ghế về vị trí đã lưu: Sau khi gạt nút về chế độ này thì motor sẽ tự trả về vị trí 0. Đưa vân tay để cảm biến quét và nhận dạng ID, sau khi cảm biến nhận dạng xong thì motor sẽ tự động chạy về vị trí đã lưu tương ứng với dấu vân tay đó. Nếu dấu vân tay đó chưa được tạo data vị trí ghế thì phải gạt nút về “Chế độ thêm data vị trí ghế cho vân tay” và tiến hành tạo mới data. Nếu dấu vân tay chưa có thì phải gạt nút chuyển về “chế độ thêm mới dấu vân tay” để tạo mới dấu vân tay.

Lưu ý: Bắt buộc phải tạo mới dấu vân tay để hoạt động

43 - CHẾ ĐỘ TIẾN TỚI

Hình 3. 13 Chế độ tiến tới của ghế điện thông minh

- CHẾ ĐỘ LÙI SAU

Hình 3. 14: Chế độ lùi sau của ghế điện thơng minh

44

Khi cơng tắc ( TOI) đóng tín hiệu thấp sẽ gửi đến chân 22 của arduino, arduino sẽ tính tốn xuất tín hiệu cao từ chân 52 của arduino đến chân IN3 của cầu H L298 và xuất tín hiệu thấp từ chân 53 của arduino đến chân IN4 của cầu H L298 điều khiển chiều quay mortor (quay cùng chiều kim đồng hồ) làm ghế điện tiến về phía trước.

Khi cơng tắc ( LUI) đóng tín hiệu thấp sẽ gửi đến chân 23 của arduino, arduino sẽ tính tốn xuất tín hiệu thấp từ chân 52 của arduino đến chân IN3 của cầu H L298 và xuất tín hiệu cao từ chân 53 của arduino đến chân IN4 của cầu H L298 điều khiển chiều quay mortor (quay ngược chiều kim đồng hồ) làm ghế điện lùi về phía sau.

- CHẾ ĐỘ NÂNG LÊN

Hình 3. 15: Chế độ nâng lên của ghế điện thơng minh

45

Hình 3. 16: Chế độ hạ xuống của ghế điện thơng minh

Nguyên lý hoạt động

Khi cơng tắc ( NÂNG LÊN) đóng tín hiệu thấp sẽ gửi đến chân 24 của arduino, arduino sẽ tính tốn xuất tín hiệu cao từ chân 48 của arduino đến chân IN1 của cầu H L298 và xuất tín hiệu thấp từ chân 49 của arduino đến chân IN2 của cầu H L298 điều khiển chiều quay mortor (quay cùng chiều kim đồng hồ) làm vị trí phía trước nâng lên .

Khi cơng tắc ( HẠ XUỐNG) đóng tín hiệu thấp sẽ gửi đến chân 25 của arduino, arduino sẽ tính tốn xuất tín hiệu cao từ chân 48 của arduino đến chân IN1 của cầu H L298 và xuất tín hiệu thấp từ chân 49 của arduino đến chân IN2 của cầu H L298 điều khiển chiều quay mortor (quay ngược chiều kim đồng hồ) làm phía trước ghế hạ xuống.

46

Hình 3. 17: Chế độ ngã lưng sau của ghế điện thông minh

- CHẾ ĐỘ NGÃ LƯNG SAU

47 • Nguyên lý hoạt động

Khi công tắc ( NGÃ LƯNG TRƯỚC) đóng tín hiệu thấp sẽ gửi đến chân 26 của arduino, arduino sẽ tính tốn xuất tín hiệu cao từ chân 50 của arduino đến chân IN3 của cầu H L298 và xuất tín hiệu thấp từ chân 51 của arduino đến chân IN4 của cầu H L298 điều khiển chiều quay mortor (quay cùng chiều kim đồng hồ) làm lưng ghế ngã về trước từ 120 – 180 độ.

Khi cơng tắc ( NGÃ LƯNG SAU) đóng tín hiệu thấp sẽ gửi đến chân 27 của arduino, arduino sẽ tính tốn xuất tín hiệu cao từ chân 50 của arduino đến chân IN3 của cầu H L298 và xuất tín hiệu thấp từ chân 51 của arduino đến chân IN4 của cầu H L298 điều khiển chiều quay mortor (quay ngược chiều kim đồng hồ) làm lưng ghế ngã về sau từ 120 – 180 độ.

48

ĐÁNH GIÁ KẾT QUẢ VÀ KẾT LUẬN 4.1 ĐÁNH GIÁ KẾT QUẢ

Sau thời gian thực hiện đồ án với các phương pháp tìm hiểu, khảo sát và phân tích. Đề tài đã được hồn thành và cơ bản đạt được các mục tiêu đề ra:

- Hiểu được cấu tạo của ghế điện hiện nay;

- Phân tích các ưu nhược điểm thường gặp có trên ghế điện;

- Đưa ra được các biện pháp tối ưu nhằm nâng cao chất lượng sử dụng, cũng như khắc phục các điểm yếu thường gặp;

- Thực hiện hóa giải pháp kỹ thuật đề ra; thiết kế, chế tạo vả hồn thiện mơ hình đề tài theo giải pháp đề xuất;

4.2 KẾT LUẬN

Đề tài nghiên cứu có ý nghĩa khoa học khi thay đổi được quá trình điều khiển của hệ thống ghế điện, nhằm giúp cho các thao tác điều chỉnh ghế điện đỡ mất nhiều thời gian, tránh nhầm lẫn chức năng của các nút điều khiển.

Đề tài mang tính hiệu quả cao về độ hài lịng của hầu hết người tiêu dùng, toàn bộ các nút điều khiển và các chức năng nhớ vị trí của ghế được tích hợp vào cảm biến vân tay, ngồi ra cịn hiệu quả về độ an tồn giúp cho người lái dễ dàng hơn trong các thao tác điều chỉnh ghế trong q trình di chuyển và khơng bị nhầm lẫn giữa các chức năng của ghế ảnh hưởng khiến người lái mất tập trung.

Hướng phát triển tiếp theo của đề tài: - Nghiên cứu hoàn thiện sản phẩm; - Tăng tính thẩm mỹ;

- Nghiên cứu ứng dụng trên ơ tơ; - Thương mại hóa sản phẩm.

49

TÀI LIỆU THAM KHẢO

[1] Báo cáo “Hệ thống điều khiển ghế ơ tơ xe LUXES E300-1997”, GVHD: Bùi Chí Thành

[2] BODY ELECTRICAL – POWER SEAT SYSTEM Lexus LS460L, 2010 [3] BODY ELECTRICAL – MEMORY SYSTEM Lexus LS460L, 2010

[4] BODY ELECTRICAL – REAR SEAT CONTROL SWITCH Lexus LS460L, 2010

[5]https://vietmachine.com.vn/dieu-khien-arduino-dc-l298n-pwm-mach-cau-h.html

(tìm hiểu về mạch cầu H).

[6]http://arduino.vn/bai-viet/291-cach-xuat-file-hex-tu-arduino-ide-va-mo-phong- arduino-tren-phan-mem-proteus (tìm hiểu về mơ phỏng Arduino trên Proteus).

[7]https://www.youtube.com/watch?v=5eZ_JBYq8UE (tìm hiểu nguyên lý của encoder cho việc nhớ ghế).

[8]https://www.oemcarandtruckseats.com/blogs/knowledge-base/ford-f-150-f150- memory-seat-wiring-bypass (FORD F-150 F150 MEMORY SEAT WIRING & BYPASS FOR 2009 2010 2011 2012 2013 2014)

[9]http://arduino.vn/bai-viet/355-cach-luu-tru-cac-bien-so-mang-chuoi-trong- arduino?fbclid=IwAR3sUnzne1kdw5T3V_FYznwCPSOMZbvm8m94mLUmZg- NLkaOiX1KfQzq6Bs (tìm hiểu về lưu trữ các biến số trong Arduino).

[10] http://oto.saodo.edu.vn/uploads/news/2018_05/he-thong-ghe-lai-co-chuc-nang- ghi-nho-sua.pdf (Chẩn đoán và sửa chữa hệ thống điều khiển ghế lái có chức năng

nhớ vị trí điều chỉnh trên xe Toyota Camry 2015)

[11] http://www.nidec-ma.de/en/productlist.html (Tìm hiểu về một số thông số của motor g

50

PHỤ LỤC

Phụ lục 1: Các trương trình con của lập trình điều khiển

------------------CHUONG TRINH CHINH-------------------- void loop()

{

//------------ADD FINGER MODE-------------// while(digitalRead(CREATE_FIN)==0)

{

Serial.println("----------------------");

Serial.println("CREATE FINGER ID MODE"); Serial.print("Enrolling ID #");

Serial.println(id);

while (!getFingerprintEnroll()); delay(3000);

}

//-----------SCAN FINGER MODE-------------// while (digitalRead(SCAN_FIN)==0)

{

Serial.println("----------------------");

Serial.println("SCAN FINGER ID MODE"); Serial.println("PLEASE SELECT MODE"); user = 0;

pre_user = 0; reset0 = 0; loadod = 0; namelod = 0;

51 nameand = 0;

while(digitalRead(SCAN_FIN)==0 && digitalRead(29)==1 && digitalRead(28)==1);

//----------------load old data----------------// while (digitalRead(29)==0)

{

if (namelod == 0) {

Serial.println("----------------------"); Serial.println("LOAD OLD DATA"); Serial.println("Waiting for valid finger..."); namelod = 1; } if (pre_user != user) { Serial.print("user ID: "); Serial.println(user); Serial.print("Angle motor 1: "); Serial.println(motor[1][user]); Serial.print("Angle motor 2: "); Serial.println(motor[2][user]); Serial.print("Angle motor 3: "); Serial.println(motor[3][user]); Serial.println("----------------------"); pre_user = user; reset0 = 0; loadod = 0;

52 } //-------------reset ve 0--------------// if (reset0 == 0) { while (vitri1 > 0) {

//quay nguoc lai digitalWrite(IN4, 1); digitalWrite(IN3, 0); } if (vitri1 == 0) { digitalWrite(IN3, 0); digitalWrite(IN4, 0); } delay(100); while (vitri2 > 0) {

//quay nguoc lai digitalWrite(IN1, 1); digitalWrite(IN2, 0); } //dung motor if (vitri2 == 0) { digitalWrite(IN1, 0); digitalWrite(IN2, 0);

53 }

delay(100); while (vitri3 > 0) {

//quay nguoc lai

digitalWrite(IN30, 1); digitalWrite(IN40, 0); } //dung motor if (vitri3 == 0) { digitalWrite(IN30, 0); digitalWrite(IN40, 0); } delay(200); reset0 = 1; } getFingerprintIDez();

//--------------load lai du lieu cu---------------// if (loadod == 0)

{

while (vitri1 < motor[1][user]) {

digitalWrite(IN3, 1); digitalWrite(IN4, 0); }

54 { digitalWrite(IN4, 0); digitalWrite(IN3, 0); } delay(100);

while (vitri2 < motor[2][user]) { digitalWrite(IN2, 1); digitalWrite(IN1, 0); } if (vitri2 >= motor[2][user]) { digitalWrite(IN2, 0); digitalWrite(IN1, 0); } delay(100);

while (vitri3 < motor[3][user]) { digitalWrite(IN40, 1); digitalWrite(IN30, 0); } if (vitri3 >= motor[3][user]) { digitalWrite(IN40, 0); digitalWrite(IN30, 0); } delay(200);

55 loadod = 1;

} }

//----------------add new data-----------------// while (digitalRead(28)==0) { if (pre_user != user) { pre_user = user; Serial.print("user ID: "); Serial.println(user); Serial.println("----------------------"); } if (nameand == 0) { Serial.println("----------------------"); Serial.println("ADD NEW DATA"); nameand = 1; } getFingerprintIDez(); if (user != 0) nutnhan(); if (user != 0) { motor[1][user] = vitri1; motor[2][user] = vitri2; motor[3][user] = vitri3; }

56 }

while ((digitalRead(29)==1) && (digitalRead(28)==1)) { reset0 = 0; //-----------------reset ve 0--------------------// if (reset0 == 0) { while (vitri1 > 0) {

//quay nguoc lai digitalWrite(IN4, 1); digitalWrite(IN3, 0); } if (vitri1 == 0) { digitalWrite(IN3, 0); digitalWrite(IN4, 0); } delay(100); while (vitri2 > 0) {

//quay nguoc lai digitalWrite(IN1, 1);

digitalWrite(IN2, 0); }

//dung motor if (vitri2 == 0)

57 { digitalWrite(IN1, 0); digitalWrite(IN2, 0); } delay(100); while (vitri3 > 0) { digitalWrite(IN30, 1); digitalWrite(IN40, 0); } //dung motor if (vitri3 == 0) { digitalWrite(IN30, 0); digitalWrite(IN40, 0); } delay(200); reset0 = 1; } } } }

//////////////////////CAC CHUONG TRINH CON////////////////////// //----------------------ENCODER-----------------------//

void encoder1() {

58 vitri1--; else vitri1++; if (vitri1 < 0) vitri1 = 0; } void encoder2() { if (digitalRead(19)==0) vitri2--; else vitri2++; if (vitri2 < 0) vitri2 = 0; } void encoder3() { if (digitalRead(2)==0) vitri3++; else vitri3--; if (vitri3 < 0) vitri3 = 0; }

//-------------------NUT NHAN DIEU KHIEN------------------------// void nutnhan() { //-------- TOI LUI --------------// if (digitalRead(TOI)==0) { digitalWrite(IN30, 1); digitalWrite(IN40, 0); }

59 else digitalWrite(IN30, 0); if (digitalRead(LUI)==0) { digitalWrite(IN40, 1); digitalWrite(IN30, 0); } else digitalWrite(IN40, 0); //-------- NANG HA TRUOC --------------// if (digitalRead(UP_TRUOC)==0) { digitalWrite(IN1, 1); digitalWrite(IN2, 0);

Một phần của tài liệu Nghiên cứu, thiết kế ghế điện thông minh (Trang 44)

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

(73 trang)