สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
มีการโพสต์เทียนอิเล็กทรอนิกส์หลายครั้งใน Instructables แล้วเหตุใดจึงเป็นเช่นนั้น
ที่บ้านฉันมีบ้านคริสต์มาสกึ่งโปร่งแสงขนาดเล็กที่มีข้อมูลเชิงลึกแบบ LED และแบตเตอรี่ขนาดเล็ก บ้านบางหลังมีไฟ LED ที่มีเอฟเฟกต์เทียนและบางหลังมีไฟ LED ที่เปิดอยู่ แบตเตอรีขนาดเล็กหมดเร็วมาก และเนื่องจากฉันต้องการเอฟเฟกต์เทียนในบ้านทุกหลัง ฉันจึงตัดสินใจสร้างเป็นโปรเจ็กต์ PIC แน่นอนคุณสามารถเปลี่ยนเป็นโครงการ Arduino ได้เช่นกัน
อะไรที่ทำให้เทียนอิเล็กทรอนิกส์นี้มีความพิเศษ? PIC และ Arduino ทั้งหมดมีฮาร์ดแวร์ Pulse Width Modulation (PWM) บนบอร์ดที่สามารถใช้สร้างเอฟเฟกต์เทียนโดยใช้ LED ได้ แต่ในกรณีของฉัน ฉันต้องการมีเทียนอิเล็กทรอนิกส์อิสระ 5 อันโดยใช้คอนโทรลเลอร์เพียงตัวเดียว อย่างน้อยก็ไม่มี ที่ฉันรู้หมด วิธีแก้ปัญหาที่ฉันใช้คือสร้างสัญญาณ PWM อิสระทั้งห้านี้ในซอฟต์แวร์อย่างสมบูรณ์
ขั้นตอนที่ 1: การปรับความกว้างพัลส์ในซอฟต์แวร์
มีการอธิบายการปรับความกว้างของพัลส์หลายครั้ง เช่น ในบทความ Arduino นี้:
PIC และ Arduino มีฮาร์ดแวร์ PWM พิเศษบนบอร์ดที่ทำให้ง่ายต่อการสร้างสัญญาณ PWM นี้ หากเราต้องการสร้างสัญญาณ PWM อย่างน้อยหนึ่งสัญญาณในซอฟต์แวร์ เราต้องการตัวจับเวลาสองตัว:
- ตัวจับเวลาหนึ่งตัวที่ใช้สร้างความถี่ PWM
- ตัวจับเวลาหนึ่งตัวที่ใช้สร้างรอบการทำงาน PWM
ตัวจับเวลาทั้งสองสร้างและขัดจังหวะเมื่อเสร็จสิ้น ดังนั้นการจัดการสัญญาณ PWM จะถูกขัดจังหวะอย่างเต็มที่ สำหรับความถี่ PWM ฉันใช้ตัวจับเวลา 0 ของ PIC และปล่อยให้มันล้น ด้วยนาฬิกาออสซิลเลเตอร์ภายใน 8 MHz และพรีสเกล 64 สูตรคือ: Fosc/4 / 256 / 64 = 2.000.000 / 256 / 64 = 122 Hz หรือ 8, 2 ms ความถี่ต้องสูงพอที่สายตามนุษย์จะตรวจจับไม่ได้ ความถี่ 122 Hz ก็เพียงพอแล้ว สิ่งเดียวที่รูทีนขัดจังหวะตัวจับเวลานี้ทำคือคัดลอกรอบการทำงานสำหรับรอบ PWM ใหม่และเปิดไฟ LED ทั้งหมด มันทำเช่นนี้สำหรับไฟ LED ทั้ง 5 ดวงโดยอิสระ
ค่าของตัวจับเวลาในการจัดการรอบการทำงานของ PWM ขึ้นอยู่กับว่าเราสร้างเอฟเฟกต์เทียนอย่างไร ในแนวทางของฉัน ฉันจำลองเอฟเฟกต์นี้โดยเพิ่มรอบการทำงานด้วยค่า 3 เพื่อเพิ่มความสว่างของ LED และลดลงด้วยค่า 25 เพื่อลดความสว่างของ LED ด้วยวิธีนี้คุณจะได้เอฟเฟกต์เหมือนเทียน เนื่องจากฉันใช้ค่าต่ำสุดที่ 3 จำนวนขั้นตอนในการควบคุมรอบการทำงานที่สมบูรณ์ด้วยหนึ่งไบต์คือ 255/3 = 85 ซึ่งหมายความว่าตัวจับเวลารอบการทำงาน PWM ต้องทำงานด้วยความถี่ 85 เท่าของความถี่ ตัวจับเวลาความถี่ PWM ซึ่งคือ 85 * 122 = 10.370 Hz
สำหรับรอบการทำงาน PWM ฉันใช้ตัวจับเวลา 2 ของ PIC นี่คือตัวจับเวลาที่มีการโหลดอัตโนมัติและใช้สูตรต่อไปนี้: ระยะเวลา = (โหลดซ้ำ + 1) * 4 * Tosc * ค่าพรีสเกล Timer2 ด้วยการโหลดซ้ำ 191 และพรีสเกล 1 เราจะได้ช่วงเวลา (191 + 1) * 4 * 1/8.000.000 * 1 = 96 เราหรือ 10.416 Hz รูทีนการขัดจังหวะรอบการทำงาน PWM จะตรวจสอบว่ารอบการทำงานผ่านแล้วและปิด LED ที่รอบการทำงานเสร็จสิ้นหรือไม่ หากไม่ผ่านรอบการทำงาน ระบบจะลดตัวนับรอบหน้าที่ด้วย 3 และสิ้นสุดกิจวัตร มันทำเช่นนี้สำหรับ LED ทั้งหมดโดยอิสระ ในกรณีของฉันรูทีนการขัดจังหวะนี้ใช้เวลาประมาณ 25 เราและเนื่องจากมันถูกเรียกทุกๆ 96 เราจึงใช้ CPU 26% สำหรับจัดการรอบการทำงานของ PWM ในซอฟต์แวร์
ขั้นตอนที่ 2: ฮาร์ดแวร์และส่วนประกอบที่จำเป็น
แผนผังแสดงผลลัพธ์สุดท้าย แม้ว่าฉันจะควบคุม LED 5 ดวงโดยอิสระ แต่ฉันได้เพิ่ม LED ดวงที่ 6 ที่ทำงานร่วมกับ LED อื่นอีก 5 ดวง เนื่องจาก PIC ไม่สามารถขับ LED สองดวงบนพินพอร์ตเดียวได้ ฉันจึงเพิ่มทรานซิสเตอร์ อุปกรณ์อิเล็กทรอนิกส์ถูกป้อนโดยอะแดปเตอร์ DC 6 โวลต์ / 100 มิลลิแอมป์ และใช้ตัวควบคุมแรงดันไฟฟ้าตกต่ำเพื่อให้มีความเสถียร 5 โวลต์
คุณต้องมีส่วนประกอบต่อไปนี้สำหรับโครงการนี้:
- 1 ไมโครคอนโทรลเลอร์ PIC 12F615
- ตัวเก็บประจุเซรามิก 2 ตัว: 2 * 100nF
- ตัวต้านทาน: 1 * 33k, 6 * 120 โอห์ม, 1 * 4k7
- 6 ไฟ LED สีส้มหรือสีเหลืองความสว่างสูง
- 1 BC557 ทรานซิสเตอร์หรือเทียบเท่า
- 1 ตัวเก็บประจุด้วยไฟฟ้า 100 uF / 16 V
- ตัวควบคุมแรงดันตกต่ำ 1 ตัว LP2950Z
คุณสามารถสร้างวงจรบนเขียงหั่นขนมและไม่ต้องใช้พื้นที่มากดังที่เห็นในภาพ
ขั้นตอนที่ 3: ซอฟต์แวร์และผลลัพธ์ที่เหลืออยู่
ส่วนที่เหลือของซอฟต์แวร์คือลูปหลัก ลูปหลักเพิ่มหรือลดความสว่างของ LED โดยการปรับรอบการทำงานแบบสุ่ม เนื่องจากเราเพิ่มค่าเพียง 3 และลดลงด้วยค่า 25 เราจึงต้องตรวจสอบให้แน่ใจว่าการลดลงไม่ได้เกิดขึ้นบ่อยเท่ากับการเพิ่มขึ้น
เนื่องจากฉันไม่ได้ใช้ไลบรารี่ใด ๆ ฉันจึงต้องสร้างตัวสร้างแบบสุ่มโดยใช้รีจิสเตอร์การเปลี่ยนแปลงเชิงเส้น โปรดดู:
th.wikipedia.org/wiki/Linear-feedback_shif…
ผลกระทบของเทียนได้รับอิทธิพลจากความเร็วของวัฏจักรหน้าที่ PWM ที่เปลี่ยนไป ดังนั้นลูปหลักจึงใช้การหน่วงเวลาประมาณ 10 มิลลิวินาที คุณสามารถปรับเวลานี้เพื่อเปลี่ยนเอฟเฟกต์เทียนตามความต้องการของคุณ
วิดีโอที่แนบมาแสดงผลลัพธ์สุดท้ายที่ฉันใช้ฝาปิดเหนือ LED เพื่อปรับปรุงเอฟเฟกต์
ฉันใช้ JAL เป็นภาษาการเขียนโปรแกรมสำหรับโครงการนี้และแนบไฟล์ต้นฉบับ
ขอให้สนุกกับการสร้างคำแนะนำนี้และตั้งตารอปฏิกิริยาและผลลัพธ์ของคุณ