Lab 4 KB-IDE-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 ช่อง

  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 ด้านล่าง