Nhận được một số lượng lớn (~ 100) tín hiệu đầu ra kỹ thuật số từ Arduino


19

Tôi muốn có thể điều khiển khoảng 100 đèn LED độc lập bằng Arduino. Vấn đề là Arduino không có đủ chân có thể được cấu hình cho việc này. Điều gì sẽ là một cách để giải quyết vấn đề này? Có con chip nào có thể giải phóng tín hiệu phức tạp hơn từ Arduino để có thể điều khiển đèn LED không? Hay là có một giải pháp khác?


yêu cầu tỷ lệ làm mới của bạn là gì? vẽ bao nhiêu hiện tại trên mỗi đèn LED?
Abbeyatcu

tốc độ làm mới khoảng 1 giây. suy nghĩ khoảng 8ma mỗi đèn LED. Sẽ được cung cấp bởi bộ điều hợp bên ngoài - không phải Arduino
Alexis K

Có nhiều giải pháp khử nhiễu. Nhưng hãy xem xét sự phức tạp của nhiệm vụ của bạn; thuật toán bạn cần để tạo dữ liệu có phù hợp với các ràng buộc của mcu của Arduino không? Một số nhiệm vụ sẽ, những nhiệm vụ khác sẽ không hoặc sẽ chỉ phù hợp thông qua việc tạo các thiết kế có thể khá thỏa mãn để tạo nhưng có thể khiến việc bảo trì mã trở nên khó khăn.
Chris Stratton

Câu trả lời:


22

Trước hết, một Arduino không thể điều khiển trực tiếp 100 đèn LED, vì dòng điện kết hợp mà thiết bị phải nguồn hoặc chìm sẽ vượt xa cả vi điều khiển và bộ điều chỉnh điện áp trên bo mạch Arduino. Mặc dù vậy, một Arduino Shield tùy chỉnh với nguồn năng lượng và quy định riêng có thể phù hợp với dự luật.

Có một số cách tiếp cận dễ dàng, cách tiếp cận đơn giản nhất được trình bày chi tiết dưới đây:


  • Trình điều khiển LED dòng không đổi TLC5940 trong cấu hình xếp tầng:

TLC5940 điều khiển 16 đèn LED trên mỗi IC, được điều khiển bởi đầu vào nối tiếp thông qua một biến thể nhỏ của giao diện SPI. Lên đến 40 thiết bị TLC5940 có thể xếp tầng, nhưng 7 trong số đó sẽ đủ để lái 100 đèn LED trong câu hỏi.

Có ít nhất một vài thư viện Arduino ( 1 , 2 ) cho TLC5940.

Tốc độ xung nhịp được đề xuất để gửi từ Arduino và tốc độ làm mới tương ứng:

  • GSClk 1 MHz sử dụng mã trong chuỗi này .
  • 330 KHz SCLK (đồng hồ dữ liệu nối tiếp)
  • Qua đó, tốc độ làm mới dữ liệu LED 244 Hz

Điều này dựa trên các công thức từ biểu dữ liệu:

f (GSCLK) = 4096 * f (cập nhật)
f (SCLK) = 193 * f (cập nhật) * n
trong đó:
f (GSCLK): tần số tối thiểu cần thiết cho GSCLK
f (SCLK): tần số tối thiểu cần thiết cho SCLK và SIN
f ( cập nhật): tốc độ cập nhật của toàn bộ hệ thống xếp tầng
n: số tầng của thiết bị TLC5940

Các TLC5940 là một hiện liên tục chìm , vì vậy các cực dương của đèn LED sẽ được gắn với một điện áp một vài volt lớn hơn VF LED, hoặc khoảng 7 volt, nào là thấp hơn, cung cấp một cách độc lập của các chân sức mạnh của Arduino. Nguồn điện áp này cần có khả năng cung cấp 100 * (bất cứ dòng điện nào bạn chạy đèn LED), nhưng có thể là nguồn không được kiểm soát.

Các catốt LED đi đến các dòng ổ đĩa của IC TLC5940 tương ứng.

Bản thân TLC5940 tiêu thụ tới Icc = 60 mA trên mỗi thiết bị trong quá trình ghi dữ liệu, do đó, việc cung cấp năng lượng cho 7 trong số chúng từ Arduino sẽ không hoạt động, nó sẽ yêu cầu cung cấp Vcc độc lập 3,3 đến 5 volt, lý tưởng là giá trị tương tự như Vcc của Arduino đang được sử dụng, và dấu vết mặt đất cần phải kết nối trở lại mặt đất của Arduino, tất nhiên. Vận hành các bộ phận TLC ở một điện áp khác với Arduino sẽ mang lại nhu cầu chuyển đổi mức tín hiệu nối tiếp, do đó tốt nhất nên tránh.

Một số video YouTube trình diễn bằng cách sử dụng Arduino với IC TLC5940 xếp tầng.


Mặc dù các IC này được thiết kế để điều khiển màn hình LED số 7 đoạn, chúng cung cấp điều khiển LED riêng lẻ, do đó có thể được sử dụng cho tối đa 64 đèn LED trên mỗi IC. Hai trong số chúng có thể được xếp tầng để lái 100 đèn LED cần thiết. Trang 13 của biểu dữ liệu hiển thị cấu hình tầng.

Các đèn LED sẽ phải được kết nối bằng điện như một nhóm gồm 8 đèn LED, mỗi đèn chia sẻ một dòng catốt (cực âm chung), cho thiết kế này.

MAX7219 / 7221 là trình điều khiển LED ghép kênh, do đó độ sáng tối đa của đèn LED sẽ thấp hơn so với trình điều khiển LED tĩnh như phần trước.

Dưới đây là một thư viện và hướng dẫn ma trận LED hữu ích bằng cách sử dụng MAX7219.

Một số video YouTube có liên quan ( 1 , 2 ) có thể được quan tâm.


Một lần nữa, các IC này được thiết kế để điều khiển màn hình LED số 7 đoạn, chúng cung cấp điều khiển LED riêng lẻ, do đó có thể được sử dụng cho tối đa 40/64 đèn LED trên mỗi IC. Hai / ba trong số chúng có thể được nối trên một bus Arduino SPI để lái 100 đèn LED cần thiết.

Ghi chú thiết kế vẫn giống như phần trước. Ngoài ra, độ sáng tối đa LED riêng lẻ sẽ thấp hơn so với thiết kế ghép kênh thẳng của MAX7219.

Có một số video YouTube có thể được quan tâm.


  • Thiết kế thành phần riêng biệt, thanh ghi thay đổi, bộ mở rộng IO, dải đèn LED có thể cắt với các bộ điều khiển riêng lẻ và nhiều hơn nữa ...

Đây là tất cả các phương pháp đã được sử dụng với mức độ đơn giản và thành công khác nhau. Chúng là những triển khai phức tạp hơn 3 cách tiếp cận ở trên, do đó không chi tiết hơn nữa. Tìm kiếm trên web sẽ mang lại hướng dẫn hữu ích cho các phương pháp này, nếu cần.

Một điều khó chịu với các thiết kế như vậy là sự cần thiết của các điện trở điều khiển hiện tại trên mỗi chuỗi LED hoặc LED. Các thiết bị được thiết kế đặc biệt cho lái xe LED thường không cần điều này.

Tôi không có kinh nghiệm cá nhân với bộ tùy chọn cuối cùng này, vì vậy không thể giúp được gì nhiều.


Chú thích: Sau khi trả lời câu hỏi này, tôi tìm thấy một câu hỏi cũ hơn , có câu trả lời chi tiết và thảo luận về một số cách tiếp cận trong phần cuối cùng của tôi. Chủ đề đó làm cho thú vị "đọc thêm như bài tập về nhà".



1
Đăng ký thay đổi rẻ tiền như 74HC595?
Thomas E

Ngoài ra, Max5951 cung cấp "điều khiển LED riêng lẻ" như thế nào - dường như chỉ có điều khiển 7 đoạn (8 chân cho 8 chữ số), không?
Thomas E

Yup, những người quá. Cần rất nhiều điện trở để bảo vệ đèn LED, và sau đó là hệ thống dây phức tạp so với các IC được xây dựng có mục đích.
Anindo Ghosh

@ThomasE Không: "MAX6950 điều khiển tối đa năm chữ số 7 đoạn hoặc 40 đèn LED rời. MAX6951 điều khiển tối đa tám chữ số 7 đoạn hoặc 64 đèn LED rời." Người ta chỉ nối các nhóm 8 đèn LED với nhau thành một dòng catốt, như được mô tả trong phần MAX7219 trong câu trả lời của tôi.
Anindo Ghosh

2
@starblue Overkill dễ dàng thực hiện DIY : Đối với nỗ lực một lần hoặc sở thích, liệu TLC5940 ($ 3,78 với số lượng duy nhất tại DigiKey) sẽ không phải là giải pháp đơn giản nhất , vì các thư viện Arduino và hỗ trợ tích cực trong cộng đồng Arduino? Trừ khi có những phần khác được hỗ trợ tốt như bạn đã chỉ ra, các diễn đàn Arduino yêu thích.
Anindo Ghosh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.