การทำงานกับเซ็นเซอร์และมอเตอร์ฉันสามารถใช้ทั้งสองอย่างหรือฉันควรใช้ตัวป้องกันมอเตอร์ได้หรือไม่


11

อัปเดต:ฉันกำลังเปลี่ยนบางสิ่งกับโครงการ ฉันเอาบางคำแนะนำของคุณ ฉันเปลี่ยนจากสเต็ปเปอร์มอเตอร์เป็นเซอร์โว RC (ควบคุมผ่าน PWM) และหากฉันพบปัญหาใด ๆ และไม่สามารถเข้าใจได้ฉันจะถาม ขอบคุณสำหรับความช่วยเหลือ!

ฉันกำลังทำงานในโครงการกับเพื่อนและเป็นครั้งแรกที่เราใช้ Arduino เรากำลังใช้ Arduino เพื่อรับข้อมูลจากเซ็นเซอร์ (accelerometer) แล้วเปิดมอเตอร์ (6V, DC)

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

ฉันใคร่ครวญใช้โล่มอเตอร์ ฉันจะยังสามารถควบคุม accelerometer กับมอเตอร์ได้หรือไม่?

ฉันพยายามใช้แหล่งพลังงานภายนอกเดียว (สูงสุด: 6 AA แบตเตอรี่ฉันกำลังพยายาม จำกัด ปริมาณของแบตเตอรี่เนื่องจากเราพยายามที่จะเก็บไว้เป็นแบบพกพา) ดังนั้นจึงมีวิธีการใช้แหล่งหนึ่งตั้งแต่ Arduino และตัวป้องกันมอเตอร์ต้องการแหล่งจ่ายไฟสองแบบ (จากความเข้าใจของฉัน)


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

ตกลงฉันอัปเดตจำนวนแบตเตอรี่ คุณคิดว่าสเต็ปเปอร์มอเตอร์จะเป็นตัวเลือกที่ดีกว่าเพราะฉันได้ยินมาว่ามันทำงานได้ดีกับ Arduinos
Om23

@ Om23 ตัวเลือกของ stepper, servo, brushed DC หรือ brushless DC จะถูกกำหนดโดยจุดประสงค์ของมอเตอร์ที่จำเป็นในการเติมเต็มและ (เช่นสำหรับมอเตอร์ BLDC) ฮาร์ดแวร์ที่มีอยู่สำหรับการควบคุมมอเตอร์ มันอาจสร้างคำถามใหม่ที่น่าสนใจโดยพิจารณาว่าควรใช้มอเตอร์ชนิดใดเพื่อจุดประสงค์ที่เป็นไปได้หลายประการ ไม่แน่ใจว่าคำถามดังกล่าวเหมาะสำหรับไซต์ Arduino บางทีคนอื่นก็สามารถพูดต่อได้
Anindo Ghosh

คำตอบ:


12

ปัญหาที่ 1 : ขับมอเตอร์โดยตรงจาก Arduino

ไม่แนะนำให้ขับมอเตอร์โดยตรงจากขา Arduino ด้วยเหตุผลหลายประการ:

  • โหลดกระแสไฟฟ้าโดยเฉพาะอย่างยิ่งเมื่อสตาร์ทมอเตอร์และสภาพแผงลอย ตามที่ระบุไว้อย่างถูกต้องในคำถามขา Arduino อาจไม่ได้รับการจัดอันดับให้กระแสเพียงพอ Arduino อาจร้อนขึ้นหรือได้รับความเสียหายจากการดึงกระแสไฟที่สูงอย่างต่อเนื่อง
    ในขณะที่แต่ละ Arduino Arduino สำหรับ Arduinos ที่ใช้ ATmega นั้นได้รับการจัดอันดับสำหรับ 40 mA แต่โดยส่วนตัวแล้วผมชอบที่จะให้การโหลดอย่างต่อเนื่องไม่เกิน 30 mA ความอยากเสี่ยงของคุณอาจแตกต่างกัน หากไม่ได้ดูแผ่นข้อมูลของมอเตอร์ที่เป็นปัญหาจะไม่สามารถคาดเดาได้ว่ามอเตอร์ต้องการกระแสไฟฟ้ามากเพียงใด
  • Back-EMFจากมอเตอร์ทั้งในระหว่างการปิดมอเตอร์และอาจเป็นไปได้ในช่วงการเปลี่ยนมอเตอร์ - ในฐานะที่เป็นมอเตอร์หมุน DC แปรงติดต่อ "สับเปลี่ยน" ระหว่างวงแหวนแยกอย่างน้อยก็ในมอเตอร์แปรง DC แบบดั้งเดิม เกิดประกายไฟในแต่ละครั้ง
    Back EMF นั้นเป็นแรงดันย้อนกลับที่เกิดขึ้นจากขดลวดมอเตอร์ (หรือโหลดอุปนัยใด ๆ ที่ปิด), ทรานส์ (spikes) ที่สามารถเกินช่วงแรงดันไฟฟ้าที่ยอมรับได้ในขณะนั้นซึ่งขาไมโครคอนโทรลเลอร์สามารถทนได้
    Back EMF ยังคงมีความเสี่ยงแม้ว่าจะลดลงแม้ว่าจะมีการเชื่อมต่อกับไดโอดอย่างรวดเร็วในไบแอสแบบย้อนกลับข้ามทางนำของมอเตอร์วิธีปฏิบัติที่แนะนำอย่างยิ่ง
  • ดังนั้นขอแนะนำให้ทำการแยกบางอย่างระหว่าง Arduino และมอเตอร์ไดรฟ์ เพื่อความง่ายในการใช้งานนี่จะเป็นเกราะป้องกันมอเตอร์
    หากคุณพอใจกับอุปกรณ์อิเล็กทรอนิกส์ขั้นพื้นฐานคุณสามารถทำได้โดยการต่อสายโดยตรงกับตัวขับมอเตอร์ IC และฟลายแบ็คไดโอดที่เหมาะสม ( แก้ไข : นี่คือคำอธิบายที่ยอดเยี่ยมในคำตอบของ Manishearth )
    ไดรเวอร์มอเตอร์ไม่ว่าจะเป็นชิลด์หรือไอซีควรขับเคลื่อนด้วย Arduino อย่างอิสระ แต่ด้วยการต่อสายดินสองสายเข้าด้วยกัน ดูเพิ่มเติมลง

ปัญหาที่ 2 : การควบคุมมาตรวัดความเร่งและตัวป้องกันมอเตอร์พร้อมกัน

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

ปัญหาที่ 3 : การกระจายพลังงานระหว่าง Arduino และตัวป้องกันมอเตอร์

  • ปัญหาของการจัดเรียงที่แนะนำ 6 x AA (ระบุสูงสุด 9 โวลต์) คือแม้ว่าจะให้แรงดันไฟฟ้าที่เพียงพอสำหรับแจ็คอินพุต DC ที่มีอยู่ใน Arduinos จำนวนมาก (โดยปกติจะจัดอันดับสำหรับอินพุต 7 ถึง 12 โวลต์) มันสูงเกินไปสำหรับมอเตอร์ ถูกขับออกโดยตรง
  • อย่างไรก็ตามมีมอเตอร์หุ้มเกราะหลายตัวที่ยอมรับอินพุตกำลังไฟโดยตรง (เช่น 7 ถึง 25 โวลต์) จากนั้นให้การควบคุมอย่างดี 5 โวลต์กับ Arduino ที่พวกเขาแนบมา ดังนั้น Arduino ไม่จำเป็นต้องแยกพลังงานเลยและไม่ควรเป็นเช่นนั้น นี้เป็นอย่างชนิดเดียวของมอเตอร์โล่หนึ่งควรซื้อ
  • ทางเลือกของ Kludgier รวมถึงการเคาะข้าม 4 จาก 6 เซลล์ AA เพื่อเพิ่มกำลังมอเตอร์และทั้ง 6 เซลล์เพื่อจ่ายกระแสไฟแจ็ค DC (PWRIN) ของ Arduino หรือใช้ตัวควบคุมแรงดันไฟฟ้าแบบแยก 6 โวลต์สำหรับกำลังมอเตอร์ขณะป้อนกระแสไฟฟ้า 9 โวลต์ โดยตรงกับแจ็ค Arduino DC
  • ความพยายามในการจ่ายไฟให้กับ Arduino ด้วยแบตเตอรี่และการจ่ายกำลังให้มอเตอร์จากขา Vin ของ Arduino นั้นเป็นความคิดที่ไม่ดีเพราะ
    • M7 ไดโอดระหว่างแจ็ค DC และขา Vin ในการออกแบบอ้างอิง Arduino หลายอันดับสำหรับ 1 แอมแปร์มอเตอร์สามารถวาดได้มากขึ้นอย่างน้อยก็ชั่วครู่
    • เสียงแม่เหล็กไฟฟ้าทั้งหมดที่เกิดขึ้นจากมอเตอร์เสียงรบกวนจากการสับเปลี่ยนบวกกับการย้อนกลับของ flyback จะถูกป้อนกลับเข้าสู่บอร์ด Arduino เว้นแต่จะมีการแยกส่วนที่แข็งมากออกมาไม่ใช่เรื่องง่าย ข้อเสนอแนะ EMI นี้จะทำให้เกิดปัญหาเป็นระยะ ๆ ยากต่อการแก้ไขปัญหาการทำงานของ Arduino

10

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

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

การใช้ L293D นั้นง่ายมาก:

ป้อนคำอธิบายรูปภาพที่นี่

เชื่อมต่อพิน 1,9,16 กับแหล่งสัญญาณ Vcc ของคุณ (ขั้วบวกของแหล่งจ่ายไฟ 5V ใดก็ตามที่คุณจ่ายกำลังให้กับ Arduino สำหรับฉันโดยทั่วไปแล้วจะเป็นเส้นที่ดึงจาก LM7805) ตอนนี้เชื่อมต่อพิน 4,5,13,12 กับ GND ของคุณ (เทอร์มินัลเชิงลบ) ตอนนี้เชื่อมต่อ pin 8 กับแหล่งจ่ายแรงดันสูง (6V, 12V หรือสิ่งที่คุณต้องการป้อนเข้ากับมอเตอร์ของคุณ) โปรดทราบว่าขั้วลบของแหล่งจ่ายแรงดันทั้งหมดจะต้องลัดวงจรกับ GND

ตอนนี้เชื่อมต่อมอเตอร์ของคุณผ่านหมุดส่งออกสองอันในเว็บไซต์เดียว (3,4 ทางด้านซ้าย) เชื่อมต่อพินอินพุต (2,7) กับพินที่แตกต่างกันสองตัวบน Arduino เมื่อคุณให้สัญญาณเดียวกัน (สูงหรือต่ำ) กับพินทั้งคู่มอเตอร์จะหยุดทำงาน หากคุณให้ค่า HIGH จากขาหนึ่งและต่ำจากอีกมอเตอร์จะหมุนตามเข็มนาฬิกาหรือทวนเข็มนาฬิกาขึ้นอยู่กับว่าเข็มใดมีสัญญาณใด

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

คุณสามารถติดตั้งมอเตอร์ตัวอื่นโดยใช้ขั้นตอนเดียวกันที่ปลายด้านตรงข้ามของชิปได้หากต้องการ

L293D ดึงกระแสจำนวนเล็กน้อยจาก Arduino และขับเคลื่อนมอเตอร์จากกระแสที่ดึงผ่านพิน 8 และมักจะเหมาะสำหรับสถานการณ์เช่นนี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.