RSS
English French German Spain Italian Dutch

Russian Portuguese Japanese Korean Arabic Chinese Simplified
Thứ Hai, 25 tháng 1, 2010

LED CUBE 5X5X5 VỚI ATMEGA16 HOẶC ATMEGA32

I. Giới thiệu
Lang thang trên internet, tình cờ tìm được vài đoạn video về khối lập phương xây dựng bởi những bóng đèn LED. Đây không chỉ là 1 công cụ giúp rèn luyện kỹ năng lập trình vi điều khiển mà còn là vật trang trí khá bắt mắt với hiệu ứng đa dạng và phụ thuộc khả năng người lập trình. Người đọc nếu chưa nắm được kỹ năng lập trình vi điều khiển cũng có thể thực hiện được đồ án này với các thành phần được cung cấp sẵn bởi bài viết. Nếu ai có khả năng lập trình, tôi tha thiết mong các bạn chia sẻ giải thuật và code để mọi người cùng nhau tham khảo. Nào bây giờ chúng ta bắt đầu.

II. Nguyên lý hoạt động.
1.LED
Nhắc lại 1 tí về nhân vật chính của bài viết, LED là 1 loại diode có khả năng phát sáng khi được phân cực thuận. LED thông thường có 2 chân: anode(+)-chân dài hơn và cathode(-) như vậy muốn LED phát sáng thì điện thế phân cực ở anode phải cao hơn cathode.

Tùy theo mức năng lượng giải phóng cao hay thấp mà bước sóng ánh sáng phát ra khác nhau (tức màu sắc của LED sẽ khác nhau). Mức năng lượng (và màu sắc của LED) hoàn toàn phụ thuộc vào cấu trúc năng lượng của các nguyên tử chất bán dẫn.

LED thường có điện thế phân cực thuận cao hơn diode thông thường, trong khoảng 1,5 đến 3,5 V. Nhưng điện thế phân cực nghịch ở LED thì không cao. Do đó, LED rất dễ bị hư hỏng do điện thế ngược gây ra.

Các bạn tham khảo thêm tài liệu về led tại đây:
http://en.wikipedia.org/wiki/Light-emitting_diode 

2. Hoạt động

    LED CUBE (LC) trong bài này được tạo thành từ 125 bóng LED, xếp thành 5 lớp, mỗi lớp 25 bóng. Điều đặt biệt là ta không dùng 125 mối nối để thắp sáng từng bóng mà thay vào đó, ta mắc chung các chân anode của 25 bóng trên 1 lớp lại với nhau và mắc chung 5 chân cathode để tạo thành cột (có 25 cột).
   Để cho 1 led bất kỳ bật sáng, đầu tiên ta nối chân anode chung của lớp với điểm có điện thế cao, khi đó 25 bóng led sẽ  có chân anode được gắn với điểm điện thế cao, việc còn lại là nối điểm điện thế thấp cho chân cathode của bóng led nào cần thắp sáng.  
   Việc cấp điện thế cao cho các lớp được thực hiện bởi 5 transistor PNP. 5 Transistor này được điều khiển bởi 5 chân IO của vi điều khiển và được phân cực ở vùng bão hòa và vùng ngưng tương ứng với mức logic 0 và 1 (ngược mức logic với chân IO của vi điều khiển)
 Việc cấp điện thế thấp cho các cột được thực hiện bởi 25 chân IO của vi điều khiển, do không có transistor để nhận dòng nên khi khi tính toán điện trở hạn dòng cho led phải lưu ý đến khả năng nhận dòng của chân IO vi điều khiển (thông số IOL khoảng 200mA là tối đa). Ở thời điểm nào đó, mỗi chân này phải nhận dòng từ 5 bóng led của 1 cột.
Hãy xem sơ đồ nguyên lý điều khiển LC sau đây:
lc_layviewlc_colview 

Đây là sơ đồ nguyên lý hoàn chỉnh của LC
lc_sch

Chú thích:
+Các foot là các chân điều khiển của khối led bao gồm 25 chân điều khiển cột và 5 chân điều khiển lớp như đã mô tả ở trên.
+Các điện trở phân cực cho transistor có giá trị khoảng 10k trở xuống(chưa tính toán kỹ).
+Các điện trở gắn ở các foot từ F1-F25 chính là điện trở hạn dòng cho led có giá trị từ 220 Ohm trở lên. 
+Mạch nguồn thiết kế với 2 tùy chọn là dùng nguồn ngoài 5 volt hoặc nguồn ngoài cao hơn 9 volt được lựa chọn thông qua jumper J4 .
+Chuẩn nạp cho vi điều khiển AVR là ISP. 
+Transistor dùng loại A1013. 


III. Thi công 
1. Chọn LED

LED có rất nhiều loại. Loại led được chọn phải không gây nhiễu, nghĩa là ánh sáng của led này không làm sáng khu vực không gian led khác. Vì vậy có thể chọn các loại led 5mm vỏ có màu trắng đục hoặc chọn led 3mm để thực hiện. Hãy xem video để so sánh các loại LED.
 
LED cube dùng led 3mm

LED cube dùng led 5mm vỏ đục


LED cube dùng led 5mm vỏ trong.

2. Thi công khối led.
Sau vài lần thực hiện việc hàn ráp các khối led, tôi rút ra cách làm như sau:

+Khung khối led cấu tạo bởi các chân led.
+Các led được uốn chân sẵn. Phải đảm bảo các chân cathode cách đều nhau 0.9 inch(cùng uốn lệch về 1 hướng).
+Dùng một tấm gỗ khoan 25 lỗ có đường kính bằng đường kính led và có tâm cách nhau 0.9 inch để làm giá căng chỉnh khi hàn các lớp.
+Vừa hàn vừa kiểm tra từng led vì nếu để bóng chết khi đã ráp hoàn chỉnh rất khó thay.
+Khi ráp các lớp lại với nhau cần căng chỉnh các cột thật thẳng hàng. 

Sau đây là hướng dẫn thông qua 1 số hình ảnh:
GF LED cube 036
Các led được uốn chân như trên(có sự sai sót - đổi thứ tự anode và cathode), chân led phải uốn ra ngoài mép của led.

GF LED cube 057
Xây dựng 1 hàng của 1 lớp.

GF LED cube 056
Phải thường xuyên kiểm tra các led.

GF LED cube 058

Liên kết 2 hàng của 1 lớp.

GF LED cube 059

GF LED cube 060 
Cận cảnh các mối nối. 

GF LED cube 061
Kiểm tra và kiểm tra...

GF LED cube 064
Các chân làm cột đều uốn về 1 hướng. 
Xong 1 lớp. Hàn các lớp lại với nhau sẽ được khối led hoàn chỉnh.

GF LED cube 094
Khối led hoàn chỉnh.
GF LED cube 092 

led3mm18
Đối với led 3mm,công việc thực hiện tương tự. 

Các bạn download tiêu bản của các lỗ khoan tại đây:

3. Thi công board mạch.
Theo sơ đồ nguyên lý trên, tôi đã vẽ thành mạch in, nhưng do trình độ vẽ mạch có hạn nên mạch đi dây nối hơi nhiều. Bác nào có khả năng hãy vẽ lại và post lên cho anh em cùng tham khảo. Các bác tải sơ đồ mạch cũng như PCB ở cuối bài viết. Sau đây là 1 số hình ảnh của board mạch:(đang cập nhật).
Sau đây là 1 số hình ảnh về board mạch hoàn chỉnh: 
LC04

Nhìn tổng thể. 

LC01

Mặt đồng.

LC03

Khối LED.
 LC02
Khối điều khiển. 

Sau đây là video hoàn chỉnh về sản phẩm:
 

