Мазмуну:

Quadcopter Zybo Zynq-7000 Board колдонуу: 5 кадам
Quadcopter Zybo Zynq-7000 Board колдонуу: 5 кадам

Video: Quadcopter Zybo Zynq-7000 Board колдонуу: 5 кадам

Video: Quadcopter Zybo Zynq-7000 Board колдонуу: 5 кадам
Video: 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 (lasercutting үчүн Adobe Illustrator файлы тиркелет) 4x Turnigy D3530/14 1100KV Brushless Motors 4x Turnigy ESC Basic -18A Speed Controller 4x пропеллерлери (булар сиздин квадрокоптериңизди көтөрүү үчүн жетишерлик чоң болушу керек) 2x nRF24L01+ transceiver 1x IMU BNO055 программалык камсыздоого талаптар Алар бул долбоордо колдонулган адамдар. Калган бөлүктөргө жана программалык камсыздоого карата талаптар да ошондой. Бул Нускаманы окуп жатканда, бул айтылбаган түшүнүк деп үмүттөнөбүз.

1 -кадам: PWM модулун иштетип алыңыз

Программа жөнөкөй SystemVerilog (же башка HDL программасы) HI дроссель жана LO дроссель киргизүү өчүргүчтөрдү колдонуу үчүн. PWMди бир ESC жана Turnigy Brushless мотору менен илиниз. ESCти калибрлөөнү билүү үчүн төмөнкү файлдарды текшериңиз. Акыркы код PWM модулунун 5 -кадамында тиркелет. PWM стартери бул кадамга тиркелет

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 Configuration Timer 0 WatchdogClock Configuration FCLK_CLK0 жана жыштыкту 100 МГцке коюңуз

3 -кадам: ӨИКти калибрлөө

ӨИКти калибрлеңиз
ӨИКти калибрлеңиз

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 программасы

Бул модулдар quadcopter анын PWM башкаруу үчүн колдонулган акыркы модулдар болуп саналат. motor_ctl_wrapper.svМаксаты: ороочу Эйлер бурчтарын жана дроссель пайызын алат. Бул квадрокоптердин турукташуусуна мүмкүндүк бере турган компенсацияланган PWM чыгарат. Бул блок бар, анткени квадрокоптерлер абанын бузулушуна жакын жана кандайдыр бир турукташтырууну талап кылат. Биз Эйлер бурчтарын колдонуп жатабыз, анткени биз Gimbal Lockке алып келиши мүмкүн болгон оодаруу же оор бурчтарды пландаштырбайбыз. Киргизүү: 25 биттик маалымат CTL_IN = {[24] GO, [23:16] Эйлер X, [15: 8] Euler Y, [7: 0] Throttle Пайыз}, Саат (clk), Синхрондуу CLR (sclr) Чыгуу: Мотор 1 PWM, Motor 2 PWM, Motor 3 PWM, Motor 4 PWM, Throttle Пайыздык PWM Throttle Пайыздык PWM Мотор 1-4 PWM баалуулуктарынан эмес, 30% - 70% PWM диапазонуна ээ болууну каалаган ESCти инициализациялоо үчүн колдонулат. Мультипликаторлор (Block Memory (BRAM)) clock_div.sv (AKA pwm_fsm.sv) Максаты: MUX, PWM чыгаруу жана sclr менен кошо motor_ctl_wrapper үчүн жабдууну көзөмөлдөө. Ар кандай чектүү мамлекеттик машина (FSM) бир нерсе үчүн колдонулат: башка жабдууларды көзөмөлдөө. Бул максаттан ар кандай чоң четтөө болжолдонгон FSMдин башка типтеги модулдун (эсептегич, сумма ж. Б.) Түрүн пайда болушуна алып келиши мүмкүн. каалаган. Бардык моторлорго түз PWM чыгаруучу mux_pwmге тандалган сигнал жөнөтөт. GO == '1'. CLR: motor_ctl_wrapper жана pwm out модулундагы маалыматтарды тазалоо. Mux_pwm аркылуу киргизилген PWM жөнөтөт:

Сунушталууда: