สารบัญ:
- ขั้นตอนที่ 1: ออกแบบเป้าหมาย
- ขั้นตอนที่ 2: การสร้างต้นแบบ:
- ขั้นตอนที่ 3: 12F609 คณะกรรมการพัฒนา
- ขั้นตอนที่ 4: ซอฟต์แวร์
- ขั้นตอนที่ 5: แอปพลิเคชันที่มีศักยภาพ
- ขั้นตอนที่ 6: สรุป
วีดีโอ: การออกแบบหลอดไฟ PWM แบบ Multi Node LED: 6 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:09
คำแนะนำนี้จะแสดงให้เห็นว่าฉันออกแบบตัวควบคุมหลอดไฟ LED PWM อย่างไร โคมไฟหลายดวงสามารถร้อยเข้าด้วยกันเพื่อสร้างสายไฟขนาดใหญ่ได้ การสร้างไฟ LED กะพริบตาสำหรับคริสต์มาสเป็นสิ่งที่ฉันต้องการมาโดยตลอด เทศกาลคริสต์มาสที่แล้ว ฉันเริ่มคิดเกี่ยวกับการสร้างอะไรบางอย่าง ความคิดแรกของฉันคือหลอดไฟ LED แต่ละดวงสามารถเชื่อมต่อกับสายไฟได้ พลังงานที่ส่งไปยังหลอดไฟ LED อาจเป็นสัญญาณไฟฟ้ากระแสสลับที่จะกวาดจากความถี่ต่ำไปเป็นความถี่สูง ตัวกรองแบนด์พาสที่ติดตั้งอยู่ในหลอดไฟแต่ละดวงจะเปิด LED เมื่อความถี่ตรงกับความถี่กลางของตัวกรองแบนด์พาส หากตัวกรองแบนด์พาสถูกตั้งค่าอย่างถูกต้อง ลำดับการไล่ล่า LED ก็สามารถทำได้ ที่จริงแล้ว โดยการข้ามไปยังความถี่ต่างๆ แทนการกวาด ไฟ LED ตัวใดตัวหนึ่งก็สามารถเปิดได้ การใช้ชิปไดรเวอร์ H-Bridge การขับความถี่ที่ต้องการลงในสายไฟไม่ควรยากเกินไป ฉันแค่มีกลิ่นเหม็นที่การออกแบบแบบอะนาล็อก - ฉันเป็นซอฟต์แวร์ที่เป็นผู้ชายมากกว่า หลังจากทดสอบแบบตั้งโต๊ะมาสองสามครั้ง ฉันก็เลิกใช้แอนะล็อกอย่างรวดเร็ว สิ่งที่ฉันต้องการจริงๆ คือหลอดไฟ LED ที่สามารถควบคุมได้อย่างเต็มที่เพื่อแสดงสีใดๆ ที่ฉันต้องการ โอ้ และมันควรจะสามารถใช้ PWM (การปรับความกว้างพัลส์) เพื่อให้สามารถเปิดหรือปิด LED ได้ในรูปแบบที่เจ๋งจริงๆ สิ่งที่ตามมาในคำแนะนำนี้คือคำอธิบายของการออกแบบที่ยอดเยี่ยมจริงๆ ที่ใช้ไมโครโปรเซสเซอร์ไมโครชิป ที่หลุดออกจากความปรารถนาของฉันสำหรับไฟต้นคริสต์มาส ดูวิดีโอด้านล่างอย่างรวดเร็วเพื่อดูว่า Kemper LED PWM Lamp Controller สามารถแสดงอะไรได้บ้าง โปรดทราบว่าเป็นการยากที่จะได้วิดีโอที่ดีของ LEDs ซึ่งใช้ PWM เพื่อควบคุมความเข้ม เป็นปัญหาเดียวกันเมื่อคุณพยายามวิดีโอจอคอมพิวเตอร์ 60Hz ของ LED เข้าสู่การต่อสู้ความถี่แบบบีตกับ 30Hz ของกล้องวิดีโอ ดังนั้น แม้ว่าจะมีบางครั้งที่วิดีโอของ LED จะ "ผิดพลาด" เล็กน้อย แต่ก็ไม่เป็นเช่นนั้นจริงๆ ดูเหมือนว่า LED จะไม่มีข้อบกพร่องใดๆ เมื่อมองด้วยสายตามนุษย์ ดูขั้นตอนซอฟต์แวร์ด้านล่างสำหรับการสนทนาเพิ่มเติมเกี่ยวกับการแตะวิดีโอของ LED
ขั้นตอนที่ 1: ออกแบบเป้าหมาย
หลังจากใช้เวลาช่วงวันหยุดคริสต์มาสเพื่อคิดเกี่ยวกับโปรเจ็กต์นี้ ฉันก็ได้รายการสินค้าที่ต้องการ นี่คือคุณสมบัติบางอย่าง (เรียงตามลำดับ) ที่ฉันต้องการด้วยตัวควบคุม LED ของฉัน:1) หลอดไฟ LED แต่ละดวงจะต้องมีราคาไม่แพงที่สุด สายไฟ 100 ดวงจะเสียค่าใช้จ่ายเป็นพวงหากโคมแต่ละดวงมีราคาสูง ต้นทุนจึงเป็นปัจจัยสำคัญ2) แต่ละหลอดจะมีไมโครขนาดเล็กบนบอร์ดซึ่งจะขับ LED ไมโครขนาดเล็กจะสร้างสัญญาณ PWM เพื่อให้ไฟ LED หรี่ลงหรือจางลง ไฟ LED อาจดูแข็งเมื่อเปิดและปิด การใช้สัญญาณ PWM ทำให้ LED จางขึ้นและลงได้โดยไม่มีขอบแข็งตามปกติสำหรับ LED3) เพื่อให้การเดินสายเป็นเรื่องง่าย โคมไฟแต่ละดวงจะยอมรับคำสั่งโดยใช้อินเทอร์เฟซแบบสองสาย พลังงานและการสื่อสารจะใช้สองสายเดียวกัน คำสั่งไปยังหลอดไฟจะบอกไมโครออนบอร์ดว่า LED ตัวใดที่จะขับด้วย PWM.4) ต้องดูดี! ฉันเดาว่ามันควรจะถูกจัดลำดับใหม่ ดังนั้นมันจึงเป็นอันดับหนึ่ง นี่คือเป้าหมายการออกแบบเล็กน้อย (ไม่เรียงลำดับเฉพาะ):1) สำหรับการพัฒนา จะต้องง่ายต่อการ reflash / reprogram ในวงจร 2) PC ควรจะสามารถ สร้างคำสั่งไปยังโคมไฟ ทำให้รูปแบบการพัฒนาง่ายกว่าการใช้ไมโครไมโครฝังตัวอื่น 3) โคมไฟแต่ละดวงควรมีที่อยู่ที่ไม่ซ้ำกัน LED แต่ละดวงภายในหลอดไฟจะต้องระบุแอดเดรสได้ไม่ซ้ำกัน 4) โปรโตคอลคำสั่งควรสนับสนุนหลอดไฟจำนวนมากบนสายไฟเส้นเดียว การออกแบบปัจจุบันรองรับหลอด 128 หลอดในหนึ่งสาย ด้วยไฟ LED 4 ดวงต่อหนึ่งหลอดที่ใช้งานได้ถึง 512 LED บนสายไฟสองเส้น! นอกจากนี้โปรดทราบว่า LED 512 ดวงแต่ละตัวมี PWM เต็มรูปแบบขับเคลื่อน 5) โปรโตคอลควรมีคำสั่งที่ระบุว่า "เริ่มทำให้ LED จางลงจากระดับนี้ไปยังระดับนั้น" เมื่อเริ่มซีดจาง ไฟ LED อื่นๆ ยังสามารถตั้งค่าและตั้งค่าให้ซีดจางบนหลอดไฟเดียวกันได้ กล่าวอีกนัยหนึ่ง ตั้งค่า LED ให้เป็นรูปแบบซีดจางแล้วลืมไปโดยรู้ว่า LED จะดำเนินการตามคำสั่ง นี่หมายถึงซอฟต์แวร์มัลติทาสกิ้งบน micro!6) ควรมีคำสั่งทั่วโลกที่ส่งผลต่อหลอดไฟทั้งหมดในคราวเดียว ดังนั้น ไฟ LED ทั้งหมดสามารถสั่งการได้โดยใช้คำสั่งเดียว ต่อไปนี้เป็นเป้าหมายการออกแบบเล็กน้อยจริงๆ (อีกครั้ง ไม่มีลำดับเฉพาะ):1) ต้องการวิธีที่จะรายงานหลอดไฟกลับเมื่อมีข้อผิดพลาดในการสื่อสารเกิดขึ้น ซึ่งจะทำให้คำสั่งถูกส่งกลับได้2) โปรโตคอลคำสั่งต้องการวิธีที่จะมีรูปแบบการจับคู่ทั่วโลกที่สวยงาม ซึ่งจะทำให้สามารถเลือกหลอดไฟได้ทุกๆ x จำนวนด้วยคำสั่งเดียว ซึ่งจะทำให้ง่ายต่อการสร้างรูปแบบการไล่ล่าด้วยโคมไฟจำนวนมาก ตัวอย่างเช่น สิ่งนี้จะอนุญาตให้ส่งคำสั่งไปยังหลอดที่สามทุกดวงบนสายตะเกียง จากนั้นคำสั่งถัดไปจะถูกส่งไปยังกลุ่มถัดไปของสาม 3) ระบบลอจิกตรวจจับขั้วคอมอัตโนมัติก็เยี่ยมเช่นกัน จากนั้น ขั้วของสายป้อนทั้งสองเข้ากับหลอดไฟ LED จะไม่มีความสำคัญ ดูส่วนฮาร์ดแวร์สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคุณลักษณะนี้
ขั้นตอนที่ 2: การสร้างต้นแบบ:
ตอนนี้เป็นช่วงต้นเดือนมกราคมและฉันไป ฉันพบ 10F206 ที่ Digikey และราคาถูกจริงๆ! ดังนั้นฉันจึงหมุนบอร์ดโปรโตเพื่อเก็บไมโคร 10F206 micro จากไมโครชิป ฉันออกแบบบอร์ดด่วนเพราะ 10F2xx ไม่มีในแพ็คเกจ DIP สรุป ผมไม่อยากยุ่งกับชิปตัวเล็กๆ (ฉันมั่นใจมากเมื่อเดือนมกราคม) ฉันก็ออกไปซื้อคอมไพเลอร์ CSS C ใหม่ที่กำหนดเป้าหมายไปที่ไมโคร 10F2xx ชิปตระกูล 10F2xx ราคาถูกมาก! ด้วยความหวังสูง ฉันจึงดำดิ่งลงไปและเริ่มเขียนโค้ดจำนวนมาก 10F206 มี RAM ขนาดมหึมา 24 ไบต์ - ชิปยังมีแฟลช 512 ไบต์และตัวจับเวลาแปดบิตหนึ่งตัว แม้ว่าทรัพยากรจะเบาบาง แต่ราคาก็ดีอยู่ที่ 41 เซ็นต์ในปริมาณมาก เอ้ย ล้านคำสั่งต่อวินาที (1 MIPS) ในราคา 41 เซ็นต์! ฉันชอบกฎของมัวร์ Evan ในราคาเดียว 10F206 จาก Digikey อยู่ที่ 66 เซ็นต์ ฉันใช้เวลามากมายในการทำงานกับ 10F206 ขณะทำงานกับ 10F206 ฉันพบว่าการทำงานหลายอย่างพร้อมกันนั้นเป็นสิ่งจำเป็นอย่างยิ่ง สัญญาณเอาท์พุต PWM ต้องได้รับการอัปเดตอยู่เสมอแม้ในขณะที่ได้รับข้อความการสื่อสารใหม่ การหยุดชะงักในการอัปเดตสัญญาณ PWM จะถูกมองว่าเป็นความผิดพลาดของ LED ตามนุษย์มองเห็นจุดบกพร่องได้ดีมาก มีปัญหาพื้นฐานสองสามประการกับชิป 10F206 อย่างน้อยปัญหาพื้นฐานสำหรับการสมัครของฉัน ปัญหาแรกคือไม่มีการขัดจังหวะ! การเริ่มต้นของการสื่อสารใหม่โดยใช้การวนรอบการโพลทำให้เกิดข้อผิดพลาดด้านเวลา ปัญหาที่สองคือมีตัวจับเวลาเพียงตัวเดียว ฉันไม่สามารถหาวิธีรับคำสั่งในขณะที่รักษาเอาต์พุต PWM ได้ ไฟ LED จะผิดพลาดทุกครั้งที่ได้รับคำสั่งใหม่ การแชร์ตัวจับเวลาระหว่างการรับคำสั่งและการขับเอาต์พุต PWM ก็เป็นความยุ่งยากของซอฟต์แวร์ที่สำคัญเช่นกัน ฉันไม่สามารถรีเซ็ตตัวจับเวลาในขณะที่รับตัวละครใหม่ได้ เนื่องจากตัวจับเวลายังถูกใช้เพื่อควบคุมสัญญาณ PWM ในขณะที่ทำงานกับ 10F206 ฉันเห็นบทความใน Circuit Cellar เกี่ยวกับไมโคร MC9RS08KA1 จิ๋วตัวใหม่ของ Freescale ฉันชอบชิป Freescale - ฉันเป็นแฟนตัวยงของการดีบัก BDM ในอดีตฉันใช้ชิป Star12 เป็นจำนวนมาก (ฉันเขียนซอฟต์แวร์ทั้งหมดสำหรับระบบอัลตราโซนิก GM Cadillac & Lacern บน Star12 - ซอฟต์แวร์อัลตราโซนิกของฉันอยู่ในระหว่างการผลิตในรถสองคันนี้) ดังนั้นฉันจึงหวังเป็นอย่างยิ่งว่าชิปตัวใหม่ของพวกเขาจะดี ราคาก็ถูกเช่นกัน Digikey มีชิปเหล่านี้อยู่ที่ 38 เซ็นต์ในปริมาณมาก Freescale ดีและส่งตัวอย่างฟรีให้ฉัน อย่างไรก็ตาม ชิป Freescale 9RS08 นั้นดูงี่เง่าจริง ๆ - ฉันไม่สามารถทำอะไรกับมันได้มากนัก ชิปยังประสบปัญหาขาดการขัดจังหวะและตัวจับเวลาเพียงตัวเดียว อย่างน้อยฉันก็คิดออกโดยไม่ต้องเสียเงินกับการหมุนบอร์ดโปรโตอีกอัน ดูภาพด้านล่าง ตอนนี้ฉันรู้แล้ว - สำหรับแอปพลิเคชันของฉัน ฉันต้องมีอินเตอร์รัปต์และตัวจับเวลามากกว่าหนึ่งตัว กลับไปที่ Microchip ฉันพบชิป 12F609 มีการขัดจังหวะและตัวจับเวลาสองตัว นอกจากนี้ยังมีแฟลช 1K และ RAM 64 ไบต์ ข้อเสียคือราคา Digikey แสดงรายการชิปเหล่านี้ที่ 76 เซ็นต์ในปริมาณมาก อืม กฎของมัวร์จะจัดการมันในไม่ช้า ในด้านบวก สามารถสั่งซื้อ 12F609 ในแพ็คเกจ DIP ได้ ในด้านลบ ฉันต้องซื้อคอมไพเลอร์อัพเลเวลถัดไป ซึ่งนั่นทำให้ @#$% ของฉันพัง&.ตอนนี้เป็นเดือนเมษายน และฉันได้เรียนรู้มากมายเกี่ยวกับสิ่งที่ใช้ไม่ได้ผล ฉันได้หมุนกระดานและเสียเงินกับคอมไพเลอร์ที่ฉันไม่ต้องการ ถึงกระนั้น การทดสอบจนถึงตอนนี้ก็ยังเป็นกำลังใจ ด้วยคอมไพเลอร์ใหม่และชิป 12F209 ในแพ็คเกจ DIP การทดสอบระดับบัลลังก์ดำเนินไปอย่างรวดเร็ว การทดสอบยืนยันว่าฉันมีชิปที่ถูกต้อง ได้เวลาหมุนบอร์ดโปรโตอีกแล้ว! ณ จุดนี้ฉันตั้งใจแน่วแน่
ขั้นตอนที่ 3: 12F609 คณะกรรมการพัฒนา
โอเค การทดสอบใหม่แบบตั้งโต๊ะ ฉันพร้อมที่จะลองหมุนบอร์ดใหม่แล้ว ในการออกแบบบอร์ดนี้ ฉันอยากลองแนวคิดในการส่งกำลังและการสื่อสารผ่านสายไฟสองเส้นเดียวกัน หากละเว้นข้อผิดพลาดของการสื่อสาร จะต้องใช้เพียงสองสายเท่านั้น นั่นเป็นเพียงเย็นขวา! ในขณะที่ส่งการสื่อสารผ่านสายไฟก็ไม่จำเป็น โคมไฟทั้งหมดสามารถเชื่อมต่อเข้าด้วยกันด้วยสายไฟเส้นเดียวหากต้องการ นี่หมายความว่าแต่ละหลอดจะต้องมีสายไฟสามเส้นพร้อมสายสถานะป้อนกลับที่เป็นตัวเลือกที่สี่ ดูแผนภาพด้านล่าง สามารถรวมกำลังและการสื่อสารโดยใช้ H-Bridge แบบธรรมดา H-Bridge สามารถขับกระแสน้ำขนาดใหญ่ได้โดยไม่มีปัญหาใดๆ ไฟ LED กระแสสูงจำนวนมากสามารถร้อยเข้าด้วยกันด้วยสายไฟเพียงสองเส้นเท่านั้น สามารถเปลี่ยนขั้วไฟฟ้ากระแสตรงไปยังหลอดไฟได้อย่างรวดเร็วด้วย H-Bridge ดังนั้นแต่ละหลอดจึงใช้สะพานคลื่นเต็มเพื่อแก้ไขการสลับ DC กลับเป็นพลังงาน DC ปกติ ไมโครพินตัวใดตัวหนึ่งเชื่อมต่อกับไฟกระแสตรงสวิตชิ่งขาเข้าแบบดิบ เพื่อให้สามารถตรวจจับสัญญาณคอมม์ได้ ตัวต้านทานจำกัดกระแสจะป้องกันอินพุตดิจิตอลบนไมโคร ภายในไมโครอินพุตพิน แรงดันไฟตรงแบบสวิตชิ่งแบบดิบจะถูกจับยึดโดยใช้ไดโอดแคมป์ภายในของไมโคร - ไดโอดเหล่านี้ยึด DC สวิตชิ่ง (ศูนย์ถึงโวลต์ Vcc) สะพานคลื่นเต็มซึ่งกำลังแก้ไขกำลังที่เข้ามาจะสร้างไดโอดสองหยด ไดโอดสองตัวที่หยดจากบริดจ์นั้นสามารถเอาชนะได้โดยการปรับแรงดันไฟฟ้าของ H-Bridge แรงดันไฟฟ้า H-Bridge หกโวลต์ให้แหล่งจ่ายห้าโวลต์ที่ดีที่ไมโคร ตัวต้านทานจำกัดแต่ละตัวจะถูกใช้เพื่อตัดกระแสผ่าน LED แต่ละตัว สคีมากำลัง / การสื่อสารนี้ดูเหมือนว่าจะทำงานได้ดีมาก ฉันยังต้องการลองเพิ่มเอาท์พุตทรานซิสเตอร์ระหว่างไมโครและไฟ LED ในระหว่างการทดสอบแบบตั้งโต๊ะ หาก 12F609 ถูกผลักอย่างหนัก (กระแสไฟมากเกินไปในเส้นทางเอาต์พุต) เอาต์พุตทั้งหมดจะกะพริบ กระแสไฟสูงสุดสำหรับชิปทั้งหมดตามแผ่นข้อมูลที่ 12F609 สามารถรองรับได้คือ 90mA ทั้งหมด นั่นจะไม่ทำงาน! ฉันอาจต้องการกระแสมากกว่านี้ การเพิ่มทรานซิสเตอร์ทำให้ฉันมีความสามารถ 100mA ต่อ LED สะพานไดโอดได้รับการจัดอันดับที่ 400mA ดังนั้น 100mA ต่อความสามารถของ LED ก็พอดี มีข้อเสียคือ ทรานซิสเตอร์ราคา 10 เซ็นต์ แต่ละตัว อย่างน้อยทรานซิสเตอร์ที่ฉันเลือกได้สร้างตัวต้านทาน - หมายเลขชิ้นส่วน Digikey คือ MMUN2211LT1OSCT-ND เมื่อทรานซิสเตอร์เข้าที่ จะไม่มีไฟ LED กะพริบ สำหรับหลอดไฟที่ใช้งานจริง ฉันคิดว่าไม่จำเป็นต้องใช้ทรานซิสเตอร์หากใช้ LED 20mA "ปกติ" บอร์ดพัฒนาที่ออกแบบในขั้นตอนนี้มีไว้สำหรับการทดสอบและพัฒนาเท่านั้น บอร์ดอาจมีขนาดเล็กกว่ามากหากใช้ตัวต้านทานที่เล็กกว่า การกำจัดทรานซิสเตอร์จะช่วยประหยัดพื้นที่บอร์ดได้เช่นกัน พอร์ตการเขียนโปรแกรมในวงจรสามารถถอดออกสำหรับแผงการผลิตได้ ประเด็นหลักของบอร์ดพัฒนาคือเพื่อพิสูจน์แผนพลังงาน/การสื่อสาร อันที่จริง หลังจากได้รับบอร์ดแล้ว ฉันพบว่ามีปัญหากับเลย์เอาต์ของบอร์ด ชิปบริดจ์แบบเต็มคลื่นมีพินเอาต์ที่โง่เขลา ฉันต้องตัดสองร่องรอยและเพิ่มสายจัมเปอร์สองเส้นที่ด้านล่างของแต่ละบอร์ด นอกจากนี้ ร่องรอยของไฟ LED และขั้วต่อยังบางเกินไป อืม ใช้ชีวิตและเรียนรู้ จะไม่ใช่ครั้งแรกที่ฉันทำเลย์เอาต์บอร์ดใหม่ ฉันมีบอร์ดแปดบอร์ดที่สร้างโดยใช้ BatchPCB พวกเขามีราคาที่ดีที่สุด แต่พวกเขา sloooow มาก ต้องใช้เวลาหลายสัปดาห์กว่าจะได้กระดานคืน อย่างไรก็ตาม หากราคาของคุณอ่อนไหว BatchPCB เป็นวิธีเดียวที่จะไปได้ อย่างไรก็ตาม ฉันจะเปลี่ยนกลับไปใช้ AP Circuits ซึ่งเร็วมาก ฉันแค่หวังว่าพวกเขาจะมีวิธีที่ถูกกว่าในการจัดส่งกระดานออกจากแคนาดา AP Circuits ส่งเงินให้ฉัน 25 เหรียญสำหรับการสั่งซื้อแต่ละครั้ง มันเจ็บถ้าฉันซื้อกระดานมูลค่า 75 เหรียญเท่านั้น ฉันต้องใช้เวลาสองวันในการประสานกระดานเล็กๆ แปดแผ่น ใช้เวลาอีกวันในการหาว่าตัวต้านทานแบบดึงขึ้น R6 (ดูแผนผัง) กำลังยุ่งกับฉัน ฉันเดาว่าไม่จำเป็นต้องใช้ตัวต้านทาน R6 ฉันกังวลหลังจากอ่านแผ่นข้อมูลและระบุว่าไม่มีการดึงข้อมูลไมโครภายในบนพินอินพุตนี้ ในการออกแบบของฉัน หมุดถูกขับเคลื่อนอย่างแข็งขันตลอดเวลา ดังนั้นจึงไม่จำเป็นต้องดึงขึ้น ในการส่งคำสั่งไปยังบอร์ด ฉันใช้ข้อความ 9600-baud ง่ายๆ จากโปรแกรม Python RS232 ดิบที่ออกมาจากพีซีจะถูกแปลงเป็น TTL โดยใช้ชิป MAX232 สัญญาณ RS232 TTL ไปที่อินพุตควบคุม H-Bridge RS232 TTL ยังผ่านประตูอินเวอร์เตอร์ในชิป 74HC04 จากนั้น RS232 แบบกลับด้านจะไปยังอินพุตควบคุม H-Bridge อีกช่องหนึ่ง ดังนั้น หากไม่มีทราฟฟิก RS232 H-Bridge จะส่งสัญญาณออก 6 โวลต์ สำหรับแต่ละบิตบน RS232 H-Bridge จะพลิกขั้วเป็น -6 โวลต์ตราบเท่าที่บิต RS232 ยังคงอยู่ ดูภาพแผนภาพบล็อกด้านล่าง มีการแนบโปรแกรม Python ด้วย สำหรับ LED ฉันซื้อพวงจาก https://beshongkong.com พวกเขามีไฟ LED สว่าง 120 องศาในสีแดง/เขียว/น้ำเงิน/ขาว จำไว้ว่าไฟ LED ที่ฉันใช้นั้นใช้สำหรับการทดสอบเท่านั้น ฉันซื้อสีละ 100 นี่คือตัวเลขสำหรับไฟ LED ที่ฉันใช้:สีน้ำเงิน: 350mcd / 18 cents / 3.32V @ 20mAGreen: 1500mcd / 22 cents / 3.06V @ 20mAWhite: 1500mcd / 25 cents / 3.55V @ 20mARed: 350mcd / 17 cents / 2.00V @ 20mAU ใช้ไฟ LED ทั้งสี่นี้เพื่อเติมหลอดไฟ พวกมันรวมค่าใช้จ่ายได้มากเท่ากับไมโครที่ 82 เซ็นต์! อุ๊ย
ขั้นตอนที่ 4: ซอฟต์แวร์
ซอฟต์แวร์ทำให้โครงการนี้เป็นจริง!ซอร์สโค้ดใน 12F609 นั้นซับซ้อนจริงๆ ฉันใช้ตำแหน่งหน่วยความจำล่าสุด! รหัสของฉันใช้ 64 ไบต์ทั้งหมดแล้ว ฉันมีแฟลชเหลืออยู่ 32 ไบต์เหลือเฟือ ดังนั้นฉันจึงใช้ RAM 100% และแฟลช 97% อย่างไรก็ตาม มันน่าทึ่งมากที่ฟังก์ชันที่คุณได้รับจากความซับซ้อนทั้งหมดนั้น การสื่อสารไปยังหลอดไฟแต่ละดวงถูกเก็บถาวรโดยการส่งแพ็กเก็ตข้อมูลขนาดแปดไบต์ แพ็กเก็ตข้อมูลแต่ละแพ็กเก็ตลงท้ายด้วยเช็คซัม - จริงๆ แล้ว มีข้อมูลเจ็ดไบต์บวกกับเช็คซัมสุดท้าย ที่ 9600 บอด หนึ่งแพ็กเก็ตข้อมูลใช้เวลาเพียง 8 มิลลิวินาทีกว่าจะมาถึง เคล็ดลับคือการทำงานหลายอย่างพร้อมกันในขณะที่แพ็คเก็ตไบต์กำลังมาถึง หากไฟ LED ใดทำงานด้วยสัญญาณ PWM เอาต์พุต PWM จะต้องได้รับการอัปเดตแม้ในขณะที่รับแพ็คเก็ตใหม่ นั่นคือเคล็ดลับ ฉันใช้เวลาหลายสัปดาห์และหลายสัปดาห์ในการแยกแยะ ฉันใช้เวลาอย่างมากในการทำงานกับ Logiport LSA ของฉันเพื่อพยายามติดตามแต่ละบิต นี่คือรหัสที่ซับซ้อนที่สุดเท่าที่ฉันเคยเขียนมา เป็นเพราะไมโครมีจำกัด สำหรับไมโครที่มีประสิทธิภาพมากกว่า การเขียนโค้ดแบบหลวม/ง่าย และไมโครริปที่รวดเร็วโดยไม่บ่น ด้วย 12F609 รหัสหลวม ๆ ที่คุณเสียค่าใช้จ่ายมากมาย ซอร์สโค้ดไมโครทั้งหมดเขียนด้วยภาษา C ยกเว้นรูทีนบริการขัดจังหวะ ทำไมต้องมีแพ็คเก็ตข้อมูลขนาดใหญ่ที่คุณอาจถาม เพราะเราต้องการให้ไฟ LED ขึ้นและลงตามความเหมาะสม เมื่อโหลดโปรไฟล์ทางลาดแล้ว LED สามารถดับและเริ่มเพิ่มได้แม้ในขณะที่ได้รับคำสั่งใหม่สำหรับ LED อื่น โคมไฟแต่ละดวงจะต้องรับและถอดรหัสการรับส่งข้อมูลของแพ็กเก็ตข้อมูลทั้งหมด แม้ว่าแพ็กเก็ตจะไม่ได้มีไว้สำหรับมันก็ตาม โปรไฟล์ LED ประกอบด้วยระดับเริ่มต้น เวลาเริ่มหยุดนิ่ง อัตราลาด ระดับบนสุด เวลาการหยุดนิ่งบนสุด อัตราการลดระดับลง ระดับล่างสุด. ดูไดอะแกรมที่แนบมา ว้าว นั่นเป็นจำนวนมากสำหรับหนึ่ง LED ทีนี้ คูณมันด้วยจำนวน LED มันมากเกินไป - ฉันสามารถติดตามไฟ LED สามดวงที่มีโปรไฟล์ทางลาดเต็มรูปแบบเท่านั้น ไฟ LED ดวงที่สี่ (ไฟ LED สีขาวบนบอร์ด dev) มีเพียงทางลาดจาก/ถึงความสามารถเท่านั้น เป็นการประนีประนอม ดูรูปโปรไฟล์ทางลาดที่แนบมา สัญญาณ PWM ถูกสร้างขึ้นจากตัวจับเวลาที่ทำงานที่ 64uS ต่อขีด ตัวจับเวลาแปดบิตจะหมุนทุกๆ 16.38mS ซึ่งหมายความว่าสัญญาณ PWM กำลังทำงานที่ 61.04Hz ไม่ดีสำหรับการแตะวิดีโอ! ดังนั้นฉันจึงใช้เคล็ดลับซอฟต์แวร์และเพิ่มขึ้นอีกสองสามตัวในตัวจับเวลาเพื่อขยายเป็น 60Hz สิ่งนี้ทำให้การแตะวิดีโอดูดีขึ้นมาก ในการโรลโอเวอร์ของตัวจับเวลา PWM (16.67mS) แต่ละครั้ง ฉันจะอัปเดตโปรไฟล์ทางลาด ดังนั้นแต่ละขีดทางลาด/การอยู่อาศัยคือ 1/60 วินาทีหรือ 60Hz ส่วนโปรไฟล์ที่ยาวที่สุด (โดยใช้จำนวน 255) จะใช้เวลา 4.25 วินาที และส่วนที่สั้นที่สุด (โดยใช้การนับ 1) จะใช้เวลา 17 มิลลิวินาที นี้จะช่วยให้ช่วงที่ดีในการทำงานภายใน ดูรูปที่แนบมาจากตัววิเคราะห์ลอจิก หากต้องการดูรายละเอียดในภาพจริงๆ ให้เปิดภาพในโหมดความละเอียดสูง การดำเนินการนี้ใช้เวลาสองสามคลิกเพิ่มเติมในเว็บไซต์ที่สอนได้ นอกจากนี้ยังมีภาพวาดของโปรไฟล์ที่แสดงด้านล่าง การจัดทำเอกสารโปรโตคอลคำสั่งอยู่ในรายการสิ่งที่ต้องทำของฉัน ฉันวางแผนที่จะเขียนเอกสารประเภทแผ่นข้อมูลเพื่ออธิบายโปรโตคอลอย่างสมบูรณ์ ฉันได้เริ่มต้นแผ่นข้อมูลสำหรับชิปแล้ว - เวอร์ชันเบื้องต้นอยู่ในเว็บไซต์ของฉันแล้ว
ขั้นตอนที่ 5: แอปพลิเคชันที่มีศักยภาพ
ไฟต้นคริสต์มาส:แน่นอน ฉันคิดว่าต้นไม้ที่เต็มไปด้วยทารกเหล่านี้คงจะยอดเยี่ยมมาก ฉันสามารถจินตนาการถึงแสงสีเขียวอันอบอุ่นที่มีหิมะโปรยปรายตกลงมาบนต้นไม้ อาจจะค่อยๆ จางหายไปจากสีเขียวเป็นสีแดงพร้อมกับหิมะที่ตกลงมาแบบสุ่ม ไฟเชเซอร์สร้างลวดลายเป็นเกลียวขึ้นและลงต้นไม้ก็ดูเรียบร้อยเช่นกัน แย่จัง ฉันจะไปจอดต้นไม้ต้นนี้ในสนาม แล้วขับให้ "โจนส์" ข้างบ้านบ้าไปเลย ลองเอาชนะมันดูสิ! Accent Lighting: ทุกสิ่งที่ต้องการแสงเน้นเป็นเป้าหมายสำหรับโคมไฟเหล่านี้ พี่เขยของฉันต้องการวางไว้ที่ก้นตู้ปลาของเขา เพื่อนคนหนึ่งต้องการเน้นเครื่องยนต์แบบแท่งร้อนของเขา - การเหยียบคันเร่งจะทำให้แสงสีแดงวาบขึ้น ฉันกำลังพิจารณาที่จะสร้างหนึ่งในสิ่งเหล่านี้ด้วยโคมไฟของฉัน: https://www.instructables.com/id/LED_Paper_Craft_Lamps/ น่าจะเป็นโครงการ Cub Scouts ที่ยอดเยี่ยม สายไฟ LED แบบพับได้: สายไฟ LED สามารถพับเป็นรูปทรงได้ โคมไฟเจ็ดดวงสามารถพับเป็นรูปแบบ LED เจ็ดส่วนได้ สามารถสร้างจอแสดงผลขนาดใหญ่ได้ - จะเป็นการนับถอยหลังที่ยอดเยี่ยมสำหรับปีใหม่! หรืออาจเป็นการแสดงตลาดหุ้น - ตัวเลขสีแดงในวันที่เลวร้ายและสีเขียวในวันที่ดี อาจเป็นจอแสดงผลขนาดใหญ่ที่แสดงอุณหภูมิภายนอก ตาราง 3 มิติ โดยการแขวนและจัดเรียงสตริงของไฟ LED สามารถสร้างตาราง 3 มิติของไฟ LED ได้อย่างง่ายดาย มีตัวอย่างอาร์เรย์ 3D LED ที่ยอดเยี่ยมบน YouTube อย่างไรก็ตาม ตัวอย่างที่มีอยู่แล้วที่ฉันได้เห็นนั้นดูเล็กและเจ็บปวดเมื่อต่อสาย อาจมีตาราง 3D ขนาดใหญ่ที่สนามในช่วงคริสต์มาสด้วย ปลั๊กอิน WinAmp:ทุกคนที่อยู่ในห้องทดลองของฉัน และได้เห็นแสงไฟ จะถามว่าพวกเขาเต้นไปกับเสียงเพลงไหม ฉันขุดดูเล็กน้อย ดูเหมือนว่าจะค่อนข้างง่ายในการเพิ่มปลั๊กอินใน WinAmp ปลั๊กอินจะส่งข้อความไปยังหลอดไฟที่แนบมาเพื่อให้ไฟซิงค์กับเพลงที่ WinAmp กำลังเล่นอยู่ การซิงค์เพลงคริสต์มาสกับต้นคริสต์มาสของฉันจะยอดเยี่ยมมากEmbedded Baby Orangutan B-328 Robot Controller with H-Bridge: ตัวควบคุมตัวน้อยจาก Pololu จะสมบูรณ์แบบ ดู: https://www.pololu.com/catalog/product/1220 บอร์ดนี้มี H-Bridge พร้อมใช้งานแล้ว รูปแบบหลอดไฟสามารถตั้งโปรแกรมลงในไมโครเพื่อให้สามารถปิดพีซีได้ 802.15.4:การเพิ่ม 802.15.4 หลอดไฟอาจกลายเป็นไร้สายได้ สำหรับไฟต้นคริสต์มาสที่กระจายอยู่รอบๆ บ้าน นี่จะดีมาก หรือจะเพิ่มโคมไฟให้กับหน้าต่างทุกบานในอาคารขนาดใหญ่ก็ได้ Cool.rotating 'Lighthouse Beacon: ลูกชายของฉันมีโครงการโรงเรียนเพื่อสร้างประภาคาร แนวคิดคือการสร้างไฟที่ใช้แบตเตอรี่วิเศษด้วยสวิตช์คลิปหนีบกระดาษเพื่อให้ประภาคารสว่างขึ้นจริง ไม่มีลูกชายของฉันจะไปโรงเรียนด้วยสิ่งนั้นเมื่อเขาสามารถมีสัญญาณหมุนได้เต็มที่! ดูภาพและวิดีโอที่แนบมา
ขั้นตอนที่ 6: สรุป
มันทำให้ฉันประหลาดใจจริงๆ ที่หลอดไฟแต่ละดวงมีแรงม้า 2 MIPS ใน SOIC-8 ในราคา 80 เซ็นต์ เมื่อสายไฟยาวขึ้นโดยการเพิ่มหลอดไฟจำนวนมากขึ้น ปริมาณ MIPS บนสายไฟก็เพิ่มขึ้นเช่นกัน กล่าวอีกนัยหนึ่งนี่คือการออกแบบที่ปรับขนาดได้ หลอดไฟ 16 ดวงส่งเสียงฮัมพร้อมกับพลังการประมวลผล 32 MIPS น่าอัศจรรย์เพียง ยังมีงานอีกมากที่ต้องทำ บอร์ดพัฒนาจำเป็นต้องปรับปรุง มีข้อบกพร่องของเลย์เอาต์สองสามข้อที่ต้องแก้ไข ดูเหมือนว่าการเดินสายเอาต์พุตข้อผิดพลาดของการสื่อสารจะไม่ทำงานกับเอาต์พุตของทรานซิสเตอร์ ยังไม่แน่ใจว่าทำไม - ฉันยังไม่ได้ใช้เวลาในการแยกแยะ รหัสการสื่อสารที่รับต้องการการทำงานอีกเล็กน้อยเช่นกัน เมื่อดูไฟ LED ฉันพบว่ามีข้อผิดพลาดในการสื่อสารอยู่บ่อยครั้ง ปรากฏว่ามีข้อผิดพลาดแบบสุ่มโดยเฉลี่ยหนึ่งข้อผิดพลาดต่อข้อความ 1,000 ข้อความ ฉันต้องการหาผู้ผลิต SMD ที่ยินดีทำแผงโคมไฟให้ฉัน บางที Spark Fun อาจสนใจ? ฉันมีเพื่อนในฮ่องกงที่อาจหาสินค้าให้ฉันได้ การประกอบบอร์ดต้องเป็นไปโดยอัตโนมัติ เป็นไปไม่ได้ที่จะสร้างบอร์ดเหล่านี้ด้วยมือเหมือนที่ฉันทำ ต้องมีการพัฒนาบอร์ดอินเทอร์เฟซสำหรับพีซี สิ่งนี้น่าจะง่ายจริง ๆ - เป็นเพียงเรื่องของเวลาในการทำงานให้เสร็จ ต้นทุนคือราชา - ต้นทุนหลอดไฟที่ลดลง (80 เซ็นต์สำหรับไมโคร + ไฟ LED สามดวงที่ 10 เซ็นต์แต่ละอัน + บอร์ด / ตัวต้านทาน / สะพานไดโอด 20 เซ็นต์) ทั้งหมดอาจจะ 1.50 เหรียญ เพิ่มการประกอบ การเดินสายไฟ และผลกำไร และเรากำลังพูดถึง $2.00 ถึง $2.50 ต่อหลอด geeks จะจ่าย $ 40 bucks สำหรับสตริงหลอด RGB 16 ดวงบนสตริงหรือไม่บรรทัดล่างสุดฉันหวังว่าจะมีความสนใจจากฝูงชน DIY ด้วยการตอบรับเชิงบวก ฉันจะเดินหน้าเปลี่ยนแนวคิดนี้เป็นผลิตภัณฑ์ต่อไป ฉันสามารถจินตนาการถึงการขายชิป บอร์ดสำหรับพัฒนาหลอดไฟ และสายไฟทั้งหมด ให้คำติชมและแจ้งให้เราทราบว่าคุณคิดอย่างไร สำหรับข้อมูลเพิ่มเติมและข่าวสารการพัฒนาอย่างต่อเนื่อง โปรดเยี่ยมชมเว็บไซต์ของฉันที่ https://www.powerhouse-electronics.comขอบคุณ Jim Kemp
แนะนำ:
สมาร์ทโฟน Android แบบ USB (!!) เว็บแคม: 8 ขั้นตอน (พร้อมรูปภาพ)
สมาร์ทโฟน Android แบบ USB (!!) เว็บแคม: ในช่วงสองสามเดือนที่ผ่านมา เราทุกคนถูกบังคับให้สื่อสารออนไลน์มากกว่าที่จะติดต่อด้วยตนเอง ในฐานะนักเรียน การบรรยายส่วนใหญ่ของฉันกลายเป็นการประชุมของ Zoom และเช่นเดียวกันกับชั่วโมงการสอนของฉัน ในอีกไม่กี่สัปดาห์ข้างหน้า นักเรียนจำนวนมากทุกวัยจะ
เครื่องส่งสัญญาณ RC จาก Arduino แบบ 3 มิติ: 25 ขั้นตอน (พร้อมรูปภาพ)
เครื่องส่งสัญญาณ RC แบบใช้ Arduino แบบพิมพ์ 3 มิติ: โครงการนี้จะแสดงให้คุณเห็นว่าฉันออกแบบและสร้างเครื่องส่งสัญญาณ RC ที่ใช้ Arduino ได้อย่างไร เป้าหมายของฉันสำหรับโครงการนี้คือการออกแบบเครื่องส่งสัญญาณ RC แบบพิมพ์ได้ 3 มิติที่ฉันสามารถใช้ควบคุมโครงการ Arduino อื่น ๆ ได้ ฉันต้องการให้คอนโทรลเลอร์เป็น
การควบคุม PWM แบบ Bluetooth 6 เอาต์พุต = 800W: 5 ขั้นตอน
Bluetooth PWM Control 6 Outputs = 800W: วัตถุประสงค์ของโครงการคือเพื่อให้คุณควบคุมการโหลดประเภทใดก็ได้ด้วย Bluetooth แบบรางโทรศัพท์ Android ที่ง่ายและรวดเร็ว โหลดอาจเป็นมอเตอร์ ไฟ LED แถบ ไฟ โซลินอยด์ ปั๊ม และโหลดประเภท R, L หรือ C อื่นๆ นอกจากนี้ ขอบคุณ mul ของ POWER SHIELD
หลอดไฟ LED RGB แบบ Up-Cycled: 6 ขั้นตอน (พร้อมรูปภาพ)
หลอดไฟ LED RGB แบบ Up-Cycled: โปรเจ็กต์นี้ทำจากวัสดุรีไซเคิลและวัสดุจากโครงการอื่น เดิมทีโครงการนี้จะเป็นเครื่องให้อาหารปลาอัตโนมัติ บางภาพอาจสะท้อนโครงการให้อาหารปลา เนื่องจากโครงการส่วนใหญ่สร้างขึ้นจากวัสดุในมือฉัน
โคมไฟซีดี LED แบบ USB Powered: 8 ขั้นตอน (พร้อมรูปภาพ)
โคมไฟซีดี LED แบบใช้ USB: โคมไฟซีดี LED แบบใช้พลังงานจาก USB เป็นอุปกรณ์ที่มีประโยชน์มาก ใช้พลังงานจากพอร์ต USB คุณจึงไม่ต้องการแหล่งจ่ายไฟภายนอกใดๆ ฉันใช้ลวดยึดแบบแข็งทำหน้าที่เป็นคอห่านและช่วยให้คุณโค้งงอแหล่งกำเนิดแสงในมุมและทิศทางต่างๆ ได้