- PWM (impulso pločio moduliacija):
- Servo variklis ir PWM:
- Būtini komponentai:
- Grandinės schema:
- Darbo ir programavimo paaiškinimas:
„Raspberry Pi“ yra ARM architektūros procesoriaus plokštė, skirta elektronikos inžinieriams ir mėgėjams. PI yra viena iš labiausiai patikimų projektų kūrimo platformų. Turėdamas didesnį procesoriaus greitį ir 1 GB RAM, PI gali būti naudojamas daugeliui aukšto lygio projektų, tokių kaip vaizdo apdorojimas ir daiktų internetas.
Norint atlikti bet kurį iš aukšto rango projektų, reikia suprasti pagrindines PI funkcijas. Šiose pamokose aptarsime visas pagrindines „Raspberry Pi“ funkcijas. Kiekvienoje pamokoje aptarsime vieną iš PI funkcijų. Šios „Raspberry Pi Tutorial“ serijos pabaigoje galėsite patys atlikti aukšto lygio projektus. Peržiūrėkite žemiau esančias pamokas:
- Darbo pradžia naudojant „Raspberry Pi“
- Aviečių Pi konfigūracija
- LED mirksi
- Aviečių Pi mygtuko sąsaja
- Aviečių Pi PWM karta
- Nuolatinės srovės variklio valdymas naudojant „Raspberry Pi“
- Žingsninio variklio valdymas su „Raspberry Pi“
- Sąveikaujantis „Shift“ registras su Raspberry Pi
- Raspberry Pi ADC pamoka
Šioje pamokoje mes valdysime servo variklį su „Raspberry Pi“. Prieš eidami į servo servisą, pakalbėkime apie PWM, nes iš jo kyla „Servo Motor“ valdymo koncepcija.
PWM (impulso pločio moduliacija):
Anksčiau mes daug kartų kalbėjome apie PWM: impulso pločio moduliacija su „ATmega32“, PWM su „Arduino Uno“, PWM su 555 laikmačio IC ir PWM su „Arduino Due“. PWM reiškia „pulso pločio moduliacija“. PWM yra metodas, naudojamas kintamai įtampai gauti iš stabilaus maitinimo šaltinio. Norėdami geriau suprasti PWM, apsvarstykite toliau pateiktą grandinę,
Aukščiau pateiktame paveikslėlyje, jei jungiklis tam tikrą laiką yra nuolat uždarytas, šviesos diodas per šį laiką nuolat įsijungs. Jei jungiklis bus uždarytas pusę sekundės ir atidarytas kitą pusę sekundės, tada LED lemputė bus įjungta tik pirmąją pusę. Dabar proporcija, kuriai LED dega per visą laiką, vadinama „ Duty Cycle“ ir gali būti apskaičiuojama taip:
Darbo ciklas = Įjungti laiką / (Įjungti laiką + Išjungti laiką)
Darbo ciklas = (0,5 / (0,5 + 0,5)) = 50%
Taigi vidutinė išėjimo įtampa bus 50% akumuliatoriaus įtampos.
Padidinę įjungimo ir išjungimo greitį iki lygio, matysime, kad šviesos diodas yra pritemdytas, o ne įjungtas ir išjungtas. Taip yra todėl, kad mūsų akys negali aiškiai užfiksuoti didesnių nei 25Hz dažnių. Apsvarstykite 100 ms ciklą, kai LED dega 30 ms ir 70 sekundžių. Mes turėsime 70% stabilios įtampos išėjime, todėl LED nuolat šviečia 70% intensyvumo.
Darbo santykis svyruoja nuo 0 iki 100. „0“ reiškia visiškai išjungtą, o „100“ - visiškai įjungtą. Šis darbo santykis yra labai svarbus servovarikliui. Servo variklio padėtis nustatoma pagal šį darbo santykį. Patikrinkite, ar norite parodyti PWM su LED ir „Raspberry Pi“.
Servo variklis ir PWM:
Servovariklis yra nuolatinės srovės variklio, padėties valdymo sistemos ir pavarų derinys. Servo servisai turi daugybę pritaikymų šiuolaikiniame pasaulyje, todėl jie yra įvairių formų ir dydžių. Mes bus naudojamas SG90 servo variklis šiame samouczku, jis yra vienas iš populiariausių ir pigiausių. SG90 yra 180 laipsnių servo. Taigi naudodami šį servo ašį galime nustatyti 0-180 laipsnių kampu.
Servovariklis daugiausia turi tris laidus, vienas skirtas teigiamai įtampai, kitas - įžeminimui, o paskutinis - padėties nustatymui. Raudona viela yra prijungtas prie energijos, rudas laidas yra prijungtas prie žemės ir Yellow viela (arba balta) yra prijungtas prie signalo.
Servo serveryje mes turime valdymo sistemą, kuri ima PWM signalą iš signalo kaiščio. Jis iššifruoja signalą ir gauna iš jo darbo santykį. Po to jis palygina santykį su iš anksto nustatytomis pozicijų vertėmis. Jei vertės skiriasi, ji atitinkamai sureguliuoja servo padėtį. Taigi servo variklio ašies padėtis yra pagrįsta PWM signalo, veikiančio signalo kaiščiu, darbo santykiu.
PWM (moduliuojamas impulso pločio) signalo dažnis gali skirtis priklausomai nuo servo variklio tipo. SG90 atveju PWM signalo dažnis yra 50Hz. Norėdami sužinoti servo veikimo dažnumą, patikrinkite konkretaus modelio duomenų lapą. Taigi pasirinkus dažnį, kitas svarbus dalykas čia yra PWM signalo PAREIGOS RATIO.
Žemiau esančioje lentelėje parodyta tam tikro muito santykio servo padėtis. Galite gauti bet kokį kampą tarp jų pasirinkdami atitinkamai vertę. Taigi 45º servo servisui muito koeficientas turėtų būti „5“ arba 5%.
POZICIJA |
PAREIGOS SANTYKIS |
0º |
2.5 |
90º |
7.5 |
180º |
12.5 |
Prieš sujungdami servo variklį su „Raspberry Pi“, galite patikrinti savo servo servorą naudodami šią servo variklio testerio grandinę. Taip pat patikrinkite mūsų žemiau esančius „Servo“ projektus:
- Servo variklio valdymas naudojant „Arduino“
- Servo variklio valdymas su „Arduino Due“
- Servo variklio sąsaja su 8051 mikrovaldikliu
- Servovariklio valdymas naudojant MATLAB
- Servo variklio valdymas „Flex Sensor“ pagalba
- Servo padėties valdymas su svoriu (jėgos jutiklis)
Būtini komponentai:
Čia mes naudojame „ Raspberry Pi 2 Model B“ su „Raspbian Jessie OS“. Visi pagrindiniai aparatūros ir programinės įrangos reikalavimai buvo aptarti anksčiau, jų galite rasti „Raspberry Pi“ įvade, išskyrus mums reikalingą:
- Jungiamieji kaiščiai
- 1000uF kondensatorius
- SG90 servovariklis
- Bandomoji Lenta
Grandinės schema:
A1000µF turi būti prijungtas per +5 V maitinimo bėgį, kitaip PI gali atsitiktinai išsijungti, valdydamas servo.
Darbo ir programavimo paaiškinimas:
Kai viskas bus prijungta pagal grandinės schemą, mes galime įjungti PI, kad programa būtų parašyta PYHTON.
Mes kalbėsime apie keletą komandų, kurias ketiname naudoti PYHTON programoje, Mes ketiname importuoti GPIO failą iš bibliotekos, žemiau pateikta funkcija leidžia mums užprogramuoti PI GPIO kaiščius. Mes taip pat pervadiname „GPIO“ į „IO“, todėl programoje, kai norime nurodyti GPIO kaiščius, naudosime žodį „IO“.
importuoti RPi.GPIO kaip IO
Kartais, kai GPIO kaiščiai, kuriuos bandome naudoti, gali atlikti kitas funkcijas. Tokiu atveju vykdydami programą gausime įspėjimus. Žemiau komanda liepia PI nepaisyti įspėjimų ir tęsti programą.
IO.setwarnings (False)
Mes galime nurodyti PI GPIO kaiščius pagal PIN kodą laive arba pagal jų funkcijos numerį. Kaip lentoje esantis „PIN 29“ yra „GPIO5“. Taigi mes sakome, kad čia mes smeigtuką atvaizduosime „29“ arba „5“.
IO.setmode (IO.BCM)
Kaip išvesties kaištį nustatome PIN39 arba GPIO19. Iš šio kaiščio gausime PWM išvestį.
IO. Nustatymas (19, IO.OUT)
Nustačius išvesties kaištį, turime nustatyti kaištį kaip PWM išvesties kaištį, p = IO.PWM (išvesties kanalas, PWM signalo dažnis)
Pirmiau nurodyta komanda skirta nustatyti kanalą ir taip pat nustatyti kanalo dažnį “. 'p' čia yra kintamasis, jis gali būti bet koks. Mes naudojame GPIO19 kaip PWM „Išvesties kanalą. „PWM signalo dažnis“ pasirinksime 50, nes SG90 darbo dažnis yra 50Hz.
Žemiau komanda naudojama PWM signalo generavimui pradėti. „ DUTYCYCLE “ skirtas „įjungti“ santykio nustatymui, kaip paaiškinta anksčiau, p. pradžia (DUTYCYCLE)
Žemiau komanda naudojama kaip amžinai kilpa, su šia komanda šios kilpos teiginiai bus vykdomi nuolat.
Nors 1:
Čia už programą kontrolė servo naudojant Aviečių Pi suteikia PWM signalas, GPIO19. PWM signalo darbo santykis keičiamas tarp trijų verčių tris sekundes. Taigi kiekvieną sekundę servo serveris pasisuka į padėtį, nustatytą pagal darbo santykį. Servo serveris per tris sekundes nuolat sukasi iki 0º, 90º ir 180º.