IV. Lập trình hiển thị. 
Do không điều khiển từng bóng led trực tiếp, nên cách duy nhất để điều khiển các bóng led sáng độc lập là dùng phương pháp quét.
Đầu tiên, ta cấp mức điện thế thấp cho 1 số cột nào đó trong 25 cột. Tiếp theo, ta cấp mức điện thế cao cho lớp muốn hiển thị. Sau đó tắt lớp này đi, tiếp tục bật 1 số cột khác rồi lại bật lớp tương ứng tiếp theo, cứ lặp đi lặp lại với tầng số cao thì mắt ta không nhận biết được sự chớp tắt, ta sẽ thấy 1 khối hiển thị.

Giải thuật lập trình thì tùy khả năng mỗi người mà có giải thuật khác nhau.Vì mới học lập trình C nên trình độ có hạn, tôi chỉ post lên đây file .hex, các bạn có thể dùng bất kỳ chương trình nào nạp cho chip ATMEGA32 với thạch anh 16Mhz.  

V. Mở rộng 
  ATMEGA32 có 32 chân IO nên điều khiển đủ khối led 5x5x5 chỉ cần 30 chân(5 chân lái lớp, 25 chân lái cột). Nhưng nếu muốn mở rộng khối led với kích cỡ lớn hơn như 8x8x8 chẳn hạn, ta phải dùng 1 số cách sau để mở rộng phần cứng.

+Dùng IC ghi dịch, ở nước ta chỉ thông dụng loại ghi dịch 8 bit (74164 hoặc 74595), hơi khó vẽ mạch. Loại này chỉ cần 2 hoặc 3 chân vi điều khiển, một chân cấp dữ liệu nối tiếp, 1 chân tạo xung clock, một chân chốt (nếu dùng 74595 ). Các IC này có khả năng mở rộng vô hạn (nếu quá nhiều IC  thì phải dùng IC đệm thúc dòng để đảm bảo dữ liệu không sai lệch).

+Dùng IC giải mã n đường sang 2^n đường (tiêu biểu là IC giải mã 3 sang 8 :74138)  nghĩa là cấp tọa độ để chọn cột hay lớp, khi đó phương pháp quét phải bao gồm luôn cả quét trên lớp.

Go-large-8x8x8 

Các bạn download tất cả dữ liệu bài viết tại đây
Code mẫu tại đây  

Tham khảo:
LED cube 5x5x5 dùng PIC 16f688 
http://picprojects.org.uk/projects/lc/ 
LED cube 4x4x4 dùng ATmega16 









 
  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

3 nhận xét:

Trần Thừa nói...

oni03

xuantuan2808 nói...

bạn làm đẹp quá. cho mình hỏi làm mạch led cube như bạn thì dùng chip tên gì vậy. mình cung làm nhưng mà dùng con 89s52 nhưng không chạy được. thank!

Nhân Mai nói...

Mach led cube dung con AT 89S52
Than....

NỘI QUY NHẬN XÉT

Các bạn có thể viết lời bình của mình cho bài viết, và tuân thủ một số quy tắc sau:
>>Các nhận xét phải nghiêm túc, không dung tục, không spam.
>>Các nhận xét phải ghi bằng tiếng Việt có dấu
>>Nội dung phải liên quan đến bài viết
>>Hãy để lại tên hoặc email để chúng tôi tiện trả lời bạn.

[▼/▲] More Emoticons
oni01 oni02 oni03 oni04 oni05 oni06 oni07 oni08 oni09 oni10 oni11 oni12 oni13 oni14 oni15 oni16 oni17 oni18 oni19 oni20 oni21 oni22 oni23 oni24 oni25 oni26 oni27 oni28 oni29 oni30 oni31 oni32 oni33 oni34 oni35 oni36 oni37 oni38 oni39 oni40 oni41 oni42 oni43 oni44 oni45 oni46 oni47 oni48 oni49 oni50

Lên đầu trang
Vào giữa trang
Xuống cuối trang