El 28BYJ-48 เป็นสเต็ปเปอร์มอเตอร์แบบขั้วเดียว ต้นทุนต่ำและมีความแม่นยำสูง เหมาะสำหรับโครงการอิเล็กทรอนิกส์ สำหรับเครื่องพิมพ์ 3D เครื่องจักร CNC และหุ่นยนต์ ขนาดกะทัดรัด ใช้พลังงานต่ำ และใช้งานง่าย ทำให้เป็นตัวเลือกยอดนิยมสำหรับมือสมัครเล่นและมืออาชีพด้านอิเล็กทรอนิกส์
นอกจากนี้พร้อมกับเครื่องยนต์รุ่นนี้ยังมีก โมดูลที่มี ULN2003เพื่อการควบคุมของคุณ ด้วยวิธีนี้ เรามีทุกสิ่งที่จำเป็นเพื่อให้สามารถใช้ระบบนี้ได้อย่างสมบูรณ์ โดยใช้ไมโครคอนโทรลเลอร์หรือบอร์ด Arduino หรือที่คล้ายกัน.
สเต็ปเปอร์มอเตอร์ 28BYJ-48 คืออะไร?
Un สเต็ปเปอร์มอเตอร์เป็นมอเตอร์ไฟฟ้าชนิดหนึ่ง ซึ่งเคลื่อนที่เป็นขั้นเชิงมุมเล็กๆ แยกกัน แทนที่จะหมุนอย่างต่อเนื่อง มันทำงานโดยใช้ชุดแม่เหล็กไฟฟ้าที่เปิดใช้งานในลำดับเฉพาะ ด้วยการกระตุ้นแม่เหล็กไฟฟ้าที่แตกต่างกัน สนามแม่เหล็กจะถูกสร้างขึ้นเพื่อดึงดูดโรเตอร์ของมอเตอร์ ทำให้มันหมุนทีละขั้น จำนวนก้าวต่อการปฏิวัติและความแม่นยำในการเคลื่อนที่ขึ้นอยู่กับการออกแบบมอเตอร์เฉพาะและลำดับการควบคุมที่ใช้
ภายในสเต็ปเปอร์มอเตอร์เรามีสองประเภท:
- Unipolar- มีคอยล์ชุดเดียวและต้องใช้ตัวควบคุมพิเศษเพื่อย้อนกระแสและทำให้มอเตอร์หมุนได้ทั้งสองทิศทาง
- ไบโพลาร์- มีคอยล์อิสระสองชุด ทำให้หมุนได้ทั้งสองทิศทางโดยไม่ต้องใช้ตัวควบคุมพิเศษ
ในกรณีของ 28BYJ-28 เป็นแบบขั้วเดียว ดังที่ได้กล่าวไปแล้ว และภายในกลุ่มนี้มีลักษณะเด่นดังนี้ especificaciones:
- สเต็ปเปอร์แบบขั้วเดียว: ควบคุมง่ายด้วยสายเคเบิลเพียง 4 เส้น
- ตัวลดแบบรวม: ให้ความแม่นยำสูง (0.088° ต่อขั้น) และแรงบิด (3 N·cm)
- การบริโภคต่ำ: 83 mA (รุ่น 5V) หรือ 32 mA (รุ่น 12V)
- การให้อาหาร: 5V หรือ 12V (ขึ้นอยู่กับรุ่น)
- ราคาประหยัด: เริ่มต้นที่ 1.2 ยูโรต่อหน่วย หรือมากกว่านั้นเล็กน้อยหากมีโมดูล ULN2003
เป็น แอพพลิเคชั่นที่เป็นไปได้ฉันได้กล่าวถึงบางส่วนไปแล้วก่อนหน้านี้ แต่ที่นี่ฉันให้แนวคิดสำหรับโครงการของคุณอีกครั้ง:
- การควบคุมวาล์วไฮดรอลิกและนิวแมติก
- หุ่นยนต์แบบประกบและแขนหุ่นยนต์
- การวางตำแหน่งเซ็นเซอร์
- โต๊ะหมุนสำหรับสแกนเนอร์
- เครื่องพิมพ์ 3 มิติ
- เครื่องซีเอ็นซี
สเต็ปเปอร์มอเตอร์ไม่ทำงานเพียงลำพัง แต่ต้องใช้องค์ประกอบอื่น ในกรณีนี้, 28BYJ-48 ควบคุมโดยบอร์ดที่มี ULN2003 ในตัวซึ่งช่วยให้สามารถขยายกระแสของเอาท์พุต Arduino เพื่อจ่ายพลังงานให้กับขดลวดมอเตอร์ได้ ด้วยการเปิดใช้งานคอยล์ตามลำดับที่ถูกต้อง มอเตอร์จะหมุนทีละขั้นตอนด้วยความแม่นยำอย่างยิ่ง
ประเภทของลำดับและเฟสการควบคุม
ที่นั่น ลำดับการควบคุมต่างๆ สำหรับ 28BYJ-48ที่พบบ่อยที่สุดคือ:
- ลำดับคลื่นเต็ม: เปิดใช้งานคอยล์ทั้งหมดพร้อมกัน
- ลำดับครึ่งขั้นตอน: เปิดใช้งานคอยล์ 2 คอยล์ที่อยู่ติดกันพร้อมกัน
- ลำดับขั้นตอนด้วยกล้องจุลทรรศน์: เปิดใช้งานครั้งละหนึ่งคอยล์
มาดูกัน ขั้นตอน ในรายละเอียด:
- ลำดับ 1 เฟส: ในลำดับ 1 เฟส เราจะเปิดคอยล์ทีละตัว เมื่อนำลำดับการจุดระเบิดนี้มาวางบนโต๊ะ จะต้องสร้างสิ่งต่อไปนี้ใน pinout ของเครื่องยนต์:
โซ | A | B | อา' | บี' |
---|---|---|---|---|
1 | ON | ปิด | ปิด | ปิด |
2 | ปิด | ON | ปิด | ปิด |
3 | ปิด | ปิด | ON | ปิด |
4 | ปิด | ปิด | ปิด | ON |
- ลำดับ 2 เฟส: เราเปิดคอยล์สหสัมพันธ์สองตัวในแต่ละเฟส ดังนั้นสนามแม่เหล็กที่สร้างขึ้นจึงมีมากขึ้น (มากกว่า 41%) ดังนั้นมอเตอร์จึงมีแรงบิดมากขึ้น นั่นคือเราได้รับกำลังมากขึ้น ในแง่ลบ เราใช้พลังงานเป็นสองเท่า ในส่วนของตารางจะเป็นดังนี้:
โซ | A | B | อา' | บี' |
---|---|---|---|---|
1 | ON | ON | ปิด | ปิด |
2 | ปิด | ON | ON | ปิด |
3 | ปิด | ปิด | ON | ON |
4 | ON | ปิด | ปิด | ON |
- ลำดับครึ่งขั้นตอน: นี่เป็นอีกขั้นตอนหนึ่งที่เรากำลังจะไปดูคุณจะได้สัมผัสกับสิ่งที่คุณสนใจมากที่สุด ที่นี่เราสลับกันหนึ่งและสองคอยล์เพื่อให้ได้ความแม่นยำเพียงครึ่งก้าว ใช้ในการใช้งานที่ต้องการความแม่นยำสูงสุด แม้ว่าอาจเกิดปัญหาเมื่อการใช้งานอยู่ที่ขีดจำกัดแรงบิดก็ตาม การแสดงลำดับในรูปแบบตารางส่งผลให้:
ครึ่งก้าว | A | B | อา' | บี' |
---|---|---|---|---|
1 | ON | ปิด | ปิด | ปิด |
2 | ON | ON | ปิด | ปิด |
3 | ปิด | ON | ปิด | ปิด |
4 | ปิด | ON | ON | ปิด |
5 | ปิด | ปิด | ON | ปิด |
6 | ปิด | ปิด | ON | ON |
7 | ปิด | ปิด | ปิด | ON |
8 | ON | ปิด | ปิด | ON |
28BYJ-28 พร้อม Arduino
สิ่งแรกคือการเชื่อมต่ออย่างถูกต้อง โมดูลและมอเตอร์ 28byj-48 ไปยังบอร์ด Arduino ของเรา ในการดำเนินการนี้ คุณเพียงแค่ต้องทำการเชื่อมต่อต่อไปนี้:
- พิน - จาก ULN2003 ถึง GND ของ Arduino
- Pin + ของ ULN2003 เป็น Vcc (5v หรือในกรณีอื่น ๆ หากเป็นมอเตอร์ 12v จะต้องใช้แหล่งจ่ายไฟที่มีแรงดันไฟฟ้านั้น) จาก Arduino
- IN1, IN2, IN3 และ IN4 ของ ULN2003 ไปยังอินพุตดิจิตอล D8, D9, D10 และ D11 ของ Arduino
- มอเตอร์ 28byj-48 เพียงเชื่อมต่อเข้ากับพอร์ตบนโมดูล ULN2003
เมื่อคุณเชื่อมต่อแล้ว สิ่งต่อไปคือการใช้งาน ตัวอย่างใน Arduino IDEซึ่งคุณสามารถใช้ตามที่เป็นอยู่เพื่อทดลองหรือแก้ไขตามที่คุณต้องการ ในตัวอย่างนี้ ตารางเฟสทั้งหมดจะถูกใส่เครื่องหมายความคิดเห็น เช่น // ที่ด้านหน้าบรรทัด คุณรู้ไหม... หากคุณต้องการใช้ตารางใดตารางหนึ่ง ให้ลบ // ที่หน้าคำแนะนำ
//Definir los pines const int motorPin1 = 8; // 28BYJ48 In1 const int motorPin2 = 9; // 28BYJ48 In2 const int motorPin3 = 10; // 28BYJ48 In3 const int motorPin4 = 11; // 28BYJ48 In4 //Definición de variables int motorSpeed = 1200; //Velocidad del motor int stepCounter = 0; //Contador de pasos int stepsPerRev = 4076; //Pasos para un giro completo //Tablas de secuencia (descomentar la que necesites) //Secuencia 1-fase //const int numSteps = 4; //const int stepsLookup[4] = { B1000, B0100, B0010, B0001 }; //Secuencia 2-fases //const int numSteps = 4; //const int stepsLookup[4] = { B1100, B0110, B0011, B1001 }; //Secuencia media fase //const int numSteps = 8; //const int stepsLookup[8] = { B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001 }; void setup() { //Declarar los pines usados como salida pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(motorPin3, OUTPUT); pinMode(motorPin4, OUTPUT); } void loop() { for (int i = 0; i < stepsPerRev * 2; i++) { clockwise(); delayMicroseconds(motorSpeed); } for (int i = 0; i < stepsPerRev * 2; i++) { anticlockwise(); delayMicroseconds(motorSpeed); } delay(1000); } void clockwise() { stepCounter++; if (stepCounter >= numSteps) stepCounter = 0; setOutput(stepCounter); } void anticlockwise() { stepCounter--; if (stepCounter < 0) stepCounter = numSteps - 1; setOutput(stepCounter); } void setOutput(int step) { digitalWrite(motorPin1, bitRead(stepsLookup[step], 0)); digitalWrite(motorPin2, bitRead(stepsLookup[step], 1)); digitalWrite(motorPin3, bitRead(stepsLookup[step], 2)); digitalWrite(motorPin4, bitRead(stepsLookup[step], 3)); }