Câu hỏi tốc độ toàn cầu POV


7

Tôi đang lên kế hoạch tạo ra một quả cầu POV LED RGB chỉ lớn hơn vật lý đó.

Tôi đang lên kế hoạch sử dụng 64 đèn LED RGB, yêu cầu 3 chân cho mỗi đèn LED cho tổng số 192 đầu ra. Rõ ràng tôi sẽ cần một số thanh ghi thay đổi. Tôi đã xem xét đến 74HC595 (8 bit) và nó sẽ cần 24 chip này để xử lý tất cả các đèn LED này.

Tôi đang lên kế hoạch đưa các thanh ghi thay đổi này thành chuỗi với 6 kênh trên mỗi bộ điều khiển vi mô của tôi.

74HC595 có tần số chuyển đổi là 100 MHz.

Tôi được cho biết rằng tôi sẽ cần phải quay Quả cầu với tốc độ khoảng 1500 RPM (25 mỗi giây)

Kế hoạch là sử dụng Arduino cho bộ điều khiển vi mô nhưng tôi sẵn sàng góp ý.

Câu hỏi của tôi là:

  • Có một con chip phù hợp hơn thì 74HC595 cho dự án này?
  • Bên cạnh Arduino có bộ điều khiển vi mô phù hợp hơn cho dự án này không?
  • Tôi không muốn tắt nguồn đèn LED của bộ điều khiển vi mô Vì vậy tôi sẽ cần nguồn điện bên ngoài. Tôi sẽ đi đâu để tới đó?
  • Với 6x 74HC595 nối tiếp, tôi có thể chuyển đổi tất cả các màu đèn LED trên kênh này nhanh như thế nào?
  • Với 12x 74HC595 nối tiếp, tôi có thể chuyển đổi tất cả các màu đèn LED trên kênh này nhanh như thế nào?

@davidcary bạn có giống David Carrie mà tôi đã gặp tại Vancouver Hack space (VHS) năm ngoái không?
Steven smethurst

Tôi ước tôi là - những bức ảnh về không gian mà tôi thấy trên internet trông thật tuyệt. Tôi muốn bắt đầu một không gian như vậy ở Tulsa. Than ôi, tôi đã không ở Canada trong nhiều năm.
davidcary

@davidcary ở đây là một trong Tulsa, nó có vẻ nhiều phần mềm hơn phần cứng nhưng nó sẽ là một khởi đầu tốt. hackerspaces.org/wiki/Free_In
information_Exchange_Foundation

Câu trả lời:


5

1. Một loạt các chip 74HC595 sẽ hoạt động tuyệt vời. Các chip khác cũng hoạt động tốt và có lẽ tốt hơn một chút được liệt kê tại: Chip SIPO nào tốt hơn, 74HC4094 hoặc 74HC595 hay thứ gì khác?

2. Arduino là một lựa chọn tuyệt vời để tạo mẫu, đặc biệt nếu bạn cảm thấy thoải mái khi sử dụng gcc. Có lẽ nó sẽ nhanh hơn để sử dụng một bây giờ. Than ôi, tôi nghi ngờ bạn sẽ sớm viết mã cho màn hình POV này cần nhiều RAM hơn Arduino có sẵn - tại thời điểm đó, (a) sử dụng một hoặc nhiều thủ thuật để giảm RAM cần thiết, hoặc (b) thêm một số RAM ngoài, hoặc (c) chuyển mã sang một số vi điều khiển khác có nhiều RAM hơn (có lẽ là ATMEGA1284?).

Parallax Propeller là một lựa chọn tuyệt vời cho màn hình POV độ phân giải cao - nó có thứ tự RAM bên trong lớn hơn (RAM 32 KB) so với ATmega238 trong Arduino. (Có điều gì tôi có thể làm để hỗ trợ chuyển gcc sang Propeller không?)

Một số người thích "pixel vuông". Tôi chắc rằng bạn đã biết rằng khoảng cách xung quanh đường xích đạo của một quả cầu dài gấp đôi khoảng cách từ cực đến cực (đường xích đạo của Trái đất dài hơn một chút so với hai lần). Vì bạn có 64 pixel từ cực nam đến cực bắc, bạn có thể chọn tải lại một "dòng" pixel dọc 2 * 64 = 128 lần trên mỗi vòng quay để có được 128 "pixel vuông" ở đường xích đạo. Cách đơn giản nhất để làm điều đó là lưu trữ toàn bộ khung hình không nén trong RAM. Điều đó đòi hỏi 64 * 128 pixel * 3 bit / pixel = 24 576 bit = 3 072 byte, cộng với một vài byte RAM cho các biến chương trình khác. Than ôi, Atmel ATmega328 trong Arduino chỉ có 2 048 byte RAM.

Màn hình POV trước đósử dụng các bộ vi điều khiển với mức độ lớn hơn (!) RAM so với mức này. Vì vậy, mọi người đã phát triển một loạt các thủ thuật mà bạn có thể sử dụng để khắc phục điều này. Một mẹo nhỏ: Chỉ chiếu sáng một nửa "mặt trước" của quả cầu trong thời gian bạn có thể nhìn thấy đèn LED, sau đó tắt tất cả các đèn LED (hoặc để chúng ở một số màu không đổi) trong nửa "phía sau" mà bạn không thể trực tiếp xem đèn LED. Điều đó làm giảm một nửa dung lượng RAM bạn cần, do đó, nó phù hợp với Arduino. Nếu bạn không thích thủ thuật đó, có những thủ thuật khác bạn có thể sử dụng ít rõ ràng hơn. Một mẹo khác: Lưu trữ hình ảnh trong bộ nhớ chương trình flash. Arduino có đủ bộ nhớ chương trình flash để lưu trữ vài khung hình 072 byte. Một mẹo khác: sử dụng văn bản ASCII để lưu trữ văn bản bạn muốn hiển thị, sau đó sử dụng bộ nhớ chương trình flash để lưu trữ "ROM trình tạo ký tự" dữ liệu. Tôi khá chắc chắn có những thủ thuật POV khác ...

3. Nếu tôi đang chế tạo nó, tôi sẽ cung cấp năng lượng cho chip Arduino và 74HC595 từ một nguồn cung cấp năng lượng lớn và cung cấp năng lượng cho động cơ quay POV từ một nguồn cung cấp năng lượng riêng biệt.

Chỉ sau khi tôi làm việc xong, tôi mới xem xét một hệ thống cung cấp điện tách biệt phức tạp hơn. (Về nguyên tắc, nếu bạn có nguồn cung cấp năng lượng chuyển đổi "đỏ" riêng biệt có + V chỉ được kết nối với chip 74HC595, lần lượt chỉ được kết nối với đèn LED màu đỏ, bạn có thể điều chỉnh độc lập điện áp đầu ra của nó để giảm thiểu tổng công suất và nhiệt lượng của hệ thống. Nhưng có vẻ phức tạp không cần thiết.)

4. và 5. Có lẽ cách đơn giản nhất để Arduino điều khiển màn hình POV là xâu chuỗi tất cả 24 chip 74HC595 trong một chuỗi dài, sau đó sử dụng thư viện Arduino SPI . Điều đó đòi hỏi 192 xung đồng hồ để xung nhịp trong cột dữ liệu mới và sau đó là xung trên RCLK (còn gọi là xung khung, SS, v.v.) để bắt đầu hiển thị dữ liệu mới đó. Theo một hướng dẫn giao diện Arduino với SPI , tốc độ xung nhịp SPI nhanh nhất là tốc độ hệ thống / 4. Vì vậy, Arduino 16 MHz có thể đưa ra SPI CLK 4 MHz. Nếu bạn nâng cấp nó với tinh thể 20 MHz, bạn có thể nhận được SPI CLK là 5 MHz. Nếu bạn có thể có được chương trình của mình đủ nhanh để theo kịp với phần cứng SPI, bạn có thể đưa ra một cột mới, tốt nhất là ở xung 5 MHz / 193, do đó tốc độ tối đa về mặt lý thuyết là 25 907 cột / giây.

Với tốc độ làm mới phim hoạt hình tiêu chuẩn là 24 khung hình / giây (đáng chú ý là nhấp nháy - bạn muốn thứ gì đó tốt hơn) và ở 128 cột / khung hình để có được các pixel "vuông" ở xích đạo (bạn có thể muốn nhiều hơn để có độ phân giải tốt hơn) , cung cấp 24 khung hình / giây * 128 cột / khung = 3072 cột / giây.

Có gần một mức độ lớn của phòng thở giữa "tốc độ bạn muốn": 3072 cột / giây và "tốc độ hoàn toàn không thể trên phần cứng Arduino": 25 908 cột / giây. Hy vọng rằng cung cấp cho bạn đủ phòng.

Một số người nghĩ rằng bạn có thể có tốc độ làm mới cột nhanh hơn bằng cách sắp xếp lại các chip 74HC595 thành 2 hoặc nhiều chuỗi và tải song song tất cả các chuỗi. Một số người giống như vậy - họ thấy các chân không được sử dụng trên Arduino và họ rất muốn sử dụng chúng cho việc gì đó . Nhưng nó có thể phản tác dụng - phần cứng SPI chỉ được kết nối với một bộ chân trên Arduino và do đó, các chuỗi được nối với bất kỳ chân nào khác phải được tải bằng phần mềm "bit-banging" giả lập, sẽ luôn chậm hơn và chậm hơn sử dụng nhiều thời gian CPU hơn phần cứng SPI tích hợp.


4

Lưu ý rằng để có được các màu khác ngoài màu trắng, đỏ, xanh lá cây, xanh dương, vàng, lục lam và fuchsia, bạn sẽ cần phải thực hiện chế độ PWM của riêng mình nếu bạn chỉ sử dụng bit đăng ký thay đổi để điều khiển từng thành phần LED . Bạn sẽ cần phải điều khiển từng bit khi bạn chuyển từng nhóm, vì vậy bạn sẽ cần tính đến điều này cho tốc độ làm mới của mình và nó cũng sẽ làm cho mã của bạn phức tạp hơn một chút.

Ngoài ra, bạn có thể sử dụng một IC như TI TLC5947, sẽ thực hiện 24 kênh PWM, dựa trên các bit bạn chuyển vào nó. http: // f Focus.ti.com/lit/ds/symlink/tlc5947.pdf

Với giải pháp này, bạn sẽ cần thay đổi 12 bit (thay vì 1) cho mỗi kênh, nhưng nó sẽ chăm sóc cho PWM, vì vậy nó có thể là một giải pháp đáng giá.


1
Tôi sẽ thứ hai này. Họ trình điều khiển LED này thực sự tốt - nó loại bỏ sự cần thiết của các điện trở giới hạn hiện tại và làm cho việc sử dụng các nguồn cung cấp riêng biệt rất dễ dàng. Phần đầu ra 24 sẽ xếp thẳng hàng với đèn LED của bạn. Có thể xem xét một chip có nhiều I / O SPI.
W5VO

1
Có phải PWM hoạt động trên màn hình POV quay?
davidcary

@davidcary Có, bạn có thể sử dụng PWM trên màn hình POV
Steven smethurst

1
Tất cả các màn hình quay cơ học mà tôi đã thấy cho đến nay cung cấp tối đa 8 màu: CMYK + RGB + W mà bạn đã đề cập. ~ 7000 kbits / giây để có được màu đầy đủ (thay vì ~ 600 kbits / giây để có 8 màu) có vẻ khó đối với Arduino, nhưng nó có thể là một tính năng bổ sung thú vị.
davidcary

2

Giả sử bạn cần 500 cập nhật mỗi vòng quay. Đó là 500 * 192 * 25 'ca' mỗi giây - đó chỉ là tần số dịch chuyển 2,4Mhz, chia cho 6 kênh = tần số chuyển đổi 400kHz.

Điều này là dễ dàng với arduino (20Mhz thực sự được ưa thích), nhưng yêu cầu lập trình và thời gian cẩn thận.

Vì vậy, cho câu hỏi của bạn:

1) Tôi đoán là không. Các thanh ghi 8 bit sẽ yêu cầu định tuyến PCB khó

2) Nếu bạn có 24 đầu ra, nó sẽ dễ dàng hơn. Ngoài ra, đối với màn hình lớn như vậy, thật tuyệt khi có đủ bộ nhớ trong để giữ bộ đệm khung để giúp lập trình dễ dàng hơn. Ở mức tối thiểu, bạn sẽ cần bộ nhớ 16kb, đây không phải là thứ bạn có thể tìm thấy trên các máy 8 bit. ARM tầm trung có thể tốt hơn, nhưng khó phát triển hơn.

3) Vâng, bạn không. Bạn đang sử dụng sức mạnh từ 595, chúng không mạnh lắm, nhưng đủ trong trường hợp đơn giản nhất (kiểm tra biểu dữ liệu cho mô hình cụ thể bạn có).

4,5) Nhanh hơn mức cần thiết :-)

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.