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:
Đây là sơ đồ nguyên lý hoàn chỉnh của LC
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.
+Transistor dùng loại A1013.
III. Thi công
1. Chọn LEDLED 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:
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:
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.
Xây dựng 1 hàng của 1 lớp.
Phải thường xuyên kiểm tra các led.
Liên kết 2 hàng của 1 lớp.
Cận cảnh các mối nối.
Kiểm tra và kiểm tra...
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.
Khối led hoàn chỉnh.
Đối với led 3mm,công việc thực hiện tương tự.
Xong 1 lớp. Hàn các lớp lại với nhau sẽ được khối led hoàn chỉnh.
Khối led hoàn chỉnh.
Đố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:
Sau đây là 1 số hình ảnh về board mạch hoàn chỉnh:
Nhìn tổng thể.
Mặt đồng.
Khối LED.
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.
Tham khảo:
LED cube 5x5x5 dùng PIC 16f688
LED cube 5x5x5 dùng PIC 16f688
http://www.instructables.com/id/LED-Cube-4x4x4/
Điều khiển LED matrix
http://members.ziggo.nl/electro1/avr/dotmatrix.htm
ATMEL ATmega32
http://members.ziggo.nl/electro1/avr/dotmatrix.htm
Lập trình avr:
hocavr.com
Điều khiển LED matrix
http://members.ziggo.nl/electro1/avr/dotmatrix.htm
ATMEL ATmega32
http://members.ziggo.nl/electro1/avr/dotmatrix.htm
Lập trình avr:
hocavr.com
3 nhận xét:
oni03
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!
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.