Lab 5.3: ทดลองควบคุม Servo motor


Lab 5.3 – ทดลองควบคุม Servo motor

โจทย์

  • ควบคุม servo motor เพื่อสร้าง Useless Machine อย่างง่าย

  • กำหนดให้ใช้มื่อกดปุ่มเพื่อเปิดไฟ LED โดยพอไฟ LED ติด Servo จะหมุนมากดปุ่มอีกทีเพื่อปิดไฟ (โปรแกรมส่วน LED เขียนไว้ว่ากดเปิด กดปิด วนไปเรื่อย)
  • สามารถใช้มือของ นศ. จับ servo เล็งให้กดปุ่มได้พอดี

ตัวอย่าง

แนวทาง

servo เป็นมอเตอร์ชนิดหนึ่ง มีจุดเด่นที่สามารถควบคุมตำแหน่งแขนให้ชี้ไปในทิศที่ต้องการได้ ซึ่งการควบคุมตำแหน่งนี้จะใช้สัญญาณ PWM และมีคุณลักษณะดังต่อไปนี้

servo2

servo มีช่วงองศาการหมุนประมาณ 180 องศา ซึ่งควบคุมด้วย Pulse ความกว้างตั้งแต่ 1-2 ms และมีคาบของสัญญาณ PWM อยู่ที่ 10-20 ms

ข้อสังเกต – จากค่าคาบของ servo ที่กำหนดจะเห็นได้ว่าเราไม่สามารถใช้ Hardware PWM ในการสร้างสัญญาณควบคุม servo ได้เพราะคาบของ Hardware PWM นั้นสั้นเกินไป (ยาวที่สุด ~0.8ms สำหรับ PIC16 ความถี่ 20MHz)

 

วิธีต่อสายควบคุม servo

ServoMotor-Wiring

การต่อวงจร

เนื่องจาก Servo เป็นอุปกรณ์ที่กินไฟตอนช่วงเริ่มทำงานมาก ทำให้กระแสไหลเข้าตัวอุปกรณ์มากจนมักทำให้เกิดไฟกระชากและ Vcc ของวงจรทั้งหมดตกลงต่ำกว่าแรงดันขั้นต่ำที่ PIC จะทำงานได้ ส่งผลให้ PIC เกิดการรีเซ็ท

การป้องกันกระแสหลากเข้า (Inrush Current) วิธีที่ง่ายคือการใช้ Low-pass filter ดังภาพ

ตัวต้านทาน 10 โอห์มทำหน้าที่จำกัดการไหลของกระแส เมื่อใส่ตัวต้านทานนี้แล้วจะพบว่า PIC ไม่รีเซ็ท แต่เซอร์โวจะไม่ทำงาน ตัวเก็บประจุทำหน้าที่รักษาแรงดันฝั่งเซอร์โวให้คงที่เพียงพอให้ทำงานได้ตามปกติ

อาจสังเกตุว่าค่าความต้านทานที่ใช้ค่อนข้างต่ำ ซึ่งเป็นสิ่งจำเป็นหากโหลดต้องการใช้กระแสมาก ในที่นี้ควรใช้ตัวต้านทานที่รับกระแสได้อย่างเหมาะสม เช่นใช้ขนาด 1/2 หรือ 1 วัตต์  ส่วนค่าความเก็บประจุก็ต้องมากพอที่จะรักษาแรงดันให้อยู่ในระดับที่ยอมรับได้