Professional Documents
Culture Documents
lập trình ghế điện - photo - 2
lập trình ghế điện - photo - 2
Số chỗ ngồi 5
1
1.2. Trang bị an toàn
1.2.1. THÔNG SỐ AN TOÀN TOYOTA CAMRY
Thông số kỹ thuật Camry 2.5HV
Cảnh báo điền va chạm PCS Có
Cảnh báo lệch làn đường và hỗ trợ giữ làn đường
Có
LDA<A
Điều khiển hành trình chủ động Có
Đèn thích ứng thông minh Có
Hệ thống cân bằng điện tử VSC Có
Hệ thống kiểm soát lực kéo TRC Có
Ghế lái có chức năng chỉnh điện 10 hướng và bộ nhớ 2 vị trí, ghế hành
khách phía trước có khả năng chỉnh điện 8 hướng
2
1.2.2. Cấu tạo
3
1.2.3. Nguyên lý hoạt động
4
Chương 2: Linh kiện , thiết bị sử dụng để thiết kế
2.1. ECU (Arduino UNO R3)
5
2.2. Button (nút ấn)
Hình2.2:button(nút ấn)
Nút nhấn là một loại khí cụ dùng để đóng/ngắt các thiết bị điện, máy móc hoặc
một số loại quá trình trong điều khiển.
Nút ấn thường được đặt trên bảng điều khiển, tủ điện, công tắc nút nhấn,... Khi
thao tác với nút ấn, quý khách cần dứt khoát để mở hoặc đóng mạch điện.
Hầu hết, các nút ấn được làm từ nhựa hoặc kim loại. Hình dạng và kích thước của
nút ấn sẽ được tùy chỉnh để phù hợp với ngón tay và bàn tay của người vận hành.
Nút ấn được thiết kế và sản xuất theo tiêu chuẩn cao, có kiểu dáng đẹp, kết cấu
chất lượng, chắc chắn, dễ dàng lắp đặt và thay thế.
2.3. L293D
6
L293D đã được tích hợp sẵn đi ốt bảo vệ vi điều khiển chống lại dòng cảm ứng khi
động cơ khởi động hoặc tắt. Vì vậy, chúng ta chỉ cần gắn motor vào L293D và các
chân của vi điều khiển tương ứng, là có thể làm cho động cơ chạy ngay. Dòng
L293 có 2 loại: L293B/E và L293D, dòng L293B có khả năng chịu tải cao hơn (1A
so với 600mA của L293D) nhưng không có đi ốt bảo vệ vi điều khiển.
2.4. Motor DC
7
Chương 3: Thiết kế, mô phỏng hệ thống
3.1. Yêu cầu đề bài:
Thiết kế mạch, lập trình điều khiển hệ thống điều khiển ghế điện tự động trên xe
điều khiển ghế điện :
Đi lên, đi xuống
Tiến , lùi
Ngả ghế
3.2. Phân tích:
Đầu vào: 6 chân điều khiển nút ấn
Đầu ra:
Cấp tín hiệu cho L293D
Điều khiển động cơ servo
Gửi tín hiệu hiển thị lên terminal
3.3. Lưu đồ thuật toán
8
3.4. Chương trình điều khiển
#include <Servo.h>
int MO = 4;
int GAP = 3;
int SERVO = 5;
int vitri = 0;
Servo myservo;
int IN1 = 13;
int IN2 = 12;
int IN3 = 11;
int IN4 = 10;
int LEN = 9;
int XUONG = 8;
int TIEN = 7;
int LUI = 6;
void setup()
{
for(int i = 10; i < 14; i++)
{
pinMode(i, OUTPUT);
}
for(int j = 6; j < 10; j++)
{
pinMode(j, INPUT_PULLUP);
}
// ĐIỀU KHIỂN SERVO
myservo.attach(SERVO,1000,2000);
myservo.write (0);
9
pinMode(GAP, INPUT_PULLUP);
pinMode(MO, INPUT_PULLUP);
}
void motor(int x, int y, int z, int d) // chương trình con điều khiển 2 motor
{
digitalWrite(x,z);
digitalWrite(y,d);
}
void DKGHE() // chương trình con điều khiển Động cơ servo
{
if (digitalRead(MO) == LOW && digitalRead(GAP) == HIGH)
{
myservo.write (vitri += 5);
if (vitri > 120)
{
vitri = 120;
}
delay(100);
}
if (digitalRead(GAP) == LOW && digitalRead(MO) == HIGH)
{
myservo.write (vitri -= 5);
if (vitri < 0)
{
vitri = -30;
}
delay(100);
}
10
}
void loop()
{
//ĐIỀU KHIỂN LÊN - XUỐNG
if(digitalRead(LEN) == LOW && digitalRead(XUONG) == HIGH &&
digitalRead(TIEN) == HIGH && digitalRead(LUI) == HIGH &&
digitalRead(GAP) == HIGH && digitalRead(MO) == HIGH)
{
motor(IN1, IN2, HIGH, LOW);
}
if(digitalRead(XUONG) == LOW && digitalRead(LEN) == HIGH &&
digitalRead(TIEN) == HIGH && digitalRead(LUI) == HIGH &&
digitalRead(GAP) == HIGH && digitalRead(MO) == HIGH)
{
motor(IN1, IN2, LOW, HIGH);
}
if(digitalRead(LEN) == HIGH && digitalRead(XUONG) == HIGH)
{
motor(IN1, IN2, LOW, LOW);
}
// ĐIỀU KHIỂN TIẾN - LÙI
if(digitalRead(TIEN) == LOW && digitalRead(XUONG) == HIGH &&
digitalRead(LEN) == HIGH && digitalRead(LUI) == HIGH &&
digitalRead(GAP) == HIGH && digitalRead(MO) == HIGH)
{
motor(IN3, IN4, HIGH, LOW);
}
if(digitalRead(LUI) == LOW && digitalRead(LEN) == HIGH &&
digitalRead(TIEN) == HIGH && digitalRead(XUONG) == HIGH &&
digitalRead(GAP) == HIGH && digitalRead(MO) == HIGH)
{
11
motor(IN3, IN4, LOW, HIGH);
}
if(digitalRead(TIEN) == HIGH && digitalRead(LUI) == HIGH)
{
motor(IN3, IN4, LOW, LOW);
}
// ĐIỀU KHIỂN SERVO
if(digitalRead(TIEN) == HIGH && digitalRead(LUI) == HIGH &&
digitalRead(LEN) == HIGH && digitalRead(XUONG) == HIGH)
{
DKGHE();
}
}
12
3.5. Mô phỏng
13
14