- Reikalinga medžiaga
- Grandinės schema
- Kas yra servovariklis?
- „Arduino“ kodo paaiškinimas
- Kelių servų valdymas naudojant „Arduino“ - darbas:
Vieną ar du „Servo“ naudoti su „Arduino“ yra lengva, bet ką daryti, jei norime naudoti daugiau nei vieną „Servo Motors“?
Čia mes jums parodysime, kaip valdyti kelis „Servo“ variklius naudojant „Arduino“. Atrodo, kad lengva prijungti kelis „Servo“ variklius su „Arduino“, tačiau jei visus „Servo“ variklius sujungsime su „Arduino“ tiekimo kaiščiais, jie neveiks tinkamai, nes trūksta pakankamai srovės, kad būtų galima valdyti visus variklius. Taigi varikliams turite naudoti atskirą maitinimo šaltinį, tiek iš kai kurių adapterių (5v 2A), tiek iš geros kokybės 9v baterijų.
Reikalinga medžiaga
- „Arduino UNO“
- Servo variklis
- Maitinimas
- Bandomoji Lenta
- Laidų sujungimas
Grandinės schema
Kas yra servovariklis?
Prieš pradėdami detaliau, pirmiausia turėtume žinoti apie „Servo Motors“.
Servo varikliai yra įvairių formų ir dydžių. Servo variklyje daugiausia bus laidai, vienas skirtas teigiamai įtampai, kitas - žemei, o paskutinis - padėčiai nustatyti. RED laidas yra prijungtas prie maitinimo šaltinio, juodas laidas yra prijungtas prie žemės, o geltonas laidas - prie signalo.
Servovariklis yra nuolatinės srovės variklio, padėties valdymo sistemos, pavarų derinys. Nuolatinės srovės variklio ašies padėtį reguliuoja servo valdymo elektronika, atsižvelgiant į PWM signalo, SIGNAL kaiščio, darbo santykį.
Tiesiog kalbant apie valdymo elektroniką, reguliuokite veleno padėtį valdydami nuolatinės srovės variklį. Šie duomenys apie veleno padėtį siunčiami per SIGNAL kaištį. Padėties duomenys valdikliui turėtų būti siunčiami PWM signalo forma per servo variklio signalo kaištį.
PWM (moduliuojamas impulso pločio) signalo dažnis gali skirtis priklausomai nuo servo variklio tipo. Svarbus dalykas yra PWM signalo PAREIGOS RATIO. Remiantis šiuo PAREIGOS RATU, valdymo elektronika sureguliuoja veleną.
Kaip parodyta žemiau esančiame paveikslėlyje, norint, kad velenas būtų perkeltas į 9o laikrodį, ĮJUNGIMO RATAS turi būti 1 / 18.j 1 ms įjungimo laiko ir 17 ms išjungimo laiko 18 ms signalu.
Kad velenas būtų perkeltas į 12o laikrodį, signalo įjungimo laikas turi būti 1,5 ms, o išjungimo laikas - 16,5 ms. Šį santykį dekoduoja valdymo sistema servo serveryje ir pagal jį jis koreguoja padėtį. Šis PWM čia sukurtas naudojant ARDUINO UNO.
Prieš prijungdami servoservisus prie „Arduino“, galite išbandyti servo servorą naudodamiesi šia „Servo Motor Tester Circuit“. Taip pat patikrinkite mūsų žemiau esančius „Servo“ projektus:
- Servo variklio valdymas „Flex Sensor“ pagalba
„Arduino“ kodo paaiškinimas
Pabaigoje pateikiamas visas „Multiple Servo Control“ „Arduino“ kodas.
„Arduino“ turi „Servo Motors“ biblioteką ir ji tvarko visus su PWM susijusius dalykus, kad pasuktumėte servo. Jums tereikia įvesti kampą, kuriuo norite pasukti, ir yra funkcija servo1.write (kampas); kuris pasuks servo norimu kampu.
Taigi čia mes pradedame apibrėždami „Servo“ variklio biblioteką.
# įtraukti
Žemiau esančiame kode inicijuojame visus keturis servo servo1, Servo2, Servo3 ir Servo4.
Servo servo1; Servo servo2; Servo servo3; Servo servo4;
Tada mes nustatome visus servo įvesties kaiščius su „Arduino“. Kaip parodyta žemiau esančiame kode, „Servo1“ yra prijungtas prie trečiojo „Arduino“ kaiščio. Galite keisti kaiščius pagal save, tačiau nepamirškite, kad tai turėtų būti PWM kaištis. Servo naudojimas su skaitmeniniais „Arduino“ kaiščiais nėra patikimas.
void setup () { servo1.attach (3); servo2.attach (5); servo3.attach (6); servo4.attach (9); }
Dabar funkcijoje „ void loop ()“ mes tiesiog sukame visą servo padėtį nuo 0 iki 180 laipsnių, o tada nuo 180 iki 0 laipsnių. Žemiau pateiktame kode naudojamas vėlavimas naudojamas servo greičiui padidinti arba sumažinti, nes tai daro įtaką kintamojo „i“ didėjančiam ar mažėjančiam greičiui.
void loop () { for (int i = 0; i <180; i ++) { servo1.write (i); servo2.write (i); servo3.write (i); servo4.write (i); vėlavimas (10); } už (i = 180; i> 0; i--) { servo1.write (i); servo2.write (i); servo3.write (i); servo4.write (i); vėlavimas (10); } }
Kelių servų valdymas naudojant „Arduino“ - darbas:
Mes visi susiduriame su dabartine problema, kai naudojamės daugiau nei dviem servo servisais su vienu „Arduino“. Vienintelis sprendimas yra prijungti išorinį maitinimo šaltinį su atitinkamu srovės dydžiu (šiame projekte aš naudojau 2A su 9v maitinimo šaltiniu). Išoriniam maitinimo šaltiniui galite naudoti adapterius, RPS (reguliuojamo maitinimo šaltinio prietaisą) arba geros kokybės 9 voltų baterijas, o mažų „Servo“ maitinimui galite naudoti nešiojamojo kompiuterio USB prievadą. Norėdami naudoti išorinį maitinimo šaltinį, tiesiog turite trumpinti „Arduino“ įžeminimą į išorinį maitinimo šaltinį.
Naudokite toliau pateiktą „Arduino“ kodą, kad suprogramuotumėte savo „Arduino“ ir prijunkite visus „Servo“ variklius, kaip parodyta grandinės schemoje, tinkamai maitindami variklius. Todėl visi servo servisai veiks kartu be jokių pertraukimų.