สเต็ปเปอร์มอเตอร์ Nema ประเภทต่าง ๆ มีอะไรบ้าง ความแตกต่างระหว่าง Nema stepper motor ประเภทต่างๆ ขนาดของ nema 17 motor

สเต็ปเปอร์มอเตอร์ NEMA 17 เป็นหนึ่งในมอเตอร์ที่ได้รับความนิยมและใช้กันอย่างแพร่หลาย เนื่องจากช่วงแรงบิด ขนาดกะทัดรัด และต้นทุนต่ำ จึงเหมาะอย่างยิ่งสำหรับการออกแบบส่วนใหญ่ที่ต้องการระบบการเคลื่อนไหวที่แม่นยำ

ขนาดนี้เป็นตัวเลือกที่ยอดเยี่ยมเมื่อสร้างเครื่องพิมพ์ 3 มิติ ในรุ่นยอดนิยม ชิ้นส่วนสามถึงสี่ชิ้นใช้เพื่อจัดระเบียบการเคลื่อนไหวตามแกนสามแกน (4 ชิ้นสำหรับรุ่นเหล่านั้นที่ใช้มอเตอร์สองตัวเพื่อเคลื่อนที่ไปตามแกน Y - ตัวอย่างเช่น RepRap Prusa i3 หรือ RepRap Prusa Mendel และอื่นๆ) คุณจะต้องใช้หนึ่งเส้นต่อเครื่องอัดรีดที่พิมพ์ด้วยเส้นใยพลาสติกหนึ่งเส้น หรือสองเส้นต่อเครื่องอัดรีดที่สามารถพิมพ์ด้วยเส้นใยพลาสติกสองเส้นพร้อมกัน โดยปกติบนแกนพวกเขาจะใช้เวลามากกว่า โมเดลที่ทรงพลังและเครื่องอัดรีดจะอ่อนลง เนื่องจากแรงบิดเพียงเล็กน้อยก็เพียงพอสำหรับเครื่องอัดรีด และน้ำหนักที่ต่ำกว่าของมอเตอร์ที่ใช้ช่วยลดภาระบนแกนของการเคลื่อนที่ได้

มาตรฐาน NEMA กำหนดขนาดหน้าแปลนสเต็ปเปอร์มอเตอร์ NEMA 17 หมายถึงขนาดหน้าแปลน 1.7" ใน ระบบเมตริกมันจะสอดคล้องกับ 42.3 มม. และระยะห่างระหว่างมิติการลงจอดจะเท่ากับ 31 มม. มอเตอร์ส่วนใหญ่ขนาดนี้มีความหนาของเพลา 5 มม. คุณสามารถดูรูปแปลนสำหรับขนาดนี้ได้จากภาพด้านบน

คุณจะต้องใช้ไดรเวอร์สเต็ปเปอร์มอเตอร์เพื่อควบคุมการเคลื่อนไหว สำหรับขนาดนี้ ไดรเวอร์จำนวนมากมีความเหมาะสมที่แตกต่างกัน หมวดหมู่ราคา. ตัวอย่างเช่น ไมโครไดรเวอร์ เช่น A4988, DVR8825 และอื่นๆ มักถูกใช้เนื่องจากต้นทุนต่ำ สะดวกในการใช้ร่วมกับ Arduino - ในกรณีนี้ คุณจะต้องมีตัวป้องกัน RAMPS 1.4 ที่ยอดเยี่ยม ซึ่งช่วยให้คุณเชื่อมต่อได้ถึง 5 แกน อีกด้วย แพร่หลายได้รับไดรเวอร์แบบบอร์ดเดี่ยวซึ่งใช้ชิป TB6560 และ TB6600 จากโตชิบา ทั้งแบบช่องสัญญาณเดียวและหลายช่องสัญญาณ อุปกรณ์เหล่านี้สามารถจัดประเภทเป็นไดรเวอร์กึ่งมืออาชีพได้แล้ว พวกเขามีอินพุตและเอาต์พุตแบบออปโตคัปเปิ้ล สามารถเชื่อมต่อโดยตรงกับพอร์ต LPT ของคอมพิวเตอร์ ใช้ตรรกะการควบคุมขั้นสูง และกำลังเพียงพอสำหรับมอเตอร์ขนาดใหญ่ คุณยังสามารถพูดถึงไดรเวอร์โมดูลาร์แบบมืออาชีพได้ พวกเขาสามารถควบคุมการข้ามขั้นตอน ใช้การเคลื่อนไหวด้วยการเร่งความเร็ว ความสามารถในการจัดการกับสถานการณ์ที่สำคัญ (เช่น การลัดวงจร) แต่พวกมันไม่เป็นที่นิยมมากในกลุ่มมือสมัครเล่นเนื่องจากระดับที่สูงขึ้น ราคา.

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

ที่นี่คุณสามารถเลือกและซื้อสเต็ปเปอร์มอเตอร์ NEMA 17 สำหรับสร้างเครื่องพิมพ์ 3 มิติในราคาที่แข่งขันได้

ก่อนที่จะเริ่มโครงการอื่นบน Arduino ได้มีการตัดสินใจใช้สเต็ปเปอร์มอเตอร์ Nema 17

ทำไมต้อง Nema 17? ประการแรกเนื่องจากอัตราส่วนราคา/คุณภาพที่ดีเยี่ยม

ก่อนเชื่อมต่อ Nema 17 ฉันมีประสบการณ์กับ stepper 24byj48 (แผ่นข้อมูล) มันถูกควบคุมทั้งด้วยความช่วยเหลือของ Arduino และด้วยความช่วยเหลือของ Raspberry pi ก็ไม่มีปัญหา เสน่ห์หลักของเครื่องยนต์นี้คือราคา (ประมาณ 3 ดอลลาร์ในจีน) ยิ่งไปกว่านั้น สำหรับจำนวนเงินนี้ คุณจะได้เครื่องยนต์พร้อมคนขับในชุดอุปกรณ์ เห็นด้วย เรื่องนี้สามารถถูกเผาได้ ไม่รู้สึกเสียใจกับสิ่งที่คุณทำลงไปจริงๆ

ตอนนี้มีงานที่น่าสนใจมากขึ้น ขับสเต็ปเปอร์มอเตอร์ Nema 17 (เอกสารข้อมูล) รุ่นนี้จาก ผู้ผลิตเดิมขายได้ประมาณ 40 เหรียญ สำเนาภาษาจีนราคาถูกกว่าครึ่งหนึ่งถึงสองเท่า - ประมาณ 20-30 ดอลลาร์ อย่างสูง โมเดลที่ประสบความสำเร็จซึ่งมักใช้ในเครื่องพิมพ์ 3 มิติและโครงการ CNC ปัญหาแรกที่เกิดขึ้นคือวิธีการเลือกไดรเวอร์สำหรับเครื่องยนต์นี้ มีกระแสไฟไม่เพียงพอบนพิน Arduino เพื่อจ่ายไฟ

การเลือกไดรเวอร์เพื่อควบคุม Nema 17

Google แนะนำว่าคุณสามารถใช้ไดรเวอร์ A4988 จาก Poulou (เอกสารข้อมูล) เพื่อชุบชีวิต Nema 17 ได้

นอกจากนี้ยังมีตัวเลือกในการใช้ชิป L293D แต่ A4988 ถือว่าเยอะกว่า ตัวเลือกที่เหมาะสมดังนั้นเราจึงหยุดเพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้น

ดังที่กล่าวไว้ข้างต้น มีการใช้มอเตอร์และไดรเวอร์ที่สั่งจากประเทศจีน ลิงค์ด้านล่าง

  • ซื้อตัวขับสเต็ปปิ้งมอเตอร์ A4988 พร้อมจัดส่งจากจีน

เชื่อมต่อ Nema 17 ผ่าน A4988

การเชื่อมต่อถูกสร้างขึ้นตามหัวข้อนี้ในฟอรัม Arduino รูปที่แสดงด้านล่าง


จริงๆ แล้ว, โครงการนี้มีอยู่ในเกือบทุกไซต์บล็อกที่อุทิศให้กับ Arduino บอร์ดนี้ใช้พลังงานจากแหล่งจ่ายไฟ 12 โวลต์ แต่เครื่องยนต์ไม่หมุน ตรวจสอบการเชื่อมต่อทั้งหมด ตรวจสอบครั้งแล้วครั้งเล่า...

ปัญหาแรก

อะแดปเตอร์ 12 โวลต์ของเราไม่ให้กระแสไฟเพียงพอ เป็นผลให้อะแดปเตอร์ถูกแทนที่ด้วยแบตเตอรี่ AA 8 ก้อน และเครื่องยนต์ก็เริ่มหมุน! ฉันก็อยากจะกระโดดจากบอร์ดต้นแบบไปสู่การเชื่อมต่อโดยตรง แล้วก็เกิดขึ้น

ปัญหาที่สอง

เมื่อทุกอย่างถูกบัดกรี เครื่องยนต์ก็หยุดเคลื่อนที่อีกครั้ง ทำไม มันยังไม่ชัดเจน ฉันต้องกลับไปที่เขียงหั่นขนม และนี่คือปัญหาที่สองที่เกิดขึ้น ควรนั่งบนฟอรัมก่อนหรืออ่านแผ่นข้อมูลอย่างละเอียด คุณไม่สามารถเชื่อมต่อ-ถอดมอเตอร์เมื่อคอนโทรลเลอร์ถูกขับเคลื่อน!เป็นผลให้คอนโทรลเลอร์ A4988 เผาไหม้อย่างปลอดภัย

ปัญหานี้แก้ไขได้ด้วยการซื้อไดรเวอร์ใหม่จาก eBay ตอนนี้เมื่อคำนึงถึงประสบการณ์ที่น่าเศร้าที่สะสมแล้ว Nema 17 เชื่อมต่อกับ A4988 และเปิดตัว แต่ ...

สเต็ปเปอร์มอเตอร์สั่นมาก

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

โปรแกรมสำหรับ Arduino

ปรากฎว่ามีห้องสมุดที่ยอดเยี่ยมสำหรับ สเต็ปเปอร์มอเตอร์ที่เขียนโดยพวกที่อดาฟรุต เราใช้ไลบรารี AcclStepper และสเต็ปเปอร์มอเตอร์เริ่มทำงานได้อย่างราบรื่นโดยไม่มีการสั่นสะเทือนมากเกินไป

ข้อสรุปหลัก

  1. ห้ามเชื่อมต่อ/ถอดมอเตอร์ในขณะที่คอนโทรลเลอร์เปิดอยู่
  2. เมื่อเลือกแหล่งพลังงาน ไม่เพียงแต่ต้องคำนึงถึงแรงดันไฟฟ้าเท่านั้น แต่ยังต้องคำนึงถึงกำลังของอะแดปเตอร์ด้วย
  3. อย่าท้อแท้หากคอนโทรลเลอร์ A4988 ล้มเหลว สั่งใหม่เถอะครับ ;)
  4. ใช้ไลบรารี AcclStepper แทนโค้ด Arduino เปล่า สเต็ปเปอร์มอเตอร์ที่ใช้ไลบรารีนี้จะทำงานโดยไม่มีการสั่นสะเทือนที่ไม่จำเป็น

ภาพร่างสำหรับการควบคุมสเต็ปเปอร์มอเตอร์

รหัส Arduino อย่างง่ายเพื่อทดสอบสเต็ปเปอร์มอเตอร์

// การเชื่อมต่ออย่างง่าย A4988

//รีเซ็ตและหมุดสลีปเชื่อมต่อกัน

//เชื่อมต่อ VDD กับขา 3.3V หรือ 5V บน Arduino

// เชื่อมต่อ GND กับ Arduino GND (GND ถัดจาก VDD)

//เชื่อมต่อ 1A และ 1B กับ 1 สเต็ปเปอร์มอเตอร์คอยล์

// เชื่อมต่อ 2A และ 2B กับ 2 stepper motor coil

// เชื่อมต่อ VMOT กับแหล่งจ่ายไฟ (แหล่งจ่ายไฟ 9V + ระยะ)

// เชื่อมต่อ GRD กับแหล่งจ่ายไฟ (แหล่งจ่ายไฟ 9V - ระยะ)

int stp = 13; //เชื่อมต่อพิน 13 กับ step

int dir = 12; //เชื่อมต่อพิน 12 กับ dir

โหมดพิน (stp, OUTPUT);

pinMode(dir, OUTPUT);

ถ้า (a< 200) // вращение на 200 шагов в направлении 1

digitalWrite (stp, สูง);

digitalWrite (stp, LOW);

อื่น ( digitalWrite (dir, สูง);

digitalWrite (stp, สูง);

digitalWrite (stp, LOW);

if (a>400) // หมุน 200 ก้าวไปในทิศทาง 2

digitalWrite (dir, LOW);

รหัสที่สองสำหรับ Arduino เพื่อให้มอเตอร์หมุนได้อย่างราบรื่น ใช้ไลบรารี AccelStepper

#รวม

AccelStepper Stepper1 (1,13,12); // ใช้พิน 12 และ 13 สำหรับ dir และขั้นตอน 1 - โหมด "ไดรเวอร์ภายนอก" (A4988)

int dir = 1; //ใช้ในการเปลี่ยนทิศทาง

Stepper1.setMaxSpeed(3000); //กำหนดความเร็วการหมุนสูงสุดของโรเตอร์มอเตอร์ (ขั้น/วินาที)

Stepper1.setAcceleration(13000); //ตั้งค่าการเร่งความเร็ว (ขั้นตอน/วินาที^2)

if(Stepper1.distanceToGo()==0)( //ตรวจสอบว่าเอ็นจิ้นเสร็จสิ้นการเคลื่อนไหวก่อนหน้าหรือไม่

stepper1.move(1600*dir); // ตั้งค่าการย้ายถัดไปเป็น 1600 ขั้น (ถ้า dir เป็น -1 จะย้าย -1600 -> ทิศทางตรงกันข้าม)

dir = dir*(-1); //ค่าลบของ dir เนื่องจากการหมุนไปในทิศทางตรงกันข้ามเกิดขึ้น

ล่าช้า (1000); //หน่วงเวลา 1 วินาที

stepper1.run(); //สตาร์ทสเต็ปเปอร์มอเตอร์ บรรทัดนี้ซ้ำแล้วซ้ำอีกสำหรับการหมุนมอเตอร์อย่างต่อเนื่อง

แสดงความคิดเห็น คำถาม และแบ่งปันประสบการณ์ส่วนตัวของคุณด้านล่าง ในการอภิปราย มักมีแนวคิดและโครงการใหม่ๆ เกิดขึ้น!

สเต็ปเปอร์มอเตอร์สองเฟสแบบยูนิโพลาร์ (สเต็ปเปอร์มอเตอร์) - ไดรฟ์ที่สามารถหมุนตามจำนวนก้าวที่กำหนด หนึ่งเทิร์นเต็มแบ่งออกเป็น 200 ขั้น ดังนั้น คุณสามารถทำให้เพลามอเตอร์หมุนเป็นมุมใดก็ได้ โดยมีค่าทวีคูณของ 1.8 °

มอเตอร์มีขนาดหน้าแปลนมาตรฐานอุตสาหกรรม 42 มม. หรือที่เรียกว่าขนาด Nema 17 มอเตอร์เหล่านี้มักใช้ในการสร้างเครื่องจักร CNC เครื่องพิมพ์ 3 มิติ และเครื่องจักรอื่นๆ ที่ต้องการการวางตำแหน่งที่แม่นยำ

เอาต์พุตมอเตอร์ - 6 สายพร้อมปลายอิสระซึ่งแต่ละสามเชื่อมต่อกับปลายและศูนย์กลางของขดลวดที่รับผิดชอบเฟสของมัน ดังนั้น คุณสามารถเชื่อมต่อมอเตอร์ได้ทั้งในโหมด unipolar และ bipolar ในการควบคุมมอเตอร์โดยใช้ไมโครคอนโทรลเลอร์ คุณจะต้องใช้ไดรเวอร์ตัวกลาง เช่น ไดรเวอร์สเต็ปเปอร์มอเตอร์ (โมดูล Troyka) ชุดประกอบดาร์ลิงตัน ULN2003 หรือ H-bridge L293D สำหรับการควบคุมด้วย Arduino บอร์ดขยาย Motor Shield ก็เหมาะสมเช่นกัน

คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการเชื่อมต่อสเต็ปเปอร์มอเตอร์กับ Arduino ได้ในบทความบนวิกิอย่างเป็นทางการ

สำหรับการติดตั้งล้อ รอก และส่วนประกอบอื่นๆ บนแกนมอเตอร์ จะสะดวกในการใช้ปลอกอะแดปเตอร์แบบพิเศษ

แรงดันไฟของมอเตอร์ที่แนะนำคือ 12 V ในกรณีนี้ กระแสที่ผ่านขดลวดจะเป็น 400 mA หากอุปกรณ์ของคุณเข้าถึงโหมดพลังงานที่ระบุได้ยาก คุณสามารถหมุนมอเตอร์โดยใช้แรงดันไฟฟ้าที่น้อยลงได้ ในกรณีนี้ กระแสไฟที่ใช้และแรงบิดจะลดลงตามไปด้วย

ลักษณะเฉพาะ

  • ระยะพิทช์: 1.8°±5% (200 ต่อรอบ)
  • แรงดันไฟฟ้าที่ได้รับการจัดอันดับ: 12V
  • จัดอันดับเฟสปัจจุบัน: 400 mA
  • แรงบิด (แรงบิดถือ): ไม่น้อยกว่า 3.17 กก.×ซม.
  • แรงบิดในการกักขัง: 0.2 กก.×ซม.
  • ความเร็วเริ่มต้นสูงสุด: 2500 ก้าว/วินาที
  • เส้นผ่าศูนย์กลางเพลา: 5mm
  • ความยาวเพลา: 24mm
  • ขนาดตัวเรือน 42×42×48 มม. (Nema 17)
  • น้ำหนัก: 350 กรัม

สเต็ปเปอร์มอเตอร์ควบคุมด้วยบอร์ด Arduino

ในบทความนี้ เราจะพูดถึงเรื่องสเต็ปเปอร์มอเตอร์ต่อไป ครั้งล่าสุดที่เราเชื่อมต่อกับกระดาน Arduino NANOมอเตอร์ขนาดเล็ก 28BYJ-48 (5V) วันนี้เราจะทำเช่นเดียวกัน แต่มีมอเตอร์ที่แตกต่างกัน - NEMA 17, 17HS4402 series และไดรเวอร์อื่น - A4988

สเต็ปเปอร์มอเตอร์ NEMA 17 เป็นมอเตอร์ไบโพลาร์ที่มีแรงบิดสูง สามารถหมุนได้ตามจำนวนขั้นตอนที่กำหนด ในขั้นตอนเดียว มันเลี้ยว 1.8 ° ตามลำดับ มันหมุนครบ 360 ° ใน 200 ขั้นตอน
มอเตอร์ไบโพลาร์มีขดลวดสองอัน หนึ่งอันในแต่ละเฟส ซึ่งคนขับจะย้อนกลับเพื่อเปลี่ยนทิศทางของสนามแม่เหล็ก ดังนั้นสายไฟสี่เส้นจึงออกจากมอเตอร์

มอเตอร์ดังกล่าวใช้กันอย่างแพร่หลายในเครื่อง CNC, เครื่องพิมพ์ 3 มิติ, สแกนเนอร์ ฯลฯ
มันจะถูกควบคุมโดยใช้บอร์ด Arduino NANO

บอร์ดนี้สามารถจ่ายไฟ 5V ในขณะที่มอเตอร์ทำงานที่แรงดันไฟฟ้าที่สูงขึ้น เราเลือกแหล่งจ่ายไฟ 12V ดังนั้นเราจึงต้องการโมดูลเพิ่มเติม - ไดรเวอร์ที่สามารถควบคุมได้มากขึ้น ไฟฟ้าแรงสูงผ่านพัลส์ Arduino ที่ใช้พลังงานต่ำ ไดรเวอร์ A4988 นั้นยอดเยี่ยมสำหรับสิ่งนี้

ตัวขับสเต็ปเปอร์มอเตอร์ A4988

บอร์ดนี้ใช้ไมโครเซอร์กิต A4988 ของ Allegro ซึ่งเป็นไดรเวอร์มอเตอร์แบบไบโพลาร์ A4988 มีระบบป้องกันกระแสไฟ โอเวอร์โหลด และอุณหภูมิเกินที่ปรับได้ และไดรเวอร์ยังมีตัวเลือกไมโครสเต็ป 5 แบบ (สูงสุด 1/16 สเต็ป) ทำงานที่ 8 - 35V และสามารถส่งได้ถึง 1A ต่อเฟสโดยไม่ต้องใช้ฮีทซิงค์หรือการระบายความร้อนเพิ่มเติม (จำเป็นต้องมีการระบายความร้อนเพิ่มเติมเมื่อจ่าย 2A ต่อขดลวด)

ลักษณะเฉพาะ:

รุ่น: A4988;
แรงดันไฟฟ้า: จาก 8 ถึง 35 V;
ความสามารถในการตั้งค่าขั้นตอน: ตั้งแต่ 1 ถึง 1/16 ของขั้นตอนสูงสุด
แรงดันลอจิก: 3-5.5 V;
การป้องกันความร้อนสูงเกินไป
กระแสไฟสูงสุดต่อเฟส: 1 A ไม่มีฮีตซิงก์, 2 A พร้อมฮีตซิงก์;
ระยะห่างระหว่างแถวของขา: 12 มม.
ขนาดกระดาน: 20 x 15 มม.;
ขนาดตัวขับ: 20 x 15 x 10 มม.;
ขนาดหม้อน้ำ: 9 x 5 x 9 มม.;
น้ำหนักพร้อมแผ่นระบายความร้อน: 3 กรัม;
ไม่มีฮีทซิงค์: 2 g

ในการทำงานกับไดรเวอร์ คุณต้องมีกำลังระดับลอจิก (3 - 5.5 V) ที่จ่ายให้กับพิน VDD และ GND รวมถึงกำลังมอเตอร์ (8 - 35 V) ให้กับพิน VMOT และ GND บอร์ดมีความเสี่ยงต่อไฟกระชาก โดยเฉพาะอย่างยิ่งหากสายไฟยาวเกินสองสามเซนติเมตร หากการกระโดดเหล่านี้เกินขีดจำกัดสูงสุด ค่าที่อนุญาต(35V สำหรับ A4988) บอร์ดอาจไหม้ได้ วิธีหนึ่งในการป้องกันบอร์ดจากไฟกระชากคือการติดตั้งตัวเก็บประจุด้วยไฟฟ้าขนาดใหญ่ (อย่างน้อย 47uF) ระหว่างพินกำลัง (VMOT) และกราวด์ใกล้กับบอร์ด
การเชื่อมต่อหรือถอดสเต็ปเปอร์มอเตอร์ในขณะที่คนขับเปิดอยู่อาจทำให้มอเตอร์เสียหายได้!
มอเตอร์ที่เลือกเดินได้ 200 ขั้นต่อการหมุน 360° เต็ม ซึ่งเท่ากับ 1.8° ต่อขั้น ไดรเวอร์ไมโครสเต็ปปิ้ง เช่น A4988 ช่วยให้คุณเพิ่มความละเอียดได้โดยการควบคุมขั้นตอนกลาง ตัวอย่างเช่น การขับมอเตอร์ในโหมดควอเตอร์สเต็ปจะให้มอเตอร์ 200 สเต็ปต่อรอบ แล้ว 800 ไมโครสเต็ปเมื่อใช้งาน ระดับต่างๆหมุนเวียน.
ความละเอียด (ขนาดขั้นตอน) ถูกกำหนดโดยการรวมกันของสวิตช์บนอินพุต (MS1, MS2 และ MS3)

MS1 MS2 MS3 ความละเอียดไมโครสเต็ป
สั้น สั้น สั้น ขั้นตอนเต็ม
สูง สั้น สั้น 1/2 ขั้นตอน
สั้น สูง สั้น 1/4 ขั้นตอน
สูง สูง สั้น 1/8 ขั้นตอน
สูง สูง สูง 1/16 ขั้นตอน

แต่ละพัลส์ที่อินพุต STEP จะสอดคล้องกับไมโครสเต็ปของมอเตอร์หนึ่งก้าว ซึ่งทิศทางของการหมุนจะขึ้นอยู่กับสัญญาณที่พิน DIRECTION หมุด STEP และ DIRECTION ไม่ได้ต่อเข้ากับสายใดโดยเฉพาะ ความตึงเครียดภายในดังนั้นจึงไม่ควรปล่อยให้ลอยตัวเมื่อสร้างแอปพลิเคชัน หากคุณต้องการหมุนมอเตอร์ในทิศทางเดียว คุณสามารถเชื่อมต่อ DIR โดยตรงกับ VCC หรือ GND ชิปมีอินพุตที่แตกต่างกันสามช่องสำหรับการควบคุมสถานะพลังงาน: RESET, SLEEP และ ENABLE พิน RESET ลอยอยู่ หากไม่ต้องการใช้ ให้เชื่อมต่อกับพิน SLEEP ที่อยู่ติดกันบน PCB เพื่อใช้งาน ระดับสูงและเปิดกระดาน

แผนภาพการเชื่อมต่อ

เราใช้แหล่งจ่ายไฟดังกล่าว (12V)

เพื่อความสะดวกในการต่อเข้ากับบอร์ด Arduino UNO, เราใช้ชิ้นส่วนทำมือ กล่องพลาสติกพิมพ์บนเครื่องพิมพ์ 3D หน้าสัมผัสติดกาว

นอกจากนี้เรายังใช้ชุดสายไฟดังกล่าว บางอันมีหน้าสัมผัสที่ปลายด้านหนึ่ง หมุดที่อีกด้านหนึ่ง ส่วนอื่นๆ มีหน้าสัมผัสทั้งสองด้าน

เราเชื่อมต่อทุกอย่างตามแบบแผน

จากนั้นเราเปิดสภาพแวดล้อมการเขียนโปรแกรม Arduino และเขียนโปรแกรมที่หมุนมอเตอร์ในทิศทางเดียว 360 °ก่อนจากนั้นในอีกทางหนึ่ง

/*โปรแกรมหมุนสเต็ปเปอร์มอเตอร์ NEMA 17 ซีรีส์ 17HS4402 + ไดรเวอร์ A4988 อย่างแรก มอเตอร์ทำการปฏิวัติอย่างสมบูรณ์ในทิศทางเดียว จากนั้นในอีกทางหนึ่ง */

const int pinStep = 5;


const int pinDir = 4;


const int move_delay = 3;

// ก้าวต่อเทิร์นเต็ม


การตั้งค่าเป็นโมฆะ ()
{

โหมดพิน (pinStep, OUTPUT);
โหมดพิน (pinDir, OUTPUT);


digitalWrite (pinDir ต่ำ);
}


วงเป็นโมฆะ ()
{

digitalWrite (pinDir สูง);

สำหรับ(int i = 0; i< steps_rotate_360; i++)
{
digitalWrite (pinStep, สูง);
ล่าช้า(move_delay);
digitalWrite (pinStep, LOW);
ล่าช้า(move_delay);
}

ดีเลย์(move_delay*10);


digitalWrite (pinDir ต่ำ);

สำหรับ(int i = 0; i< steps_rotate_360; i++)
{
digitalWrite (pinStep, สูง);
ล่าช้า(move_delay);
digitalWrite (pinStep, LOW);
ล่าช้า(move_delay);
}

ดีเลย์(move_delay*10);
}

หากเราต้องการให้มอเตอร์หมุนอย่างต่อเนื่องในทิศทางเดียวหรืออีกทางหนึ่ง เราสามารถเชื่อมต่อพินไดรเวอร์ DIRECTION กับกราวด์ (การหมุนตามเข็มนาฬิกา) หรือกำลัง (ทวนเข็มนาฬิกา) และอัปโหลดโปรแกรมง่ายๆ ดังกล่าวไปยัง Arduino:

/*โปรแกรมหมุนสเต็ปเปอร์มอเตอร์ NEMA 17 ซีรีส์ 17HS4402 + ไดรเวอร์ A4988 โปรแกรมตั้งค่ามอเตอร์ให้เคลื่อนที่
โดยค่าเริ่มต้น การหมุนจะเป็นตามเข็มนาฬิกา เนื่องจากพิน DIRECTION ของไดรเวอร์เชื่อมต่อกับกราวด์ หากเชื่อมต่อกับแหล่งจ่ายไฟ 5V แล้ว
มอเตอร์หมุนทวนเข็มนาฬิกา*/
/*ค่าคงที่ของจำนวนเต็มที่เก็บหมายเลขของพินดิจิตอล Arduino ที่ส่งสัญญาณ Step ไปยังไดรเวอร์ แรงกระตุ้นแต่ละอันจากหน้าสัมผัสนี้คือการเคลื่อนที่ของมอเตอร์หนึ่งขั้น * /

const int pinStep = 5;

//การหน่วงเวลาระหว่างขั้นตอนของมอเตอร์ในหน่วย ms
const int move_delay = 3;

/*ฟังก์ชันที่ตัวแปรโปรแกรมทั้งหมดเริ่มต้นขึ้น*/
การตั้งค่าเป็นโมฆะ ()
{
/*ตั้งค่าสเต็ปคอนแทคเป็นโหมดเอาท์พุต นั่นคือ ให้แรงดันไฟออก*/
โหมดพิน (pinStep, OUTPUT);
//ตั้งค่าโหมดเริ่มต้น
digitalWrite (pinStep, LOW);
}

/*Function-loop ที่ตั้งค่าพฤติกรรมของโปรแกรม*/
วงเป็นโมฆะ ()
{
/* หลังจากหน่วงเวลาที่กำหนด มอเตอร์จะเคลื่อนที่หนึ่งขั้น */
digitalWrite (pinStep, สูง);
ล่าช้า(move_delay);
digitalWrite (pinStep, LOW);
ล่าช้า(move_delay);
}

ทั้งหมดนี้เราพิจารณาถึงโหมดการก้าวของมอเตอร์ นั่นคือ 200 ก้าวต่อการปฏิวัติเต็มรูปแบบ แต่ดังที่อธิบายไว้แล้ว มอเตอร์สามารถทำงานในโหมดขั้นตอน 1/2, 1/4, 1/8, 1/16 ขึ้นอยู่กับว่าจะใช้สัญญาณร่วมกันแบบใดกับหน้าสัมผัสไดรเวอร์ MS1, MS2, MS3
มาฝึกกัน เชื่อมต่อพินทั้งสามนี้กับบอร์ด Arduino ตามไดอะแกรม และกรอกรหัสโปรแกรม

รหัสโปรแกรมที่แสดงโหมดการทำงานของมอเตอร์ทั้งห้าโหมด หมุนมอเตอร์ไปในทิศทางเดียวและอีกทิศทางหนึ่งเป็น 200 ขั้นตอนในแต่ละโหมดเหล่านี้

/*โปรแกรมหมุนสเต็ปเปอร์มอเตอร์ NEMA 17 ซีรีส์ 17HS4402 + ไดรเวอร์ A4988 ในโปรแกรม โหมดสเต็ปจะเปลี่ยนสลับกัน: เต็มสเต็ป, 1/2, 1/4, 1/8, 1/16 สเต็ป โดยแต่ละสเต็ปมอเตอร์จะหมุน 200 สเต็ปในทิศทางเดียว จากนั้นไปอีกทิศทางหนึ่ง */
/*ค่าคงที่ของจำนวนเต็มที่เก็บหมายเลขของพินดิจิตอล Arduino ที่ส่งสัญญาณ Step ไปยังไดรเวอร์ แรงกระตุ้นแต่ละอันจากหน้าสัมผัสนี้คือการเคลื่อนที่ของมอเตอร์หนึ่งขั้น * /

const int pinStep = 5;

/*ค่าคงที่ของจำนวนเต็มที่เก็บหมายเลขของพินดิจิตอล Arduino ที่ส่งสัญญาณทิศทางไปยังไดรเวอร์ การปรากฏตัวของพัลส์ - มอเตอร์หมุนไปในทิศทางเดียว, ไม่มี - ในอีกทางหนึ่ง * /
const int pinDir = 4;

//การหน่วงเวลาระหว่างขั้นตอนของมอเตอร์ในหน่วย ms
const int move_delay = 3;

// ก้าวต่อเทิร์นเต็ม
const int steps_rotate_360 = 200;


บูล StepMode = (
{ 0, 0, 0},
{ 1, 0, 0},
{ 0, 1, 0},
{ 1, 1, 0},
{ 1, 1, 1} };

//StepMode ขนาดอาร์เรย์
const int StepModeSize = 5;

/*ฟังก์ชันที่ตัวแปรโปรแกรมทั้งหมดเริ่มต้นขึ้น*/
การตั้งค่าเป็นโมฆะ ()
{
/* ตั้งค่าพินสเต็ปและทิศทางเป็นโหมดเอาต์พุต นั่นคือ ให้แรงดันไฟออก */
โหมดพิน (pinStep, OUTPUT);
โหมดพิน (pinDir, OUTPUT);

สำหรับ(int i = 0; i< StepModePinsCount; i++)
{

}

//ตั้งค่าโหมดเริ่มต้น
digitalWrite (pinStep, สูง);
digitalWrite (pinDir ต่ำ);
}

/*Function-loop ที่ตั้งค่าพฤติกรรมของโปรแกรม*/
วงเป็นโมฆะ ()
{
สำหรับ(int i = 0; i< StepModeSize; i++)
{
สำหรับ(int j = 0; j< StepModePinsCount; j++)
{
digitalWrite(StepModePins[j], StepMode[i][j] == 1 ? สูง: ต่ำ);
}

// หมุนมอเตอร์ไปในทิศทางเดียวแล้วหมุนอีกทางหนึ่ง
MakeRoundRotation();
}
}

/*ฟังก์ชันที่มอเตอร์เดิน 200 ก้าวในทิศทางเดียว จากนั้น 200 ก้าวในทิศทางตรงกันข้าม*/
เป็นโมฆะ MakeRoundRotation()
{
//กำหนดทิศทางการหมุน
digitalWrite (pinDir สูง);

สำหรับ(int i = 0; i< steps_rotate_360; i++)
{
digitalWrite (pinStep, สูง);
ล่าช้า(move_delay);
digitalWrite (pinStep, LOW);
ล่าช้า(move_delay);
}

ดีเลย์(move_delay*10);

//กำหนดทิศทางการหมุนย้อนกลับ
digitalWrite (pinDir ต่ำ);

สำหรับ(int i = 0; i< steps_rotate_360; i++)
{
digitalWrite (pinStep, สูง);
ล่าช้า(move_delay);
digitalWrite (pinStep, LOW);
ล่าช้า(move_delay);
}

ดีเลย์(move_delay*10);
}

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

เราเสริมโครงร่างด้วยองค์ประกอบใหม่

ในการเชื่อมต่อปุ่มต่างๆ เราใช้สายดังกล่าว

รหัสโปรแกรม.

/*โปรแกรมหมุนสเต็ปเปอร์มอเตอร์ NEMA 17 ซีรีส์ 17HS4402 + ไดรเวอร์ A4988 วงจรประกอบด้วยปุ่ม 3 ตำแหน่ง (I, II, กลาง - ปิด) และโพเทนชิออมิเตอร์ ปุ่มควบคุมทิศทางการหมุนของมอเตอร์ และข้อมูลจากโพเทนชิออมิเตอร์จะระบุโหมดขั้นตอนมอเตอร์ห้าโหมดที่จะเปิดใช้งาน (ขั้นตอนเต็ม 1/2, 1/4, 1/8, 1/16 ขั้นตอน)*/
/*ค่าคงที่ของจำนวนเต็มที่เก็บหมายเลขของพินดิจิตอล Arduino ที่ส่งสัญญาณ Step ไปยังไดรเวอร์ แรงกระตุ้นแต่ละอันจากหน้าสัมผัสนี้คือการเคลื่อนที่ของมอเตอร์หนึ่งขั้น * /

const int pinStep = 5;

/*ค่าคงที่ของจำนวนเต็มที่เก็บหมายเลขของพินดิจิตอล Arduino ที่ส่งสัญญาณทิศทางไปยังไดรเวอร์ การปรากฏตัวของพัลส์ - มอเตอร์หมุนไปในทิศทางเดียว, ไม่มี - ในอีกทางหนึ่ง * /
const int pinDir = 4;

/*ผู้ติดต่อจากสองตำแหน่งของปุ่ม - ดิจิตอล*/
const int ButtonOn1 = 9;
const int ButtonOn2 = 10;

/*ติดต่อลงทะเบียนค่าของโพเทนชิออมิเตอร์ - แอนะล็อก*/
const int PotenciomData = 1;

//การหน่วงเวลาระหว่างขั้นตอนของมอเตอร์ในหน่วย ms
const int move_delay = 3;

/*ค่าคงที่จำนวนเต็มแสดงการหน่วงเวลาระหว่างการอ่านสถานะของปุ่มและโพเทนชิออมิเตอร์*/
const int CheckButtonDelay = 15;

/*ตัวแปรจำนวนเต็มแสดงว่าเวลาผ่านไปเท่าใดและถึงเวลาอ่านสถานะของปุ่มหรือไม่*/
int CurrentButtonDelay = 0;

/*หน้าสัมผัสบนไดรเวอร์ที่กำหนดโหมดสเต็ปมอเตอร์ - MS1, MS2, MS3*/
int StepModePins = (8, 7, 6);

//ขนาดของอาร์เรย์ StepModePins
const int StepModePinsCount = 3;

//ปุ่มสถานะเปิด/ปิด
int ButtonState = 0;

//ทิศทางการหมุนตามปุ่ม I - 1, II - 0
intButtonDirection = 0;

/*อาร์เรย์ที่เก็บสถานะของผู้ติดต่อ MS1, MS2, MS3 ของไดรเวอร์ซึ่ง โหมดต่างๆการหมุน: เต็มขั้น, 1/2, 1/4, 1/8, ขั้นที่ 1/16*/
บูล StepMode = (
{ 0, 0, 0},
{ 1, 0, 0},
{ 0, 1, 0},
{ 1, 1, 0},
{ 1, 1, 1} };

//StepMode ขนาดอาร์เรย์
const int StepModeSize = 5;

//ดัชนีปัจจุบันของอาร์เรย์ StepMode
int StepModeIndex = 0;

/*ฟังก์ชันที่ตัวแปรโปรแกรมทั้งหมดเริ่มต้นขึ้น*/
การตั้งค่าเป็นโมฆะ ()
{
/* ตั้งค่าพินสเต็ปและทิศทางเป็นโหมดเอาต์พุต นั่นคือ ให้แรงดันไฟออก */
โหมดพิน (pinStep, OUTPUT);
โหมดพิน (pinDir, OUTPUT);

สำหรับ(int i = 0; i< StepModePinsCount; i++)
{
pinMode(StepModePins[i], OUTPUT);
}

/*รายชื่อจากปุ่มและโพเทนชิออมิเตอร์ที่ตั้งค่าเป็นโหมดอินพุต*/
โหมดพิน (ButtonOn1, INPUT);
โหมดพิน (ButtonOn2, INPUT);
โหมดพิน (PotenciomData, INPUT);

//ตั้งค่าโหมดเริ่มต้น
digitalWrite (pinStep, LOW);
digitalWrite (pinDir ต่ำ);
}

/*Function-loop ที่ตั้งค่าพฤติกรรมของโปรแกรม*/
วงเป็นโมฆะ ()
{
ถ้า (CurrentButtonDelay >= CheckButtonDelay)
{
ตรวจสอบปุ่มสถานะ ();
CurrentButtonDelay = 0;
}

ถ้า (ButtonState == 1)
{
MakeMotorStep();
}

ล่าช้า(move_delay);
CurrentButtonDelay += move_delay;
}

//ฟังก์ชันที่มีการดำเนินการขั้นตอนเดียวของมอเตอร์
เป็นโมฆะ MakeMotorStep()
{
digitalWrite (pinStep, สูง);
digitalWrite (pinStep, LOW);
}

/*ฟังก์ชันที่ตรวจสอบ สถานะปัจจุบันปุ่มและโพเทนชิออมิเตอร์*/
เป็นโมฆะ CheckButtonState()
{
int CurrentButtonState = 0, CurrentButtonDirection = 0, CurrentStepModeIndex = 0;

บูล readbuttonparam = digitalRead (ButtonOn1);

ถ้า (readbuttonparam)
{
CurrentButtonState = 1;
CurrentButtonDirection = 1;
}

readbuttonparam = digitalRead (ButtonOn2);

ถ้า (readbuttonparam)
{
CurrentButtonState = 1;
CurrentButtonDirection = 0;
}

ถ้า (ButtonState != CurrentButtonState)
{
ButtonState = CurrentButtonState;
}

ถ้า (ButtonDirection != CurrentButtonDirection)
{
ButtonDirection = CurrentButtonDirection;
digitalWrite (pinDir, ButtonDirection);
}

CurrentStepModeIndex = แผนที่ (analogRead (PotenciomData), 0, 1023, 0, StepModeSize-1);
ถ้า (StepModeIndex != CurrentStepModeIndex)
{
StepModeIndex = CurrentStepModeIndex;
สำหรับ(int i = 0; i< StepModePinsCount; i++)
{
digitalWrite (StepModePins[i], StepMode[i]);
}
}
}

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

ความแตกต่างระหว่างประเภทเครื่องยนต์ Nema

สเต็ปเปอร์มอเตอร์แบ่งออกเป็น Nema 17, Nema 23, Nema 34 เป็นต้น ทั้งนี้ขึ้นอยู่กับขนาดของส่วนตัดขวาง ขนาดส่วนถูกกำหนดโดยการคูณตัวเลข (17, 23, 34 เป็นต้น) ด้วย 0.1 นิ้ว ภาพตัดขวางแสดงเป็นมม. (สำหรับ Nema 17 - 42 มม. สำหรับ Nema 23 - 57 มม. สำหรับ Nema 34 - 86 มม. เป็นต้น)

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

สเต็ปเปอร์มอเตอร์ยังมีกำลังต่างกัน ตัวบ่งชี้หลักคือโมเมนต์ของแรง ขึ้นอยู่กับมันในเครื่องจักรที่มีขนาดเครื่องยนต์จะใช้ สเต็ปเปอร์มอเตอร์ Nema 23 สามารถสร้างแรงบิดสูงสุด 30 กก.*ซม., Nema 34 - สูงสุด 120 กก.*ซม. และสูงสุด 210 กก.* ซม. สำหรับสเต็ปเปอร์มอเตอร์ที่มีส่วนตัดขวาง 110 มม.

ปฏิกิริยาของสเต็ปเปอร์มอเตอร์และแกนหมุน

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