- Impulso pločio moduliacija (PWM)
- „ATtiny13“ programavimas naudojant „Arduino“
- Būtini komponentai
- Grandinės schema ir darbas
Servovariklis veikia pagal pagrindinį impulsų pločio moduliacijos (PWM) principą, o jo sukimosi kampą kontroliuoja jo valdymo kaiščiui pritaikyto impulso trukmė. Čia, šioje pamokoje, valdysime servovariklį su mikrovaldikliu „ATtiny13“, naudodami PWM techniką. Taigi, prieš eidami toliau, pirmiausia sužinosime apie PWM, „Servo Motor“ ir kaip programuoti „ATtiny13“ su „Arduino Board“.
Impulso pločio moduliacija (PWM)
Impulso pločio moduliacija (PWM) apibrėžiama kaip būdas sukurti analoginį signalą naudojant skaitmeninį šaltinį. PWM signalą sudaro du pagrindiniai komponentai - darbo ciklas ir dažnis. Šie komponentai apibrėžia jo elgesį. Veikimo ciklas apibūdina laiką, per kurį signalas yra aukštoje būsenoje. Jis žymimas viso laiko, kurio reikia vienam ciklui užbaigti, procentine dalimi.
Darbo ciklas = Įjungti laiką / (Įjungti laiką + Išjungti laiką)
Dažnis apibrėžia, kaip greitai PWM užbaigia ciklą ir kaip greitai signalas persijungia iš aukšto į žemą. 100Hz dažnis reiškia 100 ciklų per sekundę. Greitai įjungus ir išjungiant skaitmeninį signalą ir esant tam tikram darbo ciklui, išėjimas pasirodys kaip pastovios įtampos analoginis signalas. Vienas iš galingų PWM privalumų yra tai, kad energijos nuostoliai yra labai maži.
Visi servovarikliai dirba tiesiogiai su + 5 V maitinimo šaltiniu, tačiau mes turime būti atsargūs dėl variklio sunaudojamos srovės kiekio. Jei mes naudojame daugiau nei du servovariklius, reikia suprojektuoti tinkamą servo skydą.
Prieš prijungdami servo prie „Attiny13“, galite patikrinti savo servo servorą naudodami šią servo variklio testerio grandinę. Čia mes sujungėme servovariklį su daugeliu mikrovaldiklių:
- Servo variklio sąsaja su ARM7-LPC2148
- Servo variklio sąsaja su MSP430G2
- Kelių servo variklių valdymas naudojant „Arduino“
- Servo variklio sąsaja su PIC mikrovaldikliu, naudojant MPLAB ir XC8
- Servo variklio valdymas su „Raspberry Pi“
- Servo variklio valdymas su „Arduino Due“
- Servo variklio sąsaja su AVR mikrovaldikliu „Atmega16“
„ATtiny13“ programavimas naudojant „Arduino“
„Attiny13“ galima užprogramuoti naudojant „Arduino Uno“ ar bet kurią kitą „Arduino“ plokštę. Prijunkite „Attiny13“ prie „Arduino Uno“, kaip parodyta žemiau esančiame paveikslėlyje.
- „Arduino 5V“ - „ATtiny13“ 8 kaištis
- „Arduino GND“ - „ATtiny13“ 4 kaištis
- „Arduino“ kaištis 13 - „ATtiny13“ kaištis 7
- „Arduino“ kaištis 12 - „ATtiny13“ kaištis 6
- „Arduino“ kaištis 11 - „ATtiny13“ kaištis 5
- „Arduino“ kaištis 10 - „ATtiny13“ 1 kaištis
„Arduino“ yra nustatytas kaip programuotojas programuoti „ATtiny13“. Tai daroma įkeliant „ArduinoISP“ eskizą į „Arduino“. Šį „Arduino“ eskizą galima rasti „Arduino IDE“ pavyzdžiuose. Atidarykite „Arduino IDE“ ir eikite į Failai> Pavyzdžiai> ArduinoISP .
Dabar pasirodys „ArduinoISP“ programa. Įkelkite programą į „Arduino Uno“.
„Arduino Uno“ dabar yra pasirengęs programuoti „Attiny13“. Bet mes turime sukurti „Attiny“ įdiegdami pagrindinius failus. Norėdami tai padaryti, eikite į „Arduino IDE“ failą >> Parinktys
Tada pasirodys naujas langas. „ Papildomame valdybos tvarkyklės URL “ pridėkite toliau pateiktą nuorodą ir spustelėkite „Gerai“.
„Https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json“
Dabar „Arduino IDE“ eikite į „ Tools >> Board“ >> „Boards Manager“
Tada pasirodys kitas langas, kuriame paieškos laukelyje įveskite „Attiny“, tada gausite „DIY ATtiny“, tada spustelėkite mygtuką „įdiegti“ (aš jį jau įdiegiau, todėl diegimo mygtukas pilkos spalvos)
Norėdami pradėti programuoti „ATtiny 13“, turime jame įrašyti „Bootloader“. Norėdami tai padaryti, eikite į Įrankiai> Valdyba> ATtiny13.
Dabar eikite į Įrankiai> Procesoriaus versija ir patikrinkite, ar pasirinkta teisinga „ATtiny“ versija. Pasirinkite „ATtiny13“ arba „ATtiny13a“, priklausomai nuo jūsų lusto.
Tada meniu Įrankiai apačioje spustelėkite mygtuką Įrašyti įkrovos tvarkyklę.
Įdegęs įkrovos programą, „ATtiny“ dabar yra pasirengęs užprogramuoti. Dabar galite įkelti savo programą.
Būtini komponentai
- ATtiny13 mikrovaldiklis
- Servo variklis
- Potenciometras
- + 5 V akumuliatorius
- „Arduino IDE“
- Jungiamieji laidai
Grandinės schema ir darbas
Žemiau pateikiama grandinės schema, skirta valdyti servovariklį naudojant puodą su ATtiny13.
Žemiau pateikiami ryšiai
- Prijunkite servovariklio valdymo kaištį prie „ATtiny13“ 5 kaiščio
- Prijunkite servo variklio žemę prie „ATtiny13“ 4 kaiščio
- Prijunkite servo variklio VCC prie „ATtiny13“ 8 kaiščio
- Prijunkite potenciometro vidurinį kaištį prie „ATtiny13“ 7 kaiščio
- Prijunkite pirmąjį ir trečiąjį potenciometro kaiščius prie VCC ir GND.
- Prijunkite + 5 V akumuliatoriaus teigiamą elementą prie „ATtiny13“ 8 kaiščio
- Prijunkite + 5 V akumuliatoriaus neigiamą elementą prie „ATtiny13“ 4 kaiščio
Potenciometras prijungtas prie „ATtiny13“ kaiščio 7 (PB2), o servovariklio valdymo laidas - prie 5 kaiščio (PB0).
Čia nuskaitoma potenciometro reikšmė ir ji paverčiama verte nuo 0 iki 180. Tada ši kampo vertė paverčiama mikrosekundėmis ir servo variklio valdymo kaiščiui suteikiamas impulsas su apskaičiuota mikrosekundžių vėlavimu. Dabar servo variklis pasisuks pagal potenciometro vertę, kaip parodyta toliau pateiktame vaizdo įraše.