Làm thế nào tôi có thể lái nhiều đèn LED hiệu quả với ghép kênh?


8

Tôi đang kết nối bộ vi điều khiển của mình (AVRmega32U4) với một dãy đèn LED 4x4. Có 2 dòng điều khiển để vận hành các cột (được truyền cho một bộ tách kênh 2 đến 4) và 4 dòng điều khiển để vận hành các hàng. Tôi mang một cột cao và một hàng thấp để chiếu sáng một đèn LED cụ thể. Tôi kéo cột thấp hoặc hàng cao để tắt đèn LED.

Thiết kế này hoạt động tốt cho khoảng 4 đèn LED cùng một lúc. Tuy nhiên, khi tôi cố gắng thắp sáng tất cả 16 cùng một lúc với chiến lược này, đèn LED sáng hơn đáng kể (tất cả chúng đều ở chu kỳ 1/16!).

Một số cách để chiếu sáng hiệu quả hơn số lượng đèn LED lớn hơn trong mảng này là gì? Nói, 10+?

Tôi đang xem xét việc viết rất nhiều mã để xử lý các tình huống khác nhau, nhưng điều đó sẽ tiêu tốn nhiều dung lượng trên vi điều khiển của tôi hơn là tôi cảm thấy thoải mái. Tôi đã xem xét thêm một micro khác với 16 dòng điều khiển để quản lý các đèn LED này, mỗi lần một đèn LED, nhưng điều này có vẻ như rất nhiều chi phí để giới thiệu.

nhập mô tả hình ảnh ở đây


Đăng một sơ đồ. Từ ngữ là tuyệt vời nhưng một sơ đồ giúp rất nhiều trong việc tìm ra những gì đang xảy ra. Bởi vì tôi không thấy sơ đồ, tôi không thể nói nếu những thứ sau sẽ hoạt động 100% - nhưng hãy thử sử dụng bóng bán dẫn để cung cấp năng lượng thực sự cho đèn LED thay vì mux (đó là những gì nó đang diễn ra).
Saad

Câu trả lời:


12

Tôi đã sử dụng thông tin có giá trị từ câu trả lời của Telaclavo để điều chỉnh của tôi. Nếu bạn thích anh ấy, đừng quên nâng cao anh ấy.

Nếu chu kỳ nhiệm vụ của bạn là 1/16 thì bạn sẽ phải cung cấp cho mỗi đèn LED 16x dòng điện danh nghĩa của nó để có cùng độ sáng trung bình. Điều này sẽ làm giảm tuổi thọ của đèn LED. Đèn LED độ sáng cao có thể được điều khiển bằng PWM ở dòng điện danh định ở chu kỳ nhiệm vụ 1/16 và vẫn sáng như đèn LED chỉ báo thông thường.
Giải pháp đơn giản nhất là giữ cho chu kỳ nhiệm vụ đó cố định, để bạn cũng có thể cố định hiện tại. Mỗi trình điều khiển cột sẽ phải lái đồng thời 4 đèn LED, vì vậy đó là 4 lần dòng điện danh nghĩa.

7404 bạn có trong sơ đồ của bạn không phù hợp cho việc này. TTL đầu tiên có thể nguồn rất ít hiện tại: 0,4mA. Nhưng ngay cả chìm cũng không làm được, đó cũng chỉ là 16mA, hầu hết các đèn LED, độ sáng cao cũng được chỉ định cho 20mA. Bạn cần một trình điều khiển có thể nguồn đó. Trong 4 cột của bạn x 4 hàng, mỗi cột trong 4 cột phải cung cấp 4 đèn LED với mỗi cột 20mA, đó là 80mA. Có các trình điều khiển phía cao, nhưng bạn có thể phải làm việc với các thành phần riêng biệt (BJT hoặc MOSFET). Hiện tại sẽ không dẫn đến sự tiêu tán cao, vì trung bình mỗi bóng bán dẫn phía cao của nó chỉ bằng 1/4: 20mA, và đó là trường hợp xấu nhất, nếu tất cả các đèn LED đều sáng.

biên tập
Một BC807 là một lựa chọn tốt cho điều này, và có mộtHFEtối thiểu 100, để một vài mA dòng cơ sở sẽ điều khiển nó ở trạng thái bão hòa. Bạn không cần 7404 nữa để đảo ngược đầu ra thấp hoạt động từ 74S139, vì BC807 được điều khiển bởi điện áp thấp. 74S139 (tại sao không phải LS?) Có thể chìm dòng điện cần thiết, 74HC139 cũng sẽ làm được.
Mặc dù hầu hết các bộ vi điều khiển đều có thể chìm 20mA, nhưng điều này dường như không đúng với ATMega32U4 . Bảng dữ liệu không cung cấp dòng tối đa dưới dạng tham số (lacune), nhưng điện áp đầu ra tối thiểu và tối đa được chỉ định ở 10mA. Vì vậy, đối với phía thấp, bạn sẽ có thêm một trình điều khiển. Các 74LVC07A được quy định cho chìm dòng để 32mA.

Với số lượng 74HC139 + 74LVC07A + 4 × Điện trở BC807 + 8 có giá dưới 35 cent tại Digikey.


Câu trả lời chính xác! Nhưng bạn có nghĩ rằng dòng điện đầu ra tối đa của 7404 có thể là 16 mA, kết nối 4 đèn LED với một đầu ra có thể đang đẩy nó?
Saad

Tôi thấy quan điểm của bạn về TTL. Bạn nghĩ gì về việc sử dụng bóng bán dẫn, như Saad đề xuất? Ngoài ra, tôi không chắc tại sao bạn lại đề cập đến 16 x 8, đó là mảng 4 x 4.
samoz

Buộc 80 mA thông qua đèn LED 20 mA không phải là ý kiến ​​hay. Nó rút ngắn cuộc sống của nó. Xem phần cuối của câu trả lời của tôi.
Telaclavo

@Telaclavo - Vâng, tôi đã đọc nó, tôi đã sửa câu trả lời của mình. Cảm ơn đã bổ sung. Hấp dẫn. Tuy nhiên, tôi biết một số sản phẩm làm điều này, với đèn LED chỉ báo bình thường. Tôi không có dữ liệu về tỷ lệ thất bại hoặc suốt đời.
stevenvh

Tôi chuyển thiết kế của mình sang sử dụng bóng bán dẫn, 4 trên các cột và 4 trên các hàng, với bộ vi điều khiển được kết nối với đế của mỗi bóng bán dẫn. Điều này giúp, nhưng tôi sẽ nghiên cứu một số đèn LED sáng hơn để giải quyết vấn đề chu kỳ nhiệm vụ nhỏ hơn. Cảm ơn sự giúp đỡ của bạn!
samoz

5

Nếu một người có thể muốn tất cả các đèn LED dường như được bật sáng đồng thời, thì các trình điều khiển cho một chiều (thường được gọi là "hàng", bất kể sự sắp xếp vật lý của đèn LED) nên được xây dựng để khi một trình điều khiển một hàng được kích hoạt, nó sẽ được kích hoạt có thể thắp sáng tất cả các cột đồng thời; theo hướng khác, các cột thường sẽ được thiết kế để hoạt động với một hàng tại một thời điểm được cấp năng lượng. Trong hầu hết các trường hợp, điều này sẽ có nghĩa là trình điều khiển hàng phải "mạnh hơn" so với trình điều khiển cột.

Mặc dù đôi khi có thể có lợi thế khi thiết kế màn hình với trình điều khiển hàng chỉ có thể điều khiển một nửa trình điều khiển cột cùng một lúc (ví dụ: vì người ta muốn có thể flash các tin nhắn sáng trong một phần của màn hình), trong hầu hết các trường hợp đạt được một mức cụ thể độ sáng biểu kiến ​​với một số hàng cụ thể sẽ yêu cầu một mức dòng nhất định. Nếu một người chỉ có thể lái một nửa số cột cùng một lúc, chiếu sáng tất cả các cột ở độ sáng nhất định sẽ yêu cầu chúng phải được điều khiển với dòng điện gấp đôi để bù lại.

BTW, một điểm chưa được đề cập: nếu người ta cố gắng thử bất cứ thứ gì gần độ sáng tối đa khi sử dụng đèn LED đa pha, người ta nên thiết kế một mạch sẽ ngăn một hàng không được cấp năng lượng trong một khoảng thời gian quá mức. Tối thiểu, người ta nên thiết kế mọi thứ để nếu CPU dừng màn hình sẽ tự tắt hoặc quay vòng qua các hàng một cách tự động và để quá trình quét màn hình không thể được khởi động lại quá thường xuyên mà không làm trống màn hình (bằng cách bộ đếm cho CPU biết khi nó kết thúc, trái ngược với việc CPU đặt lại bộ đếm hoặc bằng tín hiệu "đặt lại bộ đếm" sẽ vô hiệu hóa trình điều khiển hàng trong một thời gian tối thiểu nhất định). Nếu không, sự cố CPU có thể phá hủy bảng đèn LED.


3
Đoạn 3 rất hay.
Telaclavo

5

Các ATmega32 , với Vs = 5 V, nguồn lon và bồn rửa +/- 20 mA mỗi pin, với một sự mất mát trong điện áp khoảng 0,7 V .. 0.8 V

ATmega32_1

và nó có thể nguồn và chìm 4 · (20 mA) = 80 mA trong tổng số (mỗi gói) và thậm chí trên mỗi cổng, không có vấn đề.

ATmega32_2

Giả sử bạn không muốn vượt quá 20 mA cho mỗi đèn LED, đây sẽ là một cách khác để làm điều này:

Sơ đồ

U1 = ADG1636 . Nó có hai công tắc SPDT. Mỗi kết nối chuyển đổi có thể mang 238 mA (tối đa), theo bất kỳ hướng nào, ở 25 ºC. Đó là cao hơn 4 · (20 mA) = 80 mA. Vì vậy, U1 hoạt động như một bộ đệm dòng cao. IC có giá $ 1,83 trong 1 kpc.

Rđ = (5-2-0,7 V) / (20 mA) = 115 Ω, 1/4 W. Bạn chỉ cần bốn trong số họ.

Để an toàn để kết nối các cặp đèn LED song song, như được hiển thị, nó phải VF<|VRmmộtx|, và điều kiện đó thường được thỏa mãn.

Các bước:

1) Đặt B = 0 (như trong hình). Điều đó sẽ cung cấp cho bạn quyền truy cập vào điốt D9 đến D16. Điốt D1 đến D8 sẽ tắt.
2) Đặt A = 0 (như trong hình). Điều đó sẽ cung cấp cho bạn quyền truy cập vào điốt D10, D12, D14 và D16.
3) Đặt C = A nếu bạn muốn tắt D10. Đặt C =! A (! Có nghĩa là phủ định) nếu bạn muốn bật D10.
4) Đồng thời với 3), thực hiện tương tự cho {D, D12}, {E, D14}, {F, D16}.
5) Đặt A = 1. Điều đó sẽ cung cấp cho bạn quyền truy cập vào điốt D9, D11, D13 và D15.
6) Lặp lại 3) và 4), nhưng với {C, D9}, {D, D11}, {E, D13}, {F, D15}.
7) Đặt B = 1. Điều đó sẽ cung cấp cho bạn quyền truy cập vào điốt D1 đến D8.
8) Lặp lại 2) đến 6), nhưng đối với điốt D1 đến D8.
9) Lặp lại 1) đến 8), cho mỗi chu kỳ mới.

Cùng với đó, mỗi diode sẽ được bật với chu kỳ làm việc là 1/4 (rất tốt, có tính đến việc bạn có 16 điốt). Và vâng, bạn có thể kết hợp PWM với ý tưởng này, nếu bạn muốn kiểm soát dần độ sáng.

Như tôi đã nói, giải pháp này không vượt quá định mức 20 mA trên mỗi đèn LED, vì vậy độ sáng tối đa mà bạn sẽ thấy sẽ bằng 1/4 độ sáng tối đa mà mỗi đèn LED có thể tạo ra. Nếu bạn muốn độ sáng nhiều hơn, hãy sử dụng đèn LED tạo ra nhiều mcd / mA. Điều này sẽ giữ nguyên vẹn cuộc sống lâu dài của họ.

Nhờ khả năng hiện tại cao của U1, lượng ánh sáng mà mỗi đèn LED sẽ tạo ra sẽ không phụ thuộc vào tổng số đèn LED được bật.

Và, bạn vẫn chỉ cần sáu dòng GPIO từ MCU của mình. Chỉ với một IC bên ngoài, thay vì bộ giải mã + bộ đệm hoặc bóng bán dẫn. Cái này đắt hơn, nhưng nhỏ gọn hơn (nếu điều đó rất quan trọng) và với hệ thống dây dễ hơn một chút (sáu dòng, thay vì tám, đi đến ma trận LED). Đây là nhiều hơn một câu trả lời tò mò và hàn lâm, theo ý kiến ​​của tôi.

Đã thêm cho Federico Russo: những gì bạn nói đã được đề cập trong đoạn văn của tôi "Như tôi đã nói, giải pháp này [...]". Buộc 80 mA thông qua đèn LED 20 mA, thậm chí trong 1/4 thời gian, không phải là ý kiến ​​hay. Cuộc sống của nó sẽ được rút ngắn. Và không phải do sự phân tán quá mức (giống nhau), mà là do điện từ (wich tỷ lệ thuận với hiện tại). Xem tài liệu tham khảo này từ Cree. Trích đoạn:

Lặp đi lặp lại xung

Loại thứ hai của tình trạng quá dòng, xung lặp đi lặp lại dòng cao, có thể hoặc không dẫn đến sự thất bại thảm khốc của đèn LED. Xung xung dòng cao lặp đi lặp lại có thể dẫn đến tuổi thọ của đèn LED được rút ngắn so với tuổi thọ dự kiến ​​thông thường, theo thứ tự hàng chục hoặc hàng trăm ngàn giờ. Một thiết bị cụ thể chịu các quá độ lặp đi lặp lại ở biên độ một số phần trăm trên giới hạn của bảng dữ liệu nhưng dưới ngưỡng cần thiết cho sự cố xung đơn sẽ cuối cùng vẫn thất bại. Cơ chế thất bại rất có thể là do điện động lực vì đủ các ion kim loại cuối cùng bị dịch chuyển khỏi vị trí mạng tinh thể ban đầu của chúng.

Nếu bạn muốn cùng một cuộc sống và cùng một ánh sáng cho ít dòng điện hơn, hãy sử dụng đèn LED tạo ra nhiều mcd hơn ở 20 mA.


Er, không nên 0,7V cho tính toán điện trở là 2V (hay bất cứ thứ gì điện áp của đèn LED)? Hay đó là sự sụt giảm điện áp do điện trở trong? Trong trường hợp đó, không nên thêm 2V vào đó?
stevenvh

Đây là một thay thế cho các bóng bán dẫn PNP, một cho mỗi cột, tôi đề xuất. Chỉ đắt hơn: 4 chiếc BC807 là 10 xu với nhau.
stevenvh

@stevenh Chắc chắn, tôi đã quên 2 V của đèn LED. // Đây là một thay thế cho tất cả mọi thứ khác. Nó không liên quan gì đến PNP, cả về kiểu thiết bị lẫn cấu trúc. // Phải, cái này sẽ đắt hơn, thậm chí thêm chi phí cho bộ giải mã 2 đến 4 mà bạn cần, để tiếp tục sử dụng 6 dòng GPIO, nhưng nó nhỏ gọn hơn và hệ thống dây dễ hơn một chút (chỉ có 6 dây, thay vì 8, đi đến ma trận LED). // Và, nó là một giải pháp tò mò. Khác nhau.
Telaclavo

Đó là một cách ban đầu để lưu hai chân, nhưng tôi không nghĩ nó tốt. Các đèn LED chỉ có trung bình 5mA, không phải 20mA. Để có được độ sáng tương tự như 20mA, bạn cần gấp 4 lần dòng điện trong bộ ghép kênh 1: 4. Bộ vi điều khiển không thể cung cấp điều đó, vì vậy bạn sẽ cần một ULN2804.
Federico Russo

@FedericoRusso Xem văn bản trên. Không đủ không gian, ở đây.
Telaclavo

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.