Mục lục:

Arduino và IC điều khiển đèn LED PWM TLC5940: 7 bước
Arduino và IC điều khiển đèn LED PWM TLC5940: 7 bước

Video: Arduino và IC điều khiển đèn LED PWM TLC5940: 7 bước

Video: Arduino và IC điều khiển đèn LED PWM TLC5940: 7 bước
Video: Product Showcase: SparkFun LumiDrive LED Driver & LuMini LED Rings 2024, Tháng bảy
Anonim
Arduino và IC điều khiển đèn LED PWM TLC5940
Arduino và IC điều khiển đèn LED PWM TLC5940

Trong bài viết này, chúng ta sẽ xem xét IC điều khiển LED 16 kênh Texas Instruments TLC5940. Lý do của chúng tôi để làm điều này là để chứng minh một cách khác, dễ dàng hơn để điều khiển nhiều đèn LED - và cả các servo. Đầu tiên, đây là một vài ví dụ về TLC5940. Bạn có thể đặt hàng TLC5940 từ PMD Way với giao hàng miễn phí trên toàn thế giới.

TLC5940 có sẵn trong phiên bản DIP và cũng có thể gắn trên bề mặt. Nó thực sự là một phần tiện lợi, cho phép bạn điều chỉnh độ sáng của mười sáu đèn LED riêng lẻ thông qua PWM (điều chế độ rộng xung) - và bạn cũng có thể tạo chuỗi liên kết nhiều hơn một TLC5940 để kiểm soát nhiều hơn nữa.

Trong hướng dẫn này, chúng tôi sẽ giải thích cách điều khiển một hoặc nhiều IC TLC5940 bằng đèn LED và cũng xem xét cách điều khiển các servo. Tại thời điểm này, vui lòng tải xuống bản sao của TLC5940 (.pdf) vì bạn sẽ tham khảo nó trong quá trình này. Hơn nữa, vui lòng tải xuống và cài đặt thư viện TLC5940 Arduino của Alex Leone, bạn có thể tìm thấy tại đây. Nếu bạn không chắc chắn về cách cài đặt thư viện, hãy nhấp vào đây.

Bước 1: Xây dựng mạch trình diễn TLC5940

Xây dựng mạch trình diễn TLC5940
Xây dựng mạch trình diễn TLC5940

Mạch sau đây là mạch tối thiểu cần thiết để điều khiển mười sáu đèn LED từ Arduino của bạn hoặc tương thích. Bạn có thể sử dụng nó để thử nghiệm với các chức năng khác nhau và có được ý tưởng về những gì có thể. Bạn sẽ cần:

  • Arduino Uno hoặc bo mạch tương thích
  • 16 đèn LED bình thường hàng ngày có thể có dòng chuyển tiếp lên đến 20 mA
  • điện trở 2 kΩ (cho hoặc lấy 10%)
  • một gốm 0,1uF và một tụ điện 4,7uF

Hãy lưu ý hướng LED - và hãy nhớ TLC5940 là trình điều khiển LED cực dương chung - vì vậy tất cả các cực dương của LED được kết nối với nhau và sau đó là 5V.

Bước 2:

Đối với mạch cụ thể này, bạn sẽ không cần nguồn điện 5V bên ngoài - tuy nhiên, bạn có thể cần một nguồn điện trong tương lai. Mục đích của điện trở là để kiểm soát lượng dòng điện có thể chạy qua các đèn LED. Giá trị điện trở yêu cầu được tính theo công thức sau:

R = 39,06 / Imax trong đó R (tính bằng Ohms) là giá trị điện trở và Imax (tính bằng Amps) là lượng dòng điện tối đa bạn muốn chạy qua các đèn LED.

Ví dụ: nếu bạn có đèn LED với dòng chuyển tiếp 20 mA - phép tính điện trở sẽ là: R = 39,06 / 0,02 = 1803 Ohms. Khi bạn đã lắp ráp mạch - hãy mở Arduino IDE và tải lên bản phác thảo BasicUse.pde nằm trong thư mục ví dụ cho thư viện TLC5940.

Bạn sẽ được trình bày với đầu ra tương tự như những gì được hiển thị trong video.

Bước 3: Điều khiển TLC5940

Bây giờ mạch đã hoạt động, chúng ta làm thế nào để điều khiển TLC5940? Đầu tiên, các chức năng bắt buộc - bao gồm thư viện ở đầu bản phác thảo với:

#include "Tlc5940.h"

và sau đó khởi tạo thư viện bằng cách đặt phần sau vào void setup ():

Tlc.init (x);

x là tham số tùy chọn - nếu bạn muốn đặt tất cả các kênh ở độ sáng nhất định ngay khi bắt đầu phác thảo, bạn có thể chèn giá trị từ 0 đến 4095 cho x trong hàm Tlc.init ().

Bây giờ để bật hoặc tắt kênh / đèn LED. Mỗi kênh được đánh số từ 0 đến 15 và độ sáng của mỗi kênh có thể được điều chỉnh trong khoảng từ 0 đến 4095. Đây là quy trình gồm hai phần… Đầu tiên - sử dụng một hoặc nhiều chức năng sau để thiết lập các kênh cần thiết và độ sáng tương ứng (PWM cấp độ):

Tlc.set (kênh, độ sáng);

Ví dụ: nếu bạn muốn bật ba kênh đầu tiên ở độ sáng đầy đủ, hãy sử dụng:

Tlc.set (0, 4095); Tlc.set (1, 4095); Tlc.set (2, 4095);

Phần thứ hai là sử dụng phần sau để cập nhật TLC5940 với các hướng dẫn bắt buộc từ phần một:

Tlc.update ();

Nếu bạn muốn tắt tất cả các kênh cùng một lúc, chỉ cần sử dụng:

Tlc.clear ();

Bước 4:

Bạn không cần gọi TLC.update () sau khi xóa hàm. Sau đây là một bản phác thảo ví dụ nhanh đặt các giá trị độ sáng / PWM của tất cả các kênh thành các mức khác nhau:

#include "Tlc5940.h" void setup () {Tlc.init (0); // khởi chạy TLC5940 và tắt tất cả các kênh}

void loop ()

{for (int i = 0; i <16; i ++) {Tlc.set (i, 1023); } Tlc.update (); chậm trễ (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 2046); } Tlc.update (); chậm trễ (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 3069); } Tlc.update (); chậm trễ (1000); for (int i = 0; i <16; i ++) {Tlc.set (i, 4095); } Tlc.update (); chậm trễ (1000); }

Khả năng kiểm soát độ sáng riêng cho từng kênh / đèn LED cũng có thể hữu ích khi điều khiển đèn LED RGB - sau đó bạn có thể dễ dàng chọn các màu cần thiết thông qua các mức độ sáng khác nhau cho từng yếu tố. Một cuộc biểu tình được hiển thị trong video.

Bước 5: Sử dụng hai hoặc nhiều TLC5940s

Bạn có thể nối chuỗi khá nhiều TLC5940 với nhau để điều khiển nhiều đèn LED hơn. Đầu tiên - đấu dây TLC5940 tiếp theo với Arduino như được hiển thị trong mạch trình diễn - ngoại trừ kết nối chân SOUT (17) của TLC5940 đầu tiên với chân SIN (26) của TLC5940 thứ hai - khi dữ liệu truyền từ Arduino, qua TLC5940 đầu tiên đến TLC5940 thứ hai, v.v. Sau đó, lặp lại quy trình nếu bạn có phần ba, v.v. Đừng quên bộ định vị lại thiết lập hiện tại!

Tiếp theo, mở tệp tlc_config.h nằm trong thư mục thư viện TLC5940. Thay đổi giá trị của NUM_TLCS thành số TLC5940 mà bạn đã kết nối với nhau, sau đó lưu tệp và xóa tệp Tlc5940.o cũng nằm trong cùng một thư mục. Cuối cùng khởi động lại IDE. Sau đó, bạn có thể tham khảo tuần tự các kênh của TLC5940 thứ hai và xa hơn từ kênh đầu tiên. Tức là, đầu tiên là 0 ~ 15, thứ hai là 16 ~ 29, v.v.

Bước 6: Điều khiển Servos bằng TLC5940

Vì TLC5940 tạo ra đầu ra PWM (điều chế độ rộng xung), nó cũng rất phù hợp để điều khiển các servo. Cũng giống như đèn LED - bạn có thể điều khiển tối đa mười sáu đèn cùng một lúc. Lý tưởng để tạo ra các robot giống người nhện, đồng hồ kỳ lạ hoặc tạo ra một số tiếng ồn.

Khi chọn servo, hãy đảm bảo rằng servo không rút ra quá 120 mA khi hoạt động (dòng điện tối đa trên mỗi kênh) và cũng chú ý đến phần “Quản lý dòng điện và nhiệt” ở cuối hướng dẫn này. Và sử dụng nguồn bên ngoài với Servos, không phụ thuộc vào đường 5V của Arduino.

Để kết nối servo rất đơn giản - đường GND kết nối với GND, 5V (hoặc dây dẫn điện áp nguồn) kết nối với 5v (hoặc nguồn cung cấp phù hợp khác) của bạn và chân điều khiển servo kết nối với một trong các đầu ra của TLC5940. Cuối cùng - và điều này rất quan trọng - kết nối một điện trở 2,2kΩ giữa (các) chân đầu ra TLC5940 đang được sử dụng và 5V. Điều khiển một servo không khác gì một đèn LED. Bạn cần hai dòng đầu tiên khi bắt đầu phác thảo:

#include "Tlc5940.h" #include "tlc_servos.h"

thì sau đây trong void setup ():

tlc_initServos ();

Tiếp theo, sử dụng chức năng sau để chọn servo (kênh) sẽ hoạt động và góc (góc) cần thiết:

tlc_setServo (kênh, góc);

Cũng giống như các đèn LED, bạn có thể nhóm một vài trong số này lại với nhau, sau đó thực hiện lệnh với:

Tlc.update ();

Vì vậy, hãy xem tất cả những điều đó đang hoạt động. Bản phác thảo ví dụ sau quét bốn servo qua 90 độ:

#include "Tlc5940.h" #include "tlc_servos.h"

void setup ()

{tlc_initServos (); // Lưu ý: điều này sẽ giảm tần số PWM xuống 50Hz. }

void loop ()

{for (int angle = 0; angle = 0; angle--) {tlc_setServo (0, angle); tlc_setServo (1, góc); tlc_setServo (2, góc); tlc_setServo (3, góc); Tlc.update (); chậm trễ (5); }}

Video cho thấy bản phác thảo này đang hoạt động với bốn Servos.

Nếu Servos của bạn không xoay theo đúng góc - ví dụ như bạn yêu cầu 180 độ và chúng chỉ xoay 90 độ hoặc ở đó, bạn cần phải thực hiện thêm một chút.

Bạn cần mở tệp tlc_servos.h nằm trong thư mục thư viện Arduino TLC5940 và thử nghiệm với các giá trị cho SERVO_MIN_WIDTH và SERVO_MAX_WIDTH. Ví dụ: thay đổi SERVO_MIN_WIDTH từ 200 thành 203 và SERVO_MAX_WIDTH từ 400 thành 560.

Bước 7: Quản lý dòng điện và nhiệt

Như đã đề cập trước đó, TLC5940 có thể xử lý tối đa 120 mA trên mỗi kênh. Sau một số thử nghiệm, bạn có thể nhận thấy rằng TLC5940 thực sự nóng lên - và điều đó không sao.

Lưu ý rằng có một giới hạn tối đa cho lượng điện năng có thể bị tiêu tán trước khi phá hủy bộ phận. Nếu bạn chỉ đang sử dụng đèn LED thông thường dành cho sân vườn hoặc các loại servo nhỏ hơn, thì nguồn điện sẽ không thành vấn đề. Tuy nhiên, nếu bạn đang có kế hoạch sử dụng TLC5940 ở mức tối đa - vui lòng xem lại các ghi chú do tác giả thư viện cung cấp.

Phần kết luận

Một lần nữa, bạn đang trên đường kiểm soát một phần cực kỳ hữu ích với Arduino của mình. Bây giờ với một số trí tưởng tượng, bạn có thể tạo ra tất cả các loại màn hình trực quan hoặc giải trí với nhiều Servos.

Bài đăng này được mang đến cho bạn bởi pmdway.com - nơi cung cấp các sản phẩm TLC5940 cùng với mọi thứ cho các nhà sản xuất và những người đam mê điện tử, với giao hàng miễn phí trên toàn thế giới.

Đề xuất: