สารบัญ:
- ขั้นตอนที่ 1: รับโมดูล PWM ที่ทำงานอยู่
- ขั้นตอนที่ 2: ตั้งค่าการออกแบบบล็อก
- ขั้นตอนที่ 3: ปรับเทียบ IMU
- ขั้นตอนที่ 4: รวมตัวรับส่งสัญญาณไร้สาย
- ขั้นตอนที่ 5: ตั้งโปรแกรม Zybo FPGA
วีดีโอ: Quadcopter ใช้บอร์ด Zybo Zynq-7000: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ก่อนที่เราจะเริ่มต้น นี่คือสิ่งที่คุณต้องการสำหรับโครงการ: รายการชิ้นส่วน1x Digilent Zybo Zynq-7000 บอร์ด 1x Quadcopter Frame สามารถติดตั้ง Zybo ได้ (ไฟล์ Adobe Illustrator สำหรับการตัดด้วยเลเซอร์) 4x Turnigy D3530/14 1100KV มอเตอร์แบบไม่มีแปรง 4x Turnigy ESC Basic -18A ตัวควบคุมความเร็ว 4x ใบพัด (เหล่านี้ต้องมีขนาดใหญ่พอที่จะยก quadcopter ของคุณ) 2x nRF24L01+ transceiver 1x IMU BNO055ข้อกำหนดของซอฟต์แวร์Xilinx Vivado 2016.2หมายเหตุ: มอเตอร์ด้านบนไม่ใช่มอเตอร์เดียวที่สามารถใช้ได้ พวกเขาเป็นเพียงสิ่งที่ใช้ในโครงการนี้ เช่นเดียวกับส่วนที่เหลือของชิ้นส่วนและข้อกำหนดของซอฟต์แวร์ หวังว่านั่นเป็นความเข้าใจที่ไม่ได้พูดเมื่ออ่านคำแนะนำนี้
ขั้นตอนที่ 1: รับโมดูล PWM ที่ทำงานอยู่
ตั้งโปรแกรม SystemVerilog อย่างง่าย (หรือโปรแกรม HDL อื่นๆ) เพื่อลงทะเบียน HI throttle และ LO throttle โดยใช้สวิตช์อินพุต ขอ PWM ด้วย ESC และ Turnigy Brushless Motor ตัวเดียว ตรวจสอบไฟล์ต่อไปนี้เพื่อค้นหาวิธีการปรับเทียบ ESC รหัสสุดท้ายแนบมาในขั้นตอนที่ 5 สำหรับโมดูล PWM มีการติดตั้ง PWM starter ในขั้นตอนนี้ESC Datasheet: Turnigy ESC Datasheet PDF (สิ่งที่ต้องใส่ใจคือโหมดต่างๆ ที่คุณสามารถเลือกได้โดยใช้เค้น HI และ LO)
ขั้นตอนที่ 2: ตั้งค่าการออกแบบบล็อก
สร้างการออกแบบบล็อก ดับเบิลคลิกที่บล็อกที่สร้างขึ้นใหม่ นำเข้าการตั้งค่า XPS ดาวน์โหลดที่นี่: https://github.com/ucb-bar/fpga-zynq/tree/master/z… แก้ไขการตั้งค่า PS-PL การกำหนดค่า M AXI GP0 อินเทอร์เฟซ อุปกรณ์ต่อพ่วง I/ O Pins Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO การกำหนดค่า Timer 0 WatchdogClock การกำหนดค่า FCLK_CLK0 และตั้งค่าความถี่เป็น 100 MHz ทำให้ I2C และ SPI เชื่อมต่อภายนอก FCLK_CLK0 เป็น M_AXI_GP0_ACLK เรียกใช้บล็อกอัตโนมัติ สร้างพอร์ตและเรียกมันว่า "gnd"
ขั้นตอนที่ 3: ปรับเทียบ IMU
ตัวรับส่งสัญญาณ BNO055 ใช้การสื่อสารแบบ I2C (การอ่านที่แนะนำสำหรับผู้เริ่มต้น: https://learn.sparkfun.com/tutorials/i2c) ไดรเวอร์สำหรับเรียกใช้ IMU อยู่ที่นี่: https://github.com/BoschSensortec/BNO055_driverA quadcopter ไม่ต้องใช้เครื่องวัดสนามแม่เหล็กจาก BNO055. ด้วยเหตุนี้ โหมดการทำงานที่จำเป็นคือโหมด IMU สิ่งนี้เปลี่ยนแปลงโดยการเขียนเลขฐานสอง xxxx1000 ลงในการลงทะเบียน OPR_MODE โดยที่ 'x' คือ 'ไม่สนใจ' ตั้งค่าบิตเหล่านั้นเป็น 0
ขั้นตอนที่ 4: รวมตัวรับส่งสัญญาณไร้สาย
ตัวรับส่งสัญญาณไร้สายใช้การสื่อสาร SPI สิ่งที่แนบมาเป็นแผ่นข้อมูลจำเพาะสำหรับ nRF24L01+A บทช่วยสอนที่ดีเกี่ยวกับ nrf24l01+ แต่สำหรับ Arduino:
ขั้นตอนที่ 5: ตั้งโปรแกรม Zybo FPGA
ภาพรวม โมดูลเหล่านี้เป็นโมดูลสุดท้ายที่ใช้สำหรับการควบคุม PWM ของควอดคอปเตอร์ motor_ctl_wrapper.svวัตถุประสงค์: เครื่องห่อใช้มุมออยเลอร์และเปอร์เซ็นต์เค้น มันส่งเอาต์พุต PWM ที่ได้รับการชดเชยซึ่งจะทำให้ quadcopter เสถียร บล็อกนี้มีอยู่เพราะว่าเครื่องบินควอดคอปเตอร์มีแนวโน้มที่จะเกิดการรบกวนในอากาศและต้องการการรักษาเสถียรภาพบางอย่าง เรากำลังใช้มุมออยเลอร์ เนื่องจากเราไม่ได้วางแผนในการพลิกกลับหรือมุมที่หนักหน่วงซึ่งอาจทำให้เกิด Gimbal Lock อินพุต: บัสข้อมูล 25 บิต CTL_IN = { [24] GO, [23:16] Euler X, [15: 8] Euler Y, [7:0] เปอร์เซ็นต์คันเร่ง } นาฬิกา (clk), Synchronous CLR (sclr) เอาต์พุต: มอเตอร์ 1 PWM, มอเตอร์ 2 PWM, มอเตอร์ 3 PWM, มอเตอร์ 4 PWM, เปอร์เซ็นต์คันเร่ง PWM เปอร์เซ็นต์คันเร่ง PWM คือ ใช้สำหรับการเริ่มต้น ESC ซึ่งจะต้องการช่วง PWM บริสุทธิ์ 30% - 70% ไม่ใช่ค่าจากค่า PWM 1-4 ของมอเตอร์ขั้นสูง - Vivado Zynq IP Blocks:8 Adds (LUTs)3 Subtracts (LUTs)5 ตัวคูณ (Block Memory (BRAM))clock_div.sv (AKA pwm_fsm.sv) วัตถุประสงค์: ควบคุมฮาร์ดแวร์ รวมถึง MUX, เอาต์พุต PWM และ sclr สำหรับ motor_ctl_wrapper Finite State Machine (FSM) ใช้สำหรับสิ่งหนึ่ง: ควบคุมฮาร์ดแวร์อื่น การเบี่ยงเบนขนาดใหญ่จากวัตถุประสงค์นี้อาจทำให้ FSM ที่ควรจะอยู่ในรูปแบบของโมดูลประเภทอื่น (ตัวนับ แอดเดอร์ ฯลฯ) pwm_fsm มี 3 สถานะ: INIT, CLR และ FLYINIT: อนุญาตให้ผู้ใช้ตั้งโปรแกรม ESC เป็น ที่ต้องการ ส่งสัญญาณเลือกไปที่ mux_pwm ซึ่งจะส่งสัญญาณ PWM แบบตรงไปยังมอเตอร์ทั้งหมด วนกลับเป็นตัวเองจนกระทั่ง GO == '1'. CLR: ล้างข้อมูลใน motor_ctl_wrapper และ pwm out module. FLY: วนซ้ำตลอดไปเพื่อทำให้ควอดคอปเตอร์มีเสถียรภาพ (เว้นแต่เราจะรีเซ็ต) ส่ง PWM ที่ชดเชยผ่าน mux_pwm. Input: GO, RESET, clkOutput: RST สำหรับการรีเซ็ตโมดูลอื่นๆ, FullFlight to signal FLY mode, ระยะเวลาในการทำงาน atmux_pwm.svPurpose:Input:Output: PWM for all 4 motorspwm.svPurpose:Input:Output:
แนะนำ:
WIDI - HDMI ไร้สายโดยใช้ Zybo (บอร์ดพัฒนา Zynq): 9 ขั้นตอน (พร้อมรูปภาพ)
WIDI - HDMI ไร้สายโดยใช้ Zybo (Zynq Development Board): คุณเคยคิดไหมว่าคุณจะสามารถเชื่อมต่อทีวีกับพีซีหรือแล็ปท็อปเป็นจอภาพภายนอกได้ แต่ไม่ต้องการให้มีสายไฟที่น่ารำคาญขวางทางใช่ไหม ถ้าใช่ บทช่วยสอนนี้เหมาะสำหรับคุณเท่านั้น! แม้ว่าจะมีผลิตภัณฑ์บางอย่างที่บรรลุเป้าหมายนี้ แต่ก
ระบบเพิ่มประสิทธิภาพภาพ Zynq: 7 ขั้นตอน
Zynq Image Enhancement System: อย่างที่คุณอาจเดาได้จากชื่อ จุดมุ่งหมายของโครงการนี้คือการสร้างระบบการเพิ่มประสิทธิภาพภาพโดยใช้ ZYNQ ApSOC โดยเฉพาะอย่างยิ่ง เราต้องการสร้างระบบที่สามารถขจัดหมอกออกจากรูปภาพหรือวิดีโอได้ ระบบนี้จะพา
การประมวลผลวิดีโอโดยใช้ VHDL และ Zybo: 10 ขั้นตอน
การประมวลผลวิดีโอโดยใช้ VHDL และ Zybo: FPGA ประมวลผลได้เร็วกว่า CPU เนื่องจากสามารถคำนวณได้หลายอย่างพร้อมกัน หมายเหตุ: โปรเจ็กต์นี้ยังอยู่ระหว่างการก่อสร้างและกำลังจะได้รับการปรับปรุง (ทันทีที่ฉันมีเวลา) ในขณะที่ฉันกำลังเดินทางไปทั่วโลก
กล้อง ZYBO OV7670 พร้อมการควบคุมแพน/เอียง: 39 ขั้นตอน (พร้อมรูปภาพ)
กล้อง ZYBO OV7670 พร้อมการควบคุมแพน/เอียง: เริ่มที่ขั้นตอนที่หนึ่งเพื่อดูรายละเอียดเกี่ยวกับการสร้างตัวควบคุมเซอร์โว PWM แบบ 2 แกน เริ่มที่แผนภาพบล็อกขนาดใหญ่ (ขั้นตอนที่ 19) สำหรับโครงการทั้งหมด การตั้งค่ากล้อง + แพน/เอียงที่เราใช้: https://www.amazon.com/gp/product/B013JF9GCAThe PmodCON3 from Digilent วา
Laser Harp Synthesizer บนบอร์ด Zybo: 10 ขั้นตอน (พร้อมรูปภาพ)
Laser Harp Synthesizer บน Zybo Board: ในบทช่วยสอนนี้ เราจะสร้างพิณเลเซอร์ที่ทำงานได้อย่างสมบูรณ์โดยใช้เซ็นเซอร์ IR พร้อมอินเทอร์เฟซแบบอนุกรมที่จะช่วยให้ผู้ใช้เปลี่ยนการจูนและโทนเสียงของเครื่องดนตรีได้ พิณนี้จะเป็นเครื่องดนตรีเก่าที่สร้างใหม่ในศตวรรษที่ 21 NS