เร่งความเร็วการพัฒนาแอปพลิเคชันยานยนต์ IoT BLDC Motor ด้วยไดรเวอร์มอเตอร์ A4964KJPTR-T

By Jacob Beningo

Contributed By DigiKey's North American Editors

มอเตอร์ DC แบบไร้แปรงถ่าน (BLDC) มีการใช้งานมากขึ้นในหลาย ๆ แอพพลิเคชั่น ตั้งแต่เครื่องเปิดโรงรถและหน้าต่างรถยนต์ที่ควบคุมด้วย Internet of Things (IoT) ไปจนถึงอุปกรณ์ควบคุมการขับเคลื่อนด้วยดาวเทียม นักออกแบบปัญหาที่ต้องเผชิญกับมอเตอร์ BLDC คืออัลกอริธึมการควบคุมที่จำเป็นในการขับเคลื่อนนั้นซับซ้อนและมักจะเชี่ยวชาญ ซึ่งทำให้ยากสำหรับวิศวกรทั่วไปที่จะเริ่มต้นใช้งานในระยะเวลาที่เหมาะสม

โดยทั่วไปแล้ว นักพัฒนาซอฟต์แวร์จะเลือกระหว่างโซลูชันที่ใช้ซอฟต์แวร์ที่ทำงานบนไมโครคอนโทรลเลอร์ ซึ่งให้โซลูชันซอฟต์แวร์ที่ยืดหยุ่น แต่ยังทำให้ไมโครคอนโทรลเลอร์เป็นภาระในการคำนวณ หรือใช้วงจรรวมเฉพาะ (IC) ส่วนหลังห่อหุ้มฟังก์ชันการควบคุมมอเตอร์ BLDC เต็มรูปแบบและยกเลิกการโหลดการควบคุม BLDC จากโฮสต์

บทความนี้กล่าวถึงความแตกต่างระหว่างโซลูชันซอฟต์แวร์ที่ใช้ไมโครคอนโทรลเลอร์กับโซลูชันชิปฮาร์ดแวร์เฉพาะ จากนั้นจะเจาะลึกถึงวิธีการใช้Allegro MicroSystemsA4964KJPTR-T , ตัวขับมอเตอร์ที่ออกแบบมาเพื่อลดความซับซ้อนของการควบคุมมอเตอร์ BLDC โดยเฉพาะสำหรับการใช้งานในยานยนต์ บทความนี้จะแสดงวิธีการโต้ตอบกับ A4964KJPTR-T พร้อมกับแนวทางปฏิบัติที่ดีที่สุดบางประการเพื่อหลีกเลี่ยงพฤติกรรมที่ไม่คาดคิด

A (มาก) แนะนำสั้น ๆ เกี่ยวกับมอเตอร์ BLDC

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

ตัวอย่างเช่นTRINAMIC Motion Control'sQBL4208-41-04-006 เป็นมอเตอร์ขนาด 24 โวลต์ 4000 รอบต่อนาที (RPM) ที่ให้แรงบิดสูงสุด 0.06 นิวตันเมตร (Nm) (ภาพที่ 1) มอเตอร์มีน้ำหนักเบา (0.662 ปอนด์ (ปอนด์)) และมีตัวเลือกมากมายสำหรับนักพัฒนาในการควบคุมมอเตอร์ เช่น ผ่านการทำงานแบบไร้เซ็นเซอร์โดยใช้แรงเคลื่อนไฟฟ้าย้อนกลับ (BEMF) หรือใช้เซ็นเซอร์ในตัวที่รายงานตำแหน่ง

รูปภาพของ TRINAMIC QBL4208-41-04-006 เป็นมอเตอร์ BLDC 24 โวลต์ 4000 รอบต่อนาทีรูปที่ 1: QBL4208-41-04-006 เป็นมอเตอร์ BLDC 24 โวลต์ 4000 รอบต่อนาทีที่สามารถส่งแรงบิดได้มากกว่า 0.06 นิวตันเมตรเล็กน้อยที่ความเร็วสูงสุด (ที่มาของภาพ: TRINAMIC Motion Control GmbH)

สำหรับแรงบิดที่มากขึ้น นักออกแบบสามารถใช้ปุ่มQBL4208-41-04-025 จาก TRINAMIC Motion Control (รูปที่ 2) ด้วย นี่คือมอเตอร์ BLDC 24 โวลต์ 4000 รอบต่อนาทีที่สามารถส่งแรงบิดได้มากกว่า 0.25 นิวตันเมตรเล็กน้อย

รูปภาพของ TRINAMIC Motion Control QBL4208-41-04-025 24 โวลต์, มอเตอร์ BLDC 4000 รอบต่อนาทีรูปที่ 2: TRINAMIC Motion Control QBL4208-41-04-025 เป็นมอเตอร์ BLDC 24 โวลต์ 4000 รอบต่อนาทีซึ่งให้แรงบิดมากกว่า 0.25 นิวตันเมตรที่ความเร็วสูงสุดเล็กน้อย (ที่มาของภาพ: TRINAMIC Motion Control GmbH)

มอเตอร์ BLDC ถูกขับเคลื่อนผ่านสายไฟสามเฟสซึ่งสร้างสนามแม่เหล็กที่ผลักกับแม่เหล็กถาวรเพื่อเคลื่อนสเตเตอร์และหมุนมอเตอร์

ในทางทฤษฎี ฟังดูง่าย แต่ในทางปฏิบัติ การขับมอเตอร์ BLDC ค่อนข้างซับซ้อน ทำให้นักพัฒนาต้องเลือกระหว่างการใช้ซอฟต์แวร์เฟรมเวิร์กเพื่อขับเคลื่อนมอเตอร์ หรือเลือกใช้โซลูชันชิปเฉพาะ

ซอฟต์แวร์เทียบกับโซลูชันชิปแบบเฉพาะ

มีหลายปัจจัยที่นักพัฒนาควรพิจารณาเมื่อต้องแก้ไขวิธีการหมุนมอเตอร์ BLDC ปัจจัยเหล่านี้มาจากพื้นฐาน:

  • ต้นทุน BOM เทียบกับต้นทุนแรงงาน
  • ความซับซ้อนของบอร์ดกับความซับซ้อนของซอฟต์แวร์
  • เวลาและค่าใช้จ่ายในการบำรุงรักษา

จากมุมมองของฮาร์ดแวร์ การใช้เส้นทางซอฟต์แวร์อาจเป็นเรื่องน่าดึงดูดใจมาก เนื่องจากโซลูชันชิปเฉพาะจะเพิ่มค่าใช้จ่ายเพิ่มเติมให้กับ BOM แทนที่จะใช้ชิปเฉพาะ ให้เอาต้นทุนนั้นออก ใช้ไมโครคอนโทรลเลอร์เพิ่มขึ้นอีกเศษเสี้ยวหนึ่ง และใส่อัลกอริธึมการควบคุมทั้งหมดลงในไมโครคอนโทรลเลอร์นั้น ดูเหมือนสถานการณ์ win-win แต่ทีมมักไม่พิจารณาการแยกย่อยทั้งหมดของการตัดสินใจครั้งนี้

ใช่ มันลดต้นทุน BOM แต่ก็เพิ่มภาระให้กับไมโครคอนโทรลเลอร์ในการประมวลผลข้อมูลสถานะ BLDC และขับเคลื่อนมอเตอร์อย่างต่อเนื่อง หากไมโครคอนโทรลเลอร์พยายามสุ่มตัวอย่างเซ็นเซอร์อื่นๆ พูดคุยกับวิทยุ และควบคุมอุปกรณ์อื่น ๆ ค่าใช้จ่ายในการพัฒนาซอฟต์แวร์และการบำรุงรักษาอาจทะลุเพดานหากไม่ใส่ใจ

ที่กล่าวว่าโซลูชันที่ใช้ซอฟต์แวร์ในไมโครคอนโทรลเลอร์สามารถให้ความยืดหยุ่นในการที่ทีมสามารถปรับแต่งอัลกอริธึมการควบคุมมอเตอร์ได้ การใช้ซอฟต์แวร์ไม่ได้หมายความว่าสิ่งต่าง ๆ จะต้องซับซ้อนเกินไปเสมอไป

ตัวอย่างเช่น โดยทั่วไปแล้วจะเป็นกรณีที่การย้ายอัลกอริธึมการควบคุมมอเตอร์ไปยังไมโครคอนโทรลเลอร์อาจใช้ RAM มากกว่าและต้องใช้แฟลชจำนวนมาก อย่างไรก็ตาม หากทีมใช้ไมโครคอนโทรลเลอร์ที่ออกแบบมาสำหรับการควบคุมมอเตอร์ เช่น Texas InstrumentsF280049CRSHSR ไมโครคอนโทรลเลอร์ควบคุมมอเตอร์อัลกอริธึมถูกสร้างขึ้นในไลบรารีที่อยู่ในไมโครคอนโทรลเลอร์ ROM ซึ่งหมายความว่าโค้ดเพิ่มเติมเพียงอย่างเดียวที่เพิ่มลงในแอปพลิเคชันคือการเรียกใช้ฟังก์ชันเพื่อเข้าถึงไลบรารีที่ทำหน้าที่ยกของหนักทั้งหมด

การหมุนมอเตอร์ BLDC ไม่ใช่แค่ซอฟต์แวร์เท่านั้น แต่ยังต้องใช้ฮาร์ดแวร์อีกด้วย รูปที่ 3 แสดงตัวอย่างแอปพลิเคชันโดยใช้ C2000 ไมโครคอนโทรลเลอร์ ซึ่งมี F280049CRSHSR เป็นสมาชิกในครอบครัว ซึ่งแสดงให้เห็นทุกสิ่งที่จำเป็นและเป็นทางเลือกในการขับเคลื่อนมอเตอร์ BLDC นอกเหนือจากไมโครคอนโทรลเลอร์แล้ว ยังต้องมีสเตจกำลังไฟฟ้า 3 เฟสที่สามารถขับเคลื่อนมอเตอร์ BLDC สามเฟสเพื่อให้มอเตอร์หมุนได้

แผนภาพของไมโครคอนโทรลเลอร์ Texas Instruments C2000 (คลิกเพื่อดูภาพขยาย)รูปที่ 3: ไมโครคอนโทรลเลอร์ Texas Instruments C2000 ได้รับการออกแบบสำหรับแอปพลิเคชันการควบคุมมอเตอร์ ภาพนี้แสดงตัวอย่างแอปพลิเคชันที่มีไมโครคอนโทรลเลอร์อยู่ตรงกลาง และวงจรที่จำเป็นและเป็นทางเลือกที่จำเป็นสำหรับการขับเคลื่อนมอเตอร์ BLDC (แหล่งรูปภาพ: Texas Instruments)

การใช้ไมโครคอนโทรลเลอร์เพื่อขับเคลื่อนมอเตอร์นั้นน่าสนใจอย่างแน่นอน แต่โซลูชันฮาร์ดแวร์เฉพาะนั้นเป็นอย่างไร มาดูชิปขับมอเตอร์ A4964KJPTR-T ของ Allegro MicroSystems

ไดรเวอร์มอเตอร์ Allegro MicroSystems A4964KJPTR-T

ชิปไดรเวอร์มอเตอร์ Allegro MicroSystems A4964KJPTR-T เป็นไดรเวอร์มอเตอร์ BLDC เฉพาะที่ประกอบด้วยสมาร์ททั้งหมดที่จำเป็นในการขับเคลื่อนมอเตอร์ (รูปที่ 4) ออกแบบมาโดยเฉพาะสำหรับการใช้งานในยานยนต์และสำหรับใช้กับ N-channel MOSFET ชิปดังกล่าวมีการเริ่มต้นและการเปลี่ยนแบบไร้เซ็นเซอร์ ดังนั้นจึงต้องใช้ฮาร์ดแวร์ภายนอกในปริมาณน้อยที่สุด A4964KJPTR-T ยังทำงานบนแรงดันไฟฟ้าที่หลากหลาย ตั้งแต่ 5.5 ถึง 50 โวลต์ ซึ่งครอบคลุมการใช้งานมาตรฐานเกือบทุกประเภท ควบคู่ไปกับระบบยานยนต์

บางทีคุณสมบัติที่น่าสนใจที่สุดของมันก็คือ A4964KJPTR-T สามารถเชื่อมต่อกับไมโครคอนโทรลเลอร์หรือหน่วยควบคุมอิเล็กทรอนิกส์ส่วนกลาง (ECU) ผ่าน Serial Peripheral Interface (SPI) เพื่อกำหนดค่าลงทะเบียนต่าง ๆ สำหรับการทำงานของมอเตอร์ เห็นได้ชัดว่าไมโครคอนโทรลเลอร์ไม่จำเป็นต้องมีประสิทธิภาพเท่ากับตัวที่ใช้อัลกอริธึมการควบคุมมอเตอร์

ไดอะแกรมของไดรเวอร์มอเตอร์ BLDC Allegro A4964KJPTR-T (คลิกเพื่อดูภาพขยาย)รูปที่ 4: ไดรเวอร์มอเตอร์ BLDC A4964KJPTR-T สามารถทำงานได้ตั้งแต่ 5.5 ถึง 50 โวลต์และให้การเริ่มต้นและการเปลี่ยนแบบไม่มีเซ็นเซอร์ สามารถกำหนดค่าความเร็วมอเตอร์ผ่าน SPI หรือผ่านสัญญาณ PWM เฉพาะได้ (ที่มาของรูปภาพ: Allegro MicroSystems)

อีกทางหนึ่ง และนี่คือส่วนที่น่าสนใจ ความเร็วมอเตอร์ A4964KJPTR-T ยังสามารถขับเคลื่อนได้โดยไม่ต้องใช้ SPI โดยเพียงแค่ให้สัญญาณการปรับความกว้างพัลส์ (PWM) มีหน่วยความจำแบบไม่ลบเลือนซึ่งสามารถจัดเก็บการตั้งค่าสำหรับมอเตอร์ซึ่งโหลดไว้เมื่อเปิดเครื่อง ให้มีเพียงสัญญาณ PWM เพื่อควบคุมมอเตอร์

จากมุมมองของคอนฟิกูเรชัน A4964KJPTR-T มีตัวรีจิสเตอร์ 16 บิตที่สามารถระบุแอดเดรสได้ 32 ตัว บวกกับรีจิสเตอร์สถานะ การลงทะเบียนสถานะมีความเฉพาะเจาะจงในการที่ 5 บิตแรกถูกส่งระหว่างการดำเนินการอ่าน/เขียนบน SPI ทุกครั้ง ทำให้ซอฟต์แวร์สามารถตรวจสอบสถานะทั่วไปเพื่อดูว่ามีข้อผิดพลาดหรือปัญหาใด ๆ หรือไม่ การลงทะเบียนสถานะทั้งหมดสามารถอ่านได้ระหว่างการดำเนินการเขียนไปยังชิป เนื่องจากไม่มีการส่งข้อมูลกลับจาก A4964KJPTR-T

ในรีจิสเตอร์ที่สามารถระบุตำแหน่งได้ 32 รายการ ยังมีรีจิสเตอร์พิเศษสองรายการ Register 30 เป็นแบบเขียนอย่างเดียว และ register 31 เป็นแบบอ่านอย่างเดียว การลงทะเบียนแบบเขียนอย่างเดียวช่วยให้นักพัฒนาตั้งค่าอินพุตความต้องการหรืออัตรารอบการทำงานที่มอเตอร์จะถูกขับเคลื่อนด้วยค่าระหว่าง 0 – 1023 ข้อมูลการลงทะเบียนแบบอ่านอย่างเดียวเปลี่ยนแปลงตามข้อมูลที่ร้องขอซึ่งเขียนขึ้นเพื่อลงทะเบียน 29 ซึ่งเป็นการลงทะเบียนการเลือกอ่านย้อนกลับ การลงทะเบียนนี้ช่วยให้สามารถเรียกข้อมูลทางไกลได้หลากหลาย เช่น:

  • การวินิจฉัย
  • ความเร็วมอเตอร์
  • อุปทานกระแสเฉลี่ย
  • แรงดันไฟจ่าย
  • อุณหภูมิชิป
  • อินพุตความต้องการ
  • ใช้รอบการทำงานสูงสุดของสะพาน
  • การสมัครเฟสล่วงหน้า

นอกเหนือจากรีจิสเตอร์พิเศษเหล่านี้แล้ว ส่วนที่เหลืออีก 30 รายการยังอนุญาตให้ปรับแต่งแอปพลิเคชันมอเตอร์เฉพาะและอนุญาตให้เปิดหรือปิดข้อผิดพลาดได้ เช่น ขีดจำกัดกระแสไฟและข้อผิดพลาดของเกทไดรฟ์

ไดรเวอร์มอเตอร์เฉพาะนั้นน่าสนใจเพราะรวมทุกอย่างที่จำเป็นต้องกำหนดค่าเพื่อเรียกใช้มอเตอร์ลงในรีจิสเตอร์การกำหนดค่าสองสามโหล การดำเนินการนี้จะลบโอเวอร์เฮดของซอฟต์แวร์ที่อาจมีอยู่บนไมโครคอนโทรลเลอร์ได้อย่างมาก และที่สำคัญกว่านั้น สามารถลดค่าใช้จ่ายในการพัฒนาซอฟต์แวร์และการบำรุงรักษาได้อย่างมาก การขับเคลื่อน BLDC นั้นไม่มีอะไรมากไปกว่าการส่ง PWM ที่ไม่มีโอเวอร์เฮดในไมโครคอนโทรลเลอร์ หรือการเปิดใช้งานบิตของมอเตอร์และการจัดหาอินพุตความต้องการแบบ SPI เพื่อหมุน BLDC

คำแนะนำในการใช้ A4964KJPTR-T

A4964KJPTR-T นั้นค่อนข้างตรงไปตรงมาในการเชื่อมต่อกับ แต่มี "เคล็ดลับและลูกเล่น" หลายอย่างที่นักพัฒนาควรจำไว้ว่าสามารถทำให้การพัฒนาง่ายขึ้นและเร็วขึ้นเช่น:

  • การลงทะเบียนสถานะจะถูกส่งคืนบนอินเทอร์เฟซ SPI ทุกครั้งที่เขียนไปยังชิป และไม่พร้อมใช้งานเป็นการลงทะเบียนเฉพาะที่สามารถระบุตำแหน่งได้ ซึ่งหมายความว่ารหัสไดรเวอร์จำเป็นต้องตรวจสอบสาย SDO ของบัส SPI ขณะเขียนไปยังชิปเพื่อรับข้อมูลสถานะ
  • ข้อมูลข้อบกพร่องจะรวมอยู่ในการลงทะเบียนสถานะ แต่ภาพรวมของสถานะชิปมีอยู่ในทุกธุรกรรม SPI ในห้าบิตแรกเมื่อไมโครคอนโทรลเลอร์ให้ข้อมูลการเข้าถึงที่อยู่ ข้อมูลนี้สามารถใช้เพื่อระบุว่ามีปัญหาใดๆ เกิดขึ้นหรือไม่
  • มีรีจิสเตอร์ที่ไม่ซ้ำกันสองรายการในแมปหน่วยความจำที่อ่านและเขียนอย่างเดียว สิ่งนี้ตรงไปตรงมา แต่ระวังอย่าพยายามอ่านจากการลงทะเบียนการเขียนเท่านั้น เนื่องจากจะเขียนข้อมูลจำลองใดๆ ก็ตามที่กำลังถูกใช้ในลำดับการอ่านไปยังรีจิสเตอร์
  • ชิปมีหน่วยความจำแบบไม่ลบเลือนบางส่วนที่สามารถใช้เก็บพารามิเตอร์เริ่มต้นได้ พารามิเตอร์เหล่านี้ถูกโหลดลงใน RAM และใช้ในระหว่างการเริ่มต้น เพื่อให้แน่ใจว่าชิปบูทเข้าสู่สถานะพร้อมอย่างมีประสิทธิภาพสูงสุด ให้ตั้งโปรแกรมค่าเริ่มต้นที่ "ปลอดภัย" ลงในชิป
  • หากอุปกรณ์ปลายทางทำงานในสภาพแวดล้อมที่มีเสียงดังหรือเต็มไปด้วยรังสี ไม่ควรออกแบบรหัสแอปพลิเคชันเพื่อยืนยันข้อมูลการกำหนดค่าเป็นระยะ ๆ การกำหนดค่าชิปถูกเก็บไว้ใน RAM ซึ่งหมายความว่ามีความเสี่ยงต่อรังสีคอสมิก บิตพลิก และเหตุการณ์ที่สนุกสนานและหายากทั้งหมดที่อาจเกิดขึ้นกับอุปกรณ์อิเล็กทรอนิกส์

บทสรุป

การใช้งานมอเตอร์ BLDC สำหรับยานยนต์, IoT หรือการใช้งานอื่น ๆ เป็นเรื่องปกติธรรมดา แต่การขับเคลื่อนสิ่งเหล่านี้อาจซับซ้อน ในการจัดการความซับซ้อนของซอฟต์แวร์ นักพัฒนาสามารถใช้ไดรเวอร์มอเตอร์ BLDC โดยเฉพาะ เช่น A4964KJPTR-T ซึ่งรวมเอาฟังก์ชันการควบคุมมอเตอร์ทั้งหมดไว้

ในขณะที่ซอฟต์แวร์ยังคงต้องการโต้ตอบกับชิป ไมโครคอนโทรลเลอร์ที่ใช้งานซอฟต์แวร์จะต้องตั้งค่าการกำหนดค่าเท่านั้น และ A4964KJPTR-T จะดูแลการขับเคลื่อนมอเตอร์ นักพัฒนาซอฟต์แวร์ที่ปฏิบัติตาม "คำแนะนำและเคล็ดลับ" ที่ให้มาจะพบว่าอุปกรณ์เหล่านี้สามารถประหยัดเวลาและความลำบากได้ไม่น้อยเมื่อพยายามใช้ A4964KJPTR-T

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo เป็นที่ปรึกษาด้านซอฟต์แวร์แบบฝังตัว เขาได้ตีพิมพ์บทความมากกว่า 200 บทความเกี่ยวกับเทคนิคการพัฒนาซอฟต์แวร์แบบฝังตัวเป็นวิทยากรและผู้ฝึกสอนด้านเทคนิคที่เป็นที่ต้องการและสำเร็จการศึกษา 3 ปริญญา รวมถึง ปริญญาโทวิศวกรรมศาสตร์จากมหาวิทยาลัยมิชิแกน

About this publisher

DigiKey's North American Editors