สารบัญ:
- ขั้นตอนที่ 1: ทรัพยากรที่ใช้
- ขั้นตอนที่ 2: เกี่ยวกับ Spindles - มันคืออะไร?
- ขั้นตอนที่ 3: เกี่ยวกับ Spindles - Single และ Ball Threads
- ขั้นตอนที่ 4: เกี่ยวกับ Spindles - Applications
- ขั้นตอนที่ 5: เกี่ยวกับแกนหมุน - พารามิเตอร์
- ขั้นตอนที่ 6: เกี่ยวกับแกนหมุน - ขั้นตอน (การเคลื่อนที่และความเร็ว)
- ขั้นตอนที่ 7: การประกอบ
- ขั้นตอนที่ 8: การติดตั้ง - วัสดุ
- ขั้นตอนที่ 9: การประกอบ - ขั้นตอนที่ 01
- ขั้นตอนที่ 10: การประกอบ - ขั้นตอนที่ 02
- ขั้นตอนที่ 11: การติดตั้ง - ขั้นตอนที่ 03
- ขั้นตอนที่ 12: การประกอบ - ขั้นตอนที่ 04
- ขั้นตอนที่ 13: การติดตั้ง - อิเล็กทรอนิกส์
- ขั้นตอนที่ 14: โครงการไฟฟ้า
- ขั้นตอนที่ 15: รหัสที่มา
- ขั้นตอนที่ 16: เกี่ยวกับแกนหมุน - การกำหนดค่าเครื่อง
- ขั้นตอนที่ 17: Marlin
- ขั้นตอนที่ 18: GRBL
- ขั้นตอนที่ 19: ดูงานของฉันเพิ่มเติม:
วีดีโอ: Arduino Uno พร้อมสปินเดิลและพิทช์มอเตอร์: 19 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
วันนี้เราจะมาพูดถึงหัวข้อที่สำคัญมากในกลศาสตร์และเมคคาทรอนิกส์: องค์ประกอบของเครื่องจักร ในบทความนี้ เราจะพูดถึงแกนหมุนโดยเฉพาะ ซึ่งมีฟีเจอร์และแอปพลิเคชั่นที่น่าสนใจ อย่างไรก็ตาม เราจะสาธิตวิธีการคำนวณการเคลื่อนที่ที่เกิดจากแกนหมุนและนำเสนอชุดทดสอบ
ฉันสร้างชุดประกอบด้านล่าง ซึ่งจะทำให้แกนหมุน 2 มม. และอีก 8 มม. ขยับได้ สปินเดิล TR8 ที่ฉันใช้นี้มักใช้กับเราเตอร์ขนาดเล็กและเครื่องพิมพ์ 3 มิติ โดยเฉพาะบนแกน Z จำไว้ว่าการฝึกฝนแนวคิดบางอย่างที่เราจะทำงานที่นี่ คุณจะสามารถออกแบบเครื่องจักรประเภทใดก็ได้
ขั้นตอนที่ 1: ทรัพยากรที่ใช้
- แกนหมุนสี่เหลี่ยมคางหมูเส้นผ่านศูนย์กลาง 8 มม. และระยะพิทช์ 2 มม.
- แกนหมุนสี่เหลี่ยมคางหมู เส้นผ่านศูนย์กลาง 8 มม. และระยะพิทช์ 8 มม.
- เกาลัดหน้าแปลนแกน 8x2
- แกนหมุน 8x8 เกาลัด
- ตลับลูกปืนสำหรับแกนหมุนขนาดเส้นผ่านศูนย์กลาง 8 มม.
- ไกด์ทรงกระบอกเชิงเส้น เส้นผ่านศูนย์กลาง 10 มม.
- แบริ่งลูกกลิ้งทรงกระบอกสำหรับไกด์ 10 มม.
- ตัวยึดสำหรับไกด์ทรงกระบอก 10 มม.
- NEMA 17 Motors
- ข้อต่อเพลา
- Arduino Uno
- ไดรเวอร์ DRV8825
- แป้นพิมพ์เมทริกซ์ 4x4
- จอแสดงผล Nokia 5110
- ชิ้นส่วนพลาสติกเบ็ดเตล็ด
- สลักเกลียวและถั่ว
- ฐานไม้
- แหล่งจ่ายไฟภายนอก 12V
ขั้นตอนที่ 2: เกี่ยวกับ Spindles - มันคืออะไร?
สปินเดิลเป็นส่วนประกอบของเครื่องจักร เช่น สกรู กล่าวคือเป็นเส้นตรงที่เกิดจากเกลียวต่อเนื่อง ใช้ในกลไกที่ต้องการการเคลื่อนที่และการวางตำแหน่งเชิงเส้น พวกเขาสามารถออกแรงดึงและแรงอัดสูงและส่งแรงบิด ช่วยให้เคลื่อนไหวได้ด้วยการล็อคอัตโนมัติ พวกเขาสามารถสร้างขึ้นจากวัสดุที่แตกต่างกันซึ่งเป็นอลูมิเนียมและเหล็กที่พบมากที่สุด
เนื่องจากบริษัทจีนกำลังผลิตสปินเดิลทรงสี่เหลี่ยมคางหมู เราขอแนะนำให้คุณซื้อผลิตภัณฑ์ประเภทนี้แทนน๊อตที่รู้จักกันดี นี่เป็นเพราะราคาที่น่าดึงดูดและการลากซึ่งฉันคิดว่าน่าเกลียด
ในภาพ ฉันใส่สปินเดิลที่ดีที่สุด ซึ่งในความคิดของฉัน นั่นคือสปินเดิลของลูกบอลหมุนเวียน มันมักจะทำจากเหล็กที่แข็งมากๆ และลูกบอลก็หมุนไปรอบๆ ข้างในเกาลัด นอกจากความแม่นยำที่ยอดเยี่ยมแล้ว ฉันยังเน้นถึงความทนทานด้วย เนื่องจากสปินเดิลประเภทนี้สามารถสร้างการเคลื่อนไหวได้หลายพันล้านครั้งโดยไม่ทำลายกลไก ตัวเลือกที่ถูกกว่า ซึ่งเราใช้ที่นี่คือแกนหมุนสี่เหลี่ยมคางหมู
ขั้นตอนที่ 3: เกี่ยวกับ Spindles - Single และ Ball Threads
ในภาพทางซ้าย สปินเดิลของลูกบอลจะมีลำคลองเป็นรูปครึ่งวงกลมที่ลูกบอลจะหมุน พวกมันค่อนข้างแพงกว่าและมีแรงเสียดทานต่ำเมื่อเทียบกับสปินเดิลแบบสกรูเดี่ยว ส่งผลให้ได้ผลผลิตสูงขึ้นมาก (แรงเสียดทานจากการกลิ้ง)
สปินเดิลแบบเกลียวเดียวทางด้านขวาของภาพมักจะมีโปรไฟล์สี่เหลี่ยมคางหมู เนื่องจากรูปทรงนี้เหมาะสมกว่าที่จะใช้แรงในทิศทางตามแนวแกนและการส่งผ่านการเคลื่อนไหวที่ราบรื่น พวกมันมีราคาไม่แพงนักและมีแรงเสียดทานสูงเมื่อเทียบกับสปินเดิลของลูกบอลหมุนเวียน ทำให้ได้ผลตอบแทนต่ำ กล่าวคือ แรงเสียดทานจากการลื่น
ขั้นตอนที่ 4: เกี่ยวกับ Spindles - Applications
สปินเดิลสามารถใช้ได้กับกลไกใดๆ ที่ต้องการการเคลื่อนที่เชิงเส้น มีการใช้กันอย่างแพร่หลายในอุตสาหกรรมเครื่องจักรและกระบวนการ
แอปพลิเคชั่นบางตัวรวมถึง:
- ลิฟท์บรรทุกสินค้า
- แท่นพิมพ์
- สตรอเบอร์รี่และเครื่องกลึง
- อุปกรณ์ CNC
- เครื่องห่อ
- เครื่องพิมพ์ 3 มิติ
- อุปกรณ์ตัดและตัดด้วยเลเซอร์
- กระบวนการทางอุตสาหกรรม
- ระบบกำหนดตำแหน่งและการเคลื่อนที่เชิงเส้น
ขั้นตอนที่ 5: เกี่ยวกับแกนหมุน - พารามิเตอร์
มีลักษณะเฉพาะหลายอย่างของสปินเดิลที่ต้องนำมาพิจารณาเมื่อออกแบบกลไก นอกจากเส้นผ่านศูนย์กลางและระยะพิทช์แล้ว ยังจำเป็นต้องรับรู้กำลังรับแรงอัด โมเมนต์ความเฉื่อย (ความต้านทานการเปลี่ยนแปลงในสถานะการหมุน) วัสดุก่อสร้าง ความเร็วของการหมุนที่จะตกกระทบ ทิศทางการทำงาน (แนวนอน หรือแนวตั้ง) โหลดที่ใช้ เป็นต้น
แต่โดยอาศัยกลไกที่สร้างไว้แล้ว เราสามารถรับรู้พารามิเตอร์เหล่านี้ได้หลายตัว
มารู้จักความดีร่วมกันบ้าง มาเริ่มกันที่ STEP
ขั้นตอนที่ 6: เกี่ยวกับแกนหมุน - ขั้นตอน (การเคลื่อนที่และความเร็ว)
กำหนดความยาวที่น็อตเดินทางในแต่ละรอบ โดยปกติจะอยู่ในหน่วย มม. / รอบ
สปินเดิล 2 มม. ต่อรอบจะทำให้มีการกระจัด 2 มม. ในแต่ละรอบของสปินเดิล มันจะส่งผลต่อความเร็วเชิงเส้นของน็อต เนื่องจากเมื่อความเร็วของการหมุนเพิ่มขึ้น จำนวนรอบต่อหน่วยของเวลาจะเพิ่มขึ้น และทำให้ระยะทางที่เคลื่อนที่ไปด้วย
หากการหมุนรอบ 2 มม. ต่อการหมุนรอบหมุนที่ 60 รอบต่อนาที (หนึ่งรอบต่อวินาที) น็อตจะเคลื่อนที่ที่ 2 มม. ต่อวินาที
ขั้นตอนที่ 7: การประกอบ
ในการประกอบชิ้นส่วนของเรา ฉันมีมอเตอร์สองตัวและแป้นพิมพ์พร้อมจอแสดงผล ซึ่งดูเหมือนเครื่องคิดเลข เพราะฉันทำปกสำหรับพวกมันในเครื่องพิมพ์ 3 มิติ บนจอแสดงผลของ Nokia เรามีตัวเลือกดังต่อไปนี้:
F1: Crescent - Fuso เปลี่ยนจากตำแหน่งปัจจุบันไปยังตำแหน่งที่ฉันกำหนด
F2: จากมากไปน้อย - เทิร์น
F3: ความเร็ว - ฉันสามารถเปลี่ยนความกว้างพัลส์ได้ไหม
F4: ESC
ขั้นตอนที่ 8: การติดตั้ง - วัสดุ
ลิเนียร์ไกด์ A - 10 มม.
B - แกนหมุนสี่เหลี่ยมคางหมูของขั้นที่ 2 และ 8mm
C - ฐานเจาะ
D - ตลับลูกปืนสำหรับแกนหมุน
E - ที่ยึดไกด์
F - เกาลัด
G - แบริ่ง
H - ข้อต่อ
ฉัน - เครื่องยนต์
J - ชิ้นส่วนพลาสติกต่างๆ (เคอร์เซอร์, ขายึดเครื่องยนต์, เวดจ์, แป้นคีย์บอร์ด และจอแสดงผล
ขั้นตอนที่ 9: การประกอบ - ขั้นตอนที่ 01
หลังจากเจาะฐาน (C) เราประกอบมอเตอร์สองตัว (I) เราใช้วงเล็บที่ทำในเครื่องพิมพ์ 3 มิติ (J) ในการยึด อย่าขันสกรูใดๆ ในขั้นตอนการวางตำแหน่งนี้ ซึ่งจะช่วยให้สามารถปรับค่าที่จำเป็นในขั้นตอนการจัดตำแหน่งได้
ขั้นตอนที่ 10: การประกอบ - ขั้นตอนที่ 02
ยังคงติดตามการเจาะฐาน (C) วางตำแหน่งรางนำ (E) และแบริ่ง (D) รายละเอียดสำหรับแผ่นชิมพลาสติก (J) ใช้สำหรับปรับความสูงของตลับลูกปืน
ขั้นตอนที่ 11: การติดตั้ง - ขั้นตอนที่ 03
เราสร้างเคอร์เซอร์โดยใช้ส่วนที่พิมพ์เพื่อเชื่อมต่อแบริ่ง (G) กับน็อต (F) เราใช้เคอร์เซอร์สองตัว อันหนึ่งไปทางขวา อีกอันหนึ่งไปทางซ้าย หน้าที่ของมันคือการระบุตำแหน่งบนมาตราส่วนเมื่อใดก็ตามที่เราต้องการระบุการกระจัดที่เกิดจากแกนหมุน
ขั้นตอนที่ 12: การประกอบ - ขั้นตอนที่ 04
ใส่ไกด์ (A) และแกนหมุน (B) ในตลับลูกปืนตามลำดับ (D) และส่วนรองรับ (E) ตรงข้ามกับมอเตอร์ จากนั้นใส่ไกด์และแกนหมุนในตลับลูกปืน (G) และเกาลัด (F) และที่ ส่วนปลายของแกนหมุน เรายังใส่ข้อต่อ (H) ด้วย เรานำพวกเขาทั้งคู่ไปถึงจุดสุดท้าย (ตรงข้ามกับการสนับสนุนและมอเตอร์)
ขันสกรูให้แน่นเล็กน้อยเพื่อให้สามารถปรับได้ในภายหลัง ทำซ้ำขั้นตอนโดยใช้ไกด์และแกนหมุนที่เหลือ เมื่อวางส่วนประกอบทั้งหมดแล้ว เราจะทำการจัดตำแหน่งชิ้นส่วน เสร็จสิ้นขั้นตอนการประกอบทางกล
ขั้นตอนที่ 13: การติดตั้ง - อิเล็กทรอนิกส์
เรายึดจอแสดงผล Nokia 5110 และแป้นพิมพ์เมทริกซ์ขนาด 4x4 โดยใช้ที่ใส่พลาสติกที่พิมพ์ออกมา ในพื้นที่ด้านล่างของขาตั้งจะอยู่ที่ Arduino Uno ไดรเวอร์ DRV8825
เรายึดชุดประกอบโดยใช้การเจาะที่มีอยู่ในฐาน
ขั้นตอนที่ 14: โครงการไฟฟ้า
แผนภาพการเดินสายไฟนั้นง่าย เรามี DRV8825 และกระจก 17 อันเหมือนกัน นั่นคือขั้นตอนเดียวกันกับที่เราส่งไปยังอันหนึ่งไปยังอีกอันหนึ่ง สิ่งที่เปลี่ยนแปลงคือในเครื่องยนต์ตัวใดตัวหนึ่ง ฉันมีสปินเดิล 8 มม. และอีกอันมีสปินเดิล 2 มม. เห็นได้ชัดว่าอันแรกที่มีสปินเดิล 8 มม. เคลื่อนที่เร็วขึ้น ในไดอะแกรมยังมีจอแสดงผลและคีย์บอร์ด 4x4 ซึ่งต้องเป็นเมทริกซ์
ขั้นตอนที่ 15: รหัสที่มา
การรวมไลบรารีและการสร้างวัตถุ
เรามี Lib ที่ฉันทำซึ่งก็คือ StepDriver.h มันถูกเตรียมไว้สำหรับ 8825, 4988 และไดรเวอร์ TB6600 ด้วย ฉันสร้างในขั้นตอนนี้วัตถุ DRV8825, d1
//Biblioteca responsável por capturar a tecla que foi pressionada no teclado#include //Biblioteca responsável pelos graficos do display #include //Biblioteca responsável pela comunicacao do display #include // Configuracao de pinos do Display ออก (SCLK) // pin 5 - Serial data out (DIN) // pin 4 - Data/Command select (D/C) // pin 3 - LCD chip select (CS/CE) // pin 2 - LCD reset (RST)) Adafruit_PCD8544 display = Adafruit_PCD8544(6, 5, 4, 3, 2); //Biblioteca de motor de passo #include // Instacia หรือไดรเวอร์ DRV8825 DRV8825 d1;
ค่าคงที่และตัวแปรส่วนกลาง
ในส่วนนี้ของรหัส ฉันปฏิบัติต่อเมทริกซ์ ซึ่งฉันสอนในบทเรียนวิดีโออื่น (LINK KEYBOARD) ฉันกำลังพูดถึงวัตถุปุ่มกด นอกจากระยะทางและความเร็ว
const ไบต์ LINHAS = 4; //número de linhas ทำ tecladoconst ไบต์ COLUNAS = 4; //define uma matriz com os símbolos que deseja ser lido do teclado char SIMBOLOS[LINHAS][COLUNAS] = { {'A', '1', '2', '3'}, { 'B', '4', '5', '6'}, {'C', '7', '8', '9'}, {'D', 'c', '0', 'e '} }; ไบต์ PINOS_LINHA[LINHAS] = {A2, A3, A4, A5}; //pinos que indicam เป็น linhas ทำ teclado ไบต์ PINOS_COLUNA[COLUNAS] = {0, 1, A0, A1}; //pinos que indicam เป็น colunas do teclado //instancia de Keypad, responsável por capturar a tecla pressionada Keypad customKeypad = Keypad(makeKeymap(SIMBOLOS), PINOS_LINHA, PINOS_COLUNA, LINHAS, COLUNAS); //variáveis resposnsáveis por armazenar o ความกล้าหาญ digitado ถ่าน customKey; ระยะทางไกลที่ไม่ได้ลงนาม = 0; velocidade ยาวที่ไม่ได้ลงนาม = 2000;
ฟังก์ชั่นการอ่านคีย์บอร์ด
ในขั้นตอนนี้ เรามีโค้ดที่อ้างอิงถึงจอแสดงผล ซึ่งทำงานเพิ่มขึ้นและลดลงในการพิมพ์
//Funcao ตอบกลับ por ler o valor do usuario pelo teclado-------------------------------------- --- lerValor ยาวที่ไม่ได้ลงนาม () {// ลบเมนูย่อย que coleta os valores ไม่แสดง display.clearDisplay (); display.fillRect(0, 0, 84, 11, 2); display.setCursor(27, 2); display.setTextColor(สีขาว); display.print("ความกล้าหาญ"); display.setTextColor (สีดำ); display.fillRect(0, 24, 21, 11, 2); display.setCursor(2, 26); display.setTextColor(สีขาว); display.print("CLR"); display.setTextColor (สีดำ); display.setCursor (23, 26); display.print("LIMPAR"); display.fillRect(0, 36, 21, 11, 2); display.setCursor(5, 38); display.setTextColor(สีขาว); display.print("F4"); display.setTextColor(สีดำ); display.setCursor (23, 38); display.print("โวลตาร์"); display.setCursor(2, 14); display.display(); ความกล้าหาญของสตริง = ""; ถ่าน tecla = เท็จ;
วนซ้ำรอการกดปุ่ม
ในที่นี้เราจะอธิบายการเขียนโปรแกรมแบบวนรอบ นั่นคือที่ที่คุณป้อนค่า
//วนซ้ำ infinito enquanto nao chamar o กลับในขณะที่ (1) { tecla = customKeypad.getKey (); if (tecla) { สวิตช์ (tecla) { //Se teclas de 0 a 9 forem pressionadas case '1': case '2': case '3': case '4': case '5': case '6': กรณี '7': กรณี '8': กรณี '9': กรณี '0': valor += tecla; display.print(tecla); display.display(); หยุดพัก; //Se tecla CLR foi pressionada case 'c': //Limpa a string valor valor = ""; // ความสามารถในการแสดงผล display.fillRect(2, 14, 84, 8, 0); display.setCursor(2, 14); display.display(); หยุดพัก; //Se tecla ENT foi pressionada case 'e': //Retorna o valor return valor.toInt(); // กำหนด tecla ENT foi pressionada case 'e': //Retorna o valor return valor.toInt(); หยุดพัก; //Se tecla F4 (ESC) กรณี foi pressionada 'D': return -1; ค่าเริ่มต้น: แตก; } } //Limpa o char tecla tecla = false; } }
ฟังก์ชั่นขับมอเตอร์
ฟังก์ชัน "ย้าย" ทำงานในขั้นตอนนี้ ฉันได้รับจำนวนพัลส์และทิศทาง จากนั้นฉันสร้าง "for"
//Funcao ตอบสนองต่อผู้เสนอญัตติหรือผู้เสนอญัตติ -------------------------------------- โมฆะผู้เสนอญัตติ (ไม่ได้ลงนาม pulsos แบบยาว, bool direcao) { สำหรับ (unsigned long i = 0; i < pulsos; i++) { d1.motorMove (direcao); } }
ติดตั้ง ()
ตอนนี้ฉันย้ายจอแสดงผลและการกำหนดค่าไดรเวอร์ และฉันยังใส่การปักหมุดไว้ในซอร์สโค้ดเพื่อให้ง่ายขึ้น ฉันเริ่มต้นค่าบางอย่างและจัดการกับวิธีการที่สร้างการตั้งค่า
การตั้งค่าเป็นโมฆะ () {// กำหนดค่าให้แสดง ---------------------------------------- -------- display.begin(); display.setContrast(50); display.clearDisplay(); display.setTextSize(1); display.setTextColor (สีดำ); //Configuração do Driver DRV8825 ----------------------------------------- // pin GND - เปิดใช้งาน (ENA) // พิน 13 - M0 // พิน 12 - M1 // พิน 11 - M2 // พิน 10 - รีเซ็ต (RST) // พิน 9 - สลีป (SLP) // พิน 8 - ขั้นตอน (STP)) // พิน 7 - ทิศทาง (DIR) d1.pinConfig(99, 13, 12, 11, 10, 9, 8, 7); d1.sleep(ต่ำ); d1.รีเซ็ต(); d1.stepPerMm(100); d1.stepPerRound(200); d1.stepConfig(1); d1.motionConfig(50, velocidade, 5000); }
loop () - ส่วนที่ 1 - เมนูการวาดภาพ
void loop() { //Escreve o Menu do Programa no display ----------------------------------- display.clearDisplay(); display.fillRect(0, 0, 15, 11, 2); display.setCursor(2, 2); display.setTextColor(สีขาว); display.print("F1"); display.setTextColor (สีดำ); display.setCursor(17, 2); display.print("CRESCENTE"); display.fillRect(0, 12, 15, 11, 2); display.setCursor(2, 14); display.setTextColor(สีขาว); display.print("F2"); display.setTextColor (สีดำ); display.setCursor(17, 14); display.print("DECRESCENTE"); display.fillRect(0, 24, 15, 11, 2); display.setCursor(2, 26); display.setTextColor(สีขาว); display.print("F3"); display.setTextColor (สีดำ); display.setCursor (17, 26); display.print("VELOCIDADE");
loop () - ตอนที่ 2 - เมนูการวาดภาพ
display.fillRect(0, 36, 15, 11, 2); display.setCursor(2, 38); display.setTextColor(สีขาว); display.print("F4"); display.setTextColor(สีดำ); display.setCursor (17, 38); display.print("ESC"); display.display(); bool esc = เท็จ;
loop () - ตอนที่ 3 - กำลังวิ่ง
//วนซ้ำ enquanto a tecla F4 (ESC) หนาวสำหรับ pressionada ในขณะที่ (!esc) { // จับ tecla pressionada ทำ teclado customKey = customKeypad.getKey (); //caso alguma tecla foi pressionada if (customKey) {// สวิตช์ Trata a tecla apertada (customKey) {// Se tecla F1 foi pressionada case 'A': distancia = lerValor (); // Se tecla ESC foi pressionada if (distancia == -1) { esc = true; } อื่น {// ลบข้อความ "Movendo" ไม่แสดง display.clearDisplay (); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor(สีขาว); display.print("MOVENDO"); display.setTextColor(สีดำ); display.setCursor(2, 14); display.print(ดิสแทนเซีย); display.print(" Passos"); display.display();
loop () - ตอนที่ 4 - กำลังวิ่ง
//ย้าย o ผู้เสนอญัตติ (distancia, LOW); //Volta ao เมนู esc = true; } หยุดพัก; //Se tecla F2 กรณี foi pressionada 'B': distancia = lerValor(); // Se tecla ESC foi pressionada if (distancia == -1) { esc = true; } อื่น {// ลบข้อความ "Movendo" ไม่แสดง display.clearDisplay (); display.fillRect(0, 0, 84, 11, 2); display.setCursor(21, 2); display.setTextColor(สีขาว); display.print("MOVENDO"); display.setTextColor (สีดำ); display.setCursor(2, 14); display.print(ดิสแทนเซีย); display.print(" Passos"); display.display();
loop () - ตอนที่ 5 - กำลังวิ่ง
// ย้าย o ผู้เสนอญัตติ (distancia, สูง); //Volta ao เมนู esc = true; } หยุดพัก; //Se tecla F3 foi pressionada case 'C': velocidade = lerValor(); ถ้า (velocidade == -1) { esc = true; } อื่น {// ลบข้อความ "Velocidade" ไม่แสดง display.clearDisplay (); display.fillRect(0, 0, 84, 11, 2); display.setCursor(12, 2); display.setTextColor(สีขาว); display.print("VELOCIDADE"); display.setTextColor (สีดำ); display.setCursor(2, 14); display.print(velocidade); display.print(ถ่าน(229)); display.print("s");
loop () - ตอนที่ 6 - กำลังวิ่ง
display.fillRect (31, 24, 21, 11, 2); display.setCursor (33, 26); display.setTextColor(สีขาว); display.println("ตกลง!"); display.setTextColor (สีดำ); display.display(); //กำหนดค่า nova velocidade ao motor d1.motionConfig(50, velocidade, 5000); ล่าช้า (2000); //Volta ao เมนู esc = true; } หยุดพัก; //Se tecla F4 (ESC) foi pressionada case 'D': //Se tecla CLR foi pressionada case 'c': //Se tecla ENT foi pressionada case 'e': //Volta ao เมนู esc = true; ค่าเริ่มต้น: แตก; } } // Limpa o ถ่าน customKey customKey = false; } }
ขั้นตอนที่ 16: เกี่ยวกับแกนหมุน - การกำหนดค่าเครื่อง
ในเครื่อง CNC เช่น เครื่องพิมพ์ 3D และเราเตอร์ เป็นต้น โปรแกรมที่รับผิดชอบการควบคุมตำแหน่งจำเป็นต้องรู้ว่าการเคลื่อนไหวจะเกิดขึ้นอย่างไรตามหน้าที่ของจำนวนพัลส์ที่กำหนดให้กับสเต็ปเปอร์มอเตอร์
หากตัวขับสเต็ปมอเตอร์อนุญาตให้ใช้ไมโครสเต็ป การกำหนดค่านี้จะต้องนำมาพิจารณาในการคำนวณการกระจัดที่เกิดขึ้น
ตัวอย่างเช่น หากมอเตอร์ 200 สเต็ปต่อการหมุนรอบเชื่อมต่อกับไดรเวอร์ที่ตั้งค่าเป็น 1/16 ดังนั้นจะต้องใช้พัลส์ 16 x 200 สำหรับการหมุนสปินเดิลเพียงครั้งเดียว นั่นคือ 3200 พัลส์สำหรับการหมุนแต่ละครั้ง หากสปินเดิลนี้มีระยะพิทช์ 2 มม. ต่อรอบ จะต้องใช้พัลส์ 3200 ในไดรเวอร์เพื่อให้น็อตเคลื่อนที่ 2 มม.
ในความเป็นจริง ผู้ควบคุมซอฟต์แวร์มักใช้เหตุผลเพื่อระบุอัตราส่วนนี้ "จำนวนพัลส์ต่อมิลลิเมตร" หรือ "ขั้นตอน/มม."
ขั้นตอนที่ 17: Marlin
ตัวอย่างเช่น ใน Marlin เราเห็นในส่วนการเคลื่อนไหว @section:
/ **
* ขั้นตอนแกนเริ่มต้นต่อหน่วย (ขั้นตอน / มม.)
* แทนที่ด้วย M92
* X, Y, Z, E0 [, E1 [, E2 [, E3 [, E4]
* /
#define DEFAULT_AXIS_STEPS_PER_UNIT {80, 80, 3200, 100}
ในตัวอย่างนี้ เราสามารถสรุปได้ว่าแกน X และ Y มีความแม่นยำ 80 พัลส์เพื่อเคลื่อนที่ 1 มม. ในขณะที่ Z ต้องการ 3200 พัลส์ และเครื่องอัดรีด E0 ต้องการ 100
ขั้นตอนที่ 18: GRBL
ด้านล่างเราจะเห็นคำสั่งการกำหนดค่า GRBL ด้วยคำสั่ง $ 100 เราสามารถปรับจำนวนพัลส์ที่จำเป็นในการทำให้เกิดออฟเซ็ตหนึ่งมิลลิเมตรบนแกน X
ในตัวอย่างด้านล่าง เราจะเห็นว่าค่าปัจจุบันคือ 250 พัลส์ต่อมิลลิเมตร
แกน Y และ Z สามารถตั้งค่าได้ตามลำดับ $ 101 และ $ 102
แนะนำ:
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: 6 ขั้นตอน (พร้อมรูปภาพ)
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: Arduino Nano เป็นสมาชิกที่ดี ขนาดเล็ก และราคาถูกของตระกูล Arduino มันขึ้นอยู่กับชิป Atmega328 สิ่งที่ทำให้มีประสิทธิภาพเท่ากับ Arduino Uno พี่ชายที่ใหญ่ที่สุดของเขา แต่สามารถรับเงินน้อยกว่า ในอีเบย์ตอนนี้เวอร์ชั่นภาษาจีนสามารถข
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
Arduino 3.3V แบบสแตนด์อโลนพร้อมนาฬิกา 8 MHz ภายนอกที่ถูกตั้งโปรแกรมจาก Arduino Uno ผ่าน ICSP / ISP (พร้อมการตรวจสอบแบบอนุกรม!): 4 ขั้นตอน
Arduino 3.3V แบบสแตนด์อโลนพร้อมนาฬิกา 8 MHz ภายนอกที่ถูกตั้งโปรแกรมจาก Arduino Uno ผ่าน ICSP / ISP (พร้อมการตรวจสอบแบบอนุกรม!): วัตถุประสงค์: เพื่อสร้าง Arduino แบบสแตนด์อโลนที่ทำงานบน 3.3V จากนาฬิกาภายนอก 8 MHz ในการตั้งโปรแกรมผ่าน ISP (หรือที่เรียกว่า ICSP, การเขียนโปรแกรมซีเรียลในวงจร) จาก Arduino Uno (ทำงานที่ 5V) ในการแก้ไขไฟล์ bootloader และเบิร์น th
วิธีอัปโหลดโปรแกรม Arduino Pro Mini 328P โดยใช้ Arduino Uno: 6 ขั้นตอน
วิธีอัปโหลดโปรแกรม Arduino Pro Mini 328P โดยใช้ Arduino Uno: Arduino Pro Mini เป็นชิปบอร์ดที่เล็กที่สุดที่มีพิน I/O 14 อัน ทำงานในแรงดันไฟ 3.3 โวลต์ - 5 โวลต์ DC และง่ายต่อการอัปโหลดโค้ดในอุปกรณ์การเขียนโปรแกรมข้อมูลจำเพาะ: 14 พอร์ตอินพุต/เอาต์พุตดิจิตอล RX, TX, D2~D13, 8 พอร์ตอินพุตอนาล็อก A0~A7 1
Arduino-UNO ที่ทรงพลังกว่า Massduino-UNO: 9 ขั้นตอน
Arduino-UNO ที่ทรงพลังกว่า, Massduino-UNO: Massduino คืออะไร Massduino เป็นสายผลิตภัณฑ์ใหม่ที่รวมเอาการพัฒนาอุปกรณ์ต่อพ่วงแพลตฟอร์ม Arduino ที่หลากหลาย สะดวก และรวดเร็ว ต้นทุนต่ำและง่ายต่อการผลิตได้เปรียบในการผลิตขนาดใหญ่ โค้ด Arduino เกือบทั้งหมดสามารถเป็น