สารบัญ:

12V LED PWM Dimmer พร้อม ESP8266: 3 ขั้นตอน
12V LED PWM Dimmer พร้อม ESP8266: 3 ขั้นตอน

วีดีโอ: 12V LED PWM Dimmer พร้อม ESP8266: 3 ขั้นตอน

วีดีโอ: 12V LED PWM Dimmer พร้อม ESP8266: 3 ขั้นตอน
วีดีโอ: คลิปวีดีโอสอน Arduino ESP8266 NodeMCU LED PWM : ควบคุมความสว่างของ LED ด้วย NodeMCU 2024, พฤศจิกายน
Anonim
ไฟ LED PWM หรี่ 12V พร้อม ESP8266
ไฟ LED PWM หรี่ 12V พร้อม ESP8266

ในขณะที่พยายามทำให้ครัวเรือนของฉันมีความยั่งยืนมากขึ้น ฉันกำลังเปลี่ยนหลอดไฟฮาโลเจนเป็นไฟ LED มีทางเลือกมากมายในการเปลี่ยนหลอดไฟชนิดใดก็ได้ ขณะทำเช่นนี้ ฉันพบปัญหาต่อไปนี้: ฉันมีโคมไฟซึ่งใช้หลอดฮาโลเจน 7 12 โวลต์จำนวน 10 วัตต์ แสงนี้ถูกควบคุมโดยเครื่องหรี่ซึ่งทำงานได้ดี เมื่อฉันเปลี่ยนหลอดไฟเป็นไฟ LED 12 โวลต์ แต่ละ 1 วัตต์ สวิตช์หรี่ไฟทำงานได้ไม่ดี แสงกะพริบ และการหรี่แสงค่อนข้างไม่แน่นอน นี่เป็นปัญหาของสวิตช์หรี่ไฟแบบคลาสสิกจำนวนมาก: มีระดับพลังงานที่น้อยที่สุดซึ่งจำเป็นสำหรับการทำงาน

ดังนั้น จากระบบ domotics ของฉัน ฉันจึงตัดสินใจเปลี่ยนสวิตช์หรี่ไฟแบบแมนนวลนี้เป็นอันใหม่ ซึ่งจะมีประโยชน์เพิ่มเติมในการควบคุมจากระยะไกล ฉันได้สร้างสวิตช์หรี่ไฟโดยใช้ N-channel MOSFET (IRF540) ซึ่งเหมาะสำหรับสิ่งนี้: สามารถควบคุมได้โดยสัญญาณ PWM และแทบจะทำลายไม่ได้ด้วยพิกัดสูงสุด 100 โวลต์และ 33 แอมป์ เพียงพอสำหรับจุดประสงค์นี้ (ตรวจสอบอย่างรวดเร็ว: 7 x 1 วัตต์ = 7 วัตต์ หารด้วย 12 โวลต์ ให้กระแสไฟสูงสุดประมาณ.58 แอมป์) ฉันต้องการใช้สวิตช์หรี่ไฟนี้กับอุปกรณ์อื่นที่มีหลอดไฟ 12 หลอด แต่ละหลอดมี 2 วัตต์ ซึ่งให้กำลังไฟสูงสุด 2 แอมป์ นั่นก็เพียงพอแล้ว สิ่งเดียวที่ต้องระวังคือความถี่ของสัญญาณ PWM แต่ค่าปกติสำหรับ Arduino หรือ ESP8266 (500 Hz หรือ 1kHz) ไม่ใช่ปัญหา

ขั้นตอนที่ 1: ขั้นตอนที่ 1: ส่วนประกอบ

ขั้นตอนที่ 1: ส่วนประกอบ
ขั้นตอนที่ 1: ส่วนประกอบ
  1. ไดรเวอร์ LED (ตัวแปลง AC 230 โวลต์เป็น DC 12 โวลต์) ฉันต้องการใช้กำลังไฟสูงสุด 24 วัตต์เพื่อจุดประสงค์ของฉัน ดังนั้นฉันจึงเริ่มต้นด้วยไดรเวอร์ LED ขนาด 12 โวลต์และ 2 แอมป์ ฉันพบที่ไซต์ผู้จัดจำหน่ายของจีน ไดรเวอร์นี้ได้รับการจัดอันดับ 12 โวลต์ 28 วัตต์ ดังนั้นจึงเพียงพอที่จะขับฟิกซ์เจอร์ด้วยตัวเอง สำหรับสถานการณ์ของคุณเอง คุณสามารถใช้รุ่นที่เบากว่าหรือหนักกว่าก็ได้ ขึ้นอยู่กับอุปกรณ์ติดตั้งของคุณ
  2. IRF540 n-channel MOSFET
  3. Adafruit Huzzah ESP8266 Breakoutเนื่องจากฉันต้องการใช้ WiFi และฉันชอบผลิตภัณฑ์ของ Adafruit มาก ฉันจึงเลือกบอร์ดนี้: มันให้ ESP8266 แก่ฉันด้วยพินเอาต์ตั้งโปรแกรมที่สะดวก ตัวควบคุมพลังงานออนบอร์ด และฟอร์มแฟคเตอร์ที่หรูหรา มันเกินความสามารถเล็กน้อยสำหรับโปรเจ็กต์นี้ แต่มันทำให้การทดสอบและการดีบักง่ายขึ้นมาก
  4. ตัวแปลง DC-DC แบบ LM2596 เพื่อให้ได้พลังงานสำหรับบอร์ด ESP จาก 12 โวลต์ ฉันต้องการตัวควบคุม ตัวแปลงขนาดเล็กเหล่านี้มีประสิทธิภาพมากและราคาถูกมาก
  5. Rotary Encoder พร้อมฟังก์ชั่นปุ่มพร้อมไฟ LED ในตัว:

    www.sparkfun.com/products/10596

    ตัวเข้ารหัสแบบหมุนจะทำได้ แต่ฉันชอบคุณลักษณะเพิ่มเติมที่ดีของ LED ในตัว

  6. ลูกบิดพลาสติกใส

    www.sparkfun.com/products/10597

  7. ตัวต้านทาน 4k7
  8. ตัวต้านทาน 1k

ขั้นตอนที่ 2: ขั้นตอนที่ 2: วงจร

ขั้นตอนที่ 2: วงจร
ขั้นตอนที่ 2: วงจร

นี่คือวงจรที่ฉันใช้: ฉันใช้พิน 4 & 5 เป็นอินพุตสำหรับตัวเข้ารหัสแบบหมุน และใช้พิน 0 สำหรับปุ่ม Pin 0 เชื่อมต่อกับไฟ LED สีแดงบนบอร์ดด้วย ดังนั้นฉันจึงสามารถตรวจสอบฟังก์ชันของปุ่มบนการเข้ารหัสได้ด้วยการดู LED นี้

Pin 16 ใช้สำหรับเอาต์พุต PWM และฉันเชื่อมต่อสิ่งนี้โดยตรงกับไฟ LED สีเขียวบนตัวเข้ารหัส Sparkfun ESP8266 คือ 3, 3 โวลต์ และถึงแม้จะ 100% ฉันวัดเอาท์พุตเพียง 2, 9 โวลต์ ดังนั้นฉันจึงเชื่อมต่อโดยตรงโดยไม่มีตัวต้านทานแบบอนุกรม เอาต์พุตเดียวกันนี้ไปที่เกทของ n-channel MOSFET โดยใช้ตัวต้านทาน 1kOhm ประตูนี้ถูกดึงสูงถึง 12 โวลต์ด้วยตัวต้านทาน 4.7 kOhm

ฉันใช้ตัวแปลง DC-DC เพื่อแปลง 12 โวลต์เป็น 5.5 โวลต์ ซึ่งเชื่อมต่อกับอินพุต V+ ของการฝ่าวงล้อม Adafruit ฉันสามารถใช้ 3.3 โวลต์และเชื่อมต่อโดยตรง แต่สิ่งนี้ปลอดภัยกว่าเล็กน้อย

หลอดไฟ LED 12 V ในวงจรเป็นอุปกรณ์ติดตั้งของฉัน

ขั้นตอนที่ 3: ขั้นตอนที่ 3: รหัส

ขั้นตอนที่ 3: รหัส
ขั้นตอนที่ 3: รหัส

ฉันใส่รหัสบน GitHub:

ร่างสำหรับหรี่ไฟ LED PWM แบบ ESP8266

มันขึ้นอยู่กับแนวคิดอื่นที่สามารถสั่งสอนได้:

www.instructables.com/id/Arduino-PWM-LED-D…

แต่นี่เป็นการควบคุมเฉพาะที่ ดังนั้นฉันจึงเพิ่มโซลูชัน domotics ที่ใช้ MQTT ของตัวเอง โดยพื้นฐานแล้วมันทำสิ่งเดียวกัน แต่ความแตกต่างที่สำคัญคือ:

  • จำนวนขั้นตอน PWM เริ่มต้นกับ Arduino คือ 255 โดยที่ ESP8266 คือ 1023 (อย่างที่ฉันค้นพบในภายหลัง ทั้งหมดพยายามหาว่าเหตุใดหลอดไฟ LED ของฉันจึงไม่สว่างจนสุด 100%…)
  • ฉันไม่ได้ใช้วงจร 'Totempole' กับทรานซิสเตอร์ 2 ตัว เนื่องจาก PWM เป็น DC อยู่แล้ว และทำงานได้ดีกับ IRF 540
  • ฉันไม่ได้ใช้ตัวต้านทานแบบดึงขึ้น 10k สำหรับตัวเข้ารหัส ฉันเชื่อในตัวดึงข้อมูลของ ESP8266
  • ESP8266 ใช้ลอจิก 3.3 โวลต์แทน 5 โวลต์สำหรับ Arduino ซึ่งพิสูจน์แล้วว่าไม่มีปัญหาสำหรับ IRF540

ซอฟต์แวร์มีคุณสมบัติดังต่อไปนี้:

  • การหมุนตัวเข้ารหัสจะทำให้แสงขึ้น (CW) หรือลดลง (CCW) จาก 0 ไปจนถึง 100% ใน 1023 ขั้นตอนโดยบางส่วนจะเร่งความเร็วในระดับที่ต่ำกว่า
  • การกดปุ่มจะเป็นการเปิดไฟเมื่อปิดเครื่อง โดยใช้ระดับความสว่างที่บันทึกไว้ล่าสุด หรือปิดเมื่อเปิดเครื่อง
  • การกดปุ่มค้างไว้นานขึ้นในขณะที่ไฟเปิดอยู่จะบันทึกความสว่างปัจจุบันเป็นระดับเริ่มต้น
  • การกดปุ่มค้างไว้นานขึ้นในขณะที่ไฟปิดอยู่จะเป็นการเปิดไฟที่ความสว่าง 100% โดยไม่เปลี่ยนระดับเริ่มต้น
  • มันจะเชื่อมต่อกับการตั้งค่า WiFi ที่กำหนดโดยสตริง 'SECRET_SSID' และ 'SECRET_PASS' ซึ่งถูกบันทึกไว้ในไฟล์แยกต่างหากในแบบร่างของฉันที่เรียกว่า 'secrets.h'
  • มันจะเชื่อมต่อกับเซิร์ฟเวอร์ MQTT ในเครือข่าย WiFi โดยใช้สตริง 'MQTTSERVER' และ 'MQTTPORT' ในไฟล์เดียวกัน
  • คุณสามารถใช้ MQTT หัวข้อขาเข้า 'domus/esp/in' เพื่อออกคำสั่ง: 'เปิด' หรือ 'ปิด" เพื่อเปิดหรือปิดไฟ หรือค่าจาก 0 ถึง 1023 เพื่อเปลี่ยนความสว่าง
  • มันจะรายงานสถานะในหัวข้อ MQTT 'domus/esp/uit' (สถานะเปิดหรือปิด) และ 'domus/esp/uit/brightness' (ค่าความสว่าง)

แนะนำ: