ArduinoEmbeded SystemTutorial

2. Dimmer LED [FunBasic I/O]

By May 10, 2015 May 12th, 2015 No Comments

เอาล่ะครับ จากตอนที่แล้ว เราได้ทดลอง ให้เปิดปิดไฟ LED ไปได้แล้ว มาถึง Part 2 เราจะลองให้หรี่ไฟ LED ให้ได้ โดยเราจะใช้เทคนิค PWM

PWM(Pulse Width Modulation) คือ อะไร

PWM คือเทคนิดการส่งสัญญาณแบบสวิต หรือ ส่งค่าดิจิตอล 0-1 โดยให้สัญญาณความถี่คงที่ การควบคุมระยะเวลาสัญญาณสูงและสัญญาณต่ำ ที่ต่างกัน ก็จะทำให้ค่าแรงดันเฉลี่ยของสัญญาณสวิต ต่างกันด้วย อย่างเช่น ดูภาพประกอบ

pwm

  • ถ้าอยากให้ Vout ออกมา 0 โวลต์ เราก็ให้ระยะเวลาสัญญาณ LOW เต็มคาบเวลา
  • ถ้าอยากให้ Vout ออกมา 25% เราก็ให้สัญญาณ HIGH 25 % และ สัญญาณ LOW 75%
  • และ ถ้าอยากให้ Vout ออกมา 50% เราให้ระยะเวลาของสัญญาณ HIGH และ LOW เท่ากัน ก็จะได้ค่าเป็น 2.5 โวลต์
  • เช่นเดียวกัน ถ้าเราอยากให้ Vout ออกมา 75% เราให้ระยะสัญญาณ HIGH เป็น 75%  และ สัญญาณ LOW 25%
  • ซึ่งสุดท้าย ถ้าเราอยากให้ Vout ออกมา 5 โวลต์ เราเปิดสัญญาณ HIGH เต็มคาบเวลา

สำหรับโมดุล PWM ของ Arduino มีความละเอียด 8 bit หรือ ปรับได้ 255 ระดับ ดังนั้นค่าสัญญาณ 0 โวลต์ถึง 5 โวลต์ จะถูกแสดงเป็นสัญญาณแบบดิจิตอล จะได้ 0 ถึง 255 ซึ่งเราสามารถเทียบสัดส่วนคำนวนจากเลขจริง เป็น เลขทางดิจิตอลได้

<Lab 1> การหรี่ไฟ (Fade LED)

การหรี่ไฟ LED เราเทคนิดของ PWM เพื่อควบคุมการจ่ายไฟ โดยเราจะใช้คำสั่ง analogWrite(pin ,[0 – 255] ) โดยบอร์ด FunBasic จะต่อ LED ใช้งานในขา 6,9,10,11 นะครับ

จากโค๊ด เราสามารถทดลองเล่นเปลี่ยน LED ไป หรี่ที่ดวงอื่นได้ โดยการเปลี่ยนค่าในตัวแปร ledPin นะครับ ทดลองเล่นดูครับ

<Lab 2> การหรี่ไฟแบบนุ่มนวล (Smooth Fade LED)

จะเห็นได้ว่า ในการทดลองครั้งแรก LED เราจะค่อยๆ หรี่ลงมาเป็น step ที่จริงเราสามารถ ประยุกต์ใช้ for-loop มาช่วยทำได้ มาลองกันดู

สิ่งที่สามารถนำ PWM หรือ การใช้งาน analogWrite() ไปประยุกต์ได้ เช่น ความเร็วมอเตอร์ ความสว่างของไฟ ระดับความร้อน เป็นต้น ถ้ามีส่วนใดบทความ หรือ มีความคิดเห็นประการใด ติชมได้ครับ

สรุปสิ่งที่ได้เรียนรู้ที่ผ่านมา

  1. เข้าใจการทำงานของ PWM
  2. รู้จักการควบคุม LED ด้วย คำสั่ง analogWrite ( pin, [0-255] )
  3. รู้จักการใช้งานฟังก์ชั่น Map()

Leave a Reply