Mục lục:

4 Ch DMX Dimmer: 6 bước
4 Ch DMX Dimmer: 6 bước

Video: 4 Ch DMX Dimmer: 6 bước

Video: 4 Ch DMX Dimmer: 6 bước
Video: Hướng dẫn cài đặt bàn điều khiển dmx 512 cho đèn par led 54x9w chạy đuổi màu theo nhau 2024, Tháng bảy
Anonim
4 Ch DMX Dimmer
4 Ch DMX Dimmer

Ý tưởng là thiết kế và tạo ra một bộ điều chỉnh độ sáng di động.

Yêu cầu:

  • DMX512 có thể điều khiển
  • 4 kênh
  • Cầm tay
  • Dễ sử dụng

Tôi đề xuất ý tưởng này với giáo sư của mình tại WSU vì tôi muốn kết hợp niềm đam mê của mình với sân khấu và máy tính. Dự án này hoạt động hơi giống với dự án cấp cao của tôi trong bộ phận sân khấu. Nếu bạn có bất kỳ nhận xét hoặc câu hỏi, tôi rất muốn giúp đỡ.

Sự phát triển trong tương lai có thể bao gồm nhiều kênh hơn, đầu nối DMX 5 chân, chuyển qua DMX, 8 công tắc nhúng để thay đổi kênh, bảng mạch in.

Tôi đã di chuyển dự án này từ https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html vì nó vẫn còn phổ biến, tôi đoán vậy. Ngoài ra, tôi đã mất tệp hạt giống iWeb của mình nên tôi không thể dễ dàng cập nhật nó nữa. Rất vui nếu mọi người chia sẻ câu hỏi của họ về dự án với nhau.

Bước 1: Thu thập phần cứng

Thu thập phần cứng
Thu thập phần cứng

Phần cứng được sử dụng: Hầu hết nó được đặt hàng từ Tayda Electronics. Tôi thích chúng hơn DigiKey vì lựa chọn nhỏ hơn và dễ hiểu hơn.

  1. ATMEGA328, Bộ điều khiển vi mô
  2. MOC3020, TRIAC Optocoupler. Không phải ZeroCross.
  3. MAX458 hoặc SN75176BP, Bộ thu DMX
  4. ISP814, AC Optocoupler
  5. Bộ điều chỉnh 7805, 5v
  6. BTA24-600, 600V 25A TRIAC
  7. Tinh thể 20MHz
  8. Nguồn điện 9V

Một số trở ngại và bài học kinh nghiệm trong quá trình này

  • Nếu bạn không phải là chuyên gia đăng ký, hãy gắn bó với ATMEGA328P
  • Bộ ghép ảnh sai. Bạn không muốn Zero Cross
  • Các kênh cao không ổn định. Chuyển từ 16MHz sang 20MHz đã giải quyết được vấn đề này
  • Không thể có đèn trạng thái DMX vì cuộc gọi ngắt phải rất nhanh
  • Nguồn DC phải cực kỳ ổn định, bất kỳ gợn sóng nào cũng sẽ khiến tín hiệu DMX trở nên rất nhiễu

Thiết kế TRIAC đến từ MRedmon, cảm ơn bạn.

Bước 2: Thiết kế mạch

Thiết kế mạch
Thiết kế mạch

Tôi đã sử dụng Fritzing 7.7 trên Mac để thiết kế mạch của mình.

MAX485 ở trên cùng được sử dụng để chuyển đổi tín hiệu DMX thành thứ mà Arduino có thể đọc được.

4N35 ở bên trái được sử dụng để phát hiện điểm chéo 0 của tín hiệu AC, do đó Arduino sẽ biết tại thời điểm nào để làm mờ đầu ra sóng Sine. Tìm hiểu thêm về cách phần cứng và phần mềm tương tác trong phần phần mềm.

Tôi đã nhận được câu hỏi liệu dự án này có hoạt động ở Châu Âu với 230V và 50Hz không? Tôi không sống ở Châu Âu và cũng không thường xuyên đi du lịch để có thể thử nghiệm thiết kế này. Nó sẽ hoạt động, bạn chỉ cần sửa đổi dòng mã thời gian độ sáng cho độ trễ thời gian tần số khác nhau.

Bước 3: Thiết kế vi mạch của Kovari

Thiết kế vi mạch của Kovari
Thiết kế vi mạch của Kovari
Thiết kế vi mạch của Kovari
Thiết kế vi mạch của Kovari

Thông qua quá trình nâng cấp trang web của mình, tôi đã có thể có một vài cuộc trò chuyện qua email. Một là với Kovari Andrei, người đã thiết kế mạch điện dựa trên dự án này và muốn chia sẻ thiết kế của anh ấy. Tôi không phải là nhà thiết kế bảng mạch nhưng đó là một dự án Eagle. Hãy cho tôi biết nó hoạt động như thế nào nếu bạn sử dụng nó.

Bước 4: Thiết kế vi mạch của Giacomo

Thiết kế vi mạch của Giacomo
Thiết kế vi mạch của Giacomo

Đôi khi, mọi người sẽ nhắn tin cho tôi về những điều chỉnh thú vị mà họ đã thực hiện với tài liệu hướng dẫn này và tôi nghĩ tôi nên chia sẻ chúng với tất cả các bạn.

Giacomo đã sửa đổi mạch điện để không cần một máy biến áp điều chỉnh trung tâm. PCb là một mặt và có thể là một giải pháp hợp lý hơn cho những người không thể thực hiện hai mặt ở nhà (một chút khó khăn).

Bước 5: Phần mềm

Phần mềm
Phần mềm

Tôi là một kỹ sư phần mềm theo thương mại nên phần này là chi tiết nhất.

