สารบัญ:

ปรับความสว่าง LED: 5 ขั้นตอน
ปรับความสว่าง LED: 5 ขั้นตอน

วีดีโอ: ปรับความสว่าง LED: 5 ขั้นตอน

วีดีโอ: ปรับความสว่าง LED: 5 ขั้นตอน
วีดีโอ: วงจรปรับความสว่าง led 12v ง่ายๆ 2024, พฤศจิกายน
Anonim
การปรับเทียบความสว่าง LED
การปรับเทียบความสว่าง LED

ขณะที่ฉันสร้างแสงแฟรี่ ฉันตระหนักว่าค่า PWM นั้นไม่เป็นสัดส่วนกับความสว่างของ LED แบบเชิงเส้น พูดง่ายๆ ถ้าค่า PWM เป็นสองเท่า ความสว่างจะไม่เป็นสองเท่า โดยเฉพาะอย่างยิ่งเมื่อ PWM ใกล้เคียงกับค่าสูงสุด การเปลี่ยนแปลงใด ๆ ที่ตาฉันมองไม่เห็น ฉันคิดว่าควรเป็นปัญหาการปรับเทียบอย่างง่าย! และนั่นคือวิธีที่ฉันทำโครงการนี้! แนวคิดคือการวัดความสว่างของ LED ด้วยอุปกรณ์บางอย่าง (เซ็นเซอร์วัดความส่องสว่างหรือโฟโตรีซีสเตอร์) และหาความสัมพันธ์ระหว่างค่า PWM กับความสว่าง จากนั้นในภายหลัง ถ้าฉันตั้งค่าความสว่างเป็น 50% Arduino จะคำนวณ PWM ที่สอดคล้องกันและทำให้ LED หรี่ลงตามลำดับ

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

ขั้นตอนที่ 1: อะไหล่

1- WEMOS mini D1: Aliexpress 3 €

2- TSL 2561 (เซ็นเซอร์ความสว่าง): Aliexpress 3€

3- โมดูลการ์ด SD: Aliexpress 1 €

4- LED

5- ตัวต้านทาน 220 โอห์ม

6- สาย

ค่าใช้จ่ายทั้งหมด: 8 -10 €

ขั้นตอนที่ 2: การเดินสายไฟ

การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ

ไม่ควรเปลี่ยนโมดูลการ์ด SD และสายเซ็นเซอร์ความส่องสว่าง (ส่วนใหญ่) ไฟ LED ควรเชื่อมต่อกับพิน PWM

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

รหัส
รหัส

ฉันรวมรหัสสามส่วน:

การ์ด SD: ตัวอย่างที่ใช้ >SD > ReadWrite ใน Arduino IDE

TSL 2561: ใช้ตัวอย่าง Adafruit TSL2561 Library (sensorapi); คุณจะพบในตัวอย่าง หากคุณติดตั้งไลบรารี่ (ฉันคิดว่าคุณรู้วิธีติดตั้งไลบรารีใน Arduino IDE)

LED เฟด: ตัวอย่างที่ใช้ > แอนะล็อก > เฟด

รหัสหลังจากเริ่มต้นโมดูลจะหรี่ไฟ LED และอ่านความสว่างและบันทึกลงในการ์ด SD ด้วยวิธีนี้ฉันจะรวบรวมข้อมูลสำหรับการสอบเทียบ

ฉันเปลี่ยนแต่ละรหัสตามความต้องการของฉัน รหัสสุดท้ายที่แนบมา

สัญญาณควรมีลักษณะเหมือนภาพที่แนบมา น่าเสียดายที่ฉันลืมถ่ายรูป ดังนั้นฉันจึงทำซ้ำใน excel เพื่อแสดงให้คุณเห็นว่าควรเป็นอย่างไร

หมายเหตุ: ฉันใช้ wemo mini D1 แทน Arduino ด้วยเหตุผลบางอย่างที่ฉันไม่รู้ PWM อยู่ระหว่าง 0 ถึง 1023 ใน Arduino ควรอยู่ระหว่าง 0-255 หากคุณต้องการใช้รหัสสำหรับ Arduino คุณควรดูแลมัน (บรรทัดที่ 90)

ขั้นตอนที่ 4: ติดตั้งและใช้งาน

การติดตั้งและการใช้งาน
การติดตั้งและการใช้งาน
การติดตั้งและการใช้งาน
การติดตั้งและการใช้งาน

หลังจากรวบรวมข้อมูลแล้ว ฉันเปิดไฟล์ใน excel และลงจุดข้อมูล (ดูรูป) คอลัมน์แรกคือค่า PWM และคอลัมน์ที่สองคือลักซ์ (การอ่านของเซ็นเซอร์ หน่วยไม่สำคัญ) ดังนั้น พล็อตลักซ์ (แกน y) กับ PWM (แกน x) อย่างที่คุณเห็นความสว่างเป็นสัดส่วนเชิงเส้นตรงกับค่า PWM ฉันติดตั้งเส้นกับมัน

เพื่อให้พอดีกับบรรทัดดังนี้:

1- พล็อตข้อมูล (แทรก > พล็อตกระจาย) ฉันถือว่าคุณรู้วิธี

2- คลิกขวาที่ข้อมูลที่พล็อต

3- คลิกที่เส้นแนวโน้ม

4- (ใน excel 2013) ทางด้านขวาแผงจะปรากฏขึ้น เลือกเชิงเส้น ที่ด้านล่าง เลือก "แสดงสมการบนแผนภูมิ"

ความสัมพันธ์เชิงเส้นแตกต่างจากการรับรู้ของฉัน ดังนั้นฉันคิดว่าควรมีความสัมพันธ์แบบลอการิทึมระหว่างการรับรู้ของฉันกับความสว่าง (นี่เป็นวิธีที่ง่ายที่สุดในความคิดของฉัน!) ดังนั้นฉันจึงเอาความชันของความพอดี การสกัดกั้นไม่สำคัญเพราะขึ้นอยู่กับมลภาวะทางแสงโดยรอบ! ฉันเพิ่ม 1 แทน เนื่องจาก Log10(0) เป็นอนันต์ ดังนั้นฉันต้องการการสกัดกั้นเพื่อแก้ปัญหา ในกรณีของฉันสมการจะมีลักษณะดังนี้:

y =Log10(0.08 x +1) y คือความสว่าง และ x คือค่า PWM (0-1023)

ฉันปรับสมการให้เป็นค่าสูงสุด แล้วรังเอาท์พุทจะอยู่ระหว่าง 0-100 เสมอ วิธีนี้ฉันสามารถถาม Arduino เกี่ยวกับความสว่างสัมพัทธ์บางอย่างได้ โดยไม่คำนึงถึงความสว่างสัมบูรณ์สูงสุด

y =Log10(0.08 x +1)*100/1.914

เนื่องจากใน Arduino อินพุตของฉันคือความสว่างสัมพัทธ์ ฉันต้องจัดสมการสำหรับ x (PWM ใหม่):

x = (10^(y*1.914/100) - 1) / 0.08

โดยใช้สมการนี้ในโค้ด เราจะสามารถเปลี่ยนแปลงความสว่างเชิงเส้นได้ ดังนั้นคุณจึงขอให้ Arduino สำหรับความสว่าง (y) ระหว่าง 0-100 และ Arduino จะคำนวณค่า PWM ที่สอดคล้องกัน ด้วยวิธีนี้ หากความสว่างเพิ่มขึ้นเป็นสองเท่า การรับรู้ของคุณก็เหมือนกัน

หากคุณต้องการใช้ในโค้ดของคุณ คุณควรเพิ่มบรรทัดนี้:

ความสว่าง=50; // เป็นเปอร์เซ็นต์

PWM = pow(10, ความสว่าง*1.914/100)-1)/0.0793;

analogWrite (ledpin, PWM);

หมายเหตุ: การปรับให้เป็นมาตรฐานทำได้สำหรับ PWM สูงสุด 1023 (สำหรับ Wemos mini D1) สำหรับ Arduino PWM อยู่ระหว่าง 0-255 คุณต้องคำนวณตามนั้น

NOTE2: ฉันได้เพิ่ม log-linear plot เพื่อแสดงว่าการรับรู้และค่า PWM ของเราเกี่ยวข้องกันอย่างไร คุณไม่ควรใช้เพื่อกระชับ!

ขั้นตอนที่ 5: บทสรุป

การสอบเทียบทำงานได้ดีสำหรับฉัน เมื่อค่า PWM มีค่ามาก ฉันสามารถเห็นความแตกต่างได้ ก่อนเป็นค่าขนาดใหญ่ฉันไม่สามารถเห็นผลของการหรี่แสง โดยพื้นฐานแล้วการเปลี่ยนแปลงส่วนใหญ่เกิดขึ้นในช่วง PWM ขนาดเล็ก ตอนนี้มันถูกปรับเทียบแล้ว!

LED แต่ละดวงซึ่งมีสีต่างกันเป็นพิเศษ ควรมีพารามิเตอร์การสอบเทียบของตัวเอง อย่างไรก็ตาม ฉันปรับเทียบ LED สีน้ำเงินและใช้พารามิเตอร์สำหรับ LED สีขาว และผลลัพธ์ก็เป็นที่ยอมรับ ดังนั้นบางทีคุณสามารถใช้พารามิเตอร์การปรับเทียบของฉันโดยไม่รบกวนตัวเอง!!

แนะนำ: