Chip này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm và hiển thị lên màn hình LCD,… Nguồ
Trang 1MỤC LỤC
TRANG
LỜI NHẬN XÉT CỦA GIẢNG VIÊN i
LỜI MỞ ĐẦU ii
LỜI CẢM ƠN iii
CHƯƠNG I: GIỚI THIỆU CHUNG 1
1.1 Module Động cơ L298 V1 1
1.2.1 Thông số kỹ thuật 1
1.2 Cảm biến siêu âm SRF 05 1
1.2.1 Thông số kỹ thuật 2
1.3 Động Cơ Servo Tower Pro 9g 2
1.3.1 Thông số kỹ thuật 2
1.4 Khung xe 3 bánh 3
1.5 Board mạch Arduino Uno R3 4
CHƯƠNG 2: THIẾT KẾ VÀ THI CÔNG 11
2.1 Linh kiện khối Cube 11
2.2 Sơ đồ khối của mạch 11
2.3 Lắp ráp 11
2.4 Đấu chân vào Arduino 16
2.5 Lập trình cho mạch 17
CHƯƠNG 3: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 26
3.1 Hướng phát triển đề tài 26
3.1.1 Ưu điểm 26
3.1.2 Nhược điểm 26
3.1.3 Hướng phát triển đề tài 26
Trang 23.2 Kết luận 26
Tài liệu tham khảo 27
Code : 28
Trang 3DANH MỤC HÌNH
Trang
HÌNH 1.1……… 1
HÌNH 1.2……… 2
HÌNH 1.3……… 3
HÌNH 1.4……… 3
HÌNH 1.5……… 4
HÌNH 1.6……… 7
HÌNH 1.7……… 9
HÌNH 1.8……… 10
HÌNH 1.9……… 10
HÌNH 2.1……… 11
HÌNH 2.2……… 12
HÌNH 2.3……… 12
HÌNH 2.4……… 13
HÌNH 2.5……… 13
HÌNH 2.6……… 14
HÌNH 2.7……… 14
HÌNH 2.8……… 15
HÌNH 2.9……… 15
HÌNH 2.10……… 16
HÌNH 2.11……… 17
HÌNH 2.12……… 18
HÌNH 2.13……… 19
HÌNH 2.14……… 20
HÌNH 2.15……… 22
Trang 4LỜI NHẬN XÉT CỦA GIẢNG VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 5LỜI MỞ ĐẦU
Ngày nay với sự phát triển mạnh mẽ của nền công nghiệp hóa hiện đại hóa đất nước đòi hỏi nhu cầu về thẩm mỹ là rất cần thiết ,nên việc áp dụng khoa học kỹ thuật mới là nhu cầu tất yếu của xã hội đòi hỏi các kỹ thuật ngày càng phải phát triển để phù hợp với nền công nghiệp hóa hiện đại hóa đất nước Với xu thế hiện nay khi các bạn bước chân vào các cửa hàng, khách sạn bạn sẽ dễ dàng bắt gặp các khối led trang trí rất đẹp có nhiều màu sắc khác nhau ,chạy theo các trạng thái nhau rất ấn tượng Với sự phát triện không ngừng của khoa học kỹ thuật, đặc biệt là ngành điện tử đã ứng dụng rất nhiều trong công nghiệp trong lĩnh vực vi điều khiển, từ khi công nghiệp chế tạo vi mạch lập trình phát triển đã đem đến các kĩ thuật điều khiển hiện đại
Tạo ra những thành tựu đó có thể biến những cái tưởng chừng như không thể thành có thể, góp phần năng cao đời sống vật chất và tinh thần cho con người Vì vậy sau khi chúng em tiếp cận được môn học vi điều khiển,cùng với những thực nghiệm, chúng em áp dụng kiến thức đó vào việc thiết kế sản phẩm thực tế qua đề tài Niên luận : “ led cube 4x4x4 dùng arduino”
Trang 6Sinh viên thực hiện
Dương Thiện Tú
Trang 7CHƯƠNG I: GIỚI THIỆU CHUNG
1.1 Module Động cơ L298 V1
Module L298 có thể điều khiển 2 động cơ DC hoặc 1 động cơ bước, có 4 lỗ nằm ở
4 góc thuận tiện cho người sử dụng cố định vị trí của module
1.2.1 Thông số kỹ thuật
- Driver: L298N tích hợp hai mạch cầu H
- Điện áp điều khiển: +5 V ~ +12 V
- Dòng tối đa cho mỗi cầu H là: 2A
- Đ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
- Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
- Nhiệt độ bảo quản: -25 ℃ ~ +130 ℃
- Kích thước: 55mmx49mmx33mm (với các trụ cột cố định và chiều cao của tản nhiệt)
- Trọng lượng: 33g
Hình 1.1 1.2 Cảm biến siêu âm SRF 05
Cảm biến SRF05 dùng để nhận biết khoảng cách đến vật cản nhờ sóng siêu âm phát ra từ cảm biến và nhận về (Quãng đường = vận tốc x thời gian / 2), SRF05 có thêm 1 chân Out, theo nhà sản xuất thì có thể chỉ dùng chân này mà không cần đến chân trigger và echo Cảm biến siêu âm càng xa thì càng bắt không chính xác, vì góc quét của cảm biến sẽ mở rộng dần theo hình nón, ngoài ra bề mặt xiên hay xù xì cũng
Trang 8làm giảm độ chính xác của cảm biến, thông số kỹ thuật ghi ở dưới đây là của nhà sản suất test trong điều khiện lý tưởng, còn thực tế thì tùy theo môi trường
Servo Tower Pro 9g là một dạng động cơ điện đặc biệt Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM) với góc quay nằm trong khoảng bất kì từ 0o – 180o Động cơ
servo Tower Pro 9g được thiết kế những hệ thống hồi tiếp vòng kín Tín hiệu ra của
động cơ được nối với một mạch điều khiển Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo
RC (radio-controlled) Trong thực tế, bản thân động cơ servo không phải được điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi Động
cơ servo nhận tín hiệu từ máy thu này
1.3.1 Thông số kỹ thuật
- Kích thước: 23x12.2x29mm
Trang 101.5 Board mạch Arduino Uno R3
Hình 1.5 1.4.1 Thông số kỹ thuật
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân
Trang 11EEPROM 1 KB (ATmega328)
1.4.2 Vi điều khiển của Arduino Uno R3
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là Atmega8,
Atmega168, Atmega328 Chip này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ -
độ ẩm và hiển thị lên màn hình LCD,…
Nguồn Arduino UNO có thể được cấp nguồn qua: Thông qua cổng USB với mức điện áp 5v, nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V Thông thường bạn có thể sử dụng pin 9v để cấp nguồn cho Arduino
1.4.3 Các chân năng lượng của Arduino Uno R3
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của nguồn với chân này và cực âm của nguồn với chân GND
IO-REF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo
ở chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân RESET được nối với GND qua 1 điện trở 10KΩ
Lưu ý:
• Arduino UNO không có bảo vệ khi cắm ngược nguồn vào: Do đó bạn phải hết sức cẩn thận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO Việc làm chập mạch nguồn vào sẽ làm Arduino không sử dụng được nữa Trong thời gian đầu tìm hiểu tốt nhất hãy sử dụng nguồn cấp
Trang 12qua cổng USB
• Các chân 3.3V và 5V trên Arduino: là các chân dùng để cấp nguồn ra cho các thiết bị khác, không phải là các chân cấp nguồn vào Việc cấp nguồn sai vị trí có thể làm hỏng board
• Cấp nguồn: khi cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể làm hỏng board
• Cấp điện áp: khi cấp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển ATmega328
• Cường độ dòng điện vào/ra: ở tất cả các chân Digital và Analog của Arduino UNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển
• Cấp điệp áp : trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ làm hỏng vi điều khiển
• Cường độ dòng điện: qua một chân Digital hoặc Analog bất kì của
Arduino UNO vượt quá 40mA sẽ làm hỏng vi điều khiển Do đó nếu không dùng để truyền nhận dữ liệu, bạn phải mắc một điện trở hạn dòng
VI.Bộ nhớ của Arduino Uno R3
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
• 32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong
bộ nhớ Flash của vi điều khiển Sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng thường thì ít khi nào phải sử dụng quá 20kb bộ nhớ này
• 2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi lập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm Chú ý: khi mất điện, dữ liệu trên SRAM sẽ
bị mất
• 1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): tương tự như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệu vào đây mà không phải lo bị mất khi mất điện giống như dữ liệu trên SRAM
Trang 13Hình 1.6
1.4.4 Cổng vào/ra của Arduino Uno R3
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độphân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp
ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
Trang 14 LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng.
6 chân analog (A0 → A5): cung cấp độ phân giải tín hiệu 10bit (0 → 1) để đọc giá trị điện áp trong khoảng 0V → 5V
210- Chân AREF: để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit
2 chân A4 (SDA) và A5 (SCL): hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
1.4.5 Giớ thiệu phần mềm Arduino IDE
Arduino Uno R3 được lập trình dựa trên ngôn ngữ Wiring (đây là một biến thể của C/C++) Do vậy có thể nói ngôn ngữ lập trình Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án này đã cũng cấp đến cho người dùng một môi trường lập trình Arduino được gọi là Arduino IDE (Intergra ted Development Environment) Gồm các thành phần chính:
Giao diện
Hình 1.7
Trang 15Hình 1.7 Vùng lệnh: Bao gồm các nút lệnh menu (File, Edit, Sketch, Tools, Help) Phía dưới là các icon cho phép sử dụng nhanh các chức năng thường dùng của IDE được miêu tả như sau:
Lưu chương trình đang soạn
Mở cửa sổ Serial Monitor để gửi và nhận
dữ liệu giữa máy tính và Board Arduino
Trang 16Vùng viết chương trình: Bạn sẽ viết các đoạn mã của mình tại đây Tên chương
trình của bạn được hiển thị ngay dưới dãy các Icon, ở đây nó tên là “Blink”
Hình 1.8
Vùng thông báo (debug): Những thông báo từ IDE sẽ được hiển thị tại đây Để ý rằng góc dưới cùng bên phải hiển thị loại board Arduino và cổng COM được sử dụng Luôn chú ý tới mục này bởi nếu chọn sai loại board hoặc cổng COM, bạn
sẽ không thể upload được code của mình
Hình 1.8
Một số lưu ý:Khi lập trình, các bạn cần chọn port (cổng kết nối khi gắn board vào) và board (tên board mà bạn sử dụng) Giả sử, bạn đang dùng mạch Arduino Uno, và khi gắn board này vào máy tính bằng cáp USB nó được nhận là COM4 thì bạn chỉnh như thế này là có thể lập trình đươc nhé
Hình 1.9
Trang 17CHƯƠNG 2: THIẾT KẾ VÀ THI CÔNG
2.1 Linh kiện khối Cube
Các linh kiện cần chuẩn bị:
- Khung xe robot 3 bánh
- Module động cơ L298
- Kit Arduino UNO R3
- Cảm biến siêu âm
- Khung cảm biến siêu âm
- Động Cơ Servo Tower Pro 9g
- Dây nguồn pin 9V có đầu cắm
- Cáp 7 màu và keo nến
- Đế pin 18650 x2
- 2 pin Ultrafire 1200 mAh
2.2 Sơ đồ khối của mạch
Hình 2.1 2.3 Lắp ráp
Trong robot tự tránh vật cản ta cần cấp nguồn cho kit Arduino UNO và module điều khiển động cơ L298 hoạt động, ta dùng dây nguồn pin 9V loại có đầu cắm và đế pin đôi 18650 hàn 2 dây theo cặp như hình sau:
Nguồn 5v hặc 9v
Khối Xử lý
Arduino uno r3
Cảm biến và động cơ Tin hiệu số
Trang 18Hình 2.2
sau khi hàn xong ta có thể cấp nguồn cho Module điều khiển động cơ L298 và đầu cắm thì cấp cho Kit Arduino Trên module L298 các bạn để ý có 3 lối vào, ta Vcc, GND, +5V ta cấp nguồn thông qua 2 cổng Vcc và GND nhé
Hình 2.3
Khi kết nối các bạn chú ý nối dây chính xác, Arduino phải sáng đèn xanh, L298 báo đèn đỏ khi nhấn nút màu trắng Module L298 có 2 cách cấp nguồn, cấp nguồn Vcc thì điện áp bằng điện áp tổng trên 2 pin ( khoảng 7.4V), và cấp nguồn thông qua cổng +5V Hai trạng thái này được chuyển đổi qua lại bằng 1 nút nhấn màu trắng Trong bài viết này ta chỉ sử dụng nguồn Vcc ta sẽ tận dụng nút nhấn này làm công tắc, tức là khi ân nút nhấn sẽ có nguồn 7.4V cấp cho động cơ hoạt động còn khi nhả nút nhấn sẽ không có điện áp cấp vào động cơ, như vậy chúng ta sẽ có một chiếc nút nhấn ON/OFF rồi
Bước 2: Gắn cảm biến siêu âm lên Servo SG90
Các bạn lấy thanh trợ lực trên servo SG90 và gắn lên trục động cơ như hình sau:
Trang 19Hình 2.4
Ta tiếp tục lấy khung cảm biến siêu âm gắn vào cảm biến siêu âm :
Hình 2.5 Chú ý quay phần chân jump của cảm biến siêu âm ra phía ngoài nhé Sau đó chúng
ta dùng keo nến gắn nó lên động cơ servo SG90
Trang 20Hình 2.6 Các bạn gắn ngang theo chiều SG90 như hình nhé
Bước 3: Ráp khung xe ba bánh
Lắp xong chúng ta được như hình sau:
Chúng ta dùng keo nến lần lượt gắn các phần đã lắp ráp từ trước lên khung xe Đầu tiên là servo nhé Chúng ta sẽ gắn lên đầu như hình:
Hình 2.7 Bước 4: Lắp phần L298 và kit Arduino nhé
Trang 21Hình 2.8 Đặt lên khung thôi, để cân bằng trọng tâm các bạn lắp đế pin ở dưới gần xe nhé, L298 ở phía trên để tiện cho nút bấm Kit Arduino thì đặt ở giữa nhé
Trang 22Hình 2.9
Có định bằng keo nến khá chắc đó, bạn nào chưa yên tâm thì có thể dùng ốc nhé,
đế pin 18650 có lỗ bắt ốc ở bên trong đó Dán module L298 lên phía trên cho thật cân đối
Hình 2.10 2.4 Đấu chân vào Arduino
Trang 23Hình 2.11 2.5 Lập trình cho mạch
Để lập trình cho mạch ta có 2 ngôn ngữ chính đó là ASM và ngôn ngữ C Hiện nay ngôn ngữ C được sử dụng rộng rãi hơn do dễ lập trình hơn và các dòng lệnh ngắn hơn so với ASM tiết kiệm bộ nhớ cho vi điều khiển đáng kể Sau đây là một vài lưu đồ giải thuật của xe cảm biến siêu âm
Trang 24Hình 2.12 2.6.1 Giới thiệu một số hàm trong phần mềm lập trình Arduino IDE Các hàm nhập xuất Digital (digital I/O):
pinMode(): Cấu hình 1 pin quy định hoạt động như là một đầu vào
(INPUT) hoặc đầu ra (OUTPUT) Xem mô tả kỹ thuật số (datasheet) để biết chi tiết về các chức năng của các chân
Cú pháp : pinMode(pin, mode)
Trong đó :
- pin: Số của chân digital mà bạn muốn thiết đặt
- mode: INPUT, INPUT_PULLUP hoặc OUTPUT