Summery: Khi Arduino khởi động lần đầu, phương thức setup () được gọi. Trong đó, tôi thiết lập một số biến và vị trí đầu ra sẽ được sử dụng sau này. zeroCrossInterupt () được gọi / chạy mỗi khi AC chuyển từ điện áp dương sang điện áp âm. Nó sẽ đặt cờ zeroCross cho mọi kênh và khởi động bộ đếm thời gian. Phương thức loop () được gọi là liên tục mãi mãi. Để bật đầu ra, TRIAC chỉ phải được kích hoạt trong 10 micro giây. Nếu đã đến lúc kích hoạt TRIAC và zeroCross đã xảy ra, đầu ra sẽ bật cho đến khi kết thúc pha AC.

Có một vài ví dụ trực tuyến mà tôi đã sử dụng để bắt đầu dự án này. Điều chính mà tôi không thể tìm thấy là có nhiều đầu ra TRIAC. Những người khác đã sử dụng chức năng trì hoãn để PWM đầu ra, nhưng điều đó sẽ không hoạt động trong trường hợp của tôi vì ATMEGA luôn phải lắng nghe DMX. Tôi đã giải quyết điều này bằng cách xung TRIAC ở rất nhiều ms sau khi không chéo. Bằng cách tạo xung TRIAC gần đến 0-cross, càng có nhiều sóng sin được phát ra.

Đây là nửa sóng sin 120VAC trông như thế nào trên máy hiện sóng, ở trên.

ISP814 được kết nối với ngắt 1. Vì vậy, khi nó nhận được tín hiệu rằng AC chuyển đổi từ tích cực sang tiêu cực hoặc ngược lại, nó sẽ đặt zeroCross cho mỗi kênh thành true và bắt đầu đồng hồ bấm giờ.

Trong phương thức loop (), nó kiểm tra mọi kênh nếu zeroCross là true và thời gian để nó kích hoạt đã trôi qua, nó sẽ xung TRIAC trong 10 micro giây. Điều này là đủ để bật TRIAC. Khi TRIAC được bật, nó sẽ tiếp tục bật cho đến zeroCross. Ánh sáng sẽ nhấp nháy khi DMX ở mức khoảng 3% vì vậy tôi đã thêm phần cắt bớt vào đó để ngăn chặn điều đó. Điều này đã làm cho Arduino quá chậm và xung đôi khi sẽ kích hoạt sóng sin tiếp theo thay vì 4% cuối cùng của sóng.

Cũng trong vòng lặp () tôi đặt giá trị PWM của các đèn LED trạng thái. Các đèn LED này có thể sử dụng PWM bên trong do Arduino tạo ra vì chúng ta không phải lo lắng về zeroCross của AC. Khi PWM được thiết lập, Arduino sẽ tiếp tục ở độ sáng đó cho đến khi được thông báo khác.

Như đã lưu ý trong các nhận xét trên cùng để sử dụng ngắt DMX trên chân 2 và chạy ở 20MHz, bạn sẽ phải chỉnh sửa một số tệp ứng dụng Arduino. Trong HardwareSerial.cpp, một đoạn mã phải bị xóa, điều này cho phép chúng ta viết lệnh gọi ngắt của riêng mình. Phương thức ISR này nằm ở cuối mã để xử lý ngắt DMX. Nếu bạn định sử dụng Arduino làm lập trình viên ISP, hãy đảm bảo hoàn nguyên các thay đổi của bạn thành HardwareSerial.cpp, nếu không ATMEGA328 trên bảng mạch bánh mì sẽ không thể truy cập được. Sự thay đổi thứ hai là một sự thay đổi lớn hơn. Tệpboards.txt phải được thay đổi thành tốc độ đồng hồ 20MHz mới.

độ sáng [ch] = bản đồ (DmxRxField [ch], 0, 265, 8000, 0);

Độ sáng ánh xạ tới 8000 vì đó là lượng micro giây của 1/2 một sóng sin AC ở 60hz. Vì vậy, ở độ sáng đầy đủ 256 DMX, chương trình sẽ để 1/2 sóng sin AC BẬT cho 8000us. Tôi đã đưa ra 8000 thông qua phỏng đoán và kiểm tra. Thực hiện phép toán 1000000us / 60hz / 2 = 8333 để đó có thể là một con số tốt hơn, nhưng có thêm 333us trên đầu cho phép TRIAC mở và bất kỳ jitter nào trong chương trình có lẽ là một ý tưởng hay.

Trên Arduino 1.5.3, họ đã di chuyển vị trí của tệp HardwareSerial.cpp. Bây giờ nó là /Application/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp Bạn sẽ cần phải nhận xét toàn bộ điều này nếu khối bắt đầu bằng dòng 39: #if được định nghĩa (USART_RX_vect)

Nếu không, bạn sẽ gặp phải lỗi này: core / core.a (HardwareSerial0.cpp.o): Trong hàm `_vector_18 ':

Bước 6: Đóng gói nó lên

Đóng gói nó lên
Đóng gói nó lên
Đóng gói nó lên
Đóng gói nó lên
Đóng gói nó lên
Đóng gói nó lên

Tôi chọn hộp dự án màu xám ở Menards trong phần điện của họ. Tôi đã sử dụng một cái cưa pittông để khoét các lỗ cắm điện. Hộp đựng có một kẹp c của rạp hát được gắn vào đầu để treo. Đèn trạng thái cho mọi đầu vào và đầu ra để giúp chẩn đoán nếu có sự cố. Một nhà sản xuất nhãn đã được sử dụng để giải thích các cổng khác nhau trên thiết bị. Các số bên cạnh mỗi phích cắm đại diện cho số kênh DMX. Tôi dán bảng mạch và máy biến áp bằng một ít keo nóng. Các đèn LED được dán vào vị trí với các giá đỡ đèn LED.

Đề xuất: