สารบัญ:
- ขั้นตอนที่ 1: รวบรวมฮาร์ดแวร์
- ขั้นตอนที่ 2: การออกแบบวงจร
- ขั้นตอนที่ 3: การออกแบบวงจรของ Kovari
- ขั้นตอนที่ 4: การออกแบบวงจรของ Giacomo
- ขั้นตอนที่ 5: ซอฟต์แวร์
- ขั้นตอนที่ 6: บรรจุหีบห่อ
วีดีโอ: 4 Ch DMX Dimmer: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
แนวคิดคือการออกแบบและสร้างเครื่องหรี่แบบพกพา
ความต้องการ:
- ควบคุม DMX512 ได้
- 4 ช่อง
- แบบพกพา
- ง่ายต่อการใช้
ฉันเสนอแนวคิดนี้ให้กับอาจารย์ของฉันที่ WSU เพราะฉันต้องการผสมผสานความหลงใหลในโรงละครและคอมพิวเตอร์เข้าด้วยกัน โปรเจ็กต์นี้ทำเหมือนกับโปรเจ็กต์อาวุโสของฉันในแผนกละคร หากคุณมีความคิดเห็นหรือคำถามใด ๆ ฉันชอบที่จะช่วย
การพัฒนาในอนาคตอาจรวมถึงช่องสัญญาณเพิ่มเติม, ขั้วต่อ DMX 5 พิน, DMX passthrough, สวิตช์จุ่ม 8 ตัวเพื่อเปลี่ยนช่อง, แผงวงจรพิมพ์
ฉันได้ย้ายโครงการนี้จาก https://danfredell.com/df/Projects/Entries/2013/1/6_DMX_Dimmer.html เพราะฉันยังคงเป็นที่นิยมอยู่ นอกจากนี้ ฉันทำไฟล์ iWeb seed หาย ดังนั้นฉันจึงไม่สามารถอัปเดตได้อย่างง่ายดายอีกต่อไป เป็นการดีที่จะให้ผู้คนแบ่งปันคำถามเกี่ยวกับโครงการกัน
ขั้นตอนที่ 1: รวบรวมฮาร์ดแวร์
ฮาร์ดแวร์ที่ใช้: ส่วนใหญ่สั่งซื้อจาก Tayda Electronics ฉันชอบมันมากกว่า DigiKey เพราะตัวเลือกที่เล็กกว่าและเข้าใจง่ายกว่า
- ATMEGA328, ไมโครคอนโทรลเลอร์
- MOC3020, ออปโตคัปเปลอร์ TRIAC ไม่ใช่ซีโร่ครอส
- MAX458 หรือ SN75176BP, ตัวรับ DMX
- ISP814, AC ออปโตคัปเปลอร์
- 7805 ตัวควบคุม 5v
- BTA24-600, 600V 25A TRIAC
- คริสตัล 20MHz
- แหล่งจ่ายไฟ 9V
อุปสรรคและบทเรียนเล็กๆ น้อยๆ ที่เรียนรู้ระหว่างทาง
- หากคุณไม่ใช่ผู้เชี่ยวชาญด้านการลงทะเบียน ให้ใช้ ATMEGA328P
- ออปโตคัปเปลอร์ที่ไม่ถูกต้อง คุณไม่ต้องการ Zero Cross
- ช่องสัญญาณสูงไม่เสถียร การเปลี่ยนจาก 16MHz เป็น 20MHz แก้ปัญหานี้ได้
- ไม่สามารถมีไฟแสดงสถานะ DMX เนื่องจากการโทรขัดจังหวะต้องเร็วมาก
- กระแสไฟตรงจะต้องมีความเสถียรสูง การกระเพื่อมใดๆ จะทำให้สัญญาณ DMX มีเสียงดังมาก
การออกแบบ TRIAC มาจาก MRedmon ขอบคุณ
ขั้นตอนที่ 2: การออกแบบวงจร
ฉันใช้ Fritzing 7.7 บน Mac เพื่อออกแบบวงจรของฉัน
MAX485 ที่ด้านบนใช้เพื่อแปลงสัญญาณ DMX เป็นสิ่งที่ Arduino สามารถอ่านได้
4N35 ทางด้านซ้ายใช้เพื่อตรวจจับการข้ามศูนย์ของสัญญาณ AC เพื่อให้ Arduino รู้ว่าจะหรี่เอาต์พุตคลื่นไซน์ในเวลาใด ข้อมูลเพิ่มเติมเกี่ยวกับวิธีการโต้ตอบของฮาร์ดแวร์และซอฟต์แวร์ในส่วนซอฟต์แวร์
ฉันได้รับคำถามว่าโปรเจ็กต์นี้จะทำงานในยุโรปด้วย 230V และ 50Hz หรือไม่ ฉันไม่ได้อาศัยอยู่ในยุโรป และไม่ได้เดินทางไปที่นั่นบ่อยๆ เพื่อทดสอบการออกแบบนี้ มันน่าจะใช้ได้นะ คุณแค่ต้องแก้ไขเส้นเวลาความสว่างของโค้ดสำหรับการหน่วงเวลาความถี่ที่ต่างกัน
ขั้นตอนที่ 3: การออกแบบวงจรของ Kovari
ผ่านกระบวนการสร้างเว็บไซต์ ฉันสามารถสนทนาทางอีเมลได้สองสามฉบับ หนึ่งคือกับ Kovari Andrei ผู้ออกแบบวงจรตามโครงการนี้และต้องการแบ่งปันการออกแบบของเขา ฉันไม่ใช่นักออกแบบแผงวงจร แต่เป็นโครงการ Eagle แจ้งให้เราทราบว่ามันทำงานอย่างไรสำหรับคุณหากคุณใช้งาน
ขั้นตอนที่ 4: การออกแบบวงจรของ Giacomo
บางครั้งผู้คนจะส่งข้อความถึงฉันเกี่ยวกับการปรับเปลี่ยนที่น่าตื่นเต้นที่พวกเขาได้ทำกับคำแนะนำนี้ และฉันคิดว่าฉันควรแบ่งปันกับพวกคุณทุกคน
Giacomo ได้ดัดแปลงวงจรเพื่อไม่ให้มีหม้อแปลงไฟฟ้าแบบเกลียวกลาง pcb เป็นแบบด้านเดียวและอาจเป็นวิธีแก้ปัญหาที่ถูกกว่าสำหรับผู้ที่ไม่สามารถทำสองด้านที่บ้านได้ (ค่อนข้างยาก)
ขั้นตอนที่ 5: ซอฟต์แวร์
ฉันเป็นวิศวกรซอฟต์แวร์โดยการค้าขาย ดังนั้นส่วนนี้จึงละเอียดที่สุด
Summery:เมื่อ Arduino บูทครั้งแรก เมธอด setup() จะถูกเรียก ในนั้นฉันตั้งค่าตัวแปรและตำแหน่งเอาต์พุตบางส่วนเพื่อใช้ในภายหลัง zeroCrossInterupt() ถูกเรียก/ ทำงานทุกครั้งที่ AC ข้ามจากแรงดันบวกไปเป็นลบ มันจะตั้งค่าสถานะ zeroCross สำหรับทุกช่องสัญญาณและเริ่มจับเวลา วิธีการวนซ้ำ () ถูกเรียกอย่างต่อเนื่องตลอดไป ในการเปิดเอาต์พุต TRIAC จะต้องถูกทริกเกอร์เป็นเวลา 10 ไมโครวินาทีเท่านั้น หากถึงเวลาที่ต้องทริกเกอร์ TRIAC และ zeroCross ได้เกิดขึ้น เอาต์พุตจะเปิดขึ้นจนกระทั่งสิ้นสุดเฟส AC
มีตัวอย่างบางส่วนทางออนไลน์ที่ฉันใช้ในการเริ่มต้นโครงการนี้ สิ่งสำคัญที่ฉันไม่พบคือการมีเอาต์พุต TRIAC หลายรายการ คนอื่นใช้ฟังก์ชั่นหน่วงเวลากับเอาต์พุต PWM แต่นั่นจะไม่ทำงานในกรณีของฉันเพราะ ATMEGA ต้องฟัง DMX ตลอดเวลา ฉันแก้ปัญหานี้ด้วยการเต้น TRIAC หลายๆ มิลลิวินาทีหลังจาก zero-cross โดยการดึง TRIAC ให้เข้าใกล้ศูนย์-Cross จะทำให้คลื่นบาปถูกส่งออกมากขึ้น
นี่คือสิ่งที่ครึ่งคลื่นบาป 120VAC ดูเหมือนบนออสซิลโลสโคปด้านบน
ISP814 เชื่อมต่อกับอินเตอร์รัปต์ 1 ดังนั้นเมื่อได้รับสัญญาณว่า AC เปลี่ยนจากบวกเป็นลบหรือในทางกลับกัน จะตั้งค่า zeroCross สำหรับแต่ละช่องเป็น true และเริ่มจับเวลา
ในเมธอด loop() จะตรวจสอบทุกแชนเนลว่า zeroCross เป็นจริงหรือไม่ และเวลาสำหรับการเปิดใช้งานได้ผ่านไปแล้ว จะทำให้ TRIAC ชีพจรเต้นเป็นเวลา 10 ไมโครวินาที เท่านี้ก็เพียงพอแล้วที่จะเปิด TRIAC เมื่อเปิด TRIAC แล้ว จะยังคงเปิดอยู่จนถึง zeroCross แสงจะกะพริบเมื่อ DMX อยู่ที่ประมาณ 3% ดังนั้นฉันจึงเพิ่มการตัดทอนเข้าไปเพื่อป้องกัน สิ่งนี้ทำให้ Arduino ทำงานช้าเกินไป และบางครั้งพัลส์ก็กระตุ้นคลื่นบาปถัดไปแทนที่จะเป็น 4% สุดท้ายของคลื่น
นอกจากนี้ในลูป () ฉันตั้งค่า PWM ของไฟ LED แสดงสถานะ ไฟ LED เหล่านี้สามารถใช้ PWM ภายในที่สร้างโดย Arduino ได้เนื่องจากเราไม่ต้องกังวลเกี่ยวกับ zeroCross ของ AC เมื่อตั้งค่า PWM แล้ว Arduino จะดำเนินต่อไปที่ความสว่างนั้นจนกว่าจะบอกอย่างอื่น
ตามที่ระบุไว้ในความคิดเห็นด้านบนเพื่อใช้ DMX ขัดจังหวะบนพิน 2 และทำงานที่ 20MHz คุณจะต้องแก้ไขไฟล์แอปพลิเคชัน Arduino บางไฟล์ ใน HardwareSerial.cpp โค้ดบางส่วนจะต้องถูกลบทิ้ง ซึ่งจะทำให้เราสามารถเขียนการเรียกอินเทอร์รัปต์ของเราเองได้ วิธี ISR นี้อยู่ที่ด้านล่างของโค้ดเพื่อจัดการการขัดจังหวะ DMX หากคุณกำลังจะใช้ Arduino เป็นโปรแกรมเมอร์ ISP อย่าลืมเปลี่ยนการเปลี่ยนแปลงของคุณเป็น HardwareSerial.cpp มิฉะนั้น ATMEGA328 บนบอร์ดขนมปังจะไม่สามารถเข้าถึงได้ การเปลี่ยนแปลงครั้งที่สองเป็นเรื่องที่ง่ายกว่า ไฟล์ board.txt จะต้องเปลี่ยนเป็นความเร็วสัญญาณนาฬิกา 20MHz ใหม่
ความสว่าง[ch]=แผนที่(DmxRxField[ch], 0, 265, 8000, 0);
ความสว่างจับคู่กับ 8000 เพราะนั่นคือปริมาณไมโครวินาที 1/2 ของคลื่นไซน์ AC ที่ 60Hz ดังนั้นที่ความสว่างเต็มที่ 256 DMX โปรแกรมจะปล่อย 1/2 ของ AC sine wave ON สำหรับ 8000us ฉันมากับ 8000 ผ่านการเดาและตรวจสอบ การทำคณิตศาสตร์ของ 1000000us/60hz/2 = 8333 เพื่อให้เป็นตัวเลขที่ดีกว่า แต่การมีโอเวอร์เฮด 333us พิเศษช่วยให้ TRIAC เปิดขึ้นและความกระวนกระวายใจในโปรแกรมอาจเป็นความคิดที่ดี
บน Arduino 1.5.3 พวกเขาย้ายตำแหน่งของไฟล์ HardwareSerial.cpp ตอนนี้ /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp คุณจะต้องแสดงความคิดเห็นทั้งหมดนี้หากบล็อกเริ่มต้นด้วยบรรทัดที่ 39: #if กำหนด (USART_RX_vect)
มิฉะนั้น คุณจะจบลงด้วยข้อผิดพลาดนี้: core/core.a(HardwareSerial0.cpp.o): ในฟังก์ชัน `_vector_18':
ขั้นตอนที่ 6: บรรจุหีบห่อ
ฉันหยิบกล่องโครงการสีเทาที่ Menards ในส่วนไฟฟ้าของพวกเขา ฉันใช้เลื่อยลูกสูบเพื่อตัดรูปลั๊กไฟฟ้าออก กรณีมี c-clamp โรงละครติดอยู่ด้านบนเพื่อวัตถุประสงค์ในการแขวน ไฟสถานะสำหรับทุกอินพุตและเอาต์พุตเพื่อช่วยวินิจฉัยว่ามีปัญหาหรือไม่ เครื่องติดฉลากถูกใช้เพื่ออธิบายพอร์ตต่างๆ บนอุปกรณ์ ตัวเลขข้างปลั๊กแต่ละอันแสดงถึงหมายเลขช่องสัญญาณ DMX ฉันติดแผงวงจรและหม้อแปลงด้วยกาวร้อน ไฟ LED ติดอยู่กับที่ยึด LED
แนะนำ:
Digital AC Dimmer อันทรงพลังโดยใช้ STM32: 15 ขั้นตอน (พร้อมรูปภาพ)
Digital AC Dimmer อันทรงพลังโดยใช้ STM32: โดย Hesam Moshiri, [email protected] โหลดสดกับเรา! เพราะมันมีอยู่ทุกหนทุกแห่งรอบตัวเราและอย่างน้อยเครื่องใช้ในบ้านก็มาพร้อมกับแหล่งจ่ายไฟหลัก อุปกรณ์อุตสาหกรรมหลายประเภทยังใช้ไฟฟ้ากระแสสลับแบบเฟสเดียว 220V-AC
DIY Dimmer Edge ต่อท้าย: 5 ขั้นตอน
DIY Trailing Edge Dimmer: ในโครงการนี้ เราจะเจาะลึกถึงความท้าทายด้านไฟฟ้าที่หลอดไฟ AC LED นำเสนอเมื่อต้องหรี่แสง นั่นหมายความว่าฉันจะบอกคุณเล็กน้อยเกี่ยวกับวิธีการสร้างและเราจะกำหนดความแตกต่างระหว่างขอบชั้นนำ
DIY Smart LED Dimmer ควบคุมผ่าน Bluetooth: 7 ขั้นตอน
DIY Smart LED Dimmer ควบคุมผ่าน Bluetooth: คำแนะนำนี้จะอธิบายวิธีสร้างเครื่องหรี่ดิจิตอลอัจฉริยะ สวิตช์หรี่ไฟคือสวิตช์ไฟทั่วไปที่ใช้ในบ้าน โรงแรม และอาคารอื่นๆ สวิตช์หรี่ไฟรุ่นเก่าเป็นแบบแมนนวล และโดยทั่วไปจะรวมสวิตช์แบบหมุน
ทรานซิสเตอร์ LED Dimmer: 3 ขั้นตอน
Transistor LED Dimmer: คำแนะนำนี้จะแสดงวิธีทำทรานซิสเตอร์ LED dimmer อย่างง่าย มีทางเลือกที่ถูกกว่า:https://hackaday.io/page/6955-recycled-light-dimme…:อย่างไรก็ตาม วงจรในลิงก์ ด้านบนสามารถขับไฟ LED กระแสไฟต่ำและพลังงานต่ำเท่านั้น ที
ทั้งหมดในที่เดียว · DMX Terminator & ตัวทดสอบ DMX: 3 ขั้นตอน
ทั้งหมดในที่เดียว · DMX Terminator & DMX Tester: ในฐานะช่างเทคนิคการจัดแสง บางครั้งคุณจำเป็นต้องรู้ว่าการเชื่อมต่อ dmx ของคุณมีสุขภาพที่ดีเพียงใด บางครั้ง เนื่องจากสายไฟ ตัวติดตั้งเอง หรือแรงดันไฟฟ้าที่ผันผวน ระบบ DMX จึงต้องเผชิญกับปัญหาและข้อผิดพลาดมากมาย ฉันก็เลยทำ