สารบัญ:

DIY Laser Steering Module สำหรับ Arduino: 14 ขั้นตอน (พร้อมรูปภาพ)
DIY Laser Steering Module สำหรับ Arduino: 14 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: DIY Laser Steering Module สำหรับ Arduino: 14 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: DIY Laser Steering Module สำหรับ Arduino: 14 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: How to use Laser Transmitter and Laser sensor for Arduino 2024, กรกฎาคม
Anonim
Image
Image

ในคำแนะนำนี้ ฉันจะสาธิตการสร้างโมดูลบังคับเลี้ยวด้วยลำแสงเลเซอร์แบบสองแกนและกระจกเดี่ยว โดยใช้ชิ้นส่วนที่พิมพ์ 3 มิติและส่วนประกอบราคาไม่แพงจาก eBay

โปรเจ็กต์นี้มีความคล้ายคลึงกับ Arduino Laser Show พร้อมการควบคุม XY เต็มรูปแบบ และ Arduino Laser Show พร้อม Real Galvos แต่ฉันเชื่อว่าเป็นรายแรกที่ใช้การออกแบบที่พิมพ์ 3 มิติด้วยโซลินอยด์ราคาไม่แพง ฉันกำลังวางไฟล์การออกแบบทั้งหมดไว้ใต้ GPLv3 เพื่อให้การออกแบบสามารถปรับปรุงและปรับปรุงได้

แม้ว่าในปัจจุบัน ฉันได้เพียงประกอบโมดูลและเขียนโค้ดทดสอบพื้นฐานบางอย่างเท่านั้น แต่ความหวังของฉันก็คือวันหนึ่งฉันจะสามารถก้าวไปสู่อีกระดับได้ด้วยการรวมโค้ดกราฟิกแบบเวกเตอร์จาก Super Fast Analog Voltages ที่สั่งสอนได้ก่อนหน้านี้จาก Arduino

ขั้นตอนที่ 1: รวบรวมชิ้นส่วนที่ไม่ได้พิมพ์ 3 มิติ

การประกอบเลเซอร์ประกอบด้วยส่วนต่าง ๆ ดังต่อไปนี้:

  • ไมโครโซลินอยด์ 4 ตัว
  • กระจก 1/2 นิ้ว 1 ใบ
  • สกรู M3 สี่ตัว

โซลินอยด์ที่ฉันใช้นั้นซื้อบนอีเบย์ในราคาอันละ 1.45 ดอลลาร์ กระจกทรงกลมถูกพบในทางเดินงานฝีมือที่ HobbyLobby – ชุดละ 25 ชิ้นมีราคาไม่ถึง 3 เหรียญสหรัฐฯ คุณสามารถหามิเรอร์บนอีเบย์ได้เช่นกัน

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

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

คุณจะต้องมี Arduino (ฉันใช้ Arduino Nano) และวิธีขับโซลินอยด์ ตามที่ VajkF ระบุไว้ในความคิดเห็น คุณสามารถใช้ H-bridge ที่สร้างไว้ล่วงหน้าได้ เช่น แบบที่ใช้ L298 หรือ L9110 สิ่งเหล่านี้มีพร้อมให้ใช้งานบน eBay ในราคาไม่กี่เหรียญ และยังสามารถใช้สำหรับการขับเคลื่อนมอเตอร์และโครงการหุ่นยนต์

เนื่องจากฉันไม่มีสะพาน H ฉันจึงสร้างไดรเวอร์ของตัวเองจากส่วนประกอบที่ไม่ต่อเนื่อง:

  • ทรานซิสเตอร์สองขั้ว NPN สี่ตัว (ฉันใช้ MPS3704)
  • ตัวต้านทานสี่ตัว (ฉันใช้ตัวต้านทาน 1.2k ohm)
  • สี่ไดโอด (ฉันใช้ 1N4004)
  • แบตเตอรี่ 9V และขั้วต่อแบตเตอรี่

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

ขั้นตอนที่ 2: 3D พิมพ์ Mirror Steering Module

3D พิมพ์โมดูลการบังคับเลี้ยวกระจก
3D พิมพ์โมดูลการบังคับเลี้ยวกระจก
3D พิมพ์โมดูลการบังคับเลี้ยวกระจก
3D พิมพ์โมดูลการบังคับเลี้ยวกระจก

โมดูลบังคับเลี้ยวด้วยเลเซอร์ประกอบด้วยชิ้นส่วนที่พิมพ์ 3 มิติสองชิ้น: ฐานสำหรับติดตั้งโซลินอยด์สี่ตัวและฐานข้อต่อสำหรับกระจก

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

ขั้นตอนที่ 3: ประกอบโมดูลเลเซอร์

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

ขั้นตอนที่ 4: พิมพ์ปลอกคอตัวชี้เลเซอร์

พิมพ์ปลอกคอตัวชี้เลเซอร์
พิมพ์ปลอกคอตัวชี้เลเซอร์
พิมพ์ปลอกคอตัวชี้เลเซอร์
พิมพ์ปลอกคอตัวชี้เลเซอร์

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

ขั้นตอนที่ 5: ประกอบวงจรการขับขี่

ประกอบวงจรการขับขี่
ประกอบวงจรการขับขี่

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

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

  • พิน 9: ขึ้นโซลินอยด์
  • พิน 3: ลงโซลินอยด์
  • พิน 11: โซลินอยด์ซ้าย
  • พิน 10: โซลินอยด์ขวา

สามารถใช้แบตเตอรี่ 9V เพียงก้อนเดียวในการขับเคลื่อนวงจรขับโซลินอยด์ทั้งสี่วงจร หรือคุณอาจใช้แหล่งจ่ายไฟแบบตั้งโต๊ะก็ได้ Arduino จะหมดพลังงาน USB และไม่ควรเชื่อมต่อกับด้านบวกของแบตเตอรี่ 9V อย่างไรก็ตาม ด้านลบของแบตเตอรี่ถูกใช้เป็นค่าอ้างอิงกราวด์ และควรต่อสายเข้ากับพิน GND บน Arduino เช่นเดียวกับพินอีซีแอลบนทรานซิสเตอร์

ขั้นตอนที่ 6: อัปโหลดโค้ดตัวอย่าง

อัปโหลดโค้ดตัวอย่าง
อัปโหลดโค้ดตัวอย่าง

โค้ดตัวอย่างได้รับการอัปเดตด้วยคุณลักษณะต่อไปนี้:

  • ปรับความถี่ PWM เพื่อให้กลไกเกือบจะเงียบที่ความเร็วต่ำ หึ่งใน Motion Test 1 หายไปอย่างสิ้นเชิง!
  • เพิ่มเป็นสมการแรงดันไฟฟ้าตามกระดาษโดย Schimpf เพื่อ "ทำให้เป็นเส้นตรง" การตอบสนองที่ไม่เป็นเชิงเส้นของโซลินอยด์

ฉันได้รวมการใช้งาน Lorenz Attractor ตามรหัสจากบล็อกนี้ด้วย

ความเที่ยงตรงของผลลัพธ์ยังคงเป็นที่ต้องการอยู่บ้าง แต่ฉันยังคงดำเนินการอยู่!:)

ขั้นตอนต่อไปจะแสดงเทคนิคบางอย่างที่ใช้ในโค้ด

ขั้นตอนที่ 7: ลดระดับเสียง

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

เพื่อแก้ปัญหานี้ ฉันเพิ่มความถี่ PWM ในโค้ด:

#define PWM_FREQ_31372Hz 0x01 // ตั้งค่าความถี่ PWM เป็น 31372.55 Hz#define PWM_FREQ_3921Hz 0x02 // ตั้งค่าความถี่ PWM เป็น 3921.16 Hz #define PWM_FREQ_980Hz 0x03 // ตั้งค่าความถี่ PWM เป็น 980.39 Hz void setPWMTimerCR_TCrequencies (uint8CR_TC) (uint8 & 0b11111000) | ความถี่; // ตั้งเวลา 1 (พิน 9 & 10) ความถี่ TCCR2B = (TCCR2B & 0b11111000) | ความถี่; // ตั้งค่าความถี่ timer2 (พิน 3 & 11) }

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

ขั้นตอนที่ 8: การปรับแรงดันไฟฟ้าเพื่อลดการบิดเบือน

การปรับแรงดันไฟฟ้าเพื่อลดการบิดเบือน
การปรับแรงดันไฟฟ้าเพื่อลดการบิดเบือน

การทดสอบการเคลื่อนไหวครั้งแรกของฉันแสดงให้เห็นว่าการบิดเบือนอย่างมีนัยสำคัญในการตอบสนองของโซลินอยด์ ใน Motion Test 3 (รูปซ้าย) สิ่งที่ควรจะเป็นเกลียววงกลมแทนที่จะกลายเป็นเว็บสี่เหลี่ยมที่มีขอบหยัก

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

สิ่งที่ติดตามคุณตลอดกระบวนการที่ฉันทำไปเพื่อปรับแต่งระบบและปรับปรุงลักษณะที่ปรากฏของร่องรอยผลลัพธ์!

ขั้นตอนที่ 9: พัฒนาซอฟต์แวร์ให้สมบูรณ์แบบด้วย Math

พัฒนาซอฟต์แวร์ให้สมบูรณ์แบบด้วยคณิตศาสตร์
พัฒนาซอฟต์แวร์ให้สมบูรณ์แบบด้วยคณิตศาสตร์
พัฒนาซอฟต์แวร์ให้สมบูรณ์แบบด้วยคณิตศาสตร์
พัฒนาซอฟต์แวร์ให้สมบูรณ์แบบด้วยคณิตศาสตร์

ความลับในการปรับแต่งระบบกลายเป็นบทความที่ยอดเยี่ยมที่เรียกว่า "คำอธิบายโดยละเอียดของพลังโซลินอยด์" โดย Paul H. Schimpf จาก Eastern Washington University (ลิงก์) โดยเฉพาะอย่างยิ่ง สมการ 17 ให้แรงโซลินอยด์แก่ฉันในแง่ของเงื่อนไขต่างๆ

เงื่อนไขต่อไปนี้ง่ายต่อการวัด:

  • R - ความต้านทานของโซลินอยด์ของฉัน
  • l - ความยาวของโซลินอยด์
  • x - การเคลื่อนที่ของลูกสูบในโซลินอยด์
  • V - แรงดันไฟฟ้าข้ามโซลินอยด์

ฉันยังรู้ด้วยว่าแรงที่โซลินอยด์จ่ายออกไปจะต้องสร้างสมดุลระหว่างแรงจากสปริงที่พิมพ์ 3 มิติบนกระจกสองแกน แรงของสปริงอยู่ภายใต้กฎของฮุค ซึ่งระบุไว้ดังนี้:

F = -kx

แม้ว่าฉันจะไม่รู้ค่าของ k แต่อย่างน้อยฉันก็รู้ว่าแรงที่ฉันได้มาจากสมการ 17 จากกระดาษของ Schimpf ต้องเท่ากับแรงจากกฎของฮุก

ค่าของอัลฟ่า (α) มีค่ามาก แม้ว่าสมการที่ 13 และ 14 จะแสดงวิธีการคำนวณค่าเหล่านี้จากพื้นที่ของโซลินอยด์ (A) จำนวนรอบ (N) และค่าการซึมผ่านของแม่เหล็ก (μ) ฉันไม่ต้องการแยกโซลินอยด์ออกจากกันเพื่อนับ จำนวนรอบและฉันไม่รู้วัสดุที่ใช้ทำแกนโซลินอยด์ของฉัน

ขั้นตอนที่ 10: ผู้ทดสอบส่วนประกอบราคาถูกช่วยชีวิต

ผู้ทดสอบส่วนประกอบราคาไม่แพงช่วยประหยัดเวลาได้!
ผู้ทดสอบส่วนประกอบราคาไม่แพงช่วยประหยัดเวลาได้!
ผู้ทดสอบส่วนประกอบราคาไม่แพงช่วยประหยัดเวลาได้!
ผู้ทดสอบส่วนประกอบราคาไม่แพงช่วยประหยัดเวลาได้!
ผู้ทดสอบส่วนประกอบราคาไม่แพงช่วยประหยัดเวลาได้!
ผู้ทดสอบส่วนประกอบราคาไม่แพงช่วยประหยัดเวลาได้!

ปรากฎว่าสมการ 15 และ 16 นั้นให้สิ่งที่ฉันต้องการ ฉันมีเครื่องทดสอบส่วนประกอบ M328 ราคาไม่แพงซึ่งฉันซื้อจาก eBay ในราคา $10 มันสามารถใช้วัดความเหนี่ยวนำของโซลินอยด์ของฉันได้ และฉันพบว่าการดันอาร์เมเจอร์เข้าไปที่ระดับความลึกต่างๆ ทำให้ฉันได้ค่าการเหนี่ยวนำที่แตกต่างกัน

การวัดโดยใส่อาร์เมเจอร์จนสุดทำให้ได้ค่า L(0)

ความยาวของโซลินอยด์ของฉันคือ 14 มม. ดังนั้นฉันจึงวัดความเหนี่ยวนำด้วยอาร์เมเจอร์ที่ตำแหน่งห้าตำแหน่ง และสิ่งนี้ให้ค่าต่างๆ สำหรับ L(x):

  • L(0.0) = 19.8 mH
  • L(3.5) = 17.7 mH
  • L(7.0) = 11.1 mH
  • L(10.5) = 9.3 mH
  • L(14) = 9.1 mH

จากนั้นฉันก็ใช้สเปรดชีตเพื่อพล็อตค่าของฉันเทียบกับค่าของสมการที่ 15 และ 16 สำหรับตัวเลือกเฉพาะของ μr แล้วเปลี่ยนตัวเลือกของฉันจนกว่าจะพบค่าที่ตรงกัน สิ่งนี้เกิดขึ้นเมื่อ μr เท่ากับ 2.9 ดังแสดงในกราฟ

ขั้นตอนที่ 11: ค้นหา Spring Constant K แก้ปัญหา

Image
Image
การวิเคราะห์ปัญหาในปัจจุบันและแนวทางแก้ไขที่เป็นไปได้
การวิเคราะห์ปัญหาในปัจจุบันและแนวทางแก้ไขที่เป็นไปได้

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

ตอนนี้ฉันมีค่าที่จำเป็นในการคำนวณแรงดึงของโซลินอยด์ที่ตำแหน่งต่างๆ ตามจังหวะ โดยการตั้งค่า F(x) ให้เท่ากับแรงสปริงจากกฎของฮุค ฉันสามารถแก้หาแรงดันไฟฟ้าที่ต้องการ V ได้

กราฟแสดงแรงดันไฟฟ้าที่จำเป็นสำหรับการย้ายโซลินอยด์ไปยังตำแหน่งที่ต้องการ x

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

ความสัมพันธ์นี้ไม่เป็นเชิงเส้นอย่างแน่นอน แต่ด้วยสมการจากกระดาษของ Schimpf ฉันสามารถเขียนโค้ด Arduino เพื่อส่งออกแรงดันไฟฟ้าที่ถูกต้อง ดังนั้นการโก่งตัวของลำแสงจึงเป็นเชิงเส้น:

float positionToVoltage (ลอย x) {

// คืนค่าแรงกระทำโดยบานพับ (กฎของฮุค) ที่ต้องการ x. const float spring_F = -spring_K * (x - spring_X0); // แรงดันที่ทำให้แรงดึงของโซลินอยด์ตรงกับ // แรงคืนค่าของบานพับส่งกลับ sqrt(-2*R*R*(-spring_F)*solenoid_len/(a*L_0*exp(-a*x/solenoid_len))); }

สิ่งนี้นำไปสู่เกลียวเป็นวงกลมมากกว่าในการทดสอบการเคลื่อนไหวดั้งเดิมของฉัน ภารกิจเสร็จสมบูรณ์!

ขั้นตอนที่ 12: คำถามและคำตอบเกี่ยวกับวงจรไดรเวอร์โดยใช้ส่วนประกอบที่ไม่ต่อเนื่อง

ทำไมฉันไม่สามารถต่อโซลินอยด์โดยตรงกับ Arduino ได้

อยู่ที่ว่า Arduino สามารถจ่ายกระแสไฟได้มากน้อยแค่ไหนโดยไม่เกิดความเสียหาย นี่คือประมาณ 40mA ต่อพิน เมื่อรู้ว่า Arduino ทำงานที่ 5V เราสามารถใช้กฎของโอห์มเพื่อคำนวณความต้านทานขั้นต่ำที่ต้องการของโหลด (ในกรณีนี้คือโซลินอยด์) หาร 5 โวลต์ด้วย 0.040 แอมป์ จะได้ 125 โอห์ม หากโหลดมีความต้านทานมากกว่า เราสามารถต่อเข้ากับ Arduino ได้โดยตรง ไม่เช่นนั้นเราจะทำไม่ได้ โซลินอยด์ขนาดเล็กมักจะมีความต้านทาน 50 โอห์ม ดังนั้นเราจึงไม่สามารถขับโซลินอยด์โดยตรงจาก Arduino ได้ ถ้าเราทำ มันจะดึง 100mA ซึ่งชัดเจนมากเกินไป

ทำไมคุณใช้ 9V สำหรับโซลินอยด์ แต่ 5V สำหรับ Arduino?

Arduino ทำงานที่ 5V แต่นี่ยังน้อยเกินไปสำหรับโซลินอยด์ การใช้ทรานซิสเตอร์ช่วยให้เราเลือกแรงดันไฟฟ้าสำหรับโซลินอยด์ซึ่งไม่ขึ้นกับ 5V ที่ใช้สำหรับ Arduino

ฉันจะรู้ได้อย่างไรว่าทรานซิสเตอร์เหมาะสำหรับโครงการนี้หรือไม่?

เช่นเดียวกับ Arduino ข้อกำหนดที่สำคัญคือกระแสที่ไหลผ่านโซลินอยด์ไม่เกินพิกัดสูงสุดของทรานซิสเตอร์ (โดยเฉพาะกระแสสะสม) เราสามารถคำนวณสถานการณ์กรณีที่เลวร้ายที่สุดได้อย่างง่ายดายโดยการวัดความต้านทานของโซลินอยด์แล้วหารแรงดันไฟฟ้าด้วยสิ่งนั้น ในกรณีของการจ่ายกระแสไฟ 9V สำหรับโซลินอยด์ และความต้านทานของโซลินอยด์ที่ 50 โอห์ม สถานการณ์กรณีที่เลวร้ายที่สุดทำให้เราอยู่ที่ 180mA ตัวอย่างเช่น MPS3704 ได้รับการจัดอันดับสำหรับกระแสสะสมสูงสุด 600 mA ซึ่งทำให้เรามีระยะขอบประมาณ 3

ฉันจะกำหนดค่าต่ำสุดของความต้านทานระหว่างเอาต์พุตของ Arduino และฐานของทรานซิสเตอร์ได้อย่างไร

เอาต์พุตของ Arduino จะเชื่อมต่อขาฐานของทรานซิสเตอร์สองขั้วผ่านตัวต้านทานจำกัดกระแส เนื่องจาก Arduino ทำงานที่ 5V เราจึงสามารถใช้กฎของโอห์มอีกครั้งเพื่อคำนวณความต้านทานที่จำเป็นในการจำกัดกระแสที่ต่ำกว่า 40mA นั่นคือหาร 5 โวลต์ด้วย 0.04 แอมแปร์เพื่อให้ได้ค่าอย่างน้อย 125 โอห์ม ค่าตัวต้านทานที่สูงขึ้นจะลดกระแสลง ซึ่งทำให้เรามีส่วนต่างความปลอดภัยที่มากขึ้น

มีค่าสูงสุดสำหรับแนวต้านที่ฉันไม่ควรเกินหรือไม่?

ปรากฎว่าใช่ ทรานซิสเตอร์มีสิ่งที่เรียกว่ากระแส ตัวอย่างเช่น ถ้าเกนเป็น 100 หมายความว่าถ้าเราใส่ 1mA ลงในฐาน จากนั้นสูงสุด 100mA จะไหลผ่านโหลดที่ทรานซิสเตอร์ควบคุมอยู่ ถ้าเราใส่ 1.8mA ลงในฐาน กระแสจะไหลผ่านโหลดได้ถึง 180mA เนื่องจากเราคำนวณก่อนหน้านี้ว่าที่ 9V 180mA จะไหลผ่านโซลินอยด์ ดังนั้นกระแสฐาน 1.8mA จึงเป็น "จุดหวาน" และน้อยกว่านั้นและโซลินอยด์ของเราจะไม่เปิดอย่างสมบูรณ์

เรารู้ว่า Arduino จ่ายไฟ 5V และเราต้องการให้กระแสไหล 1.8mA ดังนั้นเราจึงใช้กฎของโอห์ม (R=V/I) เพื่อคำนวณความต้านทาน (R=V/I) 5V หารด้วย 1.8mA ให้ความต้านทาน 2777 โอห์ม จากสมมติฐานที่เราทำ เราคาดว่าแนวต้านจะต้องอยู่ระหว่าง 125 ถึง 2777 -- การเลือกบางอย่างเช่น 1,000 โอห์ม จะทำให้เรามีความปลอดภัยที่ดีพอสมควรไม่ว่าจะด้วยวิธีใด

ขั้นตอนที่ 13: การวิเคราะห์ปัญหาในปัจจุบันและแนวทางแก้ไขที่เป็นไปได้

การวิเคราะห์ปัญหาในปัจจุบันและแนวทางแก้ไขที่เป็นไปได้
การวิเคราะห์ปัญหาในปัจจุบันและแนวทางแก้ไขที่เป็นไปได้

ต้นแบบปัจจุบันมีศักยภาพ แต่ยังคงมีปัญหาหลายประการ:

  1. การเคลื่อนที่ตามแนวแกน X และ Y ดูเหมือนจะไม่ตั้งฉาก
  2. มีการกระโดดเมื่อกระจกเปลี่ยนทิศทาง
  3. ความละเอียดค่อนข้างต่ำและมีรูปแบบขั้นบันไดที่มองเห็นได้
  4. ที่ความเร็วการเคลื่อนที่ที่สูงขึ้น เส้นทางของเลเซอร์จะบิดเบี้ยวจากการสั่นสะเทือนและเสียงเรียกเข้า

ปัญหาที่ 1) อาจเกิดจากการออกแบบบานพับแบบยืดหยุ่นที่พิมพ์ 3 มิติซึ่งส่งการเคลื่อนที่ไปตามแกนหนึ่งไปยังแกนตั้งฉาก

ปัญหาที่ 2) เกิดจากการหย่อนในข้อต่อระหว่างลูกสูบขับกับแท่นกระจก ซึ่งทำให้กระจกกระตุกและกระโดดข้ามช่วงเปลี่ยนผ่านระหว่างแกน X และแกน Y การเคลื่อนไหวอย่างกะทันหันนี้นำไปสู่ช่องว่างรูปตัว X ที่มืดลง โดยที่จุดเลเซอร์เคลื่อนที่โดยควบคุมไม่ได้เร็วขึ้น

ปัญหาที่ 3) เกิดขึ้นเนื่องจาก Arduino PWM เริ่มต้นมีเพียง 255 ระดับและบางส่วนเสียไปเนื่องจากรูปร่างของเส้นโค้งแรงดันไฟฟ้า สิ่งนี้สามารถปรับปรุงได้อย่างมากโดยใช้ timer1 ซึ่งเป็น 16 บิตและจะมีความสามารถ 65536 ค่าที่ไม่ซ้ำกัน

ปัญหาที่ 4) เกิดขึ้นเนื่องจากกระจกและกระดองเลื่อนของโซลินอยด์ (ลูกสูบ) มีมวลเคลื่อนที่เป็นจำนวนมาก

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

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

  • "คณิตศาสตร์ของโปรไฟล์การควบคุมการเคลื่อนไหว" Chuck Lewin (ลิงก์)
  • "อธิบายการเคลื่อนไหวที่ควบคุมโดย Jerk", (ลิงก์)

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

ขั้นตอนที่ 14: งานในอนาคตและการใช้งานที่เป็นไปได้

แม้ว่าการพัฒนาวิธีแก้ไขปัญหาเหล่านี้จะต้องใช้ความพยายามอย่างมาก แต่ฉันก็หวังว่าโมดูลบังคับเลี้ยวแบบโอเพ่นซอร์สนี้จะเป็นทางเลือกที่ไม่แพงสำหรับโครงการที่ใช้กัลวาโนมิเตอร์ในแอปพลิเคชันต่างๆ เช่น:

  • การแสดงเลเซอร์ราคาไม่แพงสำหรับดีเจและวีเจ
  • การแสดงเวกเตอร์แบบเครื่องกลไฟฟ้าสำหรับเกมอาร์เคดโบราณ เช่น Vectrex
  • เครื่องพิมพ์ 3D SLA 3D แบบเรซิน DIY ที่มีจิตวิญญาณของการเคลื่อนไหว RepRap สามารถพิมพ์โมดูลพวงมาลัยเลเซอร์ของตัวเองได้
  • การแพนกล้องดิจิทัลหรือระบบป้องกันภาพสั่นไหวแบบออปติคัลสำหรับกล้อง
Arduino Contest 2017
Arduino Contest 2017
Arduino Contest 2017
Arduino Contest 2017

รางวัลที่สองในการประกวด Arduino 2017

แนะนำ: