Lab 5.3 – ทดลองควบคุม Servo motor
โจทย์
- ควบคุม servo motor เพื่อสร้าง Useless Machine อย่างง่าย
- กำหนดให้ใช้มื่อกดปุ่มเพื่อเปิดไฟ LED โดยพอไฟ LED ติด Servo จะหมุนมากดปุ่มอีกทีเพื่อปิดไฟ (โปรแกรมส่วน LED เขียนไว้ว่ากดเปิด กดปิด วนไปเรื่อย)
- สามารถใช้มือของ นศ. จับ servo เล็งให้กดปุ่มได้พอดี
ตัวอย่าง
แนวทาง
servo เป็นมอเตอร์ชนิดหนึ่ง มีจุดเด่นที่สามารถควบคุมตำแหน่งแขนให้ชี้ไปในทิศที่ต้องการได้ ซึ่งการควบคุมตำแหน่งนี้จะใช้สัญญาณ PWM และมีคุณลักษณะดังต่อไปนี้
servo มีช่วงองศาการหมุนประมาณ 180 องศา ซึ่งควบคุมด้วย Pulse ความกว้างตั้งแต่ 1-2 ms และมีคาบของสัญญาณ PWM อยู่ที่ 10-20 ms
ข้อสังเกต – จากค่าคาบของ servo ที่กำหนดจะเห็นได้ว่าเราไม่สามารถใช้ Hardware PWM ในการสร้างสัญญาณควบคุม servo ได้เพราะคาบของ Hardware PWM นั้นสั้นเกินไป (ยาวที่สุด ~0.8ms สำหรับ PIC16 ความถี่ 20MHz)
วิธีต่อสายควบคุม servo
การต่อวงจร
เนื่องจาก Servo เป็นอุปกรณ์ที่กินไฟตอนช่วงเริ่มทำงานมาก ทำให้กระแสไหลเข้าตัวอุปกรณ์มากจนมักทำให้เกิดไฟกระชากและ Vcc ของวงจรทั้งหมดตกลงต่ำกว่าแรงดันขั้นต่ำที่ PIC จะทำงานได้ ส่งผลให้ PIC เกิดการรีเซ็ท
การป้องกันกระแสหลากเข้า (Inrush Current) วิธีที่ง่ายคือการใช้ Low-pass filter ดังภาพ
ตัวต้านทาน 10 โอห์มทำหน้าที่จำกัดการไหลของกระแส เมื่อใส่ตัวต้านทานนี้แล้วจะพบว่า PIC ไม่รีเซ็ท แต่เซอร์โวจะไม่ทำงาน ตัวเก็บประจุทำหน้าที่รักษาแรงดันฝั่งเซอร์โวให้คงที่เพียงพอให้ทำงานได้ตามปกติ
อาจสังเกตุว่าค่าความต้านทานที่ใช้ค่อนข้างต่ำ ซึ่งเป็นสิ่งจำเป็นหากโหลดต้องการใช้กระแสมาก ในที่นี้ควรใช้ตัวต้านทานที่รับกระแสได้อย่างเหมาะสม เช่นใช้ขนาด 1/2 หรือ 1 วัตต์ ส่วนค่าความเก็บประจุก็ต้องมากพอที่จะรักษาแรงดันให้อยู่ในระดับที่ยอมรับได้