สารบัญ:
- ขั้นตอนที่ 1: อะไหล่
- ขั้นตอนที่ 2: การเดินสายไฟ
- ขั้นตอนที่ 3: รหัส
- ขั้นตอนที่ 4: ติดตั้งและใช้งาน
- ขั้นตอนที่ 5: บทสรุป
วีดีโอ: ปรับความสว่าง LED: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
ขณะที่ฉันสร้างแสงแฟรี่ ฉันตระหนักว่าค่า 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 สีขาว และผลลัพธ์ก็เป็นที่ยอมรับ ดังนั้นบางทีคุณสามารถใช้พารามิเตอร์การปรับเทียบของฉันโดยไม่รบกวนตัวเอง!!
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
ปรับความสว่าง LED โดยใช้โพเทนชิออมิเตอร์: 4 ขั้นตอน
ปรับความสว่างของ LED โดยใช้โพเทนชิออมิเตอร์: ในบทความที่แล้ว ฉันแสดงวิธีอ่านค่า ADC จากโพเทนโซมิเตอร์โดยใช้ Arduino และครั้งนี้ฉันจะใช้ประโยชน์จากค่าที่อ่านได้จากค่า ADC นั่นคือการปรับความสว่างของ LED
วิธีใช้ Neopixel Ws2812 LED หรือ LED STRIP หรือ Led Ring กับ Arduino: 4 ขั้นตอน
วิธีใช้ Neopixel Ws2812 LED หรือ LED STRIP หรือ Led Ring กับ Arduino: สวัสดีทุกคนเนื่องจาก Neopixel led Strip เป็นที่นิยมอย่างมากและเรียกอีกอย่างว่า ws2812 led strip เช่นกัน พวกเขาเป็นที่นิยมอย่างมากเพราะในแถบนำเหล่านี้เราสามารถระบุแต่ละ LED แยกจากกัน ซึ่งหมายความว่าหากคุณต้องการให้ไฟ LED สองสามดวงเรืองแสงเป็นสีเดียว
ESP8266 RGB LED STRIP WIFI ควบคุม - NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi - RGB LED STRIP การควบคุมสมาร์ทโฟน: 4 ขั้นตอน
ESP8266 RGB LED STRIP WIFI ควบคุม | NODEMCU เป็นรีโมท IR สำหรับ Led Strip ที่ควบคุมผ่าน Wifi | การควบคุมสมาร์ทโฟน RGB LED STRIP: สวัสดีทุกคนในบทช่วยสอนนี้ เราจะเรียนรู้วิธีใช้ nodemcu หรือ esp8266 เป็นรีโมท IR เพื่อควบคุมแถบ LED RGB และ Nodemcu จะถูกควบคุมโดยสมาร์ทโฟนผ่าน wifi โดยพื้นฐานแล้ว คุณสามารถควบคุม RGB LED STRIP ได้ด้วยสมาร์ทโฟนของคุณ