Lab 5 การหรี่ไฟLEDด้วยสัญญาณ Analog Output
จุดประสงค์การเรียนรู้
เพื่อสร้างสัญญาณของสัญญาณAnalog output จากสัญญาณพัลส์
สาระการเรียนรู้
1. สัญญาณ Analog Output
สัญญาณAnalog outputเป็นสัญญาณที่มีความละเอียดกว่าสัญญาณDigitalเป็นอย่างมาก ยกตัวอย่างเช่นหากเราต้องการจะเปิดไฟLEDหากใช้สัญญาณDigitalในการสั่งงานจะไม่สามารถทำให้LEDหรี่ไฟแบบปรับระดับได้ ดังนั้นบทความนี้จะพูดถึงการใช้งานAnalog Outputชนิด PWM (Pulse-Width modulation) ซึ่งเป็นเทคนิคในการเข้ารหัสสัญญาณDigitalให้ัมีOuputเฉลี่ยคล้ายสัญญาณAnalog โดยจะสร้างLogic HIGH(3.3V) และ LOW(0V)สลับกันซึ่งจะทำให้คาบเวลาช่วงHIGHของหนึ่งลูกคลื่นมีหน่วยเป็นเปอร์เซนต์หรือที่เรียกกันว่าDuty Cycle ดังภาพข้างล่าง
ที่มาของภาพ : https://blog.thaieasyelec.com/espino32-ch6-how-to-use-analog-output/
วิธีทดลอง
เป้าหมายในการทำงานของLabนี้ เพื่อให้LEDทำการเปิดปิดไฟ อย่างต่อเนื่อง โดยให้หลอดไฟดับ ติด 50 เปอร์เซนต์ และติด 100 เปอร์เซนต์ แบบวนรอบ
ตอนที่ 1 การใช้งานหลอด LED 1 ช่อง
นำบอร์ดLotus Devkit V.1.0 มาต่อกับModule Lotus LED และพอร์ตMicro USB ตามตารางและขาสัญญาณ ดังรูปข้างล่าง
2. ทำการเขียนCode ในโปรแกรมKB- IDE ตามรูปแบบข้างล่าง
3. ทำการ Upload Code ลงบนบอร์ด Lotus Devkit ดังรูปข้างล่าง
4. หลังจากนั้นหลอดLED จะแสดงผล 3 สเต็บแบบวนรอบ ดังรูปข้างล่าง
ตอนที่ 2 การใช้งานAnalog Input ควบคุมสัญญาณ Analog Output (ปรับค่าความสว่างไฟหัวเตียง)
เป้าหมายในการทำงานของLabนี้ เพื่อปรับค่าความมืดสว่างของหลอดLED ตามการหมุนของตัวต้านทานปรับค่าได้ (Potentiometer หรือ Knob) จำลองจากไฟสว่างหัวเตียงในโรงแรม
วิธีการทดลอง
1.เนื่องจากสัญญาณAnalog Input ในKB-IDE ของบอร์ดLotus Nano Bot ได้ทำการปรับอัตราส่วนต่ำสุดสูงสุดจาก 12 Bit เป็น 10 Bit ค่าระหว่าง 0-1023 และค่าดิวตี้ไซเคิล จากสัญญาณPWM (Analog Output) จะมีความละเอียดอยู่ที่ 0-255 ดังนั้นจะใช้สมการคำนวณการปรับอัตราการหรี่ไฟจาก 0-255 ดังสมการข้างล่าง
2. ทำการเขียนโค้ดในKB-IDE ตามสมการข้างล่าง ดังรูป
3. ทำการUpload Code อีกครั้ง และลองปรับKnob GPIO35 ไปทางฝั่งซ้ายสุดไฟจะดับ (PWM =0 ) และปรับไปทางฝั่งขวาสุดไฟจะสว่างสูงสุดตามลำดับ (PWM = 255) ดังรูปและVDO ด้านล่าง