สารบัญ:

Servo Squirter - ปืนฉีดน้ำ USB: 5 ขั้นตอน
Servo Squirter - ปืนฉีดน้ำ USB: 5 ขั้นตอน

วีดีโอ: Servo Squirter - ปืนฉีดน้ำ USB: 5 ขั้นตอน

วีดีโอ: Servo Squirter - ปืนฉีดน้ำ USB: 5 ขั้นตอน
วีดีโอ: รีวิวการทำปืนฉีดน้ำบังคับจากในรถ 2024, พฤศจิกายน
Anonim
Servo Squirter - ปืนฉีดน้ำ USB
Servo Squirter - ปืนฉีดน้ำ USB

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

ขั้นตอนที่ 1: รวบรวมวัสดุ

รวบรวมวัตถุดิบ
รวบรวมวัตถุดิบ
รวบรวมวัตถุดิบ
รวบรวมวัตถุดิบ
รวบรวมวัตถุดิบ
รวบรวมวัตถุดิบ

โปรเจ็กต์นี้ใช้ไมโครคอนโทรลเลอร์ นอกเหนือจากไมโครคอนโทรลเลอร์ ATmega168 ที่รวมอยู่ใน USB NerdKit สำหรับโครงการนี้ เราใช้สิ่งต่อไปนี้: 1 Hobby Servo, Hitec HS-501 ปั๊มน้ำลูกสูบแรงดันต่ำ1 MOSFET n-channel ขนาดเล็ก, 2N7000

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

ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร
ประกอบวงจร

ส่วนแรกของวงจรของเราเพียงแค่เชื่อมต่อกับเซอร์โว นี่เป็นเรื่องง่าย: สายเดียวจากไมโครคอนโทรลเลอร์ไปยังเซอร์โว มีการติดฉลากสีที่แตกต่างกันเล็กน้อยขึ้นอยู่กับผู้ผลิต ดังนั้นโปรดตรวจสอบก่อนลองทำ ภาพแผนผังของวงจร ServoSquirter บนเขียงหั่นขนม NerdKits ส่วนที่สองของวงจรช่วยให้ไมโครคอนโทรลเลอร์เปิดและปิดมอเตอร์ปั๊มได้ ชิป ATmega168 นั้นอนุญาตให้เข้าหรือออกจากพินสูงสุด 40mA เท่านั้น แต่ปั๊มของเราต้องการใกล้กับ 1,000mA! ดังนั้นเพื่อควบคุมโหลดที่ใหญ่กว่านี้ เราจึงเลือกใช้ทรานซิสเตอร์ที่ใหญ่กว่า นั่นคือ 2N7000 อันดับแรก เราจะอธิบายพื้นฐานของการใช้ MOSFET (Metal Oxide Semiconductor Field Effect Transistors) เป็นสวิตช์: การนำแรงดัน Gate มาไว้เหนือแหล่งกำเนิด เราสามารถปล่อยให้กระแสไหลจาก Drain ไปยัง Source ได้ จากแผ่นข้อมูล 2N7000 เราได้ดึงข้อมูลรูปที่ 1 ซึ่งแสดงความสัมพันธ์ระหว่างกระแสไฟเดรนและแรงดันแหล่งจ่ายสำหรับการตั้งค่าแรงดันเกท-ซอร์สที่ต่างกัน มีสิ่งสำคัญสองสามประการที่คุณสามารถเรียนรู้ได้จากกราฟนี้ 1. สำหรับ VGS ที่ต่ำกว่า 3.0 โวลต์ จะไม่อนุญาตให้กระแสไหล นี่คือสถานะปิดหรือที่เรียกว่า "จุดตัด" 2. สำหรับ VDS ขนาดเล็ก เส้นโค้งจะมีลักษณะเป็นเส้นตรงผ่านจุดกำเนิด ซึ่งหมายความว่าจะ "ดูเหมือน" ทางไฟฟ้าเหมือนตัวต้านทาน ความต้านทานที่เท่ากันคือความชันผกผันของเส้นโค้ง ขอบเขตของการดำเนินการ MOSFET นี้เรียกว่า "ไตรโอด" 3. สำหรับ VDS ที่ใหญ่กว่า จะถึงระดับกระแสสูงสุดบางระดับ สิ่งนี้เรียกว่า "ความอิ่มตัว" 4. เมื่อเราเพิ่ม VGS กระแสไฟมากขึ้นจะได้รับอนุญาตให้ไหลทั้งในโหมดไตรโอดและความอิ่มตัว และตอนนี้ คุณได้เรียนรู้เกี่ยวกับการทำงานของ MOSFET ทั้งสามโหมดแล้ว: คัทออฟ ไตรโอด และความอิ่มตัว เนื่องจากการควบคุมเกตของเราเป็นแบบดิจิทัล (+5 หรือ 0) เรากังวลเฉพาะเส้นโค้งที่ไฮไลต์ด้วยสีเหลือง สำหรับ VGS=5V โดยปกติ การใช้ MOSFET เป็นสวิตช์โดยทั่วไปจะเกี่ยวข้องกับโหมดการทำงานแบบไตรโอด เนื่องจาก MOSFET จะกระจายพลังงาน PD=ID*VDS และสวิตช์ที่ดีควรกระจายพลังงานเพียงเล็กน้อยในตัวสวิตช์เอง แต่ในกรณีนี้ เรากำลังจัดการกับมอเตอร์ และมอเตอร์มักจะต้องการกระแสไฟจำนวนมาก (โดยที่แรงดันไฟตกเพียงเล็กน้อย) เมื่อสตาร์ทเครื่องในครั้งแรก ดังนั้นสำหรับวินาทีหรือสองวินาทีแรก MOSFET จะทำงานด้วย VDS สูงและจะถูกจำกัดด้วยกระแสสูงสุด - ประมาณ 800mA จากเส้นประสีแดงที่เราวาดบนแผ่นข้อมูล เราพบว่าสิ่งนี้ไม่เพียงพอสำหรับการเริ่มต้นปั๊ม ดังนั้นเราจึงใช้กลอุบายเล็กน้อยและวาง MOSFET สองตัวขนานกัน ด้วยวิธีนี้ พวกมันจะแบ่งปันกระแสไฟ และสามารถจมรวมกันได้อย่างมีประสิทธิภาพประมาณ 1600mA นอกจากนี้ เนื่องจากความต้องการพลังงานสูงของปั๊ม เราจึงใช้หม้อแปลงติดผนังที่มีเอาต์พุตกระแสไฟที่สูงขึ้น หากคุณมีหม้อแปลงไฟฟ้าติดผนังที่มีเอาต์พุตมากกว่า 5V - อาจเป็น 9V หรือ 12V - คุณก็สามารถทำได้

ขั้นตอนที่ 3: ตั้งค่า PWM บน MCU

ตั้งค่า PWM บน MCU
ตั้งค่า PWM บน MCU
ตั้งค่า PWM บน MCU
ตั้งค่า PWM บน MCU
ตั้งค่า PWM บน MCU
ตั้งค่า PWM บน MCU

การลงทะเบียนและการคำนวณ PWM ในวิดีโอ เราจะพูดถึงสองระดับที่ใช้โดยโมดูลตัวจับเวลา/ตัวนับ: ค่าบนสุด และค่าเปรียบเทียบ ทั้งสองสิ่งนี้มีความสำคัญในการสร้างสัญญาณ PWM ที่คุณต้องการแต่เพื่อเปิดใช้งานเอาต์พุต PWM ของ ATmega168 ของคุณตั้งแต่แรก เราต้องตั้งค่ารีจิสเตอร์สองสามตัว อันดับแรก เราเลือกโหมด Fast PWM โดยมี OCR1A เป็นค่าสูงสุด ซึ่งช่วยให้เรากำหนดความถี่ในการเริ่มพัลส์ใหม่ได้ตามอำเภอใจ จากนั้นเราตั้งค่านาฬิกาให้ทำงานโดยมีค่าก่อนหาร 8 ซึ่งหมายความว่าตัวนับจะเพิ่มขึ้น โดย 1 ทุกๆ 8/(14745600 Hz) = 542 นาโนวินาที เนื่องจากเรามีรีจิสเตอร์ 16 บิตสำหรับตัวจับเวลานี้ หมายความว่าเราสามารถกำหนดระยะเวลาสัญญาณโดยรวมให้สูงถึง 65536*542ns = 36 มิลลิวินาที ถ้าเราใช้จำนวนการหารที่มากขึ้น เราก็สามารถทำให้พัลส์ของเราห่างกันมากขึ้น (ซึ่งไม่ช่วยในสถานการณ์นี้) และเราจะสูญเสียความละเอียด หากเราใช้เลขหารที่น้อยกว่า (เช่น 1) เราจะไม่สามารถแยกพัลส์ของเราได้อย่างน้อย 16 มิลลิวินาที ตามที่เซอร์โวของเราคาดไว้ สุดท้าย เราตั้งค่าโหมดเปรียบเทียบเอาต์พุตสำหรับ PWM ที่ "ไม่กลับด้าน" เอาต์พุตซึ่งอธิบายไว้ในวิดีโอของเรา นอกจากนี้เรายังตั้งค่าพิน PB2 ให้เป็นพินเอาต์พุต - ไม่แสดงที่นี่ แต่อยู่ในรหัส คลิกเพื่อขยายภาพเหล่านี้จากหน้า 132-134 ของแผ่นข้อมูล ATmega168 โดยเน้นการเลือกค่าการลงทะเบียนของเรา:

ขั้นตอนที่ 4: ตั้งโปรแกรมไมโครคอนโทรลเลอร์

ตอนนี้ได้เวลาตั้งโปรแกรม MCU จริงๆ แล้ว ซอร์สโค้ดที่สมบูรณ์มีอยู่ในเว็บไซต์ของเรา https://www.nerdkits.com/videos/servosquirter โค้ดแรกจะตั้งค่า PWM เพื่อขับเคลื่อนเซอร์โว จากนั้นโค้ดก็นั่งรอสักครู่เพื่อรอการป้อนข้อมูลของผู้ใช้ อักขระ 1 และ 0 เปิดหรือปิดพิน MCU ที่เชื่อมต่อกับทรานซิสเตอร์ปั๊ม สิ่งนี้จะเปิดและปิดปั๊มทำให้เราสามารถยิงได้ตามต้องการ รหัสยังตอบสนองต่อปุ่ม '[' และ ']' คีย์เหล่านี้จะเพิ่มหรือลดค่าเปรียบเทียบบนพิน PWM ซึ่งจะทำให้เซอร์โว มอเตอร์เพื่อเปลี่ยนตำแหน่ง ซึ่งจะทำให้คุณสามารถเล็งก่อนยิงได้

ขั้นตอนที่ 5: การสื่อสารพอร์ตอนุกรม

การสื่อสารพอร์ตอนุกรม
การสื่อสารพอร์ตอนุกรม
การสื่อสารพอร์ตอนุกรม
การสื่อสารพอร์ตอนุกรม
การสื่อสารพอร์ตอนุกรม
การสื่อสารพอร์ตอนุกรม
การสื่อสารพอร์ตอนุกรม
การสื่อสารพอร์ตอนุกรม

ขั้นตอนสุดท้ายคือการตั้งค่าคอมพิวเตอร์เพื่อให้คุณสามารถส่งคำสั่งไปยังไมโครคอนโทรลเลอร์ได้ ใน NerdKit เราใช้สายเคเบิลอนุกรมเพื่อส่งคำสั่งและข้อมูลไปยังคอมพิวเตอร์ เป็นไปได้ที่จะเขียนโปรแกรมอย่างง่ายในภาษาการเขียนโปรแกรมส่วนใหญ่ที่สามารถสื่อสารผ่านพอร์ตอนุกรมไปยัง NerdKit อย่างไรก็ตาม มันง่ายกว่ามากที่จะใช้โปรแกรมเทอร์มินัลเพื่อทำการสื่อสารแบบอนุกรมสำหรับเรา ด้วยวิธีนี้ คุณเพียงแค่พิมพ์บนแป้นพิมพ์ และดูการตอบสนองจาก NerdKit Windowsหากคุณใช้ Windows XP หรือรุ่นก่อนหน้า HyperTerminal จะรวมอยู่ด้วย และควรอยู่ในเมนูเริ่มของคุณภายใต้ "เริ่ม -> โปรแกรม -> อุปกรณ์เสริม -> สื่อสาร". เมื่อคุณเปิด HyperTerminal เป็นครั้งแรก ระบบจะขอให้คุณตั้งค่าการเชื่อมต่อ ยกเลิกจนกว่าคุณจะอยู่ที่หน้าจอหลักของ HyperTerminal คุณจะต้องตั้งค่า HyperTerminal เลือกพอร์ต COM ที่ถูกต้อง และตั้งค่าพอร์ตอย่างเหมาะสมเพื่อทำงานกับ NerdKit ทำตามภาพหน้าจอด้านล่างเพื่อตั้งค่า HyperTerm ให้ถูกต้อง หากคุณใช้ Windows Vista ระบบจะไม่รวม HyperTerminal อีกต่อไป ในกรณีนี้ ให้ไปดาวน์โหลด PuTTY (ตัวติดตั้ง Windows) ใช้การตั้งค่าการเชื่อมต่อด้านล่างเพื่อตั้งค่า Putty โดยใช้พอร์ต COM ที่เหมาะสม Mac OS X หลังจากเข้าสู่แอปพลิเคชัน Terminal แล้ว ให้พิมพ์ "screen /dev/tty. PL* 115200" เพื่อเริ่มการสื่อสารผ่านพอร์ตอนุกรมLinuxOn Linux เราใช้ " minicom" เพื่อคุยกับพอร์ตอนุกรม ในการเริ่มต้น ให้เรียกใช้ "minicom -s" ที่คอนโซลเพื่อเข้าสู่เมนูการตั้งค่าของ minicom ไปที่ "การตั้งค่าพอร์ตอนุกรม" ตั้งค่าพารามิเตอร์ดังนี้:การกำหนดค่า Minicom บน Linuxจากนั้นกด Escape และใช้ "บันทึกการตั้งค่าเป็น dfl" เพื่อบันทึกการตั้งค่าเป็นค่าเริ่มต้น ตอนนี้คุณควรจะสามารถกด "Exit" และใช้ minicom เพื่อพูดคุยกับ NerdKit ได้แล้ว

แนะนำ: