- วัสดุที่จำเป็น
- แผนภูมิวงจรรวม
- เซอร์โวมอเตอร์คืออะไร?
- คำอธิบายรหัส Arduino
- การควบคุมเซอร์โวหลายตัวด้วย Arduino
การใช้เซอร์โวหนึ่งหรือสองตัวกับ Arduino นั้นง่าย แต่ถ้าเราต้องการใช้เซอร์โวมอเตอร์มากกว่าหนึ่งตัวล่ะ?
ที่นี่เราจะแสดงให้คุณเห็นว่าจะควบคุมเซอร์โวมอเตอร์หลายตัวด้วย Arduinoได้อย่างไร การเชื่อมต่อเซอร์โวมอเตอร์หลายตัวกับ Arduino ดูเหมือนจะง่ายและ แต่ถ้าเราเชื่อมต่อเซอร์โวทั้งหมดเข้ากับพินของ Arduino พวกมันจะทำงานไม่ถูกต้องเนื่องจากไม่มีกระแสเพียงพอที่จะขับเคลื่อนมอเตอร์ทั้งหมด ดังนั้นคุณต้องใช้แหล่งจ่ายไฟแยกต่างหากสำหรับมอเตอร์ไม่ว่าจะเป็นจากอะแดปเตอร์บางตัว (5v 2A) หรือจากแบตเตอรี่ 9v คุณภาพดี
วัสดุที่จำเป็น
- Arduino UNO
- เซอร์โวมอเตอร์
- พาวเวอร์ซัพพลาย
- เขียงหั่นขนม
- การเชื่อมต่อสายไฟ
แผนภูมิวงจรรวม
เซอร์โวมอเตอร์คืออะไร?
ก่อนที่จะลงรายละเอียดอันดับแรกเราควรรู้เกี่ยวกับเซอร์โวมอเตอร์
เซอร์โวมอเตอร์มีให้เลือกหลายรูปแบบและขนาด เซอร์โวมอเตอร์ส่วนใหญ่จะมีสายไฟสายหนึ่งสำหรับแรงดันไฟฟ้าบวกอีกสายหนึ่งสำหรับกราวด์และสุดท้ายคือการกำหนดตำแหน่ง สายสีแดงเชื่อมต่อกับพลังงานสายสีดำเชื่อมต่อกับกราวด์และสายสีเหลืองเชื่อมต่อกับสัญญาณ
เซอร์โวมอเตอร์เป็นการรวมกันของมอเตอร์กระแสตรงระบบควบคุมตำแหน่งเกียร์ ตำแหน่งของเพลาของมอเตอร์กระแสตรงจะถูกปรับโดยอุปกรณ์อิเล็กทรอนิกส์ควบคุมในเซอร์โวโดยพิจารณาจากอัตราส่วนหน้าที่ของสัญญาณ PWM ที่ขาสัญญาณ
เพียงแค่พูดอุปกรณ์อิเล็กทรอนิกส์ควบคุมจะปรับตำแหน่งเพลาโดยการควบคุมมอเตอร์ DC ข้อมูลเกี่ยวกับตำแหน่งของเพลานี้จะถูกส่งผ่านขาสัญญาณ ข้อมูลตำแหน่งไปยังส่วนควบคุมควรส่งในรูปแบบของสัญญาณ PWM ผ่านขาสัญญาณของเซอร์โวมอเตอร์
ความถี่ของสัญญาณ PWM (Pulse Width Modulated) อาจแตกต่างกันไปตามประเภทของเซอร์โวมอเตอร์ สิ่งสำคัญที่นี่คือ DUTY RATIO ของสัญญาณ PWM ตาม DUTY RATION อุปกรณ์อิเล็กทรอนิกส์ควบคุมปรับเพลา
ดังแสดงในรูปด้านล่างสำหรับเพลาที่จะย้ายไปที่ 9o นาฬิกา TURN ON RATION จะต้องเป็น 1/18. เวลาเปิด 1ms และเวลาปิด 17ms ในสัญญาณ 18ms
สำหรับเพลาที่จะเลื่อนไปที่ 12o นาฬิกาเวลา ON ของสัญญาณต้องเป็น 1.5ms และเวลา OFF ควรเป็น 16.5ms อัตราส่วนนี้ถูกถอดรหัสโดยระบบควบคุมในเซอร์โวและจะปรับตำแหน่งตามนั้น PWM นี้สร้างขึ้นโดยใช้ ARDUINO UNO
ก่อนที่จะ เชื่อมต่อเซอร์โวกับ Arduinoคุณสามารถทดสอบเซอร์โวของคุณด้วยความช่วยเหลือของวงจรทดสอบเซอร์โวมอเตอร์นี้ ตรวจสอบโครงการ Servo ด้านล่างของเราด้วย:
- การควบคุมเซอร์โวมอเตอร์โดย Flex Sensor
คำอธิบายรหัส Arduino
รหัส Arduino ที่สมบูรณ์สำหรับการควบคุมเซอร์โวหลายตัวจะได้รับในตอนท้าย
Arduino มีไลบรารีสำหรับเซอร์โวมอเตอร์และจัดการทุกสิ่งที่เกี่ยวข้องกับ PWM เพื่อหมุนเซอร์โวคุณเพียงแค่ต้องป้อนมุมที่คุณต้องการหมุนและมีฟังก์ชัน servo1.write (มุม); ซึ่งจะหมุนเซอร์โวไปยังมุมที่ต้องการ
ดังนั้นเราจึงเริ่มต้นด้วยการกำหนดไลบรารีสำหรับเซอร์โวมอเตอร์
# รวม
ในโค้ดด้านล่างนี้เรากำลังเริ่มต้นเซอร์โวทั้งสี่ตัวเป็น Servo1, Servo2, Servo3 และ Servo4
เซอร์โวเซอร์โว 1; เซอร์โวเซอร์โว 2; เซอร์โว servo3; เซอร์โว servo4;
จากนั้นเราจะมีการตั้งค่าทั้งหมดขาอินพุตเซอร์โวด้วย Arduino ดังแสดงในรหัสด้านล่าง Servo1 เชื่อมต่อกับพินที่ 3 ของ Arduino คุณสามารถเปลี่ยนพินตามที่คุณต้องการได้ แต่โปรดทราบว่าควรเป็นพิน PWM การใช้ Servo กับพินดิจิทัลของ Arduino นั้นไม่น่าเชื่อถือ
การตั้งค่าเป็นโมฆะ () { servo1.attach (3); เซอร์โว 2. แนบ (5); เซอร์โว 3 แนบ (6); เซอร์โว 4. แนบ (9); }
ตอนนี้ในฟังก์ชัน void loop () เราแค่หมุนเซอร์โวทั้งหมดจาก 0 ถึง 180องศาจากนั้น 180 ถึง 0 องศา การหน่วงเวลาที่ใช้ในโค้ดด้านล่างนี้ใช้เพื่อเพิ่มหรือลดความเร็วของเซอร์โวเนื่องจากมีผลต่อการเพิ่มหรือลดความเร็วของตัวแปร 'i'
โมฆะ loop () { สำหรับ (int i = 0; i <180; i ++) { servo1.write (i); servo2.write (ผม); servo3.write (ผม); servo4.write (ผม); ล่าช้า (10); } สำหรับ (i = 180; i> 0; i-- ) { servo1.write (i); servo2.write (ผม); servo3.write (ผม); servo4.write (ผม); ล่าช้า (10); } }
การควบคุมเซอร์โวหลายตัวด้วย Arduino
เราทุกคนประสบปัญหาในปัจจุบันในขณะที่ใช้เซอร์โวมากกว่าสองตัวกับ Arduino หนึ่งตัว ทางออกเดียวคือการเชื่อมต่อแหล่งจ่ายไฟภายนอกที่มีระดับกระแสไฟฟ้าที่เหมาะสม (ในโครงการนี้ฉันใช้ 2A กับแหล่งจ่ายไฟ 9v) สำหรับแหล่งจ่ายไฟภายนอกคุณสามารถใช้อะแดปเตอร์ RPS (เครื่องมือจ่ายไฟที่มีการควบคุม) หรือแบตเตอรี่ 9 โวลต์คุณภาพดีคุณสามารถใช้พอร์ต USB ของแล็ปท็อปของคุณเพื่อเปิด Servo ขนาดเล็กได้ ในการใช้แหล่งจ่ายภายนอกคุณเพียงแค่ต้องลัดสายดิน Arduino ไปที่กราวด์ซัพพลายภายนอก
ใช้รหัส Arduino ที่ระบุด้านล่างเพื่อตั้งโปรแกรม Arduino ของคุณและเชื่อมต่อเซอร์โวมอเตอร์ทั้งหมดตามที่แสดงในแผนภาพวงจรพร้อมแหล่งจ่ายไฟที่เหมาะสมไปยังมอเตอร์ ดังนั้นเซอร์โวทั้งหมดจะทำงานร่วมกันโดยไม่มีการขัดจังหวะ