Radio vadības shēmas uz mikrokontrolleriem. DIY radio vadības panelis

DIY radio vadība 12 komandām

Shēma ļauj pārvaldīt modeļus vai citas ierīces un slodzes uz attālumu.Vienlaicīgi var nospiest līdz 8 pogām. Shēmu ir viegli izgatavot, un pēc montāžas ir nepieciešama tikai kontrolieru programmaparatūra. Komandu izpildes indikatori – gaismas diodes. Protams, caur strāvu ierobežojošiem rezistoriem var pieslēgt, piemēram, jaudīgu lauka efekta tranzistoru vārtus vai bipolāru tranzistoru bāzes ar attiecīgajām procesora izejām.

Raidītāja ķēde:



Uztvērējs


Superreģenerators: ar diagrammā norādītajiem rādītājiem un darba daļām tam ir 100% atkārtojamība.


Viņa regulēšana sastāv tikai no pārvietošanas cilpas spoles pagriezienus un savienojuma kapacitātes atlasi ar antenu.Dekodera kontrollera 3.izvads tiek izmantots, lai kontrolētu signāla pāreju iestatīšanas laikā (iekšējā komparatora ar programmatūru savienota izeja).To var vadīt, izmantojot parasto ULF.
Uztvērēja dekodētājs – PIC16F628A, tas atkodē un izpilda saņemtās komandas.

Kodētāja-dekodētāja sistēma var darboties gan pa vadiem, gan ar citiem uztvērējiem un raidītājiem. Katrs 0 un 1 gabals no kodētāja puses ir “krāsots” ar 5,5 kHz svārstībām labākai trokšņu noturībai + kontrolsummas pārraidei.
Uztvērējam jābūt barotam no stabilizēta 5 voltu avota (shēmā nav parādīts, platei ir 5 A ROLL + diode). Raidītājs tiek darbināts no 3,6 voltiem, bet ne vairāk kā 5,5 voltiem (platē ir 5A ROLL + diode).
Nospiesto pogu raksts PORTB (6.–13. tapas) raidītājā daļā ir pilnībā atspoguļots attiecīgi uz PORTB uztverošās daļas (6.–13. tapas). Nospiesto pogu attēls PORTĀ (3>2, 4>15,15>16, 16>17).

Pats par sevi vēlos teikt, ka tas ir lielisks risinājums jebkurā tālvadības pults situācijā. Pirmkārt, tas attiecas uz situācijām, kad ir nepieciešams attālināti pārvaldīt lielu skaitu ierīču. Pat ja jums nav nepieciešams kontrolēt lielu skaitu kravu no attāluma, ir vērts veikt izstrādi, jo dizains nav sarežģīts! Pāris nereti komponenti ir mikrokontrolleris PIC16F628A un mikroshēma MRF49XA - raiduztvērējs

Brīnišķīgs notikums jau ilgu laiku klīst internetā un gūst pozitīvas atsauksmes. Tas tika nosaukts par godu tā radītājam (10 komandu radio vadība uz mrf49xa no blaze) un atrodas -

Zemāk ir raksts:

Raidītāja ķēde:

Sastāv no vadības kontrollera un raiduztvērēja MRF49XA.

Uztvērēja ķēde:

Uztvērēja ķēde sastāv no tiem pašiem elementiem kā raidītājs. Praksē atšķirība starp uztvērēju un raidītāju (neņemot vērā gaismas diodes un pogas) sastāv tikai programmatūras daļā.

Mazliet par mikroshēmām:

MRF49XA- maza izmēra raiduztvērējs, kam ir iespēja darboties trīs frekvenču diapazonos.
1. Zems frekvenču diapazons: 430,24 - 439,75 MHz(2,5 kHz solis).
2. Augstas frekvences diapazons A: 860,48–879,51 MHz(5 kHz solis).
3. Augstas frekvences diapazons B: 900,72–929,27 MHz(7,5 kHz solis).

Diapazona robežas ir norādītas, ja tiek izmantots ražotāja nodrošinātais atsauces kvarcs ar frekvenci 10 MHz. Ar 11 MHz atsauces kristāliem ierīces darbojās normāli ar 481 MHz. Detalizēti pētījumi par biežuma maksimālo “pievilkšanu” attiecībā pret ražotāja deklarēto nav veikti. Jādomā, ka tas var nebūt tik plats kā TXC101 mikroshēmā, jo datu lapā MRF49XA Tiek minēts samazināts fāzes troksnis, viens no veidiem, kā to panākt, ir sašaurināt VCO regulēšanas diapazonu.

Ierīcēm ir šādi tehniskie parametri:
Raidītājs.
Jauda - 10 mW.

Pārraides režīmā patērētā strāva ir 25 mA.
Miera strāva - 25 µA.
Datu ātrums - 1 kbit/sek.
Vienmēr tiek pārsūtīts vesels skaits datu pakešu.
FSK modulācija.
Trokšņu izturīga kodēšana, kontrolsummas pārraide.

Uztvērējs.
Jutība - 0,7 µV.
Barošanas spriegums - 2,2 - 3,8 V (saskaņā ar datu lapu par ms, praksē tas darbojas normāli līdz 5 voltiem).
Pastāvīgs strāvas patēriņš - 12 mA.
Datu ātrums līdz 2 kbit/sek. Ierobežo programmatūra.
FSK modulācija.
Trokšņu izturīga kodēšana, kontrolsummas aprēķins saņemšanas brīdī.
Darba algoritms.
Iespēja vienlaikus nospiest jebkuru kombināciju no jebkura skaita raidītāja pogu. Uztvērējs parādīs nospiestās pogas reālajā režīmā ar gaismas diodēm. Vienkārši sakot, kamēr tiek nospiesta poga (vai pogu kombinācija) uz raidošās daļas, iedegas atbilstošā gaismas diode (vai gaismas diožu kombinācija) uz uztverošās daļas.
Kad poga (vai pogu kombinācija) tiek atlaista, attiecīgie gaismas diodes nekavējoties nodziest.
Testa režīms.
Gan uztvērējs, gan raidītājs, pievadot tiem strāvu, pāriet testa režīmā uz 3 sekundēm. Gan uztvērējs, gan raidītājs ir ieslēgti, lai pārraidītu EEPROM ieprogrammēto nesējfrekvenci 1 sekundi 2 reizes ar 1 sekundes pauzi (pauzes laikā pārraide tiek izslēgta). Tas ir ērti, programmējot ierīces. Pēc tam abas ierīces ir gatavas lietošanai.

Kontrollera programmēšana.
Raidītāja kontrollera EEPROM.


EEPROM augšējā līnija pēc mirgošanas un strāvas padeves raidītāja kontrollerim izskatīsies šādi...

80 1F — (4xx MHz apakšjosla) — RG konfigurācija
AC 80 - (precīza frekvences vērtība 438 MHz) - Freg Setting RG
98 F0 - (maksimālā raidītāja jauda, ​​novirze 240 kHz) - Tx Config RG

82 39 - (raidītājs ieslēgts) - Pow Management RG.

Otrās rindas pirmā atmiņas šūna (adrese 10 h) — identifikators. Noklusējums šeit FF. Identifikators var būt jebkas, kas atrodas baitā (0 ... FF). Šis ir tālvadības pults individuālais numurs (kods). Tajā pašā adresē uztvērēja kontrollera atmiņā ir tā identifikators. Viņiem jāsakrīt. Tas ļauj izveidot dažādus uztvērēja/raidītāja pārus.

Uztvērēja kontrolieris EEPROM.
Visi tālāk minētie EEPROM iestatījumi tiks automātiski ierakstīti vietā, tiklīdz kontrollerim tiks piegādāta strāva pēc tā programmaparatūras atjaunināšanas.
Datus katrā šūnā var mainīt pēc saviem ieskatiem. Ja ievadāt FF jebkurā šūnā, kas tiek izmantota datiem (izņemot ID), nākamreiz ieslēdzot barošanu, šī šūna nekavējoties tiks pārrakstīta ar noklusējuma datiem.

EEPROM augšējā rinda pēc programmaparatūras mirgošanas un strāvas padeves uztvērēja kontrollerim izskatīsies šādi...

80 1F — (4xx MHz apakšjosla) — RG konfigurācija

AC 80 - (precīza frekvences vērtība 438 MHz) - Freg Setting RG
91 20 — (uztvērēja joslas platums 400 kHz, maksimālā jutība) — Rx Config RG
C6 94 — (datu ātrums — ne ātrāk kā 2 kbit/s) — datu pārraides ātrums RG
C4 00 — (AFC atspējots) — AFG RG
82 D9 - (uztvērējs ieslēgts) - Pow Management RG.

Otrās rindas pirmā atmiņas šūna (adrese 10 h) — uztvērēja identifikators.
Lai pareizi mainītu gan uztvērēja, gan raidītāja reģistru saturu, izmantojiet programmu RFICDA izvēloties mikroshēmu TRC102 (tas ir MRF49XA klons).
Piezīmes
Dēļu otrā puse ir cieta masa (konservēta folija).
Drošas darbības diapazons redzamības apstākļos ir 200 m.
Uztvērēja un raidītāja spoļu apgriezienu skaits ir 6. Ja izmantojat 11 MHz atskaites kristālu, nevis 10 MHz, frekvence "pāries" augstāk par aptuveni 40 MHz. Maksimālā jauda un jutība šajā gadījumā būs ar 5 uztvērēja un raidītāja ķēžu apgriezieniem.

Mana īstenošana

Ierīces ieviešanas brīdī man pa rokai bija brīnišķīga kamera, tāpēc dēļa izgatavošanas un detaļu uzstādīšanas process uz tāfeles izvērtās aizraujošāks nekā jebkad agrāk. Un tas noveda pie tā:

Pirmais solis ir izveidot iespiedshēmas plati. Lai to izdarītu, es centos pēc iespējas sīkāk pakavēties pie tā ražošanas procesa.

Izgriezām vajadzīgā izmēra dēļu.Redzam,ka ir oksīdi-jātiek vaļā.Biezums bija 1,5mm.

Nākamais posms ir virsmas tīrīšana, šim nolūkam jāizvēlas nepieciešamais aprīkojums, proti:

1. Acetons;

2. Smilšpapīrs (nulles pakāpe);

3. Dzēšgumija

4. Līdzekļi kolofonija, kušņu, oksīdu tīrīšanai.

Acetons un līdzekļi kontaktu mazgāšanai un tīrīšanai no oksīdiem un eksperimentālās plāksnes

Tīrīšanas process notiek, kā parādīts fotoattēlā:

Izmantojot smilšpapīru, mēs notīrām stikla šķiedras lamināta virsmu. Tā kā tas ir abpusējs, mēs darām visu no abām pusēm.

Ņemam acetonu un attaukojam virsmu + nomazgājam atlikušās smilšpapīra drupatas.

Un plīvurs - tīrs dēlis, jūs varat uzklāt zīmogu, izmantojot lāzera-dzelzs metodi. Bet šim vajag zīmogu :)

Izgriešana no kopējā daudzuma Pārpalikuma apgriešana

Mēs ņemam uztvērēja un raidītāja izgrieztos blīvējumus un uzklājam tos uz stiklšķiedras šādi:

Zīmojuma veids uz stikla šķiedras

Apgriežot to otrādi

Mēs ņemam gludekli un visu vienmērīgi karsējam, līdz aizmugurē parādās pēdas. SVARĪGI NEPĀRKARST!Pretējā gadījumā toneris peldēs! Turiet 30-40 sekundes. Vienmērīgi noglāstām zīmoga sarežģītās un slikti apsildāmās vietas. Labas tonera pārneses uz stiklšķiedru rezultāts ir celiņu nospieduma parādīšanās.

Gluda un smaga gludekļa pamatne Uzklājiet uz zīmoga uzkarsētu gludekli
Nospiežam zīmogu un tulkojam.

Šādi izskatās gatavā apdrukātā zīme uz glancēta žurnālpapīra otrās puses. Trasēm jābūt redzamām aptuveni tāpat kā fotoattēlā:



Līdzīgu procesu veicam ar otro zīmogu, kas Jūsu gadījumā var būt vai nu uztvērējs, vai raidītājs. Es visu novietoju uz viena stikla šķiedras gabala



Visam vajadzētu atdzist. Pēc tam uzmanīgi noņemiet papīru ar pirkstu zem tekoša ūdens. Ritiniet to ar pirkstiem, izmantojot nedaudz siltu ūdeni.

Zem nedaudz silta ūdens Satiniet papīru ar pirkstiem Tīrīšanas rezultāts

Ne visu papīru var noņemt šādā veidā. Dēlim izžūstot, paliek balta “patina”, kuru iegravējot, starp sliedēm var izveidoties daži neiegravēti laukumi. Attālums ir mazs.



Tāpēc mēs ņemam tievu pinceti vai čigānu adatu un noņemam lieko. Fotoattēls parāda to lieliski!



Papildus papīra paliekām fotoattēlā redzams, kā pārkaršanas rezultātā dažās vietās ir salipuši mikroshēmas kontaktu paliktņi. Tie ir rūpīgi jāatdala, izmantojot vienu un to pašu adatu, cik vien rūpīgi iespējams (nokasot daļu tonera) starp kontaktu paliktņiem.

Kad viss ir gatavs, pārejam pie nākamā posma – kodināšanas.

Tā kā mums ir abpusēja stikla šķiedra un otrā puse ir cieta masa, mums tur ir jāsaglabā vara folija. Šim nolūkam mēs to aizzīmogosim ar lenti.

Līmlente un aizsargātā plāksne Otrā puse ir aizsargāta no kodināšanas ar līmlentes slāni Elektriskā lente kā "rokturis" ērtai dēļa kodināšanai

Tagad mēs iegravējam dēli. Es to daru vecmodīgā veidā. Es atšķaidu 1 daļu dzelzs hlorīda līdz 3 daļām ūdens. Viss šķīdums atrodas burkā. Ērts uzglabāšanai un lietošanai. Uzsildu mikroviļņu krāsnī.


Katrs dēlis tika iegravēts atsevišķi. Tagad ņemam rokās jau pazīstamo “nulli” un notīrām toneri uz tāfeles

Es samierinājos ar ceturtās vadības ass atbloķēšanu un pogu, slēdžu un gaismas diožu mākoņa instalēšanu tālvadības pultī. Tad runa bija par ķēdi, lodāmuru un programmaparatūru. Kā izrādījās vēlāk, nebija pietiekami daudz pogu un savienotāju, tāpēc man tie bija jāinstalē no jauna.

Pašdarināta radio vadības paneļa shēma

Shēma ir balstīta uz Atmega8 mikrokontrolleri. Viņa kājas bija burtiski “no gala līdz galam”. Lai redzētu lielāku diagrammu, noklikšķiniet uz attēla (shēma ir arī arhīvā raksta beigās.

Saskaitīsim: 10 pogas/slēdži + 2 gaismas diodes + 2 kājas kvarcam (mums nepieciešams laika precīzs PWM signāls) + 5 ADC kanāli + 2 kājas UART + 1 kanāls PPM signāla izvadīšanai uz RF moduli = 22 MK kājas . Tikpat daudz kā Atmega8, kas ir konfigurēts programmēšanai ķēdē (es domāju RESET tapu, kas pazīstama arī kā PC6).

Pieslēdzu gaismas diodes pie PB3 un PB5 (MOSI un SCK programmēšanas savienotājs) Tagad, ielādējot programmaparatūru, vērošu skaistu mirgošanu (savā ziņā bezjēdzīgi - bet te es dzenājos pēc vizuāli skaista efekta).

Atgādināšu, kā tas viss sākās - man bija HF modulis no Hobiking aprīkojuma (to aizstāja FrSky HF modulis), un man bija helikoptera aprīkojums. Tā kā aprīkojumā nebija kloķu (un kāpēc gan lai būtu?), tad sanāk, ka no sešiem kanāliem parasti (standarta) izmantošu tikai 4 (pa diviem uz katru kociņu). Nolēmu vienu kanālu tērēt uz 8 neatkarīgām pogām/slēdžiem, vēl vienu - lai programmatiski simulētu spinera griešanos (piemēram, skaista šasijas atlaišana - noklikšķini uz slēdža, un šasiju atlaiž uz 10 sekundēm). Vēl viens slēdzis joprojām nav izlēmis, ko ar to darīt.
Gaismas diodes, kas norāda slēdžu statusu, darbojas neatkarīgi no mikrokontrollera. Viena no programmatūras vadītajām gaismas diodēm ir atbildīga par zema akumulatora uzlādes līmeņa norādīšanu, otrā parāda programmatūras vērpēja pašreizējo stāvokli.

Papildus pogām un gaismas diodēm vēlējos korpusam pievienot arī standarta (man) UART savienotāju (saziņai ar datoru, tad uzrakstīšu savu iestatīšanas programmu) un savienotāju ar PPM signāla izeju - priekš tālvadības pults pievienošana simulatoram. Pēc grūtībām ar programmētāja savienotāju es sapratu, ka tas man neder, un es to arī izņēmu. Vienīgā sliktā lieta šajā sakarā ir tā, ka pastāv savienotāja tapu īssavienojuma risks, lai gan tie ir “padziļināti” korpusā. Bet to var apstrādāt ar 220 omu sērijas rezistoriem (kas dod 99% garantiju, ka mikrokontrolleris paliks neskarts)

Kad tuvojos tehnikas lietošanai, sapratu, ka esmu aizmirsis par pogu Bind (noklikšķinot, raidītājs pāriet uztvērēja meklēšanas režīmā). Man arī šis bija jāpabeidz

Radio tālvadības pults shēmas plate

Ļoti vienkārši - lielākā daļa kāju ir vienkārši izceltas. Platē ir 5 voltu stabilizators un ieejas sprieguma mērīšanas ķēde. Kāpēc izmantojāt DIP pakotni? Man tikko bija... turklāt - kāpēc gan ne DIP...

Kad es to visu lodēju, man prātā iešāvās doma: vai tiešām šis vadu mākonis darbosies?!
Bet tas joprojām darbojas. Parasti mani dēļi ir tīri no kolofonija... bet te es nemitīgi ķēmojos ar dalītāju, līdz izrādījās, ka tā ir programmatūras, nevis aparatūras problēma. Barošana no divu kannu lipo (kas kādreiz bija palicis no parastas trīskannas pēc tam, kad aizmirsa atvienot no slodzes. Rezultātā viena no bundžām nogāja pilnā izlādē). Neskatoties uz to, esmu paredzējis iespēju darboties no AA baterijām. Tu nekad nezini

Rezultātā es ieguvu četru kanālu aprīkojumu ar savu programmaparatūru, kurā varu mainīt visu, ko vēlos. Par programmaparatūru un programmatūru es rakstīšu vēlāk.

Tagad varat lejupielādēt pašreizējo programmaparatūras versiju. Pagaidām tas vispār nav konfigurējams (t.i., reversam, izdevumiem, ofsetam un citiem “labumiem” vēl nav iestatījumu). Pogu stāvoklis tiek vienkārši nolasīts un tiek ģenerēts PPM signāls. Pogas un MOD slēdzis vēl nedarbojas. Bet virtuālais servo darbojas (5. kanālā) un tiek mērīts ieejas sprieguma līmenis. Ja tas ir pārāk zems, IND gaismas diode sāks mirgot (programmaparatūra automātiski nosaka, cik šūnu ir litija polimēru akumulatorā). Un vēl - izmaksas 4. kanālā (kurā pievienoju savu potenciometru) ir uzpūstas, lai kompensētu nepilnīgo potenciometra griešanās diapazonu.

Šajā rakstā jūs redzēsit, kā ar savām rokām izveidot radio vadību 10 komandām. Šīs ierīces darbības rādiuss ir 200 metri uz zemes un vairāk nekā 400 m gaisā.



Diagramma ņemta no vietnes vrtp.ru
Raidītājs

Uztvērējs


Pogas var spiest jebkurā secībā, lai gan viss darbojas stabili uzreiz. Izmantojot to, jūs varat kontrolēt dažādas kravas: garāžas durvis, gaismas, lidmašīnas modeļus, automašīnas un tā tālāk... Vispār jebkas, viss ir atkarīgs no jūsu iztēles.

Darbam mums ir nepieciešams detaļu saraksts:
1) PIC16F628A-2 gab (mikrokontrolleris) (saite uz aliexpress pic16f628a )
2) MRF49XA-2 gab (radio raidītājs) (saite uz aliexpress MRF 49 XA )
3) 47nH induktors (vai uztiniet pats) - 6 gab
Kondensatori:
4) 33 uF (elektrolītisks) - 2 gab.
5) 0,1 uF-6 gab
6) 4,7 pF-4 gab
7) 18 pF - 2 gab
Rezistori
8) 100 omi - 1 gab
9) 560 omi - 10 gab
10) 1 Com-3 gab
11) LED - 1 gab
12) pogas - 10 gab.
13) Kvarcs 10MHz-2 gab
14) Tekstolīts
15) Lodāmurs
Kā redzat, ierīce sastāv no minimālām detaļām un to var veikt ikviens. Jums vienkārši tas ir jāgrib. Ierīce ir ļoti stabila, pēc salikšanas darbojas uzreiz. Shēmu var izveidot kā uz iespiedshēmas plates. Tas pats ar uzstādīto instalāciju (it īpaši pirmo reizi, to būs vieglāk programmēt). Pirmkārt, mēs izgatavojam dēli. Izdrukājiet to


Un saindējam dēli.

Mēs lodējam visas sastāvdaļas, labāk ir pielodēt PIC16F628A kā pēdējo, jo tas joprojām būs jāprogrammē. Vispirms pielodējiet MRF49XA


Galvenais ir būt ļoti uzmanīgam, viņai ir ļoti smalki secinājumi. Kondensatori skaidrībai. Vissvarīgākais ir nesajaukt 33 uF kondensatora polus, jo tā spailes ir atšķirīgas, viens ir +, otrs ir -. Visus pārējos kondensatorus var pielodēt pēc vēlēšanās, tiem nav polaritātes uz spailēm


Varat izmantot iegādātās 47nH spoles, taču labāk tās uztīt pašam, tās visas ir vienādas (6 apgriezieni 0,4 stieples uz 2 mm serdeņa)

Kad viss ir pielodēts, visu kārtīgi pārbaudām. Tālāk ņemam PIC16F628A, to vajag ieprogrammēt. Es izmantoju PIC KIT 2 lite un paštaisītu kontaktligzdu
Šeit ir saite uz programmētāju ( Attēlu komplekts2 )


Šeit ir savienojuma shēma


Tas viss ir vienkārši, tāpēc nebaidieties. Tiem, kas ir tālu no elektronikas, iesaku nesākt ar SMD komponentiem, bet pirkt visu DIP izmērā. Pats to darīju pirmo reizi


Un tas viss tiešām izdevās pirmajā reizē


Atveriet programmu, atlasiet mūsu mikrokontrolleri

Posts aizdegās, un man radās ideja izgatavot savu lidmašīnu. Paņēmu gatavus rasējumus un pasūtīju no ķīniešiem motorus, akumulatorus un propellerus. Bet radio pulti nolēmu uztaisīt pats, pirmkārt - tā ir interesantāk, otrkārt - vajag ar kaut ko nodarboties, kamēr paka ar pārējām rezerves daļām ir ceļā, treškārt - ir iespēja būt oriģinālam. un pievieno visādus labumus.
Uzmanies no bildēm!

Kā un ko pārvaldīt

Normāli cilvēki paņem uztvērēju, pieslēdz servo un ātruma regulatoru, kustina pults sviras un bauda dzīvi, nebrīnoties par darbības principiem un neiedziļinoties detaļās. Mūsu gadījumā tas nedarbosies. Pirmais uzdevums bija noskaidrot, kā tiek vadīti servo. Viss izrādās diezgan vienkārši, diskam ir trīs vadi: + jauda, ​​- jauda un signāls. Uz signāla vada ir mainīga darba cikla taisnstūrveida impulsi. Lai saprastu, kas tas ir, skatiet attēlu:

Tātad, ja mēs vēlamies iestatīt piedziņu galējā kreisajā pozīcijā, mums ir jānosūta impulsi ar ilgumu 0,9 ms ar intervālu 20 ms, ja galēji pa labi - ar ilgumu 2,1 ms, intervāls ir tāds pats. , nu ar vidējām pozīcijām ir tāpat. Kā izrādās, ātruma regulatori tiek vadīti līdzīgi. Tie, kas ir tēmā, teiks, ka tas ir parasts PWM, kuru var ieviest uz jebkura mikrokontrollera - sīkums. Tāpēc es tā nolēmu, nopirku servo mašīnu vietējā veikalā un kniedēju tai tā saukto ATtiny13 servo testeri uz maizes dēļa. Un tad izrādījās, ka PWM nav gluži vienkāršs, bet tajā ir nepilnības. Kā redzams no iepriekš esošās diagrammas, darba cikls (impulsa ilguma attiecība pret perioda ilgumu) ir no 5% līdz 10% (turpmāk kā galējās pozīcijas ņemu impulsus ar ilgumu 1,0 ms un 2,0 ms). ) 256 ciparu PWM skaitītājam ATtiny13 tas atbilst vērtībām no 25 līdz 50. Bet tas ir ar nosacījumu, ka skaitītāja aizpildīšana prasīs 20 ms, taču patiesībā tas nedarbosies, un frekvencei 9,6 MHz un priekšskalotājs 1024, mums jāierobežo skaitītājs līdz vērtībai 187 (TOR), tādā gadījumā mēs iegūsim frekvenci 50,134 Hz. Lielākajai daļai (ja ne visiem) servo nav precīza atsauces frekvences ģeneratora, un tāpēc vadības signāla frekvence var nedaudz svārstīties. Ja atstājat skaitītāja TOP uz 255, tad vadības signāla frekvence būs 36,76 Hz - tas darbosies uz dažiem diskdziņiem (iespējams, ar kļūmēm), bet ne uz visiem. Tātad, tagad mums ir 187 ciparu skaitītājs, kuram 5-10% atbilst vērtībām no 10 līdz 20 - kopā 10 vērtības, tas būs nedaudz diskrēts. Ja domājat spēlēt ar pulksteņa frekvenci un priekšskalotāju, zemāk ir 8 bitu PWM salīdzināšanas tabula:

Bet lielākajai daļai mikrokontrolleru ir 16 bitu (vai vairāk) taimeris PWM ģenerēšanai. Šeit diskrētuma problēma nekavējoties pazudīs, un frekvenci var precīzi iestatīt. Es to ilgi neaprakstīšu, es jums tūlīt došu zīmi:

Es nedomāju, ka ķīniešu servo ir būtiska atšķirība starp 600 un 1200 vērtībām, tāpēc problēmu ar pozicionēšanas precizitāti var uzskatīt par slēgtu.

Daudzkanālu vadība

Esam sakārtojuši vienu servo, bet lidmašīnai vajag vismaz trīs un arī ātruma regulatoru. Vienkāršs risinājums ir ņemt mikrokontrolleri ar četriem 16 bitu PWM kanāliem, taču šāds kontrolieris būs dārgs un, visticamāk, aizņems daudz vietas uz plates. Otrā iespēja ir izmantot programmatūras PWM, taču arī nav iespējams aizņemt CPU laiku. Ja vēlreiz paskatās uz signālu diagrammām, 80% gadījumu tas nenes nekādu informāciju, tāpēc racionālāk būtu iestatīt tikai pašu impulsu uz 1-2 ms, izmantojot PWM. Kāpēc darba cikls mainās tik šaurās robežās, jo būtu vieglāk ģenerēt un nolasīt impulsus ar vismaz 10–90% darba ciklu? Kāpēc mums ir vajadzīgs šis neinformatīvais signāls, kas aizņem 80% laika? Man bija aizdomas, ka varbūt šos 80% varētu aizņemt impulsi citiem izpildmehānismiem, un tad šis signāls tiek sadalīts vairākos dažādos. Tas ir, 20 ms periodā var ietilpt 10 impulsi ar ilgumu 1-2 ms, tad šo signālu kāds demultiplekseris sadala 10 dažādos ar perioda ilgumu tikai 20 ms. Tikko pateikts, kā izdarīts, es PROTEUS uzzīmēju šādu diagrammu:


74HC238 darbojas kā demultiplekseris; impulsi no mikrokontrollera izejas tiek piegādāti tā ieejai E. Šie impulsi ir PWM ar periodu 2ms (500Hz) un darba ciklu 50-100%. Katram impulsam ir savs darba cikls, kas norāda katra kanāla stāvokli. Šādi izskatās signāls ieejā E:


Lai 74HC238 zinātu, uz kuru izeju nosūtīt strāvas signālu, mēs izmantojam mikrokontrollera PORTC un demultipleksera ieejas A, B, C. Rezultātā mēs izejās saņemam šādus signālus:


Izejas signāli tiek iegūti pareizā frekvencē (50Hz) un darba ciklā (5-10%). Tātad, jums ir jāģenerē PWM ar frekvenci 500 Hz un piepildījumu 50–100%, šeit ir tabula 16 bitu skaitītāja priekšskalera un TOP iestatīšanai:


Interesanti, ka iespējamais PWM vērtību skaits ir tieši 1000 reižu mazāks par taimera frekvenci.
Programmatūras ieviešana
ATmega8 ar takts frekvenci 16 MHz AtmelStudio6 viss tiek īstenots šādi: pirmkārt, mēs definējam skaitītāju vērtības servo galējām pozīcijām:
#define LOW 16000U #define HIGH 32000U
tad mēs inicializējam PWM ģeneratoru uz taimera/skaitītāja1:
OCR1A = AUGSTS; //Iestatīt TOP TCCR1A = 0<Atliek ieviest pārtraukumus:
ISR(TIMER1_COMPA_vect) //pārtraukums, kad tiek sasniegta skaitītāja augšējā vērtība, tieši pirms nākamā impulsa sākuma ( //c_num ir mainīgais, kas norāda pašreizējā kanāla numuru, kanāli ir kanālu vērtību masīvs, ja (c_num<= 7) { OCR1B = channels; } else { OCR1B = 0; //отключаем ШИМогенератор для несуществующих в демультиплексоре 8 и 9 канала } } ISR(TIMER1_COMPB_vect, ISR_NOBLOCK)// прерывание возникающее в конце импульса { if (c_num <= 7) { PORTC = c_num; //для каналов 0-7 выводим номер канала на PORTC } //и изменяем значение счетчика от 0 до 9 if (c_num >= 9) ( c_num = 0; ) else ( c_num++; ) )
Globāli iespējojiet pārtraukumus, un esat pabeidzis, kanālos ievadot vērtības no LOW līdz HIGH un mainot vērtības kanālos.

Ieviešana aparatūrā

Nu, mēs esam sakārtojuši teoriju, ir pienācis laiks to visu īstenot. Par sistēmas smadzenēm tika izvēlēts ATmega8A mikrokontrolleris, kura takts frekvence ir 16 MHz (nevis tāpēc, ka es gribēju 16 000 servo pozīciju, bet gan tāpēc, ka man bija daži no tiem, kas gulēja apkārt). MK vadības signāls tiks uztverts, izmantojot UART. Rezultāts ir šāda diagramma:


Pēc kāda laika parādījās šī šalle:




Es nelodēju divus trīs kontaktu savienotājus, jo man tie nav vajadzīgi, un tie nav lodēti pēc kārtas, jo man nav metalizētu caurumu, un apakšējā savienotājā sliedes abās pusēs varēja nomainīt pret vads, bet programmatūrā nav problēmu izvadīt signālu uz jebkuru savienotāju. Trūkst arī 78L05, jo manam dzinēja regulatoram ir iebūvēts stabilizators (WE).
Lai saņemtu datus, HM-R868 radio modulis ir pievienots platei:


Sākotnēji domāju pieslēgt tieši dēlī, bet lidmašīnā šis dizains nederēja, tas bija jādara caur kabeli. Ja maināt programmaparatūru, programmēšanas savienotāja kontaktus var izmantot, lai iespējotu/atspējotu dažas sistēmas (sānu gaismas utt.)
Dēlis maksāja apmēram 20 UAH = 2,50 USD, uztvērējs - 30 UAH = 3,75 USD.

Pārraides daļa

Lidmašīnas daļa ir, atliek tikt galā ar zemes aprīkojumu. Kā jau rakstīts iepriekš, dati tiek pārsūtīti caur UART, viens baits katrā kanālā. Sākumā es savienoju savu sistēmu ar vadu caur adapteri ar datoru un nosūtīju komandas caur termināli. Lai dekodētājs noteiktu pakas sākumu un turpmāk atlasītu tieši tam adresētas pakas, vispirms tiek nosūtīts identifikatora baits, pēc tam 8 baiti, kas nosaka kanālu stāvokli. Vēlāk sāku lietot radio moduļus; kad raidītājs tika izslēgts, visi motori sāka mežonīgi raustīties. Lai filtrētu signālu no trokšņa, ar desmito baitu es nosūtu XOR no visiem 9 iepriekšējiem baitiem. Tas palīdzēja, bet vāji pievienoju arī taimauta pārbaudi starp baitiem; ja tas tiek pārsniegts, visa sūtīšana tiek ignorēta un saņemšana sākas no jauna, gaidot identifikatora baitu. Pievienojot kontrolsummu XOR formā, komandu nosūtīšana no termināļa kļuva saspringta, tāpēc es ātri kniedēju šo programmu ar slīdņiem:


Cipars apakšējā kreisajā stūrī ir kontrolsumma. Pārvietojot datorā slīdņus, lidmašīnas stūres kustējās! Kopumā es to visu atkļūdoju un sāku domāt par tālvadības pulti, es tam nopirku šīs kursorsviras:

Bet tad man ienāca prātā doma. Savulaik mani piesaistīja visdažādākie lidojumu simulatori: “IL-2 Sturmovik”, “Lock On”, “MSFSX”, “Ka-50 Black Shark” utt. Attiecīgi man bija Genius F-23 kursorsvira un nolēma to pieskrūvēt iepriekš minētajai programmai ar slīdņiem. Pameklēju googlē, kā to īstenot, atradu šo ierakstu un izdevās! Man šķiet, ka vadīt lidmašīnu, izmantojot pilnvērtīgu kursorsviru, ir daudz foršāk, nekā izmantojot mazo nūju uz tālvadības pults. Kopumā pirmajā fotoattēlā viss ir parādīts kopā - tas ir netbook, kursorsvira, FT232 pārveidotājs un tam pievienots HM-T868 raidītājs. Pārveidotājs ir savienots ar 2m kabeli no printera, kas ļauj to uzstādīt uz kāda koka vai tamlīdzīga.

Sākt!

Tātad, ir lidmašīna, ir radio vadība - Ejam!(c) Pirmais lidojums tika veikts pa asfaltu, rezultātā uz pusēm pārlauzta fizelāža un pusizplēsts dzinējs. Otrais lidojums tika veikts pa mīkstāku virsmu:

Arī turpmākie 10 lidojumi nebija īpaši veiksmīgi. Manuprāt, galvenais iemesls ir kursorsviras ārkārtējā diskrētība - ripināšanai tā deva tikai 16 vērtības (iespējamo 256 vietā), ar soļa asi nebija labāka. Bet, tā kā pārbaužu rezultātā lidmašīna tika būtiski bojāta un to nevar salabot:


- Pagaidām nav iespējams pārbaudīt šīs versijas patiesumu. Šo versiju atbalsta arī mēģinājums nolīdzināt lidmašīnu, kas ierakstīts video - tā lido sasvērusi, un pēc tam strauji krīt pretējā virzienā (bet tai vajadzētu būt vienmērīgi). Šeit ir vizuālāks video:

Iekārtas darbības diapazons ir aptuveni 80m, ķer arī tālāk, bet ik pa laikam.
Nu, tas arī viss, paldies par uzmanību. Ceru, ka sniegtā informācija kādam noderēs. Labprāt atbildēšu uz visiem jautājumiem.