Professional Documents
Culture Documents
Đề tài:
Xe tự hành tránh vật cản
Ngành: Công nghệ kỹ thuật cơ điện tử
Lớp: K64M-CLC2
Hà Nội – 2022
MỤC LỤC
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3
2.1.5. Động cơ DC 10
3.2 Sơ đồ nguyên lý 11
1
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI
1.1 Đặt vấn đề
Ngày nay, con người cùng với những ứng dụng của khoa học kỹ thuật tiên tiến của
thế giới, chúng ta đã và đang ngày một thay đổi, văn minh và hiện đại hơn. Sự phát triển
của kỹ thuật điện tử đã tạo ra hàng loạt những thiết bị với các đặc điểm nổi bật như sự
chính xác cao, tốc độ nhanh, gọn nhẹ…là những yếu tố rất cần thiết góp phần cho hoạt
động của con người đạt hiệu quả ngày càng cao hơn. Vi xử lý và điều khiển đang trở
thành một ngành khoa học đa nhiệm vụ. Nó đã đáp ứng được những đòi hỏi không ngừng
của các ngành, lĩnh vực khác nhau cho đến nhu cầu thiết yếu của con người trong cuộc
sống hàng ngày. Xuất phát từ những ứng dụng đó, chúng em đã thiết kế và thực hiện đề
tài: “Điều khiển xe mô hình cơ bản với Raspberry Pi 3 và Module L298N”.
2
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1. GIỚI THIỆU PHẦN CỨNG
2.1.1. Giới thiệu Raspberry Pi 3
a. Raspberry Pi là gì
H
ì
n
h
2 Raspberry Pi sản xuất bởi 3 OEM: Sony, Qsida, Egoman. Và được
.
phân phối chính bởi Element14, RS Components và Egoman.
1
: Raspberry pi 3 ra đời nhằm tạo ra một máy tính rẻ tiền cho sinh
B
viên, nhưng sau đó pi đã được sự quan tâm của nhiều người . Đặc tính của
o
m
ạ
c 3
h
R
a
Raspberry Pi xây dựng xoay quanh bộ xử lí SoC Broadcom BCM2835 (
là chip xử lí mobile mạnh mẽ có kích thước nhỏ hay được dùng trong điện
thoại di động ) bao gồm CPU , GPU , bộ xử lí âm thanh /video và các tính
năng khác … tất cả được tích hợp bên trong chip có điện năng thấp này.
H
ì
n
h
2 trúc phần cứng raspberry pi 3
b. Cấu
.
2
–: Raspberry Pi có hai phiên bản, Model A có giá 25$ và Model B
S
ơ có giá 35$. Model B như hình trên thông dụng hơn cả. Model B
đ
ồ
c
4
ấ
u
t
ạ
bao gồm những phần cứng và những cổng giao diện.
– CPU: “Trái tim” của board mạch. Raspberry Pi 3 sử dụng vi xử
lý BCM2836 của Broadcom. Đây là loại SoC (system on chip)
tức là trên chip này tích hợp cùng lúc:
– CPU: 900 MHz ,4 nhân, kiến trúc ARM Cortex-A7. Vì sử
dụng ARM Cortex-A7 nên Raspberry Pi 3 có thể chạy được
Ubuntu core và Windows 10 core mượt mà.
– SD RAM: 1 GB
– GPU: Broadcom VideoCore IV @ 250 MHz
– Khe cắm thẻ micro-SD: Có thể nhận thấy sẽ không có ổ cứng
trên Raspberry Pi và thay vào đó là thẻ nhớ SD. Tất cả dữ liệu
sẽ được lưu trữ trên thẻ nhớ này. Cần dùng ít nhất là thẻ 4GB
class 4 (4MB/s) cho Raspberry Pi (khuyên dùng thẻ 8GB class
10).
– Cổng USB: Raspberry Pi 2 có 4 cổng USB 2.0. Đủ để bạn
cắm các ngoại vi cần thiết như chuột, bàn phím và usb wifi.
– Cổng Ethernet: Model 2 có cổng Ethernet chuẩn RJ45.
– Cổng HDMI: Dùng để truyền tín hiệu Video và Audio số. Có tới
14 chuẩn video được hỗ trợ và tín hiệu HDMI có thể dễ dàng
chuyển đổi thành các chuẩn khác như DVI, RCA, hoặc SCART.
– Ngõ ra Audio-Video: Ngõ ra này là giắc cắm chuẩn 3.5mm, hỗ
trợ cho người dùng không có màn hình hỗ trợ HDMI. Âm thanh
và hình ảnh lấy ra từ cổng này có chất lượng kém hơn một chút
so với từ cổng HDMI.
– Cổng cấp nguồn Micro USB: Một trong những điều đầu tiên có
thể nhận thấy là Raspberry Pi không có nút nguồn. Micro USB
được chọn làm cổng cấp nguồn. Nguồn cấp cho Raspberry Pi là
5v điện áp (bắt buộc) và dòng nên lớn hớn 1A. Cấp nguồn quá
5v sẽ rất dễ làm cháy board mạch.
– Cổng DSI (Display Serial Interface): Cổng này dùng để kết nối
với LCD hoặc màn hình OLED.
5
– Cổng CSI (Camera Serial Interface): Cổng này dùng để kết nối
với module camera riêng của Raspberry Pi. Module này thu
được hình ảnh chất lượng lên đến 1080p.
– GPIO (General Purpose Input and Output): Giống như các
chân của vi điều khiển, các IO này của Raspberry Pi cũng
được sử dụng để xuất tín hiệu ra led, thiết bị… hoặc đọc tín
hiệu vào từ các nút nhấn, công tắc, cảm biến… Ngoài ra còn
có các IO tích hợp các chuẩn truyền dữ liệu UART, I2C và
SPI.Sơ đồ chân GPIO Raspberry pi.
6
input.
– 1UART, 1 I2C, 2 SPI, 1 PWM (GPIO 4)
– 2 chân nguồn 5V, 2 chân nguồn 3.3V, 8 chân GND
– 2 chân ID EEPROM
– Vi xử lý ARMv7 32bit quad core 900Mhz, dung lượng Ram
1G, và bộ nhớ kiểu micro-SD dung lượng tùy chọn (nên
>=4G).
– Khi một chân GPIO lên mức cao sẽ đạt điện áp 3.3V, dòng ra tối
đa Imax = 5mA
a. Raspbian
Đây là bản build Linux dựa trên nên Debian (Gần giống ubuntu)
H với giao diện LXDE (thay vì GNOME). Có đầy đủ web browser, media
ì
player, tools, etc … Nói chung HĐH này dành cho những người muốn
n
h dùng Raspberry Pi như một cái PC.
2
.
4
: 7
G
i
a
b. Ubuntu Mate
Tương tự như Raspbian, Ubuntu Mate cũng hướng đến người dùng
sử dụng Raspberry Pi như máy tính văn phòng. Tuy nhiên Ubuntu Mate
có giao diện đẹp hơn rất nhiều so với Raspbian. Được phát triển từ Ubuntu
– hệ điều hành được xem là đối đầu trực tiếp với Windows.
H
ì Martin Wimpress và Rohith Madhavan là cha đẻ của Ubuntu Mate
n phát triển từ nền Ubuntu gốc. Theo tác giả, nó được tối ưu rất tốt với
được
h
Raspberry
S Pi 2 và 3, tuy nhiên để đảm bảo tốc độ cao nhất bạn nên sử
E thẻ MicroSD từ class 6 trở lên. Theo đánh giá của chúng tôi, Ubuntu
dụng
Q
Mate
H mới nhất (15.04) có tốc độ cũng rất nhanh, giao diện đẹp, hỗ trợ đầy
ì các phần mềm thông dụng cho nhu cầu văn phòng.
đủ
n
h
\
*
A
R
A
B
I
C
1
.
8
5
:
G
2.1.3 Mạch công suất cầu H (L298N)
a. Định nghĩa
Mạch cầu H điều khiển động cơ L298N cho phép bạn kiểm soát
tốc độ và hướng của hai động cơ DC ,hoặc kiểm soát một động cơ bước
lưỡng cực một cách dễ dàng.
❖ Sơ đồ nguyên lý:
9
c. Nguyên lý hoạt động
H – Hai chân ENA và ENB dùng để điều khiển các mạch cầu H trong L298.
ì
Nếu ở mức logic “1” (nối với nguồn 5V) thì cho phép mạch cầu H hoạt
n
h động, nếu ở mức logic “0” thì mạch cầu H không hoạt động
2
– Khi ENA = 0: Động cơ không quay với mọi đầu vào
.
7 – Khi ENA = 1:
:
S – INT1 = 1; INT2 = 0: động cơ quay thuận
ơ – INT1 = 0; INT2 = 1: động cơ quay nghịch
đ
– INT1 = INT2: động cơ dừng ngay tức thì
ồ
n d. Thông số kỹ thuật
g
– Driver: L298N tích hợp hai mạch cầu H
u
y – Điện áp điều khiển: +5 V ~ +12 V
ê
– Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor)
n
l – Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
ý
– Dòng của tín hiệu điều khiển: 0 ~ 36mA (Arduino có thể chơi đến 40mA
L
2 nên khỏe re nhé các bạn)
8
9 – Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
N
– Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃
10
2.1.4. Cảm biến siêu âm
a. Định nghĩa
Cảm biến khoảng cách siêu âm HC-SRF04 được sử dụng rất phổ
biến để xác định khoảng cách vì rẻ và chính xác. Cảm biến sử dụng sóng
siêu âm và có thể đo khoảng cách trong khoảng từ 2 -> 300 cm, với độ
chính xác gần như chỉ phụ thuộc vào cách lập trình.
11
từ chân Trig. Sau đó, cảm biến sẽ tạo ra 1 xung High ở chân Echo cho đến
khi nhận lại được sóng phản xạ ở pin này. Chiều rộng của xung sẽ bằng
với thời gian sóng siêu âm được phát từ cảm biển và quay trở lại.
Tốc độ của âm thanh trong không khí là 340 m/s (hằng số vật lý),
tương đương với 29,412 microSeconds/cm (106 / (340*100)). Khi đã tính
được thời gian, ta sẽ chia cho 29,412 để nhận được khoảng cách.
❖ Nguyên tắc phát và nhận phản hồi của sóng siêu âm cơ bản của SRF04
Nguyên tắc cơ bản của sonar: là tạo ra một xung âm thanh điện
tử và sau đó lắng nghe tiếng vọng tạo ra khi các làn sóng âm thanh số
truy cập một đối tượng và được phản xạ trở lại.
Để tính thời gian cho phản hồi trở về, một ước tính chính xác có
thể được làm bằng khoảng cách tới đối tượng.
Xung âm thanh tạo ra bởi SRF04 là siêu âm, nghĩa là nó là ở trên
phạm vi nhận xét của con người. Trong khi tần số thấp hơn có thể được
sử dụng trong các loại ứng dụng, tần số cao hơn thực hiện tốt hơn cho
phạm vi ngắn, nhu cầu độ chính xác cao.
Mức độ của sóng âm hồi tiếp phụ thuộc vào cấu tạo của đối tượng và góc
phản xạ của nó:
12
Một tín hiệu mềm có thể cho ra tín hiệu phản hồi yếu hoặc không có phản
hồi.
Một đối tượng ở một góc cân đối thì mới có thể chuyển thành tín hiệu
phản chiếu cho cảm biến nhận.
Nếu ngưỡng của vùng phát hiện đối tượng được đặt quá gần so với cảm
biến, các đối tượng trên một đường có thể bị va chạm tại một điểm mù. Nếu
ngưỡng này được đặt ở một khoảng cách quá lớn từ cảm biến thì các đối
tượng sẽ được phát hiện mà không phải là trên một đường va chạm.
2.1.5. Động cơ DC
a. Giới thiệu động cơ DC
Motor giảm tốc 12v (min 6v) DC365 là loại motor kim loại sử
dụng loại hộp giảm tốc GA25 bánh răng thép. Bền có độ chính xác cao
13
giá thành tốt.
b. Thông số kỹ thuật
H
❖ Tốc độ
ì động cơ:
– Tại điện
n áp 6V, dòng 0,15A: tốc độ 110 vòng/phút
h
– Tại điện áp 12V có dòng 0,18A tốc độ 240 vòng/phút
2
.
9
:
Đ
ộ
n
g
c
ơ
D
C
14
CHƯƠNG 3: THIẾT KẾ PHẦN CỨNG
❖ Sơ đồ khối
❖ Code:
dis = 30
IN1 = 13
IN2 = 12
IN3 = 21
IN4 = 20
ENA = 6
ENB = 26
15
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(IN1,GPIO.OUT)
GPIO.setup(IN2.GPIO.OUT)
GPIO.setup(IN3.GPIO.OUT)
GPIO.setup(IN4.GPIO.OUT)
GPIO.setup(ENA.GPIO.OUT)
GPIO.setup(ENB.GPIO.OUT)
PWMA = GPIO.PWM(ENA,500)
PWMB = GPIO.PWM(ENB,500)
PWMA.start(0)
PWMB.start(0)
def backward():
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.HIGH)
PWMA.ChangeDutyCycle(100)
PWMB.ChangeDutyCycle(100)
def stopmotor():
GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.LOW)
PWMA.ChangeDutyCycle(0)
16
PWMB.ChangeDutyCycle(0)
def forward():
GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.HIGH)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
PWMA.ChangeDutyCycle(100)
PWMB.ChangeDutyCycle(100)
def right():
GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.HIGH)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.LOW)
PWMB.ChangeDutyCycle(100)
def left():
GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
PWMA.ChangeDutyCycle(100)
while True :
GPIO.setmode(GPIO.BCM)
17
GPIO_TRIGGER_FORWARD = 23
GPIO_ECHO_FORWARD = 24
GPIO.setup(GPIO_TRIGGER_FORWARD,GPIO.OUT)
GPIO.setup(GPIO_ECHO_FORWARD,GPIO.IN)
GPIO.output(GPIO_TRIGGER_FORWARD, False)
time.sleep(0.05)
GPIO.output(GPIO_TRIGGER_FORWARD, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER_FORWARD, False)
start = time.time()
while GPIO.input(GPIO_ECHO_FORWARD)==0:
start = time.time()
while GPIO.input(GPIO_ECHO_FORWARD)==1:
stop = time.time()
elapsed_forward = stop-start
distance_forward = elapsed_forward * 17150
print ("Distance_forward: ",distance_forward)
sleep(0.002)
GPIO.setmode(GPIO.BCM)
GPIO_TRIGGER_RIGHT = 8
GPIO_ECHO_RIGHT = 25
GPIO.setup(GPIO_TRIGGER_RIGHT,GPIO.OUT)
18
GPIO.setup(GPIO_ECHO_RIGHT,GPIO.IN)
GPIO.output(GPIO_TRIGGER_RIGHT, False)
time.sleep(0.05)
GPIO.output(GPIO_TRIGGER_RIGHT, True)
time.sleep(0.00001)
GPIO.output(GPIO_TRIGGER_RIGHT, False)
start = time.time()
while GPIO.input(GPIO_ECHO_FORWARD)==0:
start = time.time()
while GPIO.input(GPIO_ECHO_RIGHT)==1:
stop = time.time()
elapsed_right = stop-start
distance_right= elapsed_right * 17150
print ("Distance_right:",distance_right)
GPIO.setmode(GPIO.BCM)
GPIO_TRIGGER_LEFT = 22
GPIO_ECHO_LEFT = 27
GPIO.setup(GPIO_TRIGGER_LEFT,GPIO.OUT)
GPIO.setup(GPIO_ECHO_LEFT,GPIO.IN)
GPIO.output(GPIO_TRIGGER_LEFT, False)
time.sleep(0.05)
GPIO.output(GPIO_TRIGGER_LEFT, True)
time.sleep(0.00001)
19
GPIO.output(GPIO_TRIGGER_LEFT, False)
start = time.time()
while GPIO.input(GPIO_ECHO_LEFT)==0:
start = time.time()
while GPIO.input(GPIO_ECHO_LEFT)==1:
stop = time.time()
elapsed_left = stop-start
distance_left = elapsed_left * 17150
print ("Distance_left: ",distance_left)
sleep(0.002)
if distance_left<dis and distance_forward>dis and distance_right>dis :
right()
sleep(0.2)
elif distance_left>dis and distance_forward<dis and distance_right>dis :
if distance_left>distance_right :
left()
sleep(0.2))
if distance_left<distance_right :
right()
sleep(0.2))
elif distance_left>dis and distance_forward>dis and distance_right<dis :
left()
sleep(0.2)
elif distance_left<dis and distance_forward<dis and distance_right>dis :
right()
20
sleep(0.2)
elif distance_left>dis and distance_forward<dis and distance_right<dis :
left()
sleep(0.2)
elif distance_left<dis and distance_forward>dis and distance_right<dis :
if distance_left>distance_right :
left()
sleep(0.2)
if distance_left<distance_right :
right()
sleep(0.2)
elif distance_left<dis and distance_forward<dis and distance_right<dis :
stopmotor()
sleep(1)
backward()
sleep(1)
left()
sleep(0.4)
else :
forward()
21
CHƯƠNG 4: KẾT QUẢ THỰC NGHIỆM
22
CHƯƠNG 5: TỔNG KẾT
● Giao tiếp được cảm biến siêu âm SRF04 để đo khoảng cách xe robot
Xe hoạt động khá ổn định. Xe có thể chạy tới, lui, xoay trái, xoay phải và
đang chạy có thể nói dừng thì xe dừng nhưng khi phát hiện vật cản trong vòng
25 cm xe sẽ dừng nhờ vào cảm biến siêu âm SRF04. động cơ chạy rất tốt và bộ
vi xử lý điều khiển và xử lý tín hiệu khá ổn định.
23