ตามที่กล่าวไว้ก่อนหน้านี้Arduino Dueเป็นบอร์ดที่ใช้คอนโทรลเลอร์ ARM ที่ออกแบบมาสำหรับวิศวกรอิเล็กทรอนิกส์และมือสมัครเล่น บอร์ด DUE นี้สามารถใช้สำหรับทำเครื่องจักร CNC เครื่องพิมพ์ 3 มิติแขนหุ่นยนต์ ฯลฯ โครงการทั้งหมดนี้มีคุณสมบัติทั่วไปนั่นคือการควบคุมตำแหน่ง โครงการใด ๆ เหล่านี้ต้องการความถูกต้องต่อตำแหน่งของพวกเขา ตำแหน่งที่ถูกต้องในเครื่องเหล่านี้สามารถทำได้โดยเซอร์โวมอเตอร์ในช่วงนี้เราจะไปควบคุมตำแหน่งของ Servo Motor กับ Arduino เนื่องจาก เราได้กล่าวถึงการเชื่อมต่อเซอร์โวมอเตอร์กับ Arduino Uno และการเชื่อมต่อเซอร์โวมอเตอร์ด้วยไมโครคอนโทรลเลอร์ 8051 แล้ว
เซอร์โวมอเตอร์:
เซอร์โวมอเตอร์เป็นที่รู้จักสำหรับการเคลื่อนที่หรือตำแหน่งของเพลาที่แม่นยำ สิ่งเหล่านี้ไม่ได้เสนอสำหรับการใช้งานความเร็วสูง สิ่งเหล่านี้เสนอสำหรับความเร็วต่ำแรงบิดปานกลางและการใช้งานตำแหน่งที่แม่นยำ มอเตอร์เหล่านี้ใช้ในเครื่องจักรแขนกลระบบควบคุมการบินและระบบควบคุม เซอร์โวมอเตอร์ยังใช้ในเครื่องพิมพ์และเครื่องแฟกซ์บางรุ่น
เซอร์โวมอเตอร์มีให้เลือกหลายรูปแบบและขนาด เราจะใช้SG90 Servo Motorในบทช่วยสอนนี้ SG90 เป็นเซอร์โวมอเตอร์ 180 องศา ดังนั้นด้วยเซอร์โวนี้เราสามารถวางตำแหน่งแกนได้ตั้งแต่ 0 ถึง 180 องศา
เซอร์โวมอเตอร์ส่วนใหญ่มีสายไฟสามเส้นสายหนึ่งใช้สำหรับแรงดันไฟฟ้าบวกอีกเส้นหนึ่งสำหรับกราวด์และสายสุดท้ายสำหรับการตั้งค่าตำแหน่ง สายสีแดงเชื่อมต่อกับพลังงานสายสีน้ำตาลเชื่อมต่อกับกราวด์และสายสีเหลือง (หรือสีขาว) เชื่อมต่อกับสัญญาณ
เซอร์โวมอเตอร์เป็นการผสมผสานระหว่างมอเตอร์กระแสตรงระบบควบคุมตำแหน่งและเกียร์ ในเซอร์โวเรามีระบบควบคุมซึ่งรับสัญญาณ PWM จากขาสัญญาณ มันถอดรหัสสัญญาณและรับอัตราส่วนหน้าที่จากมัน หลังจากนั้นจะเปรียบเทียบอัตราส่วนกับค่าตำแหน่งที่กำหนดไว้ล่วงหน้า หากมีความแตกต่างในค่าจะปรับตำแหน่งของเซอร์โวให้เหมาะสม ดังนั้นตำแหน่งแกนของเซอร์โวมอเตอร์จึงขึ้นอยู่กับอัตราส่วนหน้าที่ของสัญญาณ PWM กับขาสัญญาณ
ความถี่ของสัญญาณ PWM (Pulse Width Modulated) อาจแตกต่างกันไปตามประเภทของเซอร์โวมอเตอร์ สิ่งสำคัญที่นี่คือ DUTY RATIO ของสัญญาณ PWM ตรวจสอบสิ่งนี้สำหรับ PWM กับ Arduino Due อย่างไรก็ตามในกรณีนี้เราไม่จำเป็นต้องกังวลกับการเลือก Duty Ratio ใน Arduino เรามีฟังก์ชันพิเศษ เมื่อเรียกมันว่าเราสามารถปรับตำแหน่งของเซอร์โวได้เพียงแค่ระบุมุม เราจะพูดถึงเรื่องนี้ในส่วนการทำงานด้านล่าง
ก่อนที่จะเชื่อมต่อเซอร์โวมอเตอร์กับ Arduino Dueคุณสามารถทดสอบเซอร์โวของคุณด้วยความช่วยเหลือของวงจรทดสอบเซอร์โวมอเตอร์นี้ ตรวจสอบโปรเจ็กต์เหล่านี้ด้วยเพื่อควบคุม Servo โดย Flex Sensor หรือ Force Sensor
ส่วนประกอบ:
ฮาร์ดแวร์: Arduino Due, แหล่งจ่ายไฟ (5v), เซอร์โวมอเตอร์
ซอฟต์แวร์: Arduino ทุกคืนดาวน์โหลดได้จากลิงค์ด้านล่าง (https://www.arduino.cc/en/Main/Software)
สำหรับรายละเอียดเกี่ยวกับวิธีดาวน์โหลดและติดตั้งซอฟต์แวร์นี้โปรดไปที่บทช่วยสอนแรกเริ่มต้นกับ Arduino Due
แผนภาพวงจรและคำอธิบายการทำงาน:
ดังที่กล่าวไว้ก่อนหน้านี้ใน ARDUINO เรามีไลบรารีที่กำหนดไว้ล่วงหน้าซึ่งจะกำหนดความถี่และอัตราส่วนหน้าที่ตามนั้นเมื่อไฟล์ส่วนหัวถูกเรียกหรือรวม ใน ARDUINO เราต้องระบุตำแหน่งของเซอร์โวที่ต้องการและ DUE จะสร้างสัญญาณ PWM ที่เหมาะสมสำหรับเซอร์โว สิ่งที่เราต้องทำเพื่อให้ได้ตำแหน่งเซอร์โวที่แม่นยำคือ
# รวม
เซอร์โว myservo;
myservo.attach (servo_signal_pin_attached_to);
myservo.write (needed_position_ angle);
ไฟล์ส่วนหัว “ #include
ประการที่สองชื่อจะถูกเลือกสำหรับเซอร์โวโดยใช้ “ Servo myservo” ในที่นี้ myservo คือชื่อที่เลือกดังนั้นในขณะที่เขียนตำแหน่งเราจะใช้ชื่อนี้คุณลักษณะนี้มีประโยชน์เมื่อเรามีเซอร์โวจำนวนมากให้ควบคุม เราสามารถควบคุมเซอร์โวได้มากถึง 12 ตัวจากสิ่งนี้
ด้วยArduino เนื่องจากมี 12 ช่องสัญญาณ PWMเราจำเป็นต้องบอก DUE ว่าขาสัญญาณของเซอร์โวเชื่อมต่ออยู่ที่ไหนหรือที่ใดที่ต้องสร้างสัญญาณ PWM ในการทำเช่นนี้เรามี “ myservo.attach (2);” ที่นี่เรากำลังบอก DUE ว่าเราได้เชื่อมต่อขาสัญญาณของเซอร์โวที่ PIN2 แล้ว
ซ้ายทั้งหมดคือการกำหนดตำแหน่งเราจะกำหนดตำแหน่งของเซอร์โวโดยใช้ “ myservo.write (45);” โดยคำสั่งนี้เซอร์โวมือจะขยับ 45 องศา ถ้าเราเปลี่ยน '45' เป็น '175' แกนเซอร์โวจะทำมุมเป็น 175 องศาและอยู่ที่นั่น หลังจากนั้นเมื่อใดก็ตามที่เราต้องการเปลี่ยนตำแหน่งของเซอร์โวเราก็ต้องเรียกคำสั่ง “ myservo.write (needed_position_angle);” .
ในโปรแกรมเราจะเพิ่มและลดมุมโดยใช้ลูป ดังนั้นเซอร์โวจึงกวาดจาก 0 ถึง 180 จากนั้นจาก 180 เป็น 0 ไปเรื่อย ๆ การควบคุมเซอร์โวมอเตอร์โดย Arduino Dueอธิบายได้ดีที่สุดทีละขั้นตอนของรหัส Cด้านล่าง