Turinys:

RC plokštumos aukščio matuoklis (suderinamas su „Spektrum“telemetrija): 7 žingsniai
RC plokštumos aukščio matuoklis (suderinamas su „Spektrum“telemetrija): 7 žingsniai

Video: RC plokštumos aukščio matuoklis (suderinamas su „Spektrum“telemetrija): 7 žingsniai

Video: RC plokštumos aukščio matuoklis (suderinamas su „Spektrum“telemetrija): 7 žingsniai
Video: Радиоуправляемый самолет Dornier 228 своими руками 2024, Lapkritis
Anonim
RC plokštumos aukščio matuoklis (suderinamas su „Spektrum“telemetrija)
RC plokštumos aukščio matuoklis (suderinamas su „Spektrum“telemetrija)

Aš padariau šį aukščio matuoklį, kad pilotas žinotų, jog JAV RC lėktuvuose jie yra žemiau 400 pėdų ribos. Mano draugas buvo susirūpinęs, nes negalėjo tiksliai pasakyti, kad visada buvo mažesnis nei 400 pėdų, ir norėjo papildomo patikinimo, kurį suteiks jutiklis su telemetrijos duomenimis. Taip, jūs galite nusipirkti jutiklį iš „Spektrum“, tačiau galite pastatyti šį projektą už mažiau nei 20 USD naudodami pertraukimo plokštes (kurios jau yra išpūstos). Jei jau turite „J-link“programuotoją, galite tai sukurti pasirinktinėje lentoje už kelis dolerius. Jau nekalbant apie tai, kai suprasite Xbus protokolą, galite sukurti bet kurį kitą palaikomą jutiklį! Bet aš tiesiog apimsiu aukščiamatį šiame projekte …

Dalių sąrašas:

  • Šiam projektui naudojau „Seeeduino XIAO“mikrovaldiklio plokštę, nes ji yra maža, naudoja M0 procesorių, kuris turi daug energijos šiam projektui, turi ir I2C, ir SPI, paruoštus išeiti iš dėžutės, ir naudoja 3,3 V logiką, todėl lygis nekeičiamas reikalaujama.

    https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…

  • Oro slėgio jutimui iš „Adafruit“įsigijau BMP388 pertraukimo plokštę. Plokštėje yra ir I2C, ir SPI, ir ji gali veikti 3.3v arba 5v logika.

    https://www.adafruit.com/product/3966

  • Protoboardas grandinei prijungti
  • Lituoklis/lituoklis
  • Vyrų/moterų kaiščių antgaliai, kad galėčiau lengvai atjungti jutiklį/mikrovaldiklį.
  • Mažas mygtukas. Aš naudoju tai norėdamas iš naujo nustatyti pradinį aukštį.
  • 10k rezistorius mygtukui nuleisti.
  • JST-XH 4 kontaktų jungtis, skirta prijungti prie „Spektrum“imtuvo telemetrijos prievado
  • „SEGGER J-Link EDU“programuotojas, norintis blykstelėti M0 be įkrovos įkėlimo programos.

    https://www.adafruit.com/product/3571

  • „Adafruit SWD“10 kontaktų pertraukimo plokštė

    www.adafruit.com/product/2743

Prekės

  • Aš taip pat 3D atspausdinau nedidelį savo aukščio matuoklio korpusą, tačiau to nereikia.
  • Osciloskopas- jei neturite, labai rekomenduoju šį:

    https://store.digilentinc.com/analog-discovery-2-1…

1 žingsnis: išmokite „Spektrum“telemetrijos protokolą

Sužinokite „Spektrum“telemetrijos protokolą
Sužinokite „Spektrum“telemetrijos protokolą
Sužinokite „Spektrum“telemetrijos protokolą
Sužinokite „Spektrum“telemetrijos protokolą
Sužinokite „Spektrum“telemetrijos protokolą
Sužinokite „Spektrum“telemetrijos protokolą

Tai dažniausiai man padarė Raymondas Domingo. Jie jau sukūrė aukščiamatį, suderinamą su „Spektrum“, todėl sekti šiuo šaltinio kodu tikrai padėjo. „Spektrum“telemetrijos duomenų lapas užpildė likusias spragas. Išmatavus imtuvo duomenų lygius, paaiškėjo, kad man reikės 3.3V logikos.

Imtuvas siunčia įrenginio adresą ir tikisi 16 baitų atsakymo. Duomenų lape rodomos visų įvairių jutiklių struktūros. Net jei struktūra nėra 16 baitų ilgio, imtuvas kiekvieną kartą tikisi 16 baitų.

„Spektrum“duomenų lapas:

www.spektrumrc.com/ProdInfo/Files/SPM_Tele…

Raymondo Domingo projektas:

www.aerobtec.com/download/altisSpektrumInte…

2 veiksmas: pasirinkite Aparatūra

Pasirinkite Aparatūra
Pasirinkite Aparatūra
Pasirinkite Aparatūra
Pasirinkite Aparatūra
Pasirinkite Aparatūra
Pasirinkite Aparatūra

Slėgio jutimui naudoju „Adafruit“BMP388 pertraukimo lentą. Išsiveržimas suteikia I2C ir SPI pertraukas ir veikia pagal 3.3v arba 5v logiką. „Adafruit“visada daro nuostabų darbą su savo pertraukimo lentomis, todėl aš jį nusipirkau. Vietoj to aš naudoju „DFRobot Gravity BMP388“plokštę, nes mano „Adafruit“plokštė jau buvo naudojama.

Atsižvelgiant į tai, kad pagrindinis I2C įrenginys naudoja 3,3 V logiką, man reikėjo 3,3 V mikrovaldiklio ir norėjau, kad jis būtų mažas. Aš ketinau naudoti „Adafruit Trinket M0“, tačiau jie yra palyginti brangūs ir neturi labai daug kaiščių. Tada radau „Seeeduino XIAO“plokštę. Tai M0 plokštė su paruoštu naudoti I2C ir SPI su USB-C jungtimi. Be to, jis tikrai mažas! Apskritai man labai patinka ši lenta (nors lėto paleidimo kristalas mane suprato amžinai).

„Spektrum“naudoja JST-XH dydžio 4 kontaktų kištukinę jungtį imtuve „Xbus“prievadui, kurį mes panaudosime. Aš naudoju 4 kontaktų JST-XH kištuką ant aukščio matuoklio ir jis puikiai veikė.

3 žingsnis: rašykite programinę įrangą

Visam kodui parašyti naudojau „Arduino IDE“. Aš nukopijavau „Spektrum“telemetrijos protokolą iš jų duomenų lapo ir pridėjau jį prie savo „Arduino“bibliotekos. Kadangi „Adafruit“visada turi gražių bibliotekų, skirtų jų atsiradimui, aš naudoju jų BMP3XX biblioteką BMP388 jutikliui.

Pagrindinės mano dizaino mintys yra šios:

  • Nustatykite I2C, kad jis veiktų kaip kliento įrenginys ir reaguotų į „Spektrum“aukščio matuoklio adresą (0x12).
  • Perskaitykite BMP388 barometrą per SPI.
  • Išsaugokite aukščio duomenis dviejuose skirtinguose buferiuose, kad imtuvo I2C užklausa nesugadintų duomenų, o paimdami duomenis pakaitomis keiskite abu buferius. Tai užtikrina, kad gavėjui siunčiami duomenys visada būtų išsamūs.
  • Naudojamas mygtukas altimetro nuliui nustatyti.

Norėdami gauti daugiau informacijos ir kodo analizės, žiūrėkite vaizdo įrašą.

4 žingsnis: prijunkite grandinę

Sujunkite grandinę
Sujunkite grandinę
Sujunkite grandinę
Sujunkite grandinę
Sujunkite grandinę
Sujunkite grandinę
Sujunkite grandinę
Sujunkite grandinę

Aš naudoju protoboard, bet jei norite skirti laiko pagal užsakymą frezuotai plokštei, galite padaryti grandinę daug švaresnę.

JST-XH jungtį prijungiau prie XIAO I2C kaiščių. Kadangi imtuvas išleidžia 5 voltų telemetrijos magistralę, teigiamas iš magistralės atiteko XIAO VCC kaiščiui. Tokiu būdu borto 3.3v reguliatorius naudojamas maitinti BMP388 jutiklį.

5 veiksmas: kompiliuokite be įkrovos tvarkyklės

Kompiliuoti be įkrovos tvarkyklės
Kompiliuoti be įkrovos tvarkyklės
Kompiliuoti be įkrovos tvarkyklės
Kompiliuoti be įkrovos tvarkyklės
  1. Raskite savo boards.txt failą (bet kuriai lentai, kurią naudojate).

    Mano atveju, jis buvo čia: C: / Users / AppData / Local / Arduino15 paketai / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Nukopijuokite lentą ir pervardykite pirmąjį raktą, kad nurodytumėte versiją be įkrovos. Aš tiesiog pridėjau _nbl prie pradinio pavadinimo.

    • Senas: seeed_XIAO_m0
    • Nauja: seeed_XIAO_m0_nbl
  3. Pakeiskite.name reikšmę:

    • Senas: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Nauja: seeed_XIAO_m0_nbl.name = „Seeeduino XIAO No Bootloader“
  4. Pakeiskite nuorodą, kad ji mirksėtų be įkrovos tvarkyklės, pakeisdama kūrėjo ld scenarijų:

    • Senas: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Nauja: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Iš naujo paleiskite „Arduino IDE“.
  6. Lentų meniu pasirinkite naują plokštę „Seeeduino XIAO No Bootloader“.
  7. Pasirinkite „Eksportuoti sudarytą dvejetainį failą“
  8. Sukompiliuotas.bin failas bus jūsų „Arduino“projekto aplanke.

6 veiksmas: „Flash MCU“su „J-Link“

„Flash“MCU su „J-Link“
„Flash“MCU su „J-Link“
„Flash“MCU su „J-Link“
„Flash“MCU su „J-Link“
„Flash“MCU su „J-Link“
„Flash“MCU su „J-Link“

„Adafruit“turi fantastišką vadovą, kaip perprogramuoti įkrovos įkroviklį M0/M4 įrenginyje. Mūsų atveju norime atsikratyti įkrovos tvarkyklės, tačiau ji veikia taip pat.

learn.adafruit.com/how-to-program-samd-boo…

Kai tai padarysite, negalėsite įkelti kodo per USB. Galite sekti aukščiau pateiktą vadovą, kad įkrovos įkėlimo programą vėl įjungtumėte į įrenginį ir vėl įkeltumėte kodą per USB, kaip galėjote iš gamyklos.

„Adafruit“vadovas yra labai išsamus, tačiau tai yra pagrindiniai veiksmai:

  1. Lituokite jungiamuosius laidus prie XIAO plokštės galo.

    • „Adafruit“vadove nebuvo pasakyta, kad RST kaištį, esantį 2x5 pertraukos plokštėje, reikia prijungti prie „Adafruit“plokščių atstatymo kaiščio. Tačiau „XIAO“atveju turėjau prisijungti prie visų keturių plokštės gale esančių bloknotų.
    • VREF kaištį reikia prijungti prie XIAO 3.3v kaiščio. Tai nurodo derintojui, kad įrenginio logika yra 3.3v. Be jo, jei pasirinksite netinkamą parinktį, galite sugadinti mikrovaldiklį.
  2. Prijunkite trumpiklius prie „J-Link“.
  3. Įjunkite XIAO plokštę naudodami USB kabelį.
  4. Atidarykite „Atmel Studio“.
  5. Pasirinkite Įrankiai Įrenginio programavimas
  6. Pasirinkite savo M0 plokštę. Šiuo atveju ATSAMD21G18A
  7. Pasirinkite SWD.
  8. Perskaitykite konfigūraciją iš tikslo.
  9. Jei naudojate „EDU J-Link“, sutikite su naudojimo sąlygomis (jei laikotės naudojimo sąlygų).
  10. Patikrinkite, ar įtampos rodmenys viršutiniame dešiniajame kampe yra teisingi. Jei tai nėra 3.3v, galite sugadinti lentą!
  11. Išvalykite įkrovos apsaugos saugiklį (nustatykite įkrovos įkroviklio dydį į 0 baitų), tada pasirinkite programą.
  12. Atminties skiltyje pasirinkite savo sukurtą.bin arba.hex failą ir pasirinkite programą.

Problemų sprendimas:

Skaitydami įrenginio konfigūraciją, jei įvyksta įtampa už diapazono ribų, įsitikinkite, kad MCU yra prijungtas prie maitinimo šaltinio ir ar J-Link VREF kaištis prijungtas prie 3,3 voltų

7 žingsnis: kompiliuokite be išorinio kristalo

Kompiliuoti be išorinio kristalo
Kompiliuoti be išorinio kristalo

XIAO plokštė turi išorinį kristalą, kurio paleidimas užtrunka ilgai. „Spektrum“imtuvas atranda prietaisą telemetrinėje magistralėje 350 milisekundžių po įjungimo, todėl turime pasakyti kompiliatoriui, kad jis vietoj to naudotų vidinį osciliatorių, todėl paleidimas bus beveik akimirksniu.

  1. Raskite failą boards.txt, kurį pakeitėte anksčiau (taip, aš galėjau jus išsaugoti šį veiksmą anksčiau, bet man tai buvo mokymosi procesas)
  2. Prie eilutės seeed_XIAO_m0_nbl.build.extra_flags pridėkite „-DCRYSTALLESS“. Tai kompiliatoriui nurodys naudoti vidinį osciliatorių.
  3. Iš naujo sukompiliuokite kodą.
  4. Pakartotinai paleiskite MCU.
  5. Naudodami osciloskopą įsitikinkite, kad paleidimo laikas yra pakankamai greitas.

Kaip matote iš paveikslėlio, geltonas 1 kanalas yra maitinimo šaltinis. Žalsvai mėlynas kanalas 2 yra paruoštas kaištis mikrovaldiklyje. Praėjus maždaug 10 milisekundžių po įjungimo, mikrokontroleris pakelia aukštą kanalą, o tai rodo, kad jis yra sąrankos cikle. Kai sąranka atlikta, MCU yra užkoduotas taip, kad kaištis būtų žemas, o tai reiškia, kad prasideda pagrindinė kilpa. Apimtis rodo, kad sąranka trunka apie 3 milisekundes. Apskritai mikrovaldikliui reikia 13 milisekundžių po įjungimo, kad jis būtų paruoštas darbui.

Rekomenduojamas: