Uno เดอลอ มอเตอร์สเต็ปยอดนิยมคือ 28BYJ-48 หลังจากบทความที่เผยแพร่ในบล็อกนี้คุณน่าจะรู้แล้ว ทุกสิ่งที่คุณต้องการเกี่ยวกับเครื่องยนต์ประเภทนี้ ของความแม่นยำซึ่งคุณสามารถควบคุมการเลี้ยวเพื่อให้หมุนไปอย่างช้าๆหรือหยุดนิ่งในตำแหน่งที่คุณต้องการ นั่นทำให้พวกเขามีแอพพลิเคชั่นมากมายตั้งแต่อุตสาหกรรมไปจนถึงหุ่นยนต์ไปจนถึงอื่น ๆ อีกมากมายที่คุณนึกออก
28BYJ-48 มีขนาดเล็ก มอเตอร์ชนิด unipolarและง่ายต่อการรวมเข้ากับ Arduino เนื่องจากมีโมดูลไดรเวอร์ / คอนโทรลเลอร์รุ่น ULN2003A ที่มักจะมาพร้อมกับมัน ทั้งหมดนี้มีราคาถูกมากและมีขนาดที่ค่อนข้างกะทัดรัด คุณสมบัติเหล่านี้ยังทำให้เหมาะอย่างยิ่งที่จะเริ่มฝึกกับอุปกรณ์เหล่านี้
28BYJ-48 คุณสมบัติ
มอเตอร์ 28BYJ-498 เป็นสเต็ปมอเตอร์ที่มีลักษณะดังต่อไปนี้:
- tipo: stepper motor หรือ unipolar stepper
- ขั้นตอน: 4 (เต็มขั้นตอน) เนื่องจากมีขดลวด 4 ขดอยู่ภายใน
- ความต้านทาน: 50 Ω.
- แรงบิดของเครื่องยนต์: 34 N / m นั่นคือถ้าส่งต่อนิวตันต่อเมตรไปยัง Kg มันจะเป็นแรงที่เทียบเท่ากับการวางประมาณ 0.34 Kg ต่อ cm บนแกนของมัน เพียงพอที่จะยกด้วยรอกเพียงหนึ่งในสี่ของกิโล
- การบริโภค: 55mA
- ขั้นตอนต่อรอบ: 8 ชนิดครึ่งก้าว (ละ45º)
- กระปุกเกียร์แบบบูรณาการ: ใช่ 1/64 ดังนั้นจึงแบ่งแต่ละขั้นตอนออกเป็น 64 ขั้นตอนที่เล็กลงเพื่อความแม่นยำที่มากขึ้นดังนั้นจึงถึง 512 ขั้นละ0.7º หรือจะมองว่าเป็น 256 ก้าวต่อรอบ (เต็มสเต็ป)
ขั้นตอนเต็มหรือครึ่งขั้นหรือเต็มและครึ่งขั้นเป็นโหมดที่คุณสามารถทำงานได้ ถ้าคุณจำได้ในบทความเกี่ยวกับสเต็ปเปอร์มอเตอร์ฉันบอกว่าตัวอย่างโค้ดสำหรับ Arduino IDE ทำงานที่แรงบิดเต็มที่
สำหรับข้อมูลเพิ่มเติมคุณสามารถ ดาวน์โหลดแผ่นข้อมูลของคุณในขณะที่ ตัวอย่างเช่นนี้. สำหรับ pinout คุณไม่ต้องกังวลมากเกินไปแม้ว่าคุณจะสามารถดูข้อมูลในแผ่นข้อมูลของรุ่นที่คุณซื้อได้ แต่คอนกรีตนี้มีการเชื่อมต่อที่ช่วยให้คุณสามารถเชื่อมต่อสายเคเบิลทั้งหมดได้ในครั้งเดียวโดยไม่ต้องกังวลเกี่ยวกับโพลาไรซ์หรือว่าแต่ละอันไปที่ไหนเพียงแค่ใส่เข้าไปในคอนโทรลเลอร์และ voila ...
สำหรับตัวควบคุมมอเตอร์หรือไดรเวอร์ที่รวมอยู่ในมอเตอร์ 28BYJ-48 นี้คุณมี ULN2003Aหนึ่งในความนิยมมากที่สุดและคุณสามารถใช้กับ Arduino ได้อย่างง่ายดาย มีอาร์เรย์ของทรานซิสเตอร์ดาร์ลิงตันที่รองรับได้ถึง 500mA และมีพินเชื่อมต่อเพื่อเชื่อมโยง 4 คอยส์กับพินของบอร์ด Arduino ที่มีหมายเลขจาก IN1 ถึง IN4 ดังที่คุณเห็นในบทความสเต็ปเปอร์มอเตอร์ที่ฉันกล่าวถึงข้างต้น จาก Arduino คุณสามารถมีสายไฟจากพิน 5v และ GND ไปยังหมุดสองตัวบนบอร์ดโมดูลไดรเวอร์ที่มีเครื่องหมาย - + (5-12v) เพื่อจ่ายไฟให้กับบอร์ดและสเต็ปมอเตอร์
โดยวิธีการที่มี ทรานซิสเตอร์ดาร์ลิงตัน ได้รับอนุญาตให้ใช้ทรานซิสเตอร์สองขั้ววางคู่กันและทำหน้าที่เป็นทรานซิสเตอร์ตัวเดียว สิ่งนี้จะเพิ่มอัตราขยายของสัญญาณใน 'ทรานซิสเตอร์' ที่เป็นผลลัพธ์เดียวและยังช่วยให้สามารถรับกระแสและแรงดันไฟฟ้าได้สูง
El คู่ดาร์ลิงตันเนื่องจาก "ทรานซิสเตอร์" ตัวเดียวที่เกิดจากการรวมกันของทรานซิสเตอร์สองขั้วจึงเป็นที่รู้จักกัน มีต้นกำเนิดที่ Bell Labs ในปีพ. ศ. 1952 โดย Sidney Darlington จึงเป็นที่มาของชื่อ ทรานซิสเตอร์เหล่านี้เชื่อมต่อในลักษณะที่ NPN ตัวหนึ่งมีตัวสะสมเชื่อมต่อกับตัวสะสมของทรานซิสเตอร์ NPN ตัวที่สอง ในขณะที่ผู้ออกครั้งแรกไปที่ฐานของที่สอง นั่นคือทรานซิสเตอร์หรือคู่ที่เป็นผลลัพธ์มีสามการเชื่อมต่อเป็นทรานซิสเตอร์ตัวเดียว ฐานของทรานซิสเตอร์ตัวแรกและตัวสะสม / ตัวปล่อยของทรานซิสเตอร์ตัวที่สอง ...
ซื้อที่ไหนมอเตอร์
ลอส คุณสามารถหาได้จากร้านค้ามากมาย เชี่ยวชาญด้านอิเล็กทรอนิกส์และออนไลน์เช่น Amazon ตัวอย่างเช่นคุณสามารถซื้อได้ที่:
- ประมาณ€ 6 คุณสามารถมี ผลิตภัณฑ์ที่ไม่พบ.
- ผลิตภัณฑ์ที่ไม่พบ และสายเคเบิลสำหรับการเชื่อมต่อในกรณีที่คุณต้องการมอเตอร์มากกว่าหนึ่งตัวสำหรับหุ่นยนต์หรือโครงการที่คุณกำลังทำ ...
การเขียนโปรแกรม 28BYJ-48 ด้วย Arduino
ก่อนอื่นคุณควร มีความชัดเจนเกี่ยวกับแนวคิดของสเต็ปเปอร์มอเตอร์ดังนั้นฉันขอแนะนำให้คุณ อ่านบทความของ Hwlibre เกี่ยวกับรายการเหล่านี้. มอเตอร์เหล่านี้ไม่ได้ออกแบบมาให้ป้อนอย่างต่อเนื่อง แต่ให้โพลาไรซ์ในเฟสต่างๆเพื่อให้เลื่อนไปตามองศาที่เราต้องการเท่านั้น ในการกระตุ้นเฟสและควบคุมการหมุนของเพลาคุณจะต้องป้อนการเชื่อมต่อแต่ละครั้งอย่างเหมาะสม
ผู้ผลิตแนะนำให้ขับครั้งละ 2 คอยล์
- เพื่อให้มันใช้งานได้ ที่แรงบิดสูงสุดด้วยความเร็วที่เร็วที่สุดและการบริโภคสูงสุดคุณสามารถใช้ตารางนี้:
โซ | ขดลวดก | คอยล์ B | ขดลวดค | ขดลวด D |
---|---|---|---|---|
1 | สูง | สูง | LOW | LOW |
2 | LOW | สูง | สูง | LOW |
3 | LOW | LOW | สูง | สูง |
4 | สูง | LOW | LOW | สูง |
- เพื่อกระตุ้นขดลวดเพียงตัวเดียวในแต่ละครั้งและทำให้มันทำงานได้ ในโหมด wave drive (แม้เพียงครึ่งเดียว แต่ใช้พลังงานต่ำ) คุณสามารถใช้ตารางต่อไปนี้:
โซ | ขดลวดก | คอยล์ B | ขดลวดค | ขดลวด D |
---|---|---|---|---|
1 | สูง | LOW | LOW | LOW |
2 | LOW | สูง | LOW | LOW |
3 | LOW | LOW | สูง | LOW |
4 | LOW | LOW | LOW | สูง |
- หรือเพื่อความก้าวหน้า ครึ่งก้าวคุณสามารถใช้สิ่งนี้เพื่อให้ได้ความแม่นยำในการกลึงมากขึ้นในขั้นตอนสั้น ๆ :
โซ | ขดลวดก | คอยล์ B | ขดลวดค | ขดลวด D |
---|---|---|---|---|
1 | สูง | LOW | LOW | LOW |
2 | สูง | สูง | LOW | LOW |
3 | LOW | สูง | LOW | LOW |
4 | LOW | สูง | สูง | LOW |
5 | LOW | LOW | สูง | LOW |
6 | LOW | LOW | สูง | สูง |
7 | LOW | LOW | LOW | สูง |
8 | LOW | LOW | LOW | สูง |
และคุณอาจคิดว่า ... สิ่งนี้เกี่ยวข้องกับการเขียนโปรแกรม Arduino อย่างไร? ความจริงก็มีมากตั้งแต่นั้นมา คุณสามารถสร้างเมทริกซ์หรืออาร์เรย์ด้วยค่าใน Arduino IDE เพื่อให้มอเตอร์เคลื่อนที่ตามที่คุณต้องการจากนั้นใช้อาร์เรย์ดังกล่าวในวงหรือเมื่อคุณต้องการ ... คำนึงว่า LOW = 0 และ HIGH = 1 นั่นคือไม่มีแรงดันไฟฟ้าหรือแรงดันไฟฟ้าสูงคุณสามารถสร้างได้ สัญญาณที่ Arduino คุณต้องส่งไปยังคอนโทรลเลอร์เพื่อขับเคลื่อนมอเตอร์ ตัวอย่างเช่นหากต้องการทำตามขั้นตอนปานกลางคุณสามารถใช้รหัสสำหรับเมทริกซ์:
int Paso [ 8 ][ 4 ] = { {1, 0, 0, 0}, {1, 1, 0, 0}, {0, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 0}, {0, 0, 1, 1}, {0, 0, 0, 1}, {1, 0, 0, 1} };
นั่นคือสำหรับ รหัสที่สมบูรณ์ของร่าง จาก Arduino IDE คุณสามารถใช้ตัวอย่างพื้นฐานนี้เพื่อทดสอบการทำงานของมอเตอร์สเต็ปเปอร์ 28BYJ-48 ด้วยวิธีนี้คุณสามารถหมุนเพลามอเตอร์ได้เมื่อเชื่อมต่อไดอะแกรมทั้งหมดอย่างถูกต้องแล้ว ลองแก้ไขค่าหรือแก้ไขโค้ดสำหรับแอปพลิเคชันที่คุณต้องการในกรณีของคุณ:
// Definir pines conectados a las bobinas del driver #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 // Secuencia de pasos a par máximo del motor. Realmente es una matriz que representa la tabla del unipolar que he mostrado antes int paso [4][4] = { {1, 1, 0, 0}, {0, 1, 1, 0}, {0, 0, 1, 1}, {1, 0, 0, 1} }; void setup() { // Todos los pines se configuran como salida, ya que el motor no enviará señal a Arduino pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); pinMode(IN3, OUTPUT); pinMode(IN4, OUTPUT); } // Bucle para hacerlo girar void loop() { for (int i = 0; i < 4; i++) { digitalWrite(IN1, paso[i][0]); digitalWrite(IN2, paso[i][1]); digitalWrite(IN3, paso[i][2]); digitalWrite(IN4, paso[i][3]); delay(10); } }
อย่างที่คุณเห็นในกรณีนี้มันจะทำงานร่วมกับแรงบิดสูงสุดที่เปิดใช้งานขดลวดสองต่อสอง ...