Satura rādītājs:

RC plaknes altimetrs (savietojams ar Spektrum telemetriju): 7 soļi
RC plaknes altimetrs (savietojams ar Spektrum telemetriju): 7 soļi

Video: RC plaknes altimetrs (savietojams ar Spektrum telemetriju): 7 soļi

Video: RC plaknes altimetrs (savietojams ar Spektrum telemetriju): 7 soļi
Video: Estes Model Rocket Altimeter test in my RC airplane. 2024, Novembris
Anonim
RC plaknes augstuma mērītājs (savietojams ar Spektrum telemetriju)
RC plaknes augstuma mērītājs (savietojams ar Spektrum telemetriju)

Es izveidoju šo altimetru, lai pilots zinātu, ka ASV RC lidmašīnās tie atrodas zem 400 pēdu ierobežojuma. Mans draugs bija noraizējies, jo nevarēja droši apgalvot, ka viņš vienmēr ir zem 400 pēdām, un vēlējās iegūt papildu pārliecību, ko nodrošinās sensors ar telemetrijas datiem. Jā, jūs varat iegādāties sensoru no Spektrum, taču jūs varat izveidot šo projektu par mazāk nekā 20 ASV dolāriem, izmantojot sadalīšanas dēļus (kuru cena jau ir palielināta). Ja jums jau ir J-link programmētājs, varat to izveidot uz pielāgotas tāfeles par dažiem dolāriem. Nemaz nerunājot, kad esat sapratis Xbus protokolu, varat izveidot jebkuru citu atbalstīto sensoru! Bet šajā projektā es tikai aptveršu altimetru …

Detaļu saraksts:

  • Šim projektam es izmantoju Seeeduino XIAO mikrokontrolleru plati, jo tas ir niecīgs, izmanto M0 procesoru, kuram ir pietiekami daudz jaudas šim projektam, tam ir gan I2C, gan SPI, kas ir gatavs iziet no kastes, un izmanto 3.3 V loģiku, tāpēc netiek veikta līmeņa maiņa nepieciešams.

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

  • Gaisa spiediena noteikšanai es no Adafruit iegādājos BMP388 sadalīšanas dēli. Plātnei ir izlauzti gan I2C, gan SPI, un tā var strādāt ar 3.3v vai 5v loģiku.

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

  • Protoboards ķēdes savienošanai
  • Lodāmurs/lodāmurs
  • Vīriešu/sieviešu tapas, lai es varētu viegli atvienot sensoru/mikrokontrolleri.
  • Maza poga. Es to izmantoju, lai atiestatītu sākuma augstumu.
  • 10k rezistors pogas nolaišanai.
  • JST-XH 4 kontaktu sieviešu savienotājs, lai pievienotu Spektrum uztvērēja telemetrijas portam
  • SEGGER J-Link EDU programmētājs, lai zibspuldzētu M0 bez sāknēšanas ielādētāja.

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

  • Adafruit SWD 10-pin breakout board

    www.adafruit.com/product/2743

Piegādes

  • Es arī 3D izdrukāju nelielu korpusu savam altimetram, bet tas nav vajadzīgs.
  • Osciloskops- ja jums tāda nav, es ļoti iesaku šo:

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

1. darbība: apgūstiet Spektrum telemetrijas protokolu

Uzziniet Spektrum telemetrijas protokolu
Uzziniet Spektrum telemetrijas protokolu
Uzziniet Spektrum telemetrijas protokolu
Uzziniet Spektrum telemetrijas protokolu
Uzziniet Spektrum telemetrijas protokolu
Uzziniet Spektrum telemetrijas protokolu

To man lielākoties izdarīja Raimonds Domingo. Viņi jau bija izveidojuši altimetru, kas ir saderīgs ar Spektrum, tāpēc šī avota koda ievērošana patiešām palīdzēja. Spektrum telemetrijas datu lapa aizpildīja pārējās nepilnības. Datu līmeņu mērīšana no uztvērēja parādīja, ka man būs nepieciešama 3.3v loģika.

Uztvērējs nosūta ierīces adresi un pēc tam gaida 16 baitu atbildi. Datu lapa parāda visu dažādu sensoru struktūras. Pat ja struktūra nav 16 baitu gara, uztvērējs katru reizi sagaida 16 baitus.

Spektrum datu lapa:

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

Raimonda Domingo projekts:

www.aerobtec.com/download/altisSpektrumInte…

2. darbība: atlasiet Aparatūra

Atlasiet Aparatūra
Atlasiet Aparatūra
Atlasiet Aparatūra
Atlasiet Aparatūra
Atlasiet Aparatūra
Atlasiet Aparatūra

Spiediena noteikšanai es izmantoju BMP388 sadalīšanas dēli no Adafruit. Izlaušanās nodrošina I2C un SPI izlaušanos un darbojas ar 3.3v vai 5v loģiku. Adafruit vienmēr dara pārsteidzošu darbu ar saviem sadalīšanas dēļiem, tāpēc es to iegādājos. Tā vietā es savā konstrukcijā izmantoju DFRobot Gravity BMP388 plāksni, jo mana Adafruit tāfele jau tika izmantota.

Ņemot vērā, ka saimniekdatora I2C ierīce izmanto 3.3v loģiku, man bija nepieciešams 3.3v mikrokontrolleris, un es gribēju, lai tas būtu mazs. Es gatavojos izmantot Adafruit Trinket M0, taču tie ir salīdzinoši dārgi, un tajos nav izlauzts ļoti daudz tapu. Tad es atradu Seeeduino XIAO dēli. Tā ir M0 plate ar I2C un SPI, kas ir gatava darbam, ar USB-C savienotāju. Turklāt tas ir patiešām niecīgs! Kopumā man ļoti patīk šī tāfele (lai gan lēnā starta kristāls mani uz visiem laikiem aizdomājās).

Spektrum uztvērējā izmanto JST-XH izmēra 4 kontaktu vīriešu savienotāju portam "Xbus", kurā mēs izmantosim. Altimetrā es izmantoju 4 kontaktu JST-XH sieviešu kontaktdakšu, un tas darbojās perfekti.

3. solis: rakstiet programmatūru

Es izmantoju Arduino IDE, lai rakstītu visu kodu. Es nokopēju Spektrum telemetrijas protokolu no viņu datu lapas un pievienoju to savai Arduino bibliotēkai. Tā kā Adafruit vienmēr ir jaukas bibliotēkas to izlaušanai, es izmantoju viņu BMP3XX bibliotēku BMP388 sensoram.

Galvenās atrunas no mana dizaina ir:

  • Iestatiet I2C, lai tas darbotos kā klienta ierīce un reaģētu uz Spektrum altimetra adresi (0x12).
  • Lasiet BMP388 barometru, izmantojot SPI.
  • Saglabājiet augstuma datus divos dažādos buferos, lai I2C pieprasījums no uztvērēja nesabojātu datus, un, iegūstot datus, mainiet tos abos buferos. Tas nodrošina, ka saņēmējam nosūtītie dati vienmēr ir pilnīgi.
  • Izmanto pogu, lai nullētu altimetru.

Lai iegūtu sīkāku informāciju un kodu analīzi, skatieties videoklipu.

4. solis: pievienojiet ķēdes vadu

Ievadiet ķēdi
Ievadiet ķēdi
Ievadiet ķēdi
Ievadiet ķēdi
Ievadiet ķēdi
Ievadiet ķēdi
Ievadiet ķēdi
Ievadiet ķēdi

Es izmantoju protoboard, bet, ja vēlaties veltīt laiku, lai izstrādātu pielāgotu frēzētu dēli, jūs varētu padarīt ķēdi daudz tīrāku.

Es savienoju JST-XH savienotāju ar XIAO I2C tapām. Tā kā uztvērējs telemetrijas kopnei izvada 5 voltus, pozitīvais no autobusa nonāca XIAO VCC tapā. Tādā veidā borta 3.3v regulators tiek izmantots BMP388 sensora barošanai.

5. darbība: apkopojiet bez sāknēšanas programmas

Kompilēt bez sāknēšanas programmas
Kompilēt bez sāknēšanas programmas
Kompilēt bez sāknēšanas programmas
Kompilēt bez sāknēšanas programmas
  1. Atrodiet savu boards.txt failu (jebkurai tāfelei, kuru izmantojat).

    Manā gadījumā tas atradās šeit: C: / Users / AppData / Local / Arduino15 / paketes / Seeeduino / hardware / samd / 1.7.7 / boards.txt

  2. Kopējiet savu dēli un pārdēvējiet pirmo atslēgu, lai norādītu versiju bez sāknēšanas. Es tikko pievienoju _nbl sākotnējam nosaukumam.

    • Vecs: seeed_XIAO_m0
    • Jaunums: seeed_XIAO_m0_nbl
  3. Mainiet.name vērtību:

    • Vecs: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • Jaunums: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. Pārveidojiet saiti, lai tā mirgo bez sāknēšanas ielādētāja, mainot veidotāja ld skriptu:

    • Vecs: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • Jaunums: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with _bootloader.ld
  5. Restartējiet Arduino IDE.
  6. Dēļu izvēlnē atlasiet jauno tāfelīti "Seeeduino XIAO No Bootloader".
  7. Atlasiet “Eksportēt apkopoto bināro failu”
  8. Pēc apkopošanas.bin fails būs jūsu Arduino projekta mapē.

6. darbība: zibspuldzes MCU ar J-Link

Zibspuldzes MCU ar J-Link
Zibspuldzes MCU ar J-Link
Zibspuldzes MCU ar J-Link
Zibspuldzes MCU ar J-Link
Zibspuldzes MCU ar J-Link
Zibspuldzes MCU ar J-Link

Adafruit ir fantastisks ceļvedis sāknēšanas ielādētāja pārprogrammēšanai M0/M4 ierīcē. Mūsu gadījumā mēs vēlamies atbrīvoties no sāknēšanas ielādētāja, taču tas darbojas tāpat.

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

Kad esat to izdarījis, jūs nevarēsit augšupielādēt kodu, izmantojot USB. Jūs varat sekot iepriekš minētajam ceļvedim, lai atkal ielādētu sāknēšanas ielādētāju ierīcē, lai vēlreiz augšupielādētu kodu, izmantojot USB, kā jūs to varējāt no rūpnīcas.

Adafruit ceļvedis ir ļoti rūpīgs, taču šie ir pamata soļi:

  1. Lodēšanas džempera vadi XIAO plates aizmugurē.

    • Adafruit rokasgrāmatā nav teikts, ka RST tapa 2x5 sadalīšanas panelī ir jāpievieno Adafruit dēļu atiestatīšanas tapai. Bet attiecībā uz XIAO man bija nepieciešams izveidot savienojumu ar visiem četriem paliktņiem paneļa aizmugurē.
    • VREF tapa ir jāpievieno XIAO 3.3v tapai. Tas atkļūdotājam norāda, ka ierīces loģika ir 3.3v. Bez tā, ja izvēlaties nepareizu opciju, jūs varat sabojāt mikrokontrolleru.
  2. Pievienojiet džempera vadus J-Link.
  3. Ieslēdziet XIAO plati, izmantojot USB kabeli.
  4. Atveriet Atmel Studio.
  5. Atlasiet Rīki Ierīces programmēšana
  6. Izvēlieties savu M0 plati. Šajā gadījumā ATSAMD21G18A
  7. Atlasiet SWD.
  8. Izlasiet konfigurāciju no mērķa.
  9. Ja izmantojat EDU J-Link, piekrītiet lietošanas noteikumiem (ja ievērojat lietošanas noteikumus).
  10. Pārbaudiet, vai sprieguma nolasījums ir pareizs augšējā labajā stūrī. Ja tas nav 3.3v, jūs varētu salauzt savu dēli!
  11. Notīriet sāknēšanas aizsardzības drošinātāju (iestatiet sāknēšanas ielādētāja lielumu uz 0 baitiem) un pēc tam atlasiet programmu.
  12. Atmiņu sadaļā atlasiet savu apkopoto.bin vai.hex failu un atlasiet programmu.

Problēmu novēršana:

Ja, lasot ierīces konfigurāciju, rodas kļūda ārpus sprieguma, pārliecinieties, vai MCU ir pievienots strāvas avotam un vai J-Link VREF tapa ir pievienota 3,3 voltiem

7. solis: kompilējiet bez ārējā kristāla

Pārkompilēt bez ārējā kristāla
Pārkompilēt bez ārējā kristāla

XIAO plāksnei ir ārējs kristāls, kura palaišana prasa ilgu laiku. Spektrum uztvērējs telemetrijas kopnē atklāj ierīci 350 milisekundes pēc ieslēgšanas, tāpēc mums jāinformē kompilators, ka tā vietā jāizmanto iekšējais oscilators, kas padarīs palaišanu gandrīz tūlītēju.

  1. Atrodiet iepriekš modificēto board.txt failu (jā, es būtu varējis jūs saglabāt šo soli agrāk, bet man tas bija mācību process)
  2. Pievienojiet "-DCRYSTALLESS" virknei seeed_XIAO_m0_nbl.build.extra_flags. Tas ļaus kompilatoram izmantot iekšējo oscilatoru.
  3. Pārkompilējiet kodu.
  4. Atkārtoti uzliesmojiet MCU.
  5. Pārbaudiet, vai palaišanas laiks ir pietiekami ātrs, izmantojot osciloskopu.

Kā redzat attēlā, dzeltenais kanāls 1 ir barošanas avots. Ciānais kanāls 2 ir gatavā tapa uz mikrokontrollera. Apmēram 10 milisekundes pēc ieslēgšanas mikrokontrolleris paceļ otro kanālu augstu, kas norāda, ka tas ir iestatīšanas cilpā. Kad iestatīšana ir pabeigta, MCU tiek kodēts, lai piespiestu tapu zemu, norādot, ka sākas galvenā cilpa. Darbības joma parāda, ka iestatīšana ilgst apmēram 3 milisekundes. Kopumā mikrokontrolleram pēc ieslēgšanas ir nepieciešamas 13 milisekundes, lai tas būtu gatavs darbam.

Ieteicams: