เทียนอิเล็กทรอนิกส์หลายอัน: 3 ขั้นตอน
เทียนอิเล็กทรอนิกส์หลายอัน: 3 ขั้นตอน
Anonim
เทียนอิเล็กทรอนิกส์หลายอัน
เทียนอิเล็กทรอนิกส์หลายอัน

มีการโพสต์เทียนอิเล็กทรอนิกส์หลายครั้งใน Instructables แล้วเหตุใดจึงเป็นเช่นนั้น

ที่บ้านฉันมีบ้านคริสต์มาสกึ่งโปร่งแสงขนาดเล็กที่มีข้อมูลเชิงลึกแบบ LED และแบตเตอรี่ขนาดเล็ก บ้านบางหลังมีไฟ LED ที่มีเอฟเฟกต์เทียนและบางหลังมีไฟ LED ที่เปิดอยู่ แบตเตอรีขนาดเล็กหมดเร็วมาก และเนื่องจากฉันต้องการเอฟเฟกต์เทียนในบ้านทุกหลัง ฉันจึงตัดสินใจสร้างเป็นโปรเจ็กต์ PIC แน่นอนคุณสามารถเปลี่ยนเป็นโครงการ Arduino ได้เช่นกัน

อะไรที่ทำให้เทียนอิเล็กทรอนิกส์นี้มีความพิเศษ? PIC และ Arduino ทั้งหมดมีฮาร์ดแวร์ Pulse Width Modulation (PWM) บนบอร์ดที่สามารถใช้สร้างเอฟเฟกต์เทียนโดยใช้ LED ได้ แต่ในกรณีของฉัน ฉันต้องการมีเทียนอิเล็กทรอนิกส์อิสระ 5 อันโดยใช้คอนโทรลเลอร์เพียงตัวเดียว อย่างน้อยก็ไม่มี ที่ฉันรู้หมด วิธีแก้ปัญหาที่ฉันใช้คือสร้างสัญญาณ PWM อิสระทั้งห้านี้ในซอฟต์แวร์อย่างสมบูรณ์

ขั้นตอนที่ 1: การปรับความกว้างพัลส์ในซอฟต์แวร์

มีการอธิบายการปรับความกว้างของพัลส์หลายครั้ง เช่น ในบทความ Arduino นี้:

PIC และ Arduino มีฮาร์ดแวร์ PWM พิเศษบนบอร์ดที่ทำให้ง่ายต่อการสร้างสัญญาณ PWM นี้ หากเราต้องการสร้างสัญญาณ PWM อย่างน้อยหนึ่งสัญญาณในซอฟต์แวร์ เราต้องการตัวจับเวลาสองตัว:

  1. ตัวจับเวลาหนึ่งตัวที่ใช้สร้างความถี่ PWM
  2. ตัวจับเวลาหนึ่งตัวที่ใช้สร้างรอบการทำงาน 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 เป็นภาษาการเขียนโปรแกรมสำหรับโครงการนี้และแนบไฟล์ต้นฉบับ

ขอให้สนุกกับการสร้างคำแนะนำนี้และตั้งตารอปฏิกิริยาและผลลัพธ์ของคุณ