TVZ Mechatronics Team


Zagreb University of Applied Sciences, Professional Study in Mechatronics

Upravljanje istosmjernim motorom

U ovoj vježbi upravljat ćete brzinom i smjerom vrtnje istosmjernog motora koristeći predupravljač L298N. Istosmjerni motor postavljen je na maketu automobila zajedno s tiskanom pločicom na kojoj se nalazi navedeni predupravljač, pločica s istomjernim pretvaračem LM2596, baterije, servo motor i mbed platforma LPC1768.

Ovo je najčešće korišteni motor na robotskim autićima - pogonjen naponom od 3 do 6 V, vrti se brzinom do 90 RPM-a, a prijenos mu daje dodatnu snagu i zakreće os rotacije za 90° pa je na njega jednostavno montirati kotač tj. u našem slučaju monitirana je osovina na koju su spojeni stražnji kotači makete.

https://os.mbed.com/media/uploads/dfraj/motor_medium_vYFfeBn.jpg

Tikana pločica tj. modul na kojem se nalazi predupravljač L298N, koji koristimo u ovoj vježbi, prikazan je na sljedećoj slici te je relativno jeftina i moguće ju je kupiti na ebay-u ili drugim internet trgovinama za 2-3 USD.

https://os.mbed.com/media/uploads/dfraj/500116604-1.jpg

Na sljedećoj slici prikazana je shema gore prikazanog modula te je potrebno primjetiti da su na njemu postavljena tri jumper-a (CON5, ENA i ENB).

https://os.mbed.com/media/uploads/dfraj/l298n_shematic.png

Za istosmjerne motore čiji su iznosi napajanja manjih vrijednosti, potrebno je ukloniti jumper CON5 i spojiti napajanje s baterija (5-6 V) na konektore +5V i GND. Napajanja veća od 7 V potrebno je spojiti na konektore +12V i GND s time da jumper CON5 mora biti postavljen na pločicu. Za detaljnije upute na raspolaganju vam je podatkovni list predupravljača L298N i stranica E-radionice.

Budući da se na maketi automobila nalaze dvije serijski spojene baterije, njihov napon napajanja iznosi 8,4 V. Stoga je na modulu predupravljača postavljen jumper CON5 te je navedeni napon doveden na treću nožicu konektora J1 prikazanog na gornjoj shemi. Iako je navedeni napon baterija u dozovljenom rasponu napona napajanja za mbed platformu LPC1768 (4.5 - 9 V), zbog napajanja servo motora, koji se također nalazi na maketi automobila, napon je spušten na 5V. Napon je spušten koristeći tiskanu pločicu tj. modul na kojem se nalazi istosmjerni pretvarač LM2596.

https://os.mbed.com/media/uploads/dfraj/ad281-2.jpg

Na modulu (prikazanom na gornjoj slici) je smještena podesiva varijanta pretvarača koji prima ulazni napon u rasponu do 40 V te taj ulazni napon spušta na napon u rasponu od 1.2 do 37 V. Više informacija o pretvaraču možete pronaći u njegovom podatkovnom listu. Izlazni napon pretvarača od 5 V namjestili smo putem potenciometra koji je smješten na modulu pokraj pretvarača.

Osim svih navedenih komponenti na maketi se nalazi ili u slučaju da nije spojen potrebno je spojiti joystick. Joystick ima pet nožica +5V,GND,VRx,VRy i SW. Nožica +5V spaja se na 40. pin mbed platforme tj. na nožicu Vout (3.3 V), GND nožica spaja se na 1. pin mbed platforme GND. Nožice VRx i VRy spajaju se na nožice 16. i 17. mbed platforme. Nožicu SW još nije potrebno spojiti. Joystick kao komponenta je spoj dvaju potenciometara koje opruge drže u središnjim položajima. Spajanjem joystick-a na analogni ulaz mikroupravljača, u našem slučaju očekujemo da će napon na ulazu iznositi otprilike 1.65 V tj. korištenjem funkcije read() i spremanjem podatka s ulaza u varijablu tipa float očekujemo da će vrijednost zapisana u navedenu varijablu iznositi otprilike 0.5.

Shema spajanja svih komponenti makete prikazana je na sljedećoj slici:

https://os.mbed.com/media/uploads/dfraj/shema_makete.png

Upravljanje brzinom vrtnje motora

Napišite programski kod koji upravlja brzinom vrtnje motora pomoću PWM izlaza. Brzinu podešavajte korištenjem jednog potenciometra s joystick-a, VRx ili VRy ili utipkavanjem putem terminala. Također, možete dodati PWM izlaz LED1 čijom svjetlinom ćete upravljati kao u zadatku 6.2, a ovdje će služiti kao signalizacija rada koda. Budući da predupravljačem upravljamo s dva pina, razmislite kako je potrebno konfigurirati drugi pin, ako preko prvog upravljamo s brzinom vrtnje motora. Također, probajte u programu zamjeniti pinove te frekvenciju periode i primjetiti promjenu na motoru.

Upravljanje brzinom i smjerom vrtnje motora

Koristeći tipkalo

Modificirajte program tako da potenciometrom i dalje upravljate brzinom vrtnje motora, a pritiskom na tipkalo mjenjate smjer vrtnje motora. Za detekciju rastućeg brida signala prilikom pritiska tipkala potrebno je koristiti klasu InterruptIn. Budući da bi pri izvođenju takvog programa prilikom pritiska na tipkalo motor naglo promjenio smjer, potrebno je u program uvesti klasu RateLimiter koja usporava navedenu naglu promjenu smjera uvođenjem principa rampe, koji postepeno ubrzava ili usporava motor na brzinu vrtnje određenu potenciometrom. Proučite navedenu klasu te razmislite na koji način bi je implementirali u vlastitiom programu tj. koju od klasa iz 7. laboratorijske vježbe trebate iskoristiti.

Kao tipkalo možete koristiti i joystick. Pritiskom istog dok su potenciometri u središnjem položaju možete koristiti opciju tipkala. Nožicu joystick-a SW spojite na jednu od nožica mbed platforme koje se mogu konfigurirati kao interrupt-i npr. 18. nožica platforme.

Bez tipkala

Modificirajte programski kod tako da potenciometrom osim brzinom upravljate i smjerom vrtnje motora pomoću PWM izlaza. Potrebno je napraviti skaliranje veličine koju mbed očitava s analognog ulaza tako da kad potenciometar na ulaz šalje vrijednost 0.5, motor mora mirovati. Ako potenciometar okrenemo u lijevu stranu, tj. ako je vrijednost manja od 0.5 motor se mora početi okretati u jednu stranu, a ako je vrijednost veća od 0.5 motor se mora početi kretati u drugu stranu.

Modificirajte program tako da uvezete klasu RateLimiter i implementirate njen princip rampe.

Upravljanje brzinom i smjerom vrtnje motora korištenjem klase HBridgeDCMotor

U nastavku je prikazan program koji upravlja brzinom i smjerom vrtnje motora koristeći klasu HBridgeDCMotor. U navedenoj klasi uvezena je i klasa RateLimiter iz prethodnog zadatka.

Napravite novi program, uvezite klasu HBridgeDCMotor u Vaš prevoditelj te testirajte dolje napisani kôd:

 #include "mbed.h"
 #include "HBridgeDCMotor.h"
 
 HBridgeDCMotor motor(p23, p24);
 
 int main() {
     float sampleTime = 10e-3, switchingFrequency = 25e3, rampTime = 5;
     motor.configure(sampleTime, switchingFrequency, rampTime, rampTime);
     while(true) {
         motor.setDutyCycle(1);
         wait(15);
         motor.setDutyCycle(-1);
         wait(15);
     }
 }

Vaš motor bi se trebao ponašati kao i motor prikazan u sljedećem videu:

Modificirajte program tako da se Vaš motor najprije vrti deset sekundi pri 25% PWM-a te se zatim poveća na 50% i vrti pri tom postotku deset sekundi i tako do 100%. Zatim je potrebno motor zavrtiti u suprotnu stranu bilo to stepenastim putem kako je napravljeno za prvu stranu ili naglim skokom na 100 % u suprotnu stranu. Probajte oba slučaja s time da kad stavljate nagli skok iz jednog u drugi smjer stavite da se trajanje vrtnje prilikom prebacivanja iz jednog u drugi smjer traje petnaest sekundi.

Čestitke!

Završili ste sve vježbe iz teme Upravljanje istosmjernim motorom.

Povratak na naslovnu stranicu TVZ Mechatronics Team-a.


All wikipages