MỤC LỤC LỜI NHẬN XÉT CỦA GIẢNG VIÊN i LỜI NÓI ĐẦU ii LỜI CÁM ƠN iii CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 1 1 1 Lí do chọn đề tài 1 1 2 Giới thiệu sơ lược các linh kiện chính 2 1 2 1 Board mạch Arduino Uno R3 2.
Trang 1MỤC LỤC
LỜI NHẬN XÉT CỦA GIẢNG VIÊN i
LỜI NÓI ĐẦU ii
LỜI CÁM ƠN iii
CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI 1
1.1 Lí do chọn đề tài 1
1.2 Giới thiệu sơ lược các linh kiện chính 2
1.2.1 Board mạch Arduino Uno R3 2
a Thông số kỹ thuật của Arduino Uno R3 2
b Vi điều khiển của Arduino Uno R3 3
c Các chân năng lượng của Arduino Uno R3 3
d Cổng vào/ ra của Arduino Uno R3 5
e Giới thiệu phần mềm Arduino IDE 6
1.2.2 IC 74HC595 7
1.2.3 Transistor 2N2222 8
CHƯƠNG 2: THIẾT KẾ, LẬP TRÌNH VÀ LẮP ĐẶT 9
2.1 Linh kiện khối LED Cube 9
2.2 Sơ đồ nguyên lý và mạch in 10
2.2.1 Sơ đồ nguyên lý 10
2.2.2 Mạch in 11
2.4 Hình ảnh thi công mạch 12
2.3 Lập trình cho mạch 16
KẾT LUẬN, TÀI LIỆU THAM KHẢO 33
Trang 2LỜI NHẬN XÉT CỦA GIẢNG VIÊN
Trang 3
LỜI NÓI ĐẦU
Ngày nay, trong lĩnh vực chiếu sáng và quảng cáo, đèn LED đã và đang đóng vaitrò quan trọng, đáp ứng được nhu cầu cho các công ty, doanh nghiệp, của hàng, LED đã
và đang được dùng để chế tạo các bảng quảng cáo, vì sự đơn giản, hiện đại và bắt mắt của
nó Những bảng thông tin, bảng chào hay những bảng quảng cáo với màu sắc rực rở, gâynhiều chú ý chắc hẳn đã không còn xa lạ đối với mọi người nữa, nhất là đối với thành phốchúng ta Hơn hẳn các bảng quảng cáo LED đơn 2D thông thường, 3D là công nghệ tiêntiến hơn Thể hiện được các hiệu ứng phức tạp, phong phú và vô cùng đẹp mắt Là cả mộtthử thách thật sự đối với những ai muốn làm nó Không chỉ vì sự phức tạp ở những hiệuứng, mà còn ở sự linh động của nó, có thể thây đổi hiệu ứng một cách linh hoạt sao chophù hợp với nhu cầu của khách hàng
Mô hình LED cube 8x8x8 mô tả được đầy đủ những tính năng trên Qua những conLED đơn thuần mà ta có thể phát triển thành một khối LED với không gian 3 chiều Đượctạo bởi 512 con LED, tùy thuộc vào ý thích và khả năng sáng tạo của mỗi người mà chọnmàu sắc của LED khác nhau
Trong khuôn khổ đồ án môn học lần này, em đã tập trung nghiên cứu tiến hành thiết
kế và thi công mạch, để hoàn thành mô hình LED CUBE 3D
Trang 4LỜI CÁM ƠN
Đầu tiên, em xin gữi lời cám ơn chân thành đến Ban Giám Hiệu trường AAAAAA đã cho
em một môi trường học tập rất tốt, để em có thể phát huy hết những khả năng của mình Em xinchân thành cám ơn các Thầy/Cô thuộc khoa Điện - Điện Tử đã tận tình chỉ dạy và truyền đạtnhững kiến thức qúy báu của mình để em có thể ứng dụng vào trong quá trình hoàn thành đồ ánnày
Em xin bầy tỏ lòng biết ơn sâu sắc đến thầy AAAAAAAA là người đã tận tình hướng dẫn
và chỉ bảo em trong suất quá trình làm đồ án Khi em gặp khó khăn thì thầy đã nhiệt tình phân tích
và chỉ dẫn hướng giải quyết cho em Em xin trọng cám ơn thầy Để hoàn thành đồ án này cũng có
sự đống góp không nhỏ của các bạn Tôi xin được gởi lời cảm ơn chân thành đến tất cả các bạn.Cuối cùng không thể không nhắc đến công lao của những người thân xung quanh đã giúp đỡ về vậtchất và tinh thần để em có thể hoàn thành đồ án một cách thuận lợi
Trang 6CHƯƠNG 1: GIỚI THIỆU ĐỀ TÀI
1.1 Lý Do Chọn Đề Tài
- Thiết thực, có tính ứng dụng cao, áp dụng được kiến thức đã học Trong thời đại hiện nay, cácứng dụng vi điều khiển ngày càng nhiều và phổ biến, rộng rãi trong nhiều nghành, lĩnh vực khácnhau như công nghiệp, nông nghiệp, y học… Một trong những ứng dụng mà ta có thể dễ dàng bắtgặp hằng ngày là hình thức thông tin quảng cáo bằng bảng led điện tử, quang báo Với thiết kế độcđáo và mới lạ, sản phẩm khối LED 3D chắc chắn sẽ làm bạn thích thú LED 3D có cấu trúc dạngkhối 3 chiều với nhiều kích thước khác nhau sẽ giúp bạn truyền tải được những nội dung vô cùngphong phú mà bạn khó có thể nói được bằng lời
- Hiển thị các hiệu ứng từ đơn giản đến phức tạp với nhiều kiểu phong phú, đẹp mắt
- Có khả năng hiển thị chữ, hình ảnh theo dạng 2 chiều và 3 chiều sinh động và khác biệt so vớicách thông thường
- Có phần mềm mô phỏng hỗ trợ tối đa người dùng thiết kế ra những ý tưởng cho riêng mình
- Có khả năng thay đổi nội dung theo yêu cầu Với những ưu điểm như trên, khối LED 3D đượcthiết kế ra để làm quà tặng, lưu niệm, trang trí, quảng cáo Thích hợp đặt tại các cửa hàng trang trínội thất, quán Cafe, Karaoke tạo cảm giác mới lạ và đẹp mắt Trong khuôn khổ đồ án này, em xintrình bày thiết kế mạch LED 3D kích thước 8x8x8 sử dụng vi điều khiển Arduino Uno
Trang 71.2 Giới Thiệu Sơ Lược Các Linh Kiện Chính
1.2.1 Board mạch Arduino Uno R3
a Thông số kỹ thuật của Arduino Uno R3
Dòng tối đa trên mỗi chân
Trang 8b 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
c 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ớinhau
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ấpcho 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ấpqua cổng USB
Trang 9• 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ồnsai 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 đ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ẽ đượcdù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ầnnhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lạitrở 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
Tương tự như một chiếc ổ cứng mini – nơi có thể đọc và ghi dữ liệuvà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
d 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ó
Trang 10cá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àmanalogWrite() 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ânkhá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ệubằng giao thức SPI với các thiết bị khác
• 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ớichâ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 →
210-1) để đọc giá trị điện áp trong khoảng 0V → 5V
• 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ânanalog để đ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
Trang 11e Giới 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ếnhiệ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 DevelopmentEnvironment) Gồm các thành phần chính:
• Giao diện
Trang 12+ Các chân ngõ ra nối ra (QA=>QH): 15, 1, 2, 3, 4, 5, 6, 7
+ Chân 13: Chân cho phép tích cực ở mức thấp Khi ở mức cao, tất cả các đầu ra của IC
74HC595 trở về trạng thái cao trở, không có đầu ra nào được cho phép
+ Chân 12 (Latch pin): Xung clock chốt dữ liệu Khi có 1 xung clock tích cực ở sườn
dương thì cho phép xuất dữ liệu trên các chân output Lưu ý có thể xuất dữ liệu bất cứ lúcnào
+ Chân 11 (Shift clock pin): Chân vào xung clock Khi có 1 xung clock tích cực ở sườn
dương (từ 0 lên 1) thì 1 bit được dịch vào IC
+ Chân 10: khi chân này ở mức thấp (mức 0) thì dữ liệu bị xóa trên chip.
+ Chân 9 (QH’): chân dữ liệu nối tiếp Nếu dùng nhiều IC 74HC595 mắc nối tiếp nhau
thì chân này đưa vào đầu vào của con tiếp theo khi đã dịch đủ 8 bit
+ Chân 8: Chân nối đất GND.
+ Chân 16: Nối nguồn VCC
Trang 131.2.3 Transistor 2N2222
Transistor 2N2222 có cấu tạo gồm 3 lớp bán dẫn ghép với nhau thành 2 mối nối P-N,thuộc loại transistor nghịch NPN Transistor 2N2222 được sản xuất theo chuẩn TO92, thứ tựcác chân từ trái qua phải: E B C
Transistor 2N2222 có điện áp giới hạn lên tới Uce = 30V, dòng điện giới hạncủa Transistor 2N2222 Ic = 800mA Hệ số khuếch đại hFE của Transistor 2N2222 lên đến75
Transistor 2N2222 có thể hoạt động ở dải nhiệt độ từ -55oC ~ 150oC Transistor 2N2222
là một transistor công suất 500mW, tuy nhiên tần số làm việc cao Transistor 2N2222 được
sử dụng rỗng rãi trong việc thiết kế mạch khuếch đại cơ bản
Trang 14CHƯƠNG 2: THIẾT KẾ, LẬP TRÌNH VÀ
LẮP ĐẶT 2.1 Linh kiện khối LED Cube
Các linh kiện cần chuẩn bị:
- Boar Arduino Uno R3
- 09 IC 74HC595
- 16 Transistor 2N2222
- 512 bóng LED 5li màu tùy thích (đỏ,xanh lá,xanh dương…)
- 02 bóng LED 5li : 01 xanh, 01 đỏ
- 64 con điện trở 220 Ohm
- 02 Bảng mạch đồng (01 bảng mạch kích thước 15cm x 15cm dùng để làm board điều khiển,
01 bảng mạch kích thước 20cm x 20cm dùng để hàn 64 chân anot và 8 tầng catot của LED)
- 05 tấm nhựa mica trắng trong, kích thước size A4 (Dùng để làm hộp đựng khối LED cube và
board điều khiển)
- VOM, mỏ hàn, chì,…
Trang 152.2 Sơ đồ nguyên lý và mạch in PCB
2.2.1 Sơ đồ nguyên lý
Trang 162.2.2 Mạch in
Mạch in board điều khiển
Mạch in board hàn LED
Trang 172.3 Hình ảnh thi công mạch
Khuôn hàn LED cube : Đục sẵn 64 lỗ, gồm 8 hàng, 8 cột, lỗ cách nhau 2.5cm
Trang 18Sau khi đã hàn được một khối LED
Mạch in dùng để gắn các khối LED sau khi đã ủi và ngâm mạch
Trang 19Sau khi đã hàn 8 khối LED và gắn cố định lên mạch in
Mạch in board điều khiển sau khi đã hàn các linh kiện
Hoàn thành sản phẩm
Lập trình cho mạch
Trang 20Để 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ể
Có 8 hiệu ứng cho mạch LED cube 8x8x8:
Sau đây là code của trương trình:
Trang 23case RAIN: rain(); break;
case PLANE_BOING: planeBoing(); break; case SEND_VOXELS: sendVoxels(); break; case WOOP_WOOP: woopWoop(); break; case CUBE_JUMP: cubeJump(); break; case GLOW: glow(); break;
case TEXT: text("0123456789", 10); break; case LIT: lit(); break;
Trang 24uint8_t numDrops = random(0, 5);
for (uint8_t i = 0; i < numDrops; i++) { setVoxel(random(0, 8), 7, random(0, 8)); }
Trang 25shift(planeDirection);
if (planeDirection % 2 == 0) { planePosition++;
Trang 26}
loading = false;
}
Trang 27timer++;
if (timer > SEND_VOXELS_TIME) { timer = 0;
setVoxel(selX, selY, selZ);
clearVoxel(selX, selY - 1, selZ);
setVoxel(selX, selY, selZ);
clearVoxel(selX, selY + 1, selZ);
if (selY == 0) {
sending = false;
}
}
Trang 29if (xPos == 0 && yPos == 0 && zPos == 0) {
drawCube(xPos, yPos, zPos, cubeSize);
} else if (xPos == 7 && yPos == 7 && zPos == 7) {
drawCube(xPos + 1 - cubeSize, yPos + 1 - cubeSize, zPos + 1 - cubeSize, cubeSize); } else if (xPos == 7 && yPos == 0 && zPos == 0) {
drawCube(xPos + 1 - cubeSize, yPos, zPos, cubeSize);
} else if (xPos == 0 && yPos == 7 && zPos == 0) {
drawCube(xPos, yPos + 1 - cubeSize, zPos, cubeSize);
} else if (xPos == 0 && yPos == 0 && zPos == 7) {
drawCube(xPos, yPos, zPos + 1 - cubeSize, cubeSize);
} else if (xPos == 7 && yPos == 7 && zPos == 0) {
drawCube(xPos + 1 - cubeSize, yPos + 1 - cubeSize, zPos, cubeSize);