สารบัญ:

เครื่องมือวัดอัตราป้อน CNC ทำจากเศษ: 5 ขั้นตอน
เครื่องมือวัดอัตราป้อน CNC ทำจากเศษ: 5 ขั้นตอน

วีดีโอ: เครื่องมือวัดอัตราป้อน CNC ทำจากเศษ: 5 ขั้นตอน

วีดีโอ: เครื่องมือวัดอัตราป้อน CNC ทำจากเศษ: 5 ขั้นตอน
วีดีโอ: พื้นฐานการเขียนโปรแกรม CNC milling 5 2024, พฤศจิกายน
Anonim
เครื่องมือวัดอัตราป้อน CNC ทำจากเศษเหล็ก
เครื่องมือวัดอัตราป้อน CNC ทำจากเศษเหล็ก

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

ขั้นตอนที่ 1: วัสดุ เครื่องมือ อุปกรณ์ที่ใช้ในการดำเนินโครงการ

เมื่อฉันเริ่มทำงานกับสิ่งนี้ ฉันนึกถึงรายการสั้น ๆ ของสิ่งที่เราต้องการ:

  • กลไกการถอดประกอบแคร่เครื่องพิมพ์
  • เครื่องมือช่างเพื่อปรับแต่งสิ่งนั้น
  • หัวแร้ง บัดกรี สายไฟ
  • มัลติมิเตอร์
  • ออสซิลโลสโคปหรือตัววิเคราะห์ลอจิก - ไม่จำเป็นอย่างยิ่ง
  • แหล่งจ่ายไฟ
  • กล้องจุลทรรศน์
  • Arduino นาโน + พินเอาต์
  • พีซีที่มี Arduino IDE, Visual Studio 2008 Express + เครื่องมือสร้างแผนภูมิ MS ติดตั้งอยู่
  • (MPU6050 - ฉันไม่ได้ใช้สิ่งนี้)
  • เต็มใจที่จะค้นหาทุกสิ่งที่คุณไม่รู้วิธีทำ

ในตอนแรก ฉันคิดว่าบอร์ด MPU6050 จะอนุญาตให้ฉันวัดอัตราป้อนงานทั้งสามแกนพร้อมกันได้ การมีมาตรความเร่งอยู่ข้างใน ฉันแน่ใจว่าการสรุปข้อมูลมาตรความเร่งจะให้ค่าที่ต้องการแก่ฉัน นั่นคือความเร็วในแต่ละแกน หลังจากดาวน์โหลดและแก้ไขข้อมูลโค้ด Arduino ที่แสดงข้อมูลดิบบนจอภาพแบบอนุกรม ฉันได้เขียนโปรแกรมพีซีขนาดเล็กใน Visual Studio ที่ประมวลผลข้อมูล และลงจุดบนแผนภูมิเพื่อการตีความที่ง่ายขึ้น ฉันต้องดาวน์โหลดทั้ง Visual Studio C# Express 2008 และเครื่องมือสร้างแผนภูมิสำหรับสิ่งนี้

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

ขั้นตอนที่ 2: อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ

อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ
อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ
อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ
อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ
อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ
อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ
อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ
อุปกรณ์ฮาร์ดแวร์ที่ต้องทำ

วิศวกรรมย้อนกลับ

แน่นอน กลไกเครื่องพิมพ์ไม่มีหมายเลขชิ้นส่วนที่ฉันสามารถใช้ระบุคุณสมบัติที่แน่นอนได้ จำเป็นต้องมีวิศวกรรมย้อนกลับเล็กน้อยเพื่อไปยังที่ที่เราต้องการ หลังจากตรวจสอบกลไกและอุปกรณ์อิเล็กทรอนิกส์อย่างใกล้ชิดแล้ว ฉันตัดสินใจว่าสิ่งแรกคือการระบุพินของเซ็นเซอร์ออปติคัล สิ่งนี้ต้องทำเพื่อเชื่อมต่อสิ่งทั้งหมดกับ Arduino ฉันถอดชิ้นส่วนพลาสติกสีดำ แยก PCB และตรวจสอบเซ็นเซอร์: มี ROHM RPI-2150 เขียนอยู่ นั่นทำให้ฉันมีความสุข มีความหวังสูงว่าฉันจะพบแผ่นข้อมูล น่าเสียดายที่สิ่งนี้เป็นชิ้นส่วนเก่าหรือแบบกำหนดเอง - ไม่มีแผ่นข้อมูลที่จะพบได้ทุกที่บนเว็บ ซึ่งหมายความว่าฉันต้องจัดการเรื่องนี้เอง: เมื่อรู้ว่าเซ็นเซอร์เหล่านี้มักจะมี LED อินฟราเรดและโฟโต้ทรานซิสเตอร์สองตัวอยู่ข้างใน ฉันจึงคว้ามัลติมิเตอร์ ตั้งค่าเป็นโหมดการวัดไดโอด และเริ่มวัดระหว่างหมุด

พินไฟฟ้ามักจะหาได้ง่าย - โดยจะมีตัวเก็บประจุอยู่ตรงกลาง และมักจะเชื่อมต่อกับแผงวงจร PCB รอยกราวด์มักจะเชื่อมต่อกับแผ่นอิเล็กโทรดหลายแผ่นเพื่อการขจัดเสียงรบกวนที่ดีขึ้น

พินอินพุตและเอาต์พุตนั้นไม่สำคัญนัก เมื่อวัดข้ามไดโอด มิเตอร์จะแสดงแรงดันไปข้างหน้าในทิศทางเดียว และโอเวอร์โหลด (อนันต์) ในอีกทางหนึ่ง ฉันสามารถระบุไดโอดสี่ตัวระหว่างพินได้ ฉันสรุปได้ว่าไดโอดที่สี่ต้องเป็นซีเนอร์หรือไดโอด TVS บางประเภท เนื่องจากอยู่ระหว่างพินกำลังของส่วนประกอบ การระบุตำแหน่งตัวปล่อยอินฟราเรดทำได้ง่าย โดยมีตัวต้านทาน 89R อยู่ในอนุกรมด้วย ฉันเหลือการวัดไดโอดสองตัวบนหมุดอีกสองตัวที่เหลือ ซึ่งต้องเป็นตัวรับสองตัว

หมายเหตุ: เซ็นเซอร์เหล่านี้มีตัวรับสัญญาณสองตัวเพื่อให้สามารถกำหนดทิศทางของการเคลื่อนไหวนอกเหนือจากการกำหนดตำแหน่งโดยการนับพัลส์ รูปคลื่นเอาท์พุตทั้งสองนี้อยู่นอกเฟส 90° ซึ่งใช้เพื่อสร้างพัลส์นับขึ้นหรือนับลง ตามจำนวนพัลส์เหล่านี้ สามารถกำหนดตำแหน่งที่แน่นอนของหัวพิมพ์ได้

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

การเชื่อมต่อ Arduino

การเชื่อมต่อ 'เซ็นเซอร์' ใหม่นี้ทำได้ง่ายมาก เพียงเชื่อมต่อเอาต์พุตเซ็นเซอร์กับ D2 และ D3 (พินที่สามารถขัดจังหวะได้!) และสายไฟ การเขียนโค้ดก็สามารถเริ่มต้นได้

ขั้นตอนที่ 3: การเข้ารหัส Arduino

Arduino Coding
Arduino Coding

รหัส Arduino ค่อนข้างง่าย ฉันกำหนดฟังก์ชันที่ดำเนินการทุกครั้งที่ D2 เห็นขอบที่เพิ่มขึ้น นี่คือฟังก์ชันผ่านพ้นจากโค้ด Arduino ที่ฉันแนบ หากคุณดูสัญญาณของเอ็นโค้ดเดอร์กำลังสอง คุณจะเห็นสิ่งนี้:

  • ในทิศทางเดียวเฟส A เป็นลอจิกสูงในทุกเฟส B ขอบที่เพิ่มขึ้น
  • ในอีกทิศทางหนึ่ง เฟส A เป็นลอจิกต่ำในทุกเฟส B ขอบที่เพิ่มขึ้น

นี่คือคุณสมบัติของตัวเข้ารหัสที่ฉันใช้ประโยชน์ เนื่องจากฟังก์ชัน elapse ทำงานทุกครั้งที่ D2 มีขอบที่เพิ่มขึ้น ฉันเพิ่งเขียนว่า a จะเพิ่มตัวนับเมื่อ D3 สูง และลดค่าเมื่อ D3 ต่ำ วิธีนี้ได้ผลในครั้งแรก ฉันส่งค่าตัวนับไปที่จอภาพแบบอนุกรม และดูว่ามันเพิ่มขึ้น/ลดลงเมื่อฉันขยับหัวพิมพ์บนแกน

เรื่องสั้นโดยย่อ เฟิร์มแวร์ทำสิ่งต่อไปนี้ในฟังก์ชันลูป:

  1. ตรวจสอบบัฟเฟอร์การรับข้อมูลแบบอนุกรมสำหรับข้อมูลขาเข้าใด ๆ
  2. หากมีข้อมูลเข้าให้ตรวจสอบว่าเป็น '1' หรือไม่
  3. หากเป็น '1' แสดงว่าซอฟต์แวร์พีซีกำลังขอค่าตัวนับ
  4. ส่งค่าตัวนับไปยังพีซีผ่าน serial
  5. เริ่มใหม่ได้ที่ 1

ด้วยสิ่งนี้ ลูกบอลอยู่ในคอร์ทของซอฟต์แวร์พีซีในขณะนี้ เข้าเรื่องกันเลย!

ขั้นตอนที่ 4: ซอฟต์แวร์ Visual Studio C#

วัตถุประสงค์ของโปรแกรม VS C# คือการเปลี่ยนภาระการคำนวณจาก Arduino ไปยังพีซี ซอฟต์แวร์นี้รับข้อมูลที่ Arduino มอบให้ คำนวณและแสดงความเร็วในรูปแบบของกราฟ

สิ่งแรกที่ฉันทำคือ google วิธีการสื่อสารแบบอนุกรมใน C # ฉันพบข้อมูลดีๆ มากมายบน MSDN.com พร้อมกับตัวอย่างที่ดี จากนั้นฉันก็ทิ้งสิ่งที่ฉันไม่ต้องการออกไป โดยทั่วไปแล้วทุกอย่างยกเว้นส่วนที่อ่าน ฉันตั้งค่าพอร์ต COM และความเร็วเพื่อให้ตรงกับของ Arduino จากนั้นให้ลองสองสามครั้งแล้วทิ้งทุกอย่างที่มาบนพอร์ตอนุกรมลงในกล่องข้อความหลายบรรทัด

หลังจากอ่านค่าแล้ว ฉันสามารถใช้ฟังก์ชัน readto & split เพื่อแยกการวัดหนึ่งค่าออกจากกัน และจากอักขระตัวคั่น สิ่งเหล่านี้ถูกลงจุดบนตัวควบคุมแผนภูมิ และค่าเริ่มปรากฏบนหน้าจอ

หากคุณไม่เห็นตัวควบคุมแผนภูมิในกล่องเครื่องมือ VS คุณสามารถ google ปัญหาและค้นหาวิธีแก้ไขได้ที่นี่ (ค้นหาคำตอบ #1): ลิงค์

หลักการวัดค่า

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

เนื่องจากเราสามารถสอบถามระยะทางและวัดเวลาระหว่างกลุ่มตัวอย่างได้ เราจึงสามารถคำนวณอัตราที่เกิดการเปลี่ยนตำแหน่งได้ - เราคำนวณความเร็วได้!

มีช่วงเวลาของซอฟต์แวร์คร่าวๆ อยู่ที่ 50 มิลลิวินาที ต้องขอบคุณ TMR0 แต่เราสังเกตเห็นว่าการกำหนดเวลาเหล่านี้ไม่แม่นยำเกินไป อันที่จริง หลังจากการวัดความเร็วของซอฟต์แวร์บางอย่าง เราพบว่า 50ms ที่ตั้งเวลาไว้ไม่ใช่ 50ms เลย ซึ่งหมายความว่าไม่ได้เก็บตัวอย่างในช่วงเวลาที่แน่นอน ดังนั้นการคำนวณความเร็วจึงไม่สามารถใช้ฐานเวลาคงที่ได้เช่นกัน เมื่อเราพบปัญหานี้แล้ว จึงเป็นเรื่องง่ายที่จะดำเนินการต่อ: เรานำความแตกต่างของระยะทางและความแตกต่างของเวลา และคำนวณความเร็วเป็น D_distance/D_time (แทนที่จะเป็น D-distance/50ms)

นอกจากนี้ เนื่องจากสมการของเราจะคืนค่าความเร็วเป็นหน่วย mm/50ms เราจึงต้องคูณมันด้วย 1200 เพื่อให้ได้ระยะทางที่ส่วนหัวจะไปในหนึ่งนาทีในหน่วย [mm/minute]

หมายเหตุ: ซอฟต์แวร์ควบคุมเครื่องกัด CNC Mach 3 กำหนดอัตราป้อนงานเป็นหน่วย [mm/minute]

การกรอง

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

การปรับแต่งซอฟต์แวร์อย่างละเอียด

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

ขั้นตอนที่ 5: ผลลัพธ์

ผลลัพธ์
ผลลัพธ์
ผลลัพธ์
ผลลัพธ์
ผลลัพธ์
ผลลัพธ์
ผลลัพธ์
ผลลัพธ์

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

ดังที่กล่าวไปแล้ว ดูเหมือนว่า Mach 3 จะจัดการกับการตั้งค่าความเร็วเหล่านี้ได้ค่อนข้างแม่นยำ แต่ตอนนี้เรารู้แล้ว:)

ฉันหวังว่าคุณจะชอบคำแนะนำสั้นๆ เกี่ยวกับวิศวกรรมย้อนกลับและเปลี่ยนน้ำให้เป็นไวน์!

ไชโย!

แนะนำ: