Arduino Micro Quadcopter: 6 ขั้นตอน

Arduino Micro Quadcopter: 6 ขั้นตอน

สารบัญ:

Anonim

(โครงการที่กำลังดำเนินอยู่ในปัจจุบันต้องประสานวงจร)

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

ฉันกำลังทำสิ่งนี้ในช่วงเวลาว่างในขณะที่ฉันเรียนอยู่ในมหาวิทยาลัยดังนั้นฉันคิดว่ามันน่าจะใช้เวลาพอสมควรกว่าจะสำเร็จ (การสอบเข้าใกล้!)

ฉันตัดสินใจควบคุม Quadcopter ผ่าน Bluetooth โดยใช้โทรศัพท์ / แท็บเล็ต Android ในอนาคตฉันอาจออกแบบใหม่เพื่อควบคุมโดยใช้ Wifi หรือการสื่อสารทางวิทยุบางอย่าง ฉันจะเขียนและเผยแพร่แอพ Android สำหรับการควบคุมโดยใช้บลูทู ธ

ดังนั้นมาเริ่มกันเลย @!

ป.ล. หุ่นยนต์ทุ่มเทสำหรับ M.O.N.T.E (การวางตัวเป็นกลางการกำจัดและการยกเลิกทิศทางมือถือ) หุ่นยนต์นักฆ่าจาก ทฤษฎีบิ๊กแบง: D

วัสดุ:

ขั้นตอนที่ 1: กรอบและพลาสติก

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

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

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

สำหรับ Quadcopter เดียวคุณต้องพิมพ์ หนึ่ง Quadcopter_bottom_3.stl และ หนึ่ง Quadcopter_top_2.stl ฉันลองพิมพ์ทุกอย่างด้วยตัวเองและสังเกตว่าเครื่องพิมพ์ที่ฉันพิมพ์ไม่ได้สกรูดีมาก (ฉันไม่สามารถใส่สกรูในรูได้) ดังนั้นฉันจึงไม่แนะนำให้พิมพ์ด้วยเช่นกัน … แน่นอนคุณสามารถลองทำ ที่ฉันยังเพิ่ม Quadcopter_screw_2.stl ถ้าคุณอยากรู้ว่า … ฉันออกแบบส่วนล่างใหม่เพื่อที่คุณจะได้ติดส่วนบนและจากนั้นคุณก็สามารถใช้พลาสติกผูกเพื่อจับทุกอย่างไว้ด้วยกัน

ขั้นตอนที่ 2: ส่วนที่เหลือ + ราคา

ไมโครคอนโทรลเลอร์

เราต้องการบอร์ดไมโครคอนโทรลเลอร์ขนาดเล็กสำหรับไมโคร Quadcopter นี้ ตัวเลือกที่ถูกคือการใช้ Arduino Nano ซึ่งมาจากประเทศจีนราคา ~ £ 1-2 นอกจากนี้เพื่อลดน้ำหนักทางเลือกอาจเป็น Arduino Beetle หรือ Arduino USB ชิปซึ่งเป็นสำเนาต้นฉบับภาษาจีนของ Beetle (ราคาถูกกว่าทำงาน (ทดสอบ) ด้วยวิธีเดียวกันและตัวเชื่อมต่อง่ายต่อการบัดกรี) คุณสามารถทำตามบทช่วยสอนนี้เพื่อเขียนโปรแกรมชิปเปล่าของ ATMEL ATmega328 / 168 ซึ่งคุณสามารถรับได้ฟรีจากเว็บไซต์ ATMEL (ถ้าคุณเป็นนักเรียนไปที่ Atmel -> ตัวอย่าง -> สั่งตัวอย่าง) หรืออีเบย์ สำหรับต้นแบบฉันจะใช้ Arduino Nano เพราะมันง่ายต่อการจัดการ ฉันคิดว่าสเตจต่อไปอาจใช้ชิป Atmel โลหะเปลือยหรือมองหา Arduino Beetle BLE เนื่องจากคุณสามารถหาได้ในบางสถานที่อย่างถูกอย่างไรก็ตามพวกเขามีเอาต์พุต 2xPWM เท่านั้นดังนั้นจึงต้องใช้ register shifter เพิ่มเติม น้ำหนักของแต่ละชิปแตกต่างกันไปขึ้นอยู่กับไมโครคอนโทรลเลอร์: Arduino Micro ~ 13g, Arduino Beetle ~ 5g, ชิปเปล่า + คริสตัล ~ 4-5g (?)

มอเตอร์

ฉันเองใช้มอเตอร์ราคาแพงกว่าเล็กน้อยจากที่นี่ พวกเขาควรจะเร็วกว่ามอเตอร์ฮับซัน X4 มาก ฉันวางแผนที่จะใช้ฮาร์ดแวร์แบบกำหนดเองดังนั้นฉันจึงต้องการมอเตอร์ความเร็วสูงเพื่อยกน้ำหนัก ถ้าฉันจะซื้อชุดมอเตอร์ใหม่ตอนนี้ฉันมักจะซื้อมันจากร้านค้าเดียวกัน แต่คนที่พูดความเร็ว: บ้า มีประเภทไม่กี่ประเภทเช่นกันดังนั้นให้เลือกประเภทที่มีบทวิจารณ์ที่ดีที่สุด ความแตกต่างค่อนข้างสำคัญกับความเร็ว: บ้าเมื่อถึงสูงสุด 3.2 A แทนที่จะเป็น 2.75 A ด้วยความเร็ว: เร็ว (อย่างใดยังคงบอกว่าแรงขับคือ 40g / มอเตอร์สำหรับมอเตอร์ทั้งสองประเภท) สำหรับผู้ที่คุณไม่สามารถซื้อมอเตอร์ราคาแพงมีเสมอทางเลือกจากอีเบย์หรือราคาถูกกว่าจากประเทศจีน แน่นอนว่าพวกเขาไม่ได้บินเร็วอย่างน้อยที่สุดผมก็คิดว่าจากกราฟการแสดง ฉันไม่ได้ลองด้วยตัวเอง แต่กระแสสูงสุดคือ 1.85 A และแรงขับคือ 34g / มอเตอร์ซึ่งต่ำกว่าในมอเตอร์ก่อนหน้า (น้ำหนักรวม ~ 20g)

บลูทู ธ

สำหรับโครงการฉันใช้โมดูลบลูทู ธ HC-06 ปกติ มันทำงานเป็นทาสเท่านั้นซึ่งเป็นสิ่งที่เราต้องการหากเราต้องการควบคุมมันโดยใช้สมาร์ทโฟน อย่างที่คุณเห็นจากภาพที่เพิ่มเข้าไปฉันงอตัวเชื่อมต่อแล้วทำให้มันสั้นลง ฉันอาจพิจารณาตัวเลือกในการเพิ่มโมดูล Bluetooth 4.0 ในภายหลังซึ่งมีการเชื่อมต่อตรงข้ามดังนั้นคุณไม่จำเป็นต้องทำเช่นนั้น (น้ำหนักรวม ~ 5g)

MPU

สำหรับโครงการฉันใช้ MPU6050 ซึ่งฉันซื้อมานานแล้ว มันมี Gyroscope 3 แกนและ Accelerometer 3 แกนเท่านั้น ในรุ่นต่อมาฉันอาจใช้ MPU ที่มีราคาแพงกว่าซึ่งอาจมี Barometer และ Magnetometer (น้ำหนักรวม ~ 1.4g)

แบตเตอรี่

สำหรับมอเตอร์และอุปกรณ์อิเล็กทรอนิกส์คุณจะต้องใช้แบตเตอรี่ LiPo 1S 3.7V สองก้อน หนึ่งถูกใช้เพื่อเพิ่มกำลังมอเตอร์และอีกเพียงอุปกรณ์อิเล็กทรอนิกส์ หาแบตเตอรี่สำหรับอุปกรณ์อิเล็กทรอนิกส์เป็นเรื่องง่าย เพียงเลือกแบตเตอรี่ที่มีขนาดเล็กที่สุดในตลาด (เช่น 1s 3.7V 100mAh (3g)) คุณสามารถหาซื้อได้จาก HobbyKing ในราคาถูก

การได้รับแบตเตอรี่สำหรับมอเตอร์นั้นมีความยุ่งยากมากกว่า มีจุดสำคัญที่ควรทราบเมื่อซื้อพวกเขาความจุ (mAh), การปล่อยที่อนุญาตสูงสุด (C) และอัตราการคายประจุเฉลี่ย (C) ยิ่งความจุมากเท่าไร quadcopter ก็จะทำงานได้นานขึ้นด้วยการชาร์จเพียงครั้งเดียวและอัตราการคายประจุที่มากขึ้นก็ยิ่งมีพลังมากขึ้นเท่านั้นที่จะสามารถจัดหาให้กับมอเตอร์ (กระแสที่ใหญ่ขึ้นสำหรับค่าคงที่และสูงสุด) มักจะมีกฎของหัวแม่มือที่การคูณของทั้งสองอัตราการคายประจุและความจุจะให้กระแสที่แบตเตอรี่สามารถจ่ายได้ ตัวอย่างเช่นคุณมีแบตเตอรี่ที่มี 500 mAh และ 10 C ของค่าเฉลี่ย / ค่าคงที่ 500 mAh * 10 C = 5 A. ดังนั้นโดยเฉลี่ยแบตเตอรี่ดังกล่าวสามารถจ่าย 5 A. จากนั้นเพิ่มระยะขอบที่ปลอดภัยประมาณ 20% และคุณควรจะไปดี นี่อาจใช้งานได้ในบางกรณีอย่างไรก็ตามเรามีมอเตอร์ที่ทรงพลังมากดังนั้นอัตราคายประจุจะต้องสูงกว่านั้นมาก ก่อนหน้านี้ฉันเคยลองใช้เทคโนโลยี Turnigy นาโนเทคโนโลยี 650mAh 1S 15c (13g) โดยไม่มีโชคอย่างแน่นอน พวกเขาสามารถใช้งานมอเตอร์เพียงตัวเดียวได้อย่างเต็มที่และไม่ได้หมุนมอเตอร์ 4 ตัวต่อบิตซึ่งหมายความว่าอัตราการคายประจุนั้นน้อยเกินไป (ความจุก็เพียงพอแล้ว) ฉันดูจากแบตเตอรี่ Turnigy nano-tech 1s 260mAh 35-70C (14g) พวกเขาจัดการพลังงานให้กับมอเตอร์ทั้ง 4 ตัวอย่างไรก็ตามในเวลาที่ฉันซื้อพวกเขาพวกเขามีราคาครึ่งหนึ่งของราคาที่คุณเห็นที่นี่ ฉันแนะนำให้มองหา HobbyKing สำหรับแบตเตอรี่ที่คล้ายกันหรือแบตเตอรี่อื่นเช่น Turnigy นาโนเทคโนโลยี 300 มิลลิแอมป์ชั่วโมง 1S 45 ~ 90C (9g) หรือแม้กระทั่ง Turnigy Graphene 600mAh 1S 65C (15g) ซึ่งดูเหมือนจะมีแนวโน้มมาก หากคุณมีค่าใช้จ่ายเพิ่มเติม $ / £เล็กน้อยให้ซื้อแบตเตอรี่ Graphene เพราะเบากว่าเมื่อเทียบกับแบตเตอรี่สำรองที่มีความจุเท่ากันและให้อัตราการคายประจุที่สูงขึ้น (อย่างน้อยบนกระดาษ) ฉันไม่ได้ลองด้วยตัวเอง แต่จะน่าสนใจจริง ๆ เพื่อดูว่าพวกเขาเปรียบเทียบในความเป็นจริงเพราะฉันคิดว่าอัตราการปล่อย 35C ที่ให้ไว้ในปัจจุบันนั้นค่อนข้างเล็กเช่นกัน

มาคำนวณระยะเวลาที่แบตเตอรี่จะมีอายุ ให้บอกว่านอกเหนือจากมอเตอร์ส่วนที่เหลือของอุปกรณ์อิเล็กทรอนิกส์ใช้กระแสประมาณ 100 mA อย่างต่อเนื่อง กระแสรวม = 2.75 * 4 + 0.1 = 11.1 A = 11.1 * 1000 = 1,100 mAh แบตเตอรี่ที่ฉันซื้อมีความจุ 260mAh ดังนั้นเวลา (นาที) = 260 * 60/11100 = 1.4 นาที ดูเหมือนจะไม่มากเลยใช่ไหม? ฉันทดสอบเมื่อฉันแนบ quadcopter กับเธรดลงไปที่พื้นและดูเหมือนว่าตัวเลขนั้นสมเหตุสมผลฉันไม่สามารถถือ quadcopter ในอากาศได้แม้แต่ 2 นาที สำหรับอัตราการบินที่ยาวนานคุณจะต้องเพิ่มแบตเตอรี่ที่ใหญ่กว่าใช้มอเตอร์ Hubsan X4 ที่ราคาถูกกว่าหรือลดน้ำหนักของสิ่งของทั้งหมดลง (น้ำหนักรวม ~ 16 กรัม)

ช่องเสียบมอเตอร์

มอเตอร์มักจะใช้ตัวเชื่อมต่อแบบ mini JST ดังนั้นคุณจะต้องได้รับ (4 ชิ้น) จาก Farnell หรือ eBay เพื่อเชื่อมต่อมอเตอร์เข้ากับวงจรทั้งหมด ตรวจสอบให้แน่ใจว่าคุณซื้อตัวเชื่อมต่อตามที่แสดงในรูปภาพ มีสิ่งที่คล้ายกันมาก (เช่น micro JST) แต่มีความแตกต่างกัน

ขั้วต่อแบตเตอรี่

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

ใบพัด

หลายท่านอาจต้องการใช้ใบพัด Hubsan X4 และคุณสามารถทำได้ถ้าคุณต้องการ แต่ฉันจะใช้อุปกรณ์ Walkera LadyBird พวกมันค่อนข้างแพงถ้าคุณซื้อมันในสหราชอาณาจักร (ประมาณ 5 เท่าเมื่อเทียบกับอุปกรณ์ประกอบฉากของ Hubsan X4) แต่ราคาถูกจากจีนจริง ๆ หากคุณยังไม่มีอุปกรณ์ประกอบฉากฉันขอแนะนำให้ใช้อุปกรณ์เหล่านี้เช่นกัน - ถ้าฉันถูกต้องฉันอ่านที่ที่พวกเขาให้แรงขับมากขึ้นทำให้สัตว์ตัวเล็กของเรามีความเร็วมากขึ้น (ดีหลังจากนั้น Walkera LadyBird เป็นที่รู้จักกันดี ไมโคร Quadcopter ที่ดีที่สุดอยู่เสมอฉันสงสัยว่าใครเป็นคนทดสอบ แต่ให้เราเชื่อใจพวกเขาตอนนี้ …) (รวม 2-3 กรัม)

ทรานซิสเตอร์

เราต้องการทรานซิสเตอร์ MOSFET 4x ตัวและการเลือกอันใดอันหนึ่งอาจเป็นเรื่องยาก ประการแรกพวกเขาจะต้องทนต่อกำลังที่ใช้และกระแสโดยมอเตอร์และประการที่สองแรงดันไฟฟ้าต้องต่ำมากมิฉะนั้น Arduino จะไม่สามารถเปิดได้เต็มที่ (ในกรณีของ MOSFET ชนิด N) ในกรณีของฉันกระแสสูงสุดคือ 2.75 A ที่มีแรงดัน 3.7 V ซึ่งหมายความว่าฉันต้องการ MOSFET ซึ่งอย่างน้อยจะทนต่อประมาณ 4 - 5 A ในกรณี (จะร้อนขึ้นน้อยลง) ฉันสั่งบางอย่างจาก Farnell (MOSFET Transistor, N Channel, 6 A, 20 V) แต่คุณมีอิสระที่จะมองหาทางเลือกอื่น ๆ เช่น MOSFET Transistor, N Channel, 8 A, 20 V (จริง ๆ แล้วเหมือนกับก่อนหน้านี้ มีขาเพิ่มเติมเพื่อบัดกรีให้พื้นเพื่อทำงานเป็นฮีทซิงค์ไม่จำเป็นต้องใช้เพราะขาหน้าที่ก่อนหน้าไม่ร้อนเลย) พวกเขาทั้งสองมีแรงดันไฟฟ้าเริ่มต้น 600mV ซึ่งดี หากคุณกำลังมองหาทางเลือกอื่นอย่าพยายามไปมากกว่า 1V แต่ถ้าคุณต้องการใช้ PCB ที่ให้มาตรวจสอบให้แน่ใจว่าขนาดเท่ากันรวมทั้งทรานซิสเตอร์ที่ให้ไว้ในที่นี้มีไดโอดวีลลิ่งอยู่ภายในแล้ว จะช่วยประหยัดพื้นที่บน PCB (น้ำหนักรวม <1g)

ตัวต้านทาน

สำหรับโครงการฉันต้องการตัวต้านทานขนาด 6x10 kOhm และ 2x56 kOhm (ต้องตัดสินใจ แต่ไม่จำเป็นจนกว่าจะสิ้นสุด) ซึ่งคุณสามารถหาได้ในร้านขายอุปกรณ์อิเล็กทรอนิกส์ (น้ำหนักรวม <1g)

ตัวเก็บประจุ

ตัวเก็บประจุด้วยไฟฟ้าตัวเดียวจะถูกใช้เพื่อทำให้แรงดันไฟฟ้าบนแบตเตอรี่เรียบเนียนสำหรับ mottors ขนาด 47uF, 50V สามารถซื้อได้ที่ร้านขายเครื่องใช้ไฟฟ้าใด ๆ (น้ำหนักรวม <1g)

ชาร์จ

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

ราคา

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

มอเตอร์ราคาแพง:

£ 2 (Arduino) + £ 3 (MPU6050) + £ 20 (มอเตอร์) + £ 3 (แบตเตอรี่มอเตอร์) + £ 2 (แบตเตอรี่ไฟฟ้า) + £ 2 (ใบพัด) + £ 2 (MOSFETs) + £ 5 (HC-06) + £ 2 (ส่วนที่เหลือของอุปกรณ์อิเล็กทรอนิกส์ + พลาสติก) + 1 ปอนด์ (ตัวเชื่อมต่อ) + £ 3 (ที่ชาร์จ) = £45 (เพิ่มเฉพาะส่วนประกอบที่ใช้เมื่อซื้อเป็นทวีคูณ)

£45 - £15 = £30

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

ขั้นตอนที่ 3: การคำนวณน้ำหนัก

มอเตอร์ราคาแพง:

เพื่อให้ Quadcopter ของเราบินได้อย่างดีมีกฎง่ายๆที่ 50% ของแรงขับสูงสุดของมอเตอร์ควรจะเท่ากับน้ำหนักของตัว Quadcopter ดังนั้นหมายความว่า quadcopter จะอยู่ในระดับความสูงคงที่เมื่อให้ 50% ของกำลังเต็ม มอเตอร์ที่ฉันซื้อมีแรงขับ 40 กรัม / มอเตอร์ รวมที่เพิ่มขึ้นถึง 160 กรัม 50% ของจำนวนนี้คือ 80 กรัม ตอนนี้ให้เพิ่มอิเลคทรอนิคส์ + เฟรมทั้งหมด:

15g (เฟรม) + 20g (มอเตอร์) + 23g (แบตเตอรี่) + 5g (โมดูลบลูทู ธ) + 5g (ไมโครคอนโทรลเลอร์) + 1.4g (MPU) + 2g (ทรานซิสเตอร์) + 1g (ไดโอด) + 1g (ตัวต้านทาน) = 73.4g, สิ่งที่เราต้องการมากหรือน้อย! แน่นอนว่าจะมีน้ำหนักเพิ่มเติมจากสาย ฯลฯ แต่มีขนาดเล็กและส่วนใหญ่จะเพิ่มน้ำหนักจนถึง 75 กรัมซึ่งยังคงเบากว่าที่เราสามารถจ่ายได้ 6%

มอเตอร์ Price:

แรงขับทั้งหมดจากมอเตอร์คือ 4 * 34g / มอเตอร์ = 136g 50% ของนั้นคือ 68g อุปกรณ์อิเล็กทรอนิกส์ทั้งหมดจะมากหรือน้อยเหมือนกันเพียงแค่แบตเตอรี่จะเบาลง 10 กรัมให้ทั้งหมด 65 กรัมโดยรวมกับทุกสิ่งซึ่งยังคงมีน้ำหนักเบากว่าแรงขับ 50%! ที่จริงแล้วมันจะไม่บินได้ดีเท่ากับมอเตอร์ที่เร็วกว่า แต่ก็ดีคุณใช้มอเตอร์ราคาถูกกว่าอย่างน้อย 4 เท่า!

สรุป:

Quadcopter ควรบิน! ด้วยมอเตอร์ที่มีราคาแพงกว่ามันจะบินได้ดีขึ้น / เร็วขึ้น แต่ถึงกระนั้นทั้ง quadcopter ก็ยังควรบินได้

ขั้นตอนที่ 4: Circuit Diagram

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

Arduino nano มีโซลูชันแบตเตอรี่สองก้อนและด้วงไม่ได้ สิ่งนี้สำคัญมากเนื่องจากบลูทู ธ จะไม่ทำงานโดยใช้แบตเตอรี่ก้อนเดียว นอกจากนี้หากใช้ Beetle board โดยใช้แบตเตอรี่สองก้อนตัวเก็บประจุมากกว่า 10uF ควรเพิ่มระหว่างพินบวกและลบ

ที่ด้านล่างของวงจรนาโน Arduino ผมได้เพิ่มการเชื่อมต่อทางเลือกสำหรับทรานซิสเตอร์ที่ใช้สำหรับ PCB แทนการสร้างการเชื่อมต่อ

ขั้นตอนที่ 5: PCB

มันง่ายกว่ามากในการบัดกรีส่วนประกอบทั้งหมดบน PCB ที่เตรียมไว้แล้ว (Printed Circuit Board) น่าเศร้าที่การเข้าถึงเครื่องเพื่อทำให้เครื่องนั้นเป็นไปไม่ได้เสมอไป เรามีหนึ่งที่มหาวิทยาลัยดังนั้นฉันออกแบบ PCB โดยใช้ เป้าหมาย 3001! ซอฟต์แวร์. ในการเปิดไฟล์ *.T3001 คุณจะต้องดาวน์โหลดซอฟต์แวร์ Target 3001 ซึ่งน่าเสียดายที่รองรับเฉพาะ Windows เท่านั้น ฉันอาจส่งออกโครงการไปยัง Eagle ในภายหลัง เพิ่ม Target3001,.xps,.tif และ. src (ส่งออกไปยัง Eagle) สำหรับผู้ที่ต้องการสร้าง PCB ที่บ้าน

ผลลัพธ์ที่พิมพ์และบัดกรีมีลักษณะเหมือนภาพที่ให้ ฉันเพิ่มวงกลมสีแดงที่แสดงทรานซิสเตอร์บัดกรีวงกลมสีเหลืองแสดงขั้วต่อ JST สำหรับมอเตอร์วงกลมสีเขียวทำเครื่องหมายขั้วต่อแบตเตอรี่จ่ายพลังงานให้กับมอเตอร์เท่านั้นและวงกลมสีน้ำเงินทำเครื่องหมายขั้วต่อแบตเตอรี่จ่ายพลังงานให้กับส่วนที่เหลือของอุปกรณ์อิเล็กทรอนิกส์ (Arduino, MPU6050 เป็นต้น) อย่างที่คุณเห็นมีการแก้ไขบางอย่างเกิดขึ้นถัดจากขั้วต่อสายไฟทั้งสอง คุณไม่จำเป็นต้องทำเช่นนั้นเนื่องจาก PCB ได้รับการปรับปรุงหลังจากสร้างโมเดลการทำงานแรก โดยทั่วไปปัญหาคือในตอนแรก PCB มีแหล่งจ่ายไฟเพียงแหล่งเดียว ในระหว่างการทดสอบปรากฏว่าโมดูลบลูทู ธ ยังคงตัดการเชื่อมต่อจากโทรศัพท์อย่างต่อเนื่องเนื่องจากแรงดันแบตเตอรี่ลดลงสู่ระดับต่ำ (<3V) ไม่เพียงแค่นั้น แต่ Arduino ยังมีปัญหาเกี่ยวกับเรื่องนั้นซึ่งได้รับการแก้ไขโดยการลดแรงดันไฟฟ้าตก คุณสามารถทำได้อย่างง่ายดายด้วยตัวคุณเองเพราะต้องการเพียงแค่การแก้ไขไฟล์เดียวใน Arduino IDE แต่มันเป็นเรื่องของการแฮ็คที่ความถี่สูงกว่าจำเป็นต้องใช้แรงดันไฟฟ้าที่สูงกว่า ในที่สุดสิ่งอื่นอาจแตกหักในอนาคตหรือคุณอาจสูญเสียพลังงานที่มีอยู่ทั้งหมด ฯลฯ อย่างไรก็ตามการใช้ระบบแบตเตอรี่สองก้อนทำงานได้ดีโดยเฉพาะอย่างยิ่งว่าแบตเตอรี่กำลังไฟอิเล็กทรอนิกส์น้ำหนักเพียงประมาณ 3G

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

อีกด้านหนึ่งของ PCB ฉันเพิ่มสี่เหลี่ยมสีเขียวซึ่งแสดงว่าตัวเชื่อมต่อ 1x02 ที่ไม่ได้บังคับ ฉันคิดว่ามันคงจะดีถ้าฉันสามารถเชื่อมต่อบางอย่างกับ quadcopter ในอนาคตดังนั้นฉันจึงสามารถใช้ PWM และ Analogue pin ได้อย่างง่ายดาย ฉันทำเครื่องหมายขั้วต่อบวกของแบตเตอรี่ทั้งสองเพิ่มเติม

ขั้นตอนที่ 6: รหัส

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

อ่านแรงดันแบตเตอรี่

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

1) เราสามารถเก็บแบตเตอรี่เปิดเครื่องใช้ไฟฟ้าที่เรียกเก็บ ซึ่งหมายความว่าเรามั่นใจเสมอว่าแรงดันไฟฟ้าอยู่ที่ประมาณ 4.2V วิธีนี้จะต้องชาร์จแบตเตอรี่ทั้งสองตลอดเวลา นอกจากนี้จะเกิดอะไรขึ้นหากเราต้องการตรวจสอบแบตเตอรี่อิเล็กทรอนิกส์

2) ใช้การอ้างอิงแรงดันไฟฟ้าช่วงเวลา นี่เท่ากับ 1.1V สำหรับ Atmega328 แต่เราต้องมั่นใจว่าอะไรก็ตามที่เชื่อมต่อกับ A0 ไม่เกิน 1.1V ดังนั้นฉันจึงเพิ่มตัวต้านทาน X kOhm เป็นอนุกรมพร้อมตัวต้านทาน Y kOhm เพื่อสร้างวงจรตัวแบ่งที่อาจเกิดขึ้น รหัสสำหรับการอ่านและการปรับแรงดันไฟฟ้าแบตเตอรี่ให้ราบรื่นคือ:

#define ALPHA 0.1 #define MULTIPLIER 6.67 มอเตอร์ลอยตัว; การตั้งค่าเป็นโมฆะ () {pinMode (A0, INPUT); analogReference (ภายใน); // ตั้งค่าแหล่งอ้างอิงภายในของ 1.1V // float tmp = analogRead (A0) / 1023.0 * MULTIPLIER; // ทำให้หน่วย Voltage motorBattery = 5.0; } void loop () {motorBattery = smoothBattery (motorBattery, analogRead (A0) / 1023.0 * MULTIPLIER, ALPHA); } float smoothBattery (float prevEntry, float newEntry, float alpha) {return (1-alpha) * prevEntry + alpha * newEntry; }

MPU6050

ห้องสมุด Jeff MPU6050 มีให้บริการโดย Jeff Rowberg 2012 ตัวอย่างรหัสที่ให้มา MPU6050_DMP6 ถูกใช้เป็นรหัสหลักสำหรับโครงการ

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

มอเตอร์สั่นไหว

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

#define FL_MOTOR 3 # กำหนด FR_MOTOR 9 # กำหนด BR_MOTOR 10 # กำหนด BL_MOTOR 11 // -------------------------------- -PID ------------------------------------ // กำหนดตัวแปรที่เราจะเชื่อมต่อกับ double rollSetpoint, rollInput, rollOutput; สนามคู่ตั้งค่า, pitchInput, pitchOutput; // กำหนดพารามิเตอร์การจูนแบบก้าวร้าวและอนุรักษ์นิยม

double consKp = 1, consKi = 0.05, consKd = 0.25; PID pitchPID (& rollInput, & rollOutput, & rollSetpoint, consKp, consKi, consKd, โดยตรง); PID rollPID (& pitchInput, & pitchOutput, & pitchSetpoint, consKp, consKi, consKd, โดยตรง); การตั้งค่าเป็นโมฆะ () {// ------------------------------ PID ------------ ---------------------- pitchInput = 0.0; rollInput = 0.0; pitchSetpoint = 0.0; rollSetpoint = 0.0; // เปลี่ยน PID บน pitchPID.SetMode (อัตโนมัติ); rollPID.SetMode (อัตโนมัติ); pitchPID.SetOutputLimits (-20, 20); rollPID.SetOutputLimits (-20, 20); // ------------------------------------------------ ------------------- สำหรับ (int i = 0; i <4; i ++) {targetSpeed ​​i = 0; } pinMode (FL_MOTOR, OUTPUT); pinMode (FR_MOTOR, OUTPUT); pinMode (BR_MOTOR, OUTPUT); pinMode (BL_MOTOR, OUTPUT); void loop () {pitchPID.Compute (); rollPID.Compute (); int actSpeed ​​4; รักษาเสถียรภาพ (targetSpeed, ActSpeed, rollOutput, pitchOutput); // targetSpeed ​​= actSpeed; // นี่ควรจะอยู่ที่นี่หรือไม่} เป็นโมฆะคงที่ (int * currSpeed, int * actSpeed, float rollDiff, float pitchDiff) {// ความเร็วจริงจะถูกคำนวณดังนี้ + - half rollDiff + - half pitchDiff actSpeed ​​0 = (int) currSpeed ​​0 + (rollDiff / 2) - (pitchDiff / 2); actSpeed ​​1 = (int) currSpeed ​​1 + (rollDiff / 2) + (pitchDiff / 2); actSpeed ​​2 = (int) currSpeed ​​2 - (rollDiff / 2) + (pitchDiff / 2); actSpeed ​​3 = (int) currSpeed ​​3 - (rollDiff / 2) - (pitchDiff / 2); สำหรับ (int i = 0; i <4; i ++) {ถ้า (actSpeed ​​i <0) actSpeed ​​i = 0; }} โมฆะ runIndividual (int * actSpeed) {analogWrite (FL_MOTOR, actSpeed ​​0); analogWrite (FR_MOTOR, actSpeed ​​1); analogWrite (BR_MOTOR, actSpeed ​​2); analogWrite (BL_MOTOR, actSpeed ​​3); }

โมดูลบลูทู ธ

การสื่อสารจาก quadcopter ไปยังโทรศัพท์จะผ่านโมดูลบลูทู ธ HC-06 สิ่งที่ดีเกี่ยวกับมันคือไม่ต้องแฮ็คสิ่งใดเพราะโมดูลใช้การสื่อสารแบบอนุกรม RS232 เพื่อพูดคุยกับ Arduino ดังนั้นคุณจะใช้มันเหมือนกันกับที่คุณทำกับ Arduino Serial library เพื่อจุดประสงค์นี้คุณจะต้องใช้ Arduino SoftwareSerial library ในรหัสที่ระบุด้านล่างฉันจะส่งความเร็วซึ่งจะถูกตั้งค่าสำหรับมอเตอร์ทั้งหมด

ซอฟต์แวร์ Sirial mySerial (7, 8); // RX, TX void setup () {mySerial.begin (9600); } void loop () {if (mySerial.available ()) {myReading = mySerial.parseInt (); สำหรับ (int i = 0; i <4; i ++) {targetSpeed ​​i = myReading; } // ล้างข้อมูลที่ไม่ได้อ่านในขณะที่ (mySerial.available ()) mySerial.read (); }}

การเพิ่ม Bits เข้าด้วยกัน

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