Öz multikopterinizi, dronunuzu və ya RPAS (Uzaqdan İdarə olunan Təyyarə Sistemi) yaratmaq və proqramlaşdırmağı heç düşünmüsünüzmü? Mən etdim və bu, öz oktokopter RPAS/dronu necə qurduğum və proqramlaşdırdığımın ümumiləşdirilmiş hekayəsini sizinlə bölüşəcəyəm. 6 yanvar 2014-cü il 6 yanvar 2014-cü ildə qış layihəsi olaraq başladığım layihədir. RC helikopterlərimi və çətin gələn multikopterləri uçurmaq üçün çox soyuq idi. Mən Arduinoda yeniyəm və beynimdə bu qəribə sual yarandı: Arduino kvadrokopter uçuş kontrollerini heç bir hazır proqram təminatından istifadə etmədən özüm edə bilərəmmi? Beləliklə yolculuğuma başladım və 2 fevral 2014-cü ildə ilk quadcopter-i uçurdum. 2 fevral 2014-cü il https://www.youtube.com/watch?v=lW7NbzqJ_5w Bu videoda Arduino əsaslı uçuş nəzarətçisi (kontrolleri) kvadrokopteri sabitləşdirmək üçün yalnız giroskopdan istifadə edir. Proqram təminatı əsasən YMFC-3D proqramı ilə eynidir. O, pitch,roll və yaw üçün üç PID nəzarətçisindən istifadə edir. PID nəzarətçi üçün təyin nöqtələri(setpoint), ötürücü/qəbuledici siqnallarıdır. Proses dəyişəni giroskop tərəfindən verilir və PID nəzarətçisinin çıxışı kvadrokopterin mühərriklərini idarə etmək üçün istifadə olunur. Bəs avtomatik səviyyə (auto level) funksiyası olmayan multirotor nədir? Bu o deməkdir ki, pilot multirotor səviyyəsini saxlamaq məcburiyyətində deyil. Bu olduqca böyük problem idi, çünki giroskopu və akselerometri birləşdirən alqoritm ilk baxışdan olduqca mürəkkəbdir. Qısaca Ətalət Ölçmə qurğusu(Inertia Measurement Units) və ya IMU haqqında məqalələri oxuduqdan sonra Kalman filtrləri haqqında çox danışıldığını gördüm. Kalman filtrlərini öyrəndikdən və bütün dəlilikləri anlamağa çalışdıqdan sonra cəsarətlə qərara gəldim ki, multikopter üçün IMU düzəltməyin daha asan yolu olmalıdır. Bir neçə yuxusuz gecədən və başımı divara çırpdıqdan sonra başa düşdüm! Mən bunu anlamaq üçün MultiWii və ya Aeroquad kimi başqa kodlardan istifadə etmədiyimi nəzərə alın. Mən sadəcə saatlarla giroskop və akselerometr məlumatlarına baxdım və düzgün alqoritmi əldə etmək üçün bir neçə yol sınadım. 8 fevral 2014-cü ildə işə başladım! Çox kobud və iyrənc kod idi, amma videoda gördüyünüz kimi prinsip işləyir. 8 fevral 2014-cü il https://www.youtube.com/watch?v=my4tZY-oX6w Və sonra çətin hissənin bitdiyinə dair yanlış fərziyyə etdim. Oğlum, səhv etmişdim. Üzərində işlədiyim növbəti addım hündürlükdə saxlama (altitude hold) funksiyası idi ki, qaz tənzimləyicisi buraxılanda kopter eyni hündürlükdə qalsın. Bunu etmək üçün Measurement Specialties-dən MS5607 barometrindən istifadə etdim. Bu təzyiq sensoru 20 sm hündürlük fərqlərini aşkar etməyə qadirdir. 22 fevral 2014-cü ildə mən yüksəklik tutma funksiyası ilə ilk uçuşu etdim. Videoda gördüyünüz kimi kopter bir qədər yuxarı və aşağı hərəkət edir. Beləliklə, təzyiq sensoru məlumatlarını nəzərdən keçirməyin və kopteri eyni hündürlükdə saxlayacaq yeni bir alqoritm hazırlamağın vaxtı gəldi. Və 20 mart 2014-cü ildə mən onu işə saldım. Hündürlükdə saxlama funksiyası mükəmməl yerinə yetirildi. 20 mart 2014-cü il https://www.youtube.com/watch?v=oc8Gv61bfvU Kopter sabit durduğuna görə və hündürlüyünü qoruduğuna görə, indi növbəti böyük addımın, avtonom uçuşun vaxtıdır. Bunun üçün kvadrokopter öz 3D mövqeyini bilməlidir. Buna nail olmaq üçün əlavə etdiyim əlavə sensorlar kompas və GPS moduludur. Bu sensorlar vasitəsilə kvadrokopter öz enlik və uzunluq mövqeyini bilir. O, həmçinin cari enlik və uzunluq mövqeyini saxlamaq üçün düzgün istiqaməti bilir. Bu sadə səslənir, lakin bunu etmək olduqca çətindir. Çox yaxşı GPS modulu prosesi həqiqətən yaxşılaşdırır. Mən LS20031 GPS modulu ilə başladım və ilk uğurlu avtonom uçuşumu 19 aprel 2014-cü ildə etdim. 19 aprel 2014-cü il https://www.youtube.com/watch?v=PCK-O_R-cqU Yaxşı, avtonom kvadrokopter ortaya çıxdı, lakin mövqe tutma (position hold) nəticələri o qədər də yaxşı deyildi. Beləliklə, mövqe tutma funksiyasının dəqiqliyini artıra biləcəyimi görmək üçün mən başqa bir GPS modulunu, u-blox LEA-6S-ni sınadım. Və bu mümkün oldu! Bəzi alqoritm problemlərindən və çoxlu sınaq uçuşlarından sonra nəhayət ki, axtardığım mövqe tutma nəticələrini əldə etdim. Beləliklə, növbəti addımın vaxtı gəldi: kopteri əvvəlcədən təyin edilmiş mövqeyə və ya yol nöqtəsinə göndərmək. 16 iyun 2014-cü il tarixində kvadrokopter və telemetriya ötürücüsünün kodunun tətbiqini başa çatdırdım. Telemetriya qutusunun köməyi ilə indi kvadrokopteri istədiyim mövqeyə göndərə bilərəm. Daha güclü külək şəraitində belə. 16 iyun 2014-cü il https://www.youtube.com/watch?v=_bX65HLzsHg İndi siz düşünə bilərsiniz: bu qədər, işiniz bitdi. Yaxşı…. amma bu tam deyil. Mən yalnız əsas prinsipləri işlədim və aparat hələ də qarışıqdır. Sonrakı aylarda proqram təminatına yenidən düzəlişlər etdim. Bəzilərinin artıq bildiyi kimi, Arduino kodu istifadə üçün asandır, lakin icra sürəti və proqram ölçüsünə gəldikdə dəhşətli yavaş və həcmlidir. Beləliklə, Arduino proqramını çıxardım və bütün proqram təminatını özüm yazdım. Hətta taymerlər, serial çıxışı və sıfırdan yenidən qurulan Wire kitabxanasını belə. Bir neçə aylıq proqramlaşdırma və sınaqdan sonra kodu bitirdim və daha çox funksiya əlavə etdim: Evə qayıt (Return to home)Ötürücü itdikdə evə qayıtma (Return to home on transmitter lost)Futaba S.Bus dəstəyi (Futaba S.Bus support)Yol nöqtələrini saxlamaq və yükləmək (Store and upload waypoints)GPS kruiz (GPS saxlama rejimində uçmaq) (GPS cruise (fly while in GPS hold mode))Gimbal siqnal dəstəyi (Gimbal signal support) Bu, layihə zamanı etdiyim ən çox vaxt aparan hərəkət idi. Amma buna dəyərdi. İndi mənim proqram ölçüsü cəmi 28KB və real yeniləmə tezliyi 250Hz olan tam işləyən uçuş nəzarətçim var idi. İndi bunun mümkün olduğunu bildiyim üçün növbəti addımı atdım: aparatı yenidən qurmaq. 30 dekabr 2014-cü il Arzularım siyahısında olan növbəti şey: Arduinodan qurtulmaq. Bunda səhv bir şey yoxdur və etdiyim bütün sınaq uçuşlarında heyrətamiz dərəcədə yaxşı çıxış etdi. Amma əvvəlki videoda gördüyünüz kimi bütün hissələri gövdəyə yığdım. Bütün dəst Velcro qayışlarla birlikdə tutulur. Bunu etmək üçün çox təmiz bir yol deyil. Beləliklə, uçuş nəzarətçisi üçün öz çap dövrə kartımı və ya PCB dizayn etməyə başladım. Mən onu evdə əllə lehimləmək üçün deşikli və bir üzlü PCB ilə başladım. Və təxmin etdiyiniz kimi, bu yaxşı fikir deyildi. Çox interferensiya oldu və kart etibarsız idi. Beləliklə, başladığım yerə qayıtdım. Böyük sıçrayış edərək iki qatlı lövhə hazırladım. Bu peşəkar bir şirkət tərəfindən hazırlanmışdır və nəticə heyrətamiz idi. İndi yalnız smd hissələrini lehimləməyi öyrənməli idim. 10 iyul 2015-ci il https://www.youtube.com/watch?v=9KYkznAas7Q Lövhə hazırdır və hər şey cazibə kimi işləyir. Və siz onu dəvət etdiniz: növbəti addımın vaxtı gəldi. Motor və ESC ehtiyatı olduğu üçün oktokopter qurmaq istəyirdim. Bu yolla bəzi daha ağır kameraları və gimbalları daşımaq da mümkündür. Mən artıq PCB-də oktokopter mühərrikləri üçün səkkiz çıxış etdim. Oktokopter üçün hissələri əl ilə hazırlamaq çox vaxt aparır və səhvlər baş verir. Beləliklə, mən Proxxon mikro frezemi, cnc versiyasına çevirdim. Beləliklə,bu şəkildə oktokopterin boom'larını səhvsiz hazırlamaq daha asandır. https://www.youtube.com/watch?v=iVYIXzO6UtI Eyni freze dəzgahında üst və alt orta plitələri düzəltdim. Qalan hissələr fretsaw və batareyalı kompakt drell ilə hazırlanmışdır. Və 8 oktyabr 2015-ci ildə oktokopter ilk dəfə uçdu. 8 oktyabr 2015-ci il https://www.youtube.com/watch?v=G52LtnBRG5w Videoda gördüyünüz kimi oktokopter həqiqətən sabitdir və video görüntülər heç də pis deyil. Saatlarla uçuşdan sonra nəticələrdən çox razı qaldım. Bütün bunların müvəqqəti qış layihəsi kimi başladığına inanmaq çətindir. Boyalı kontrplakın (plywood) mənfi tərəfi əlbəttə ki, çəkidir. Multikopterlər üçün daha çox istifadə edilən yüngül material karbon lifidir. Karbon lifinin dezavantajı onun emal edilməsinin çox çətin olmasıdır. Beləliklə, bir az fikirləşdikdən sonra bir CNC router aldım və karbon lif hissələrini özüm hazırlamağı öyrəndim. Və bu çox böyük uğur idi. Saatlarla aparılan mühəndislik və hissələri kəsdikdən sonra yeni çərçivə hazır oldu. 19 fevral 2016-cı il https://www.youtube.com/watch?v=8A23UG0VPpo İndi uyğun bir çərçivə hazırladığım üçün bundan sonra nə edəcəyimi gözləməyin vaxtı gəldi. Mən bura qədər gəldim, niyə RPAS-ın uçuşa yararlılıq testindən keçə biləcək bir multikopter yaratmağa çalışmayaq? Bu əyləncəli olmalıdır. Ancaq gözlənildiyi kimi, düşünə biləcəyinizdən bir az daha cəlbedicidir. Ancaq sadədən başlayaq. Uzaqdan idarə olunan təyyarə sistemləri üçün qiymətləndirmə spesifikasiyasında aydın olur ki, uyğun cərəyan ölçmə sistemi lazımdır. Beləliklə, hər esc cərəyanını ölçə bilən yeni çap dövrə lövhəsi hazırlamağa başladım. Əksər ESC-lərin cərəyan məhdudlaşdırıcı funksiyası var. Ümumi problem ondan ibarətdir ki, əksər hallarda ESC-lərə həddən artıq dəyər verilir(overrated). Onlar daha çox cərəyan təmin edə və mühərriki həddindən artıq qızdırmaq qabiliyyətinə malikdirlər. Beləliklə, mexaniki nasazlıq halında cərəyan yavaş-yavaş motorun maksimum nominal cərəyanından yuxarı qalxacaq. Bu,onun həddindən artıq istiləşməsinə səbəb olur. İndi qısaqapanma üçün böyük bir şans var. Bu yeni lövhə ilə uçuş nəzarətçisi mühərriki qızmadan əvvəl söndürə bilir. Buna daaha pisin qarşısını almaq deyək. Eyni şey sənaye mühərrikləri ilə də edilir. Daha əvvəl deyildiyi kimi, oktokopter ESC/motor ehtiyatına malikdir. Qısaqapanmanın qarşısını almaq üçün uçuş zamanı mühərriki söndürmək daha təhlükəsizdir. Oktokopter uçmağa davam edir və pilot hələ də təhlükəsiz yerə enə bilir. Bunu artıq mövcud olan akkumulyator gərginliyi ilə birləşdirsək, imkanlar sonsuzdur. Məsələn, tam uçuş zamanı bir mühərrik digər mühərriklərdən əhəmiyyətli dərəcədə daha çox enerji sərf etdikdə pilot xəbərdarlıq alır. Sürətli təmir yoxlaması gələcəkdə ciddi problemlərin qarşısını ala bilər. 17 mart 2016-cı il https://www.youtube.com/watch?v=X1ptGA1JSTc https://www.youtube.com/watch?v=pBCLtcFwFJw ESC interfeys lövhəsi hazırdır və gözlənildiyi kimi işləyir. Bu PCB daha böyük inkişafın (development) bir hissəsi olduğu üçün onu hələ quraşdıra bilmirəm. Mənim uçuş nəzarətçim I2C vasitəsilə əlaqə saxlayır, halbuki bu lövhənin SPI rabitəsinə ehtiyacı var. Yenidən dizayn edəcəyim növbəti lövhə uçuş nəzarətçisidir. Reflow hot plate yaxşı işləyir və mən indi PCB-də , kiçik LGA sensorları ilə birbaşa PCB dizayn edə bilərəm. Exciting challenge! Bizimlə qalın! Mövzuya dair suallar 01 - Hansı sensorlardan istifadə edirsiniz? Uçuş nəzarətçisi üçün 5 sensordan istifadə edirəm: STMicroelectronics-dən L3GD20H gyroSTMicroelectronics-dən LIS331DLH akselerometrÖlçmə peşəkarlarından MS5637 barometriHoneywell-dən HMC5883L kompasıublox-dan LEA-6S GPSRabitə I2C / UART vasitəsilə həyata keçirilir və giroskop, akselerometr və kompas üçün yeniləmə dərəcəsi 250Hz-dir. Qalan sensorlar mümkün qədər tez və ya lazım olduqda sorğulanır. 02 - Ən çətin nasazlıq / problem nə idi? Bu, şübhəsiz ki, məni 6 həftədən çox məşğul saxlayan GPS UART rabitə problemi idi. Mən artıq ublox GPS modulu ilə çoxlu uçuşlar etmişəm və hər şey yaxşı və etibarlı işləyirdi. Ancaq yayda qəfil bir anda LEA-6S ublox modulu ilə əlaqə xətası aldım. Səhər hər şey yaxşı işləyirdi, amma günortadan sonra xəbərləşmədə səhvlər var idi. Mənim arxa bağçamda hər şey yaxşı işlədi. Bu, əlbəttə ki, çox qəribə idi, çünki əvvəllər hər şey yaxşı işləyirdi və mən kodda heç nəyi dəyişmədim. Elektromaqnit müdaxiləsi və ya qısaca EMI olduğu ilk düşüncələrim . Lakin çoxsaylı sınaqlardan sonra bu problem olmadı. Bəlkə gündüz daha yüksək temperatur? Amma soyuq bir gündən sonra belə qənaətə gəldim ki, temperaturun bununla heç bir əlaqəsi yoxdur. Xoşbəxtlikdən hələ də səhər uça və sınaqdan keçirə bildim, amma bu həqiqətən qəribə problem məni narahat etməyə davam etdi. Nəhayət, GPS məlumat axınını yoxlamaq üçün seriyal qeyd cihazı qurmaq qərarına gəldim. Və bu sıçrayış idi! Serial məlumatlarında "txbuf alloc" mesajını tapdım. Ublox modulunun məlumat vərəqini oxuduqdan sonra bildim ki, bu mesaj məlumatların vaxtında göndərilə bilməyəcəyi anlamına gəlir. Uzun sözün qısası, GPS modulu 57.600bit/s ilə müəyyən miqdarda məlumat göndərməyə çalışır. Səhər saatlarında yalnız 9 peyk görünürdü və məlumatlar normal olaraq göndərildi. Günortadan sonra peyklərin sayı 12 idi. 3 əlavə peykin istehsal etdiyi məlumat, məlumatların miqdarını vaxtında göndərilməsini çox etdi. Bu da rabitə xətası mesajımı tetikləyən txbuf alloc mesajı ilə nəticələndi. Bu layihəyə bağlı bütün media faylları https://www.youtube.com/watch?v=lW7NbzqJ_5w 1-ci hissə: Yalnız giroskopla ilk uçuş https://www.youtube.com/watch?v=my4tZY-oX6w 2-ci hissə: avtomatik səviyyə saxlama https://www.youtube.com/watch?v=XrY3LhGf4no 3-cü hissə: Hündürlüyə nəzarət https://www.youtube.com/watch?v=oc8Gv61bfvU 4-cü hissə: Yeni hündürlüyə nəzarət alqoritmləri https://www.youtube.com/watch?v=PCK-O_R-cqU 5-ci hissə: Birinci avtonomuçuş https://www.youtube.com/watch?v=5iKmu6w80F4 Hissə 6: Heading lock funksiyasının nümayişi https://www.youtube.com/watch?v=YxOp8qBPEhI 7-ci hissə: Uçuş xüsusiyyətləri haqqında qısa təəssürat https://www.youtube.com/watch?v=_0TUCWGuIew 8-ci hissə: GPS saxlama funksiyasını təkmilləşdirməyə çalışırıq https://www.youtube.com/watch?v=-B_vrDAMb-c 9-cu hissə: LS20031 GPS ilə ən yaxşı səy https://www.youtube.com/watch?v=_bX65HLzsHg Hissə 10: Çox güclü küləkdə ublox LEA-6S GPS https://www.youtube.com/watch?v=YCF_V95XpGU 11-ci hissə: GPS hold və evə qayıtma https://www.youtube.com/watch?v=G52LtnBRG5w 12-ci hissə: Oktokopterin qurulması və ilk uçuşu https://www.youtube.com/watch?v=8A23UG0VPpo 13-cü hissə: Oktokopter karbon lifinin təkmilləşdirilməsi Mənbə: brokking.net