Სარჩევი:

Quadcopter Zybo Zynq-7000 დაფის გამოყენებით: 5 ნაბიჯი
Quadcopter Zybo Zynq-7000 დაფის გამოყენებით: 5 ნაბიჯი

ვიდეო: Quadcopter Zybo Zynq-7000 დაფის გამოყენებით: 5 ნაბიჯი

ვიდეო: Quadcopter Zybo Zynq-7000 დაფის გამოყენებით: 5 ნაბიჯი
ვიდეო: Zybo Zynq-7000 DMA Audio Project Demo 2024, ივლისი
Anonim
Quadcopter გამოყენებით Zybo Zynq-7000 დაფა
Quadcopter გამოყენებით Zybo Zynq-7000 დაფა

სანამ დავიწყებთ, აქ არის რამოდენიმე რამ, რაც გსურთ პროექტისთვის: ნაწილების სია 1x Digilent Zybo Zynq-7000 დაფა 1x Quadcopter Frame შეუძლია დააინსტალიროს Zybo (Adobe Illustrator ფაილი ლაზერული ჭრისთვის არის მიმაგრებული) 4x Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A სიჩქარის კონტროლერი 4x პროპელერები (ეს უნდა იყოს საკმარისად დიდი თქვენი ოთხკუთხედის ასამაღლებლად) 2x nRF24L01+ გადამცემი 1x IMU BNO055 პროგრამული მოთხოვნები Xilinx Vivado 2016.2. შენიშვნა: ზემოთ მოყვანილი ძრავები არ არის ერთადერთი ძრავა, რომლის გამოყენებაც შესაძლებელია. ისინი მხოლოდ ის არიან, ვინც ამ პროექტში გამოიყენება. იგივე ეხება დანარჩენ ნაწილებს და პროგრამული უზრუნველყოფის მოთხოვნებს. ვიმედოვნებთ, რომ ეს არის უთქმელი გაგება ამ ინსტრუქციის წაკითხვისას.

ნაბიჯი 1: გაუშვით PWM მოდული

დაპროგრამეთ მარტივი SystemVerilog (ან სხვა HDL პროგრამა), რათა დაარეგისტრიროთ HI და Throle throttle შესასვლელი კონცენტრატორების გამოყენებით. შეაერთეთ PWM ერთი ESC და Turnigy Brushless Motor– ით. შეამოწმეთ შემდეგი ფაილები იმის გასარკვევად, თუ როგორ უნდა დაკალიბრდეთ ESC. საბოლოო კოდი თან ერთვის მე –5 ნაბიჯს PWM მოდულისთვის. PWM დამწყები თან ერთვის ამ ნაბიჯს ESC Datasheet: Turnigy ESC Datasheet PDF (რასაც ყურადღება უნდა მიაქციოთ არის სხვადასხვა რეჟიმი, რომელიც შეგიძლიათ აირჩიოთ HI და LO throttle გამოყენებით)

ნაბიჯი 2: შექმენით ბლოკის დიზაინი

ბლოკის დიზაინის შექმნა ორმაგად დააწკაპუნეთ ახლად წარმოქმნილ ბლოკზე აქ გადმოწერილი XPS პარამეტრები: https://github.com/ucb-bar/fpga-zynq/tree/master/z… პარამეტრების შეცვლა PS-PL კონფიგურაცია M AXI GP0 ინტერფეისი პერიფერიული I/ O ქინძისთავები Ethernet 0 USB 0 SD 0 SPI 1 UART 1 I2C 0 TTC0 SWDT GPI MIOMIO კონფიგურაციის ქრონომეტრი 0 WatchdogClock კონფიგურაცია FCLK_CLK0 და დააყენეთ სიხშირე 100 MHz გააკეთეთ I2C და SPI გარე შეაერთეთ FCLK_CLK0 M_AXI_GP0_ACLK გაუშვით ავტომატიკა"

ნაბიჯი 3: IMU დაკალიბრება

IMU- ს დაკალიბრება
IMU- ს დაკალიბრება

BNO055 გადამცემი იყენებს I2C კომუნიკაციას. (დამწყებთათვის რეკომენდებული კითხვა: https://learn.sparkfun.com/tutorials/i2c) დრაივერი IMU– ს გასაშვებად არის აქ: https://github.com/BoschSensortec/BNO055_driver BNO055. ამის გამო, ოპერაციის აუცილებელი რეჟიმი არის IMU რეჟიმი. ეს იცვლება ორობითი რიცხვის xxxx1000 ჩაწერით OPR_MODE რეგისტრში, სადაც 'x' არის 'არ მაინტერესებს'. დააყენეთ ეს ბიტები 0 -ზე.

ნაბიჯი 4: უკაბელო გადამცემის ინტეგრირება

ინტეგრირება უკაბელო გადამცემი
ინტეგრირება უკაბელო გადამცემი
ინტეგრირება უკაბელო გადამცემი
ინტეგრირება უკაბელო გადამცემი

უკაბელო გადამცემი იყენებს SPI კომუნიკაციას. მიმაგრებულია სპეციფიკაციის ფურცელი nRF24L01+ კარგი გაკვეთილი nrf24l01+ მაგრამ arduino– ით:

ნაბიჯი 5: პროგრამირება Zybo FPGA

მიმოხილვა ეს მოდულები არის საბოლოო მოდულები, რომლებიც გამოიყენება კვადროპტოპერის PWM კონტროლისთვის. motor_ctl_wrapper.sv მიზანი: შეფუთვა იღებს ეილერის კუთხეებს და გროლის პროცენტს. გამოდის კომპენსაციური PWM, რომელიც საშუალებას მისცემს ოთხკუთხედს სტაბილიზაცია. ეს ბლოკი არსებობს, რადგან ოთხკუთხედები მიდრეკილნი არიან ჰაერის დარღვევებისკენ და საჭიროებენ რაიმე სახის სტაბილიზაციას. ჩვენ ვიყენებთ ეულერის კუთხეებს, რადგან არ ვგეგმავთ გადაბრუნებას ან მძიმე კუთხეებს, რამაც შეიძლება გამოიწვიოს გიმბალის ჩაკეტვა. შეყვანა: მონაცემთა 25-ბიტიანი ავტობუსი CTL_IN = {[24] GO, [23:16] ეულერ X, [15: 8] Euler Y, [7: 0] Throttle Percentage}, Clock (clk), Synchronous CLR (sclr) Output: Motor 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle პროცენტული PWM Throttle პროცენტული PWM არის გამოიყენება ESC– ის ინიციალიზაციისთვის, რომელსაც სურს PWM– ის სუფთა 30% - 70% დიაპაზონი, არა ის ძრავის 1-4 PWM მნიშვნელობებიდან. გაფართოებული - Vivado Zynq IP ბლოკები: 8 დამატება (LUT) 3 გამოკლება (LUT) 5 მულტიპლიკატორები (ბლოკის მეხსიერება (BRAM)) clock_div.sv (AKA pwm_fsm.sv) მიზანი: აკონტროლეთ აპარატურა, მათ შორის MUX, PWM გამომავალი და sclr for motor_ctl_wrapper. ნებისმიერი სასრული მდგომარეობის მანქანა (FSM) გამოიყენება ერთ რამეში: სხვა ტექნიკის კონტროლი. ამ მიზნიდან რაიმე დიდმა გადახრამ შეიძლება გამოიწვიოს სავარაუდო FSM მიიღოს სხვადასხვა ტიპის მოდული (მრიცხველი, დამატება და სხვა). Pwm_fsm– ს აქვს 3 მდგომარეობა: INIT, CLR და FLYINIT: მიეცით მომხმარებელს საშუალება ESC– ის პროგრამირების სასურველი. აგზავნის არჩეულ სიგნალს mux_pwm- ზე, რომელიც გამოდის პირდაპირ PWM ყველა ძრავაზე. მარყუჟები დაუბრუნდება საკუთარ თავს GO == '1'. CLR: მონაცემების გასუფთავება motor_ctl_wrapper- ში და pwm out მოდულში. FLY: სამუდამოდ მარყუჟი quadcopter– ის სტაბილიზაციისთვის (თუ ჩვენ არ გადატვირთავთ). აგზავნის კომპენსირებულ PWM- ს mux_pwm- ის საშუალებით. შეყვანა: GO, RESET, clkOputput: RST სხვა მოდულის გადატვირთვისთვის, FullFlight სიგნალის FLY რეჟიმში, პერიოდი ატმოსფეროს გაშვებისთვის atmux_pwm.sv მიზანი: შეყვანა: გამომავალი: PWM ოთხივე motorspwm.sv მიზანი: შეყვანა::

გირჩევთ: