KURZ: Synchronizace pohybu dvou motorů

KAPITOLY

Pokud vytváříme pohyblivá autíčka, vozítka nebo mechanismy vyžadující řízení, použijeme kombinaci dvou motorů. Při jejich využití můžeme libovolně zasílat příkazy každému z nich zvlášť a dosahovat tak požadovaného pohybu robota. Pro práci s více motory využijeme znalosti získané v předchozí kapitole s názvem Motor a jeho pohyb.

Synchronizace dvou motorů v programovacím prostředí

NXT-G

BLOK PRO OVLÁDÁNÍ MOTORU

Rozcestník


Umístění bloku

Programový blok MovePaletteDragged Move je umístěn v paletě icon completeComplete >icon commonCommon.

NXTG Move rozbaleny

 

Popis bloku

Blok MovePaletteDragged Move obsahuje po rozbalení osm konektorů pro propojení s dalšími  programovými bloky.

LeftMotor Left Motor - označuje, ke kterému vstupnímu portu je připojen levý motor (A, B, C).

RightMotor Right Motor - označuje, ke kterému vstupnímu portu je připojen pravý motor (A, B, C).

OtherMotor Other Motor - označuje, ke kterému vstupnímu portu je připojen další (třetí) motor (A, B, C).

Direction Direction - hodnota logického datového typu, která vyjadřuje směr otáčení (True = vpřed, False = vzad).

Steering Steering - konektor pro řízení, který označuje, kterým z motorů bude řízen pohyb (pokud bude nastavené řízení < 0 - řízeno levým motorem, pokud > 0 - řízeno pravým motorem).

Power075 Power - označuje intenzitu otáčení motoru na stupnici od 0 do 100.

Goal Duration - hodnota označující délku trvání pohybu (udávána ve stupních, otáčkách motoru, sekundách nebo jako neomezené otáčení).

StopAfter Next Action - vyjadřuje, zda bude po ukončení akce motor pokračovat v činnosti či nikoliv.

 

Parametry bloku

Při sychronizaci pohybu více motorů využijeme MovePaletteDragged blok Move. Tento blok dokáže synchronizovat kombinaci až tří motorů.

move

Port: udává porty řídící jednotky (A, B, C), ke kterým jsou motory připojeny.

Direction: určuje směr otáčení motorů (vpřed, vzad či zastavení).

Steering: udává, kterým motorem je řízen pohyb. Pokud je tažítko uprostřed, zabírají oba motory současně. Mírným přetažením posuvníku do strany dosáhneme zakřiveného pohybu, protože otáčivá síla bude více přenesena na zvolený motor. Pokud přetáhneme posuvník na maximum, robot se bude otáčet na místě. Řízení lze využít pouze při připojení dvou motorů.

Power: intenzita (rychlost) otáčení motoru nastavitelná v procentech (100% je maximum).

Duration: možnost nastavení délky trvání pohybu. Skýtá čtyři možnosti nastavení:

  • míra natočení ve stupních (Degrees),
  • míra natočení vyjádřená pomocí otáček motoru (Rotations),
  • doba chodu motoru při daném výkonu v sekundách (Seconds),
  • neomezený běh motoru po dobu průběhu programu (Unlimited).

Next Action: udává, zda se má po ukončení akce motor zastavit (Brake) nebo pokračovat v chodu (Coast).

RobotC

PŘÍKAZY A METODY pro sychronizaci dvou motorů

Synchronizace dvou a více motorů v programovacím prostředí RobotC je realizována na podobných principech jako ovládání pohybu jednoho motoru, které jsme si popsali v kapitole Motor a jeho pohyb. Musíme dbát na to, abychom správně označovali v příkazech příslušné motory, aby naše zařízení pracovalo tak, jak potřebujeme.

Rozcestník


NASTAVENÍ A OVLÁDÁNÍ MOTORů

Veškeré ovládání motorů, ať už určení portu, vyjádření směru otáčení nebo určení intenzity otáčení, se provádí pomocí příkazu motor[].

Port: určení portů, ke kterým jsou motory připojeny je vyjádřeno výrazem v závorce (motorA, motorB, motorC).

 
motor[motorC] = 100; // Motor C je v pohybu smerem vpred s maximalnim vykonem.
motor[motorB] = 100; // Motor B je v pohybu smerem vpred s maximalnim vykonem.
 

Směr otáčení: vyjádření, kterým směrem se jednotlivé motory otáčí, je udáno znaménkem před číslem udávajícím intenzitu otáčení motoru.

 
motor[motorC] = 100; // Motor C je v pohybu smerem vpred s maximalnim vykonem.
motor[motorB] = -100; // Motor B je v pohybu smerem vzad s maximalnim vykonem.
 

Při použití dvou motorů k pohybu autíček, vozítek a pohyblivých strojů se nejčastěji využívá otáčení motorů stejným směrem. Pokud by se motory využili každý s opačným směrem otáčení jako v předchozím případě, otáčelo by se vozítko dokola. Rozdílný směr otáčení je využitelný v případech, že každý motor pohání jinou část stroje.

 

Intenzita otáčení motorů: číslo udávající výkon motoru na stupnici od 0 do 100 (%).

 
motor[motorC] = 100; // Motor C je v pohybu smerem vpred s maximalnim vykonem.
motor[motorB] = -75; // Motor B je v pohybu smerem vzad s vykonem 75%.
 

OVLIVNĚNÍ DOBY OTÁČENÍ MOTORU

Doba trvání otáčení je ovlivňována píkazem wait1Msec(), u kterého se délka trvání udává v milisekundách nebo příkazem wait10Msec(), u nějž je udávána v desítkách milisekund.

 
motor[motorC] = 100; // Motor C je v pohybu smerem vpred s maximalnim vykonem.
motor[motorB] = 100; // Motor B je v pohybu smerem vpred s maximalnim vykonem.
wait1Msec(4000); // Otaceni motoru je provadeno 4 sekundy, po kterych je pohyb ukoncen a program pokracuje dale.
 

MOŽNOSTI NATOČENÍ MOTORU

V programovacím prostředí RobotC máme možnost natáčet motory o 180 stupňů nebo o libovolný úhel. Pro tyto potřeby využijeme příkazy bMotorReflected[]nMotorEncoderTarget[].

Natočení motoru o 180 stupňů: provádí se příkazem bMotorReflected[], který nabývá hodnot true a false.

 
bMotorReflected[motorA] = true; // Motor A se pootoci o 180 stupnu.
bMotorReflected[motorB] = false; // Motor B se nepootoci o 180 stupnu.
 

 

Natočení motoru o libovolný úhel: je možné jej ovlivnit pomocí příkazu nMotorEncoderTarget[]. V následujícím příkladu je proveden pohyb robota vpřed o úsek, který se rovná 180 stupňům natočení čítače otáček motoru.

 
task main()
{
 nMotorEncoder[motorB] = 0; // Nulovani encoderu motoru B.
 nMotorEncoder[motorC] = 0; // Nulovani encoderu motoru C.
 
 nMotorEncoderTarget[motorB] = 180; // Nastaveni cilove pozice motoru B (otoceni o 180 stupnu).
 nMotorEncoderTarget[motorC] = 180; // Nastaveni cilove pozice motoru C (otoceni o 180 stupnu).
 
 motor[motorB] = 30; // Nastaveni rychlosti otaceni motoru B na 30%.
 motor[motorC] = 30; // Nastaveni rychlosti otaceni motoru C na 30%.
 
while (nMotorRunState[motorB] != runStateIdle || nMotorRunState[motorC] != runStateIdle)
 {
   // Tento cyklus ceka na to, az je dokonceno natoceni encoderu o pozadovany uhel.
   // Neprovadi se zadny dalsi prikaz.
 }
 
 motor[motorB] = 0; // Uvedeni motoru B do klidu. 
 motor[motorC] = 0; // Uvedeni motoru C do klidu.
}
 

EV3

BLOK PRO Řízení dvou MOTORů

Rozcestník

Blok pro řízení pásového vozidla

Rozcestník


UMÍSTĚNÍ BLOKU pro řízení dvou motorů

 Programový blok Move Steering je umístěn v paletě Action Action.

UMISTENI STEERING


Výběr výstupního portu

Před započetím práce s motory je nejprve nutné zvolit kombinaci výstupních portů (A, B, C, D) řídící jednotky, ke kterým jsou motory připojeny (červeně zvýrazněno).

STEERING PORT


Změna režimu

Programový blok Move Steering můžeme využívat v pěti režimech. Přepínání mezi nimi se provádí pomocí tlačítka v levé spodní části (červeně zvýrazněno).

STEERING REZIMY


Přidání vstupního portu

Po kliknutí do pole pro výběr výstupních portů pro řízení motorů je možné vybrat první možnost Wired, po které se do programového bloku přidá vstupní port Identification 515 Port Port (červeně zvýrazněno).

STEERING WIRED


Režimy programového bloku

Off (Vypnuto)

Vypnutí chodu obou motorů. V tomto řežimu  je aktivní pouze jediný vstupní port.

STEERING OFF

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motoru. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False

 

 

On (Zapnuto)

Neomezený běh motorů zadanou rychlostí a směrech po dobu průběhu programu. V tomto řežimu jsou aktivní dva vstupní porty.

STEERING ON

Identification 220 Steering Straight ForwardSteering - řížení směru natáčení robota.

Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad).

 

 

On for Seconds (otáčení po zvolený časový úsek)

Ovlivnění chodu motorů pomocí času. V tomto režimu máme k dispozici čtyři vstupní porty.

STEERING SECONDS

 Identification 220 Steering Straight ForwardSteering - řížení směru natáčení robota.

Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad).

Identification 240 Time Seconds - doba otáčení motorů udávaná ve vteřinách.

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motorů. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False

 

 

On for Degrees (otočení o zadaný úhel)

Ovlivnění chodu motorů pomocí úhlových stupňů. V tomto režimu máme k dispozici čtyři vstupní porty.

STEERING DEGREES

 Identification 220 Steering Straight ForwardSteering - řížení směru natáčení robota.

Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad).

Identification 288 DegreesAngle Plus360 Degrees - míra natočení motorů zadávaná v úhlových stupních od 0 do 360°.

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motorů. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False

 

 

On for Rotations (otočení o určitý počet otáček)

Ovlivnění chodu motorů pomocí počtu nastavených otáček. V tomto režimu máme k dispozici čtyři vstupní porty.

 STEERING ROTATIONS

 Identification 220 Steering Straight ForwardSteering - řížení směru natáčení robota.

Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad).

Identification 503 NumberRotations Rotations - počet prováděných otáček motorů.

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motorů. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False

 

 



Umístění bloku pro řízení pásového vozidla

 Programový blok Move Tank je umístěn v paletě Action Action.

UMISTENI TANK


Výběr výstupního portu

Před započetím práce s motory je nejprve nutné zvolit kombinaci výstupních portů (A, B, C, D) řídící jednotky, ke kterým jsou motory připojeny (červeně zvýrazněno). Řízení pomocí pásů je specifické tím, že každý motor (pás) ovládáme individuálně a nastavujeme tak každému vlastní rychlost otáčení v závislosti na požadovaném směru pohybu.

TANK PORT


Změna režimu

Programový blok Move Tank můžeme využívat v pěti režimech. Přepínání mezi nimi se provádí pomocí tlačítka v levé spodní části (červeně zvýrazněno).

TANK REZIMY


Přidání vstupního portu

Po kliknutí do pole pro výběr výstupních portů pro řízení motorů je možné vybrat první možnost Wired, po které se do programového bloku přidá vstupní port Identification 515 Port Port (červeně zvýrazněno).

TANK WIRED


Režimy programového bloku

Off (Vypnuto)

Vypnutí chodu obou motorů. V tomto řežimu  je aktivní pouze jediný vstupní port.

TANK OFF

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motorů. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False.

 

 

On (Zapnuto)

Neomezený běh obou motorů po dobu průběhu programu. V tomto řežimu  jsou aktivní dva vstupní porty.

 TANK ON

 2x Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad). Při zadání stejných hodnot se pásové vozidlo pohybuje v před, snížením nebo zvýšením některé z hodnot docílíme natáčení.


 

 

On for Seconds (otáčení po zvolený časový úsek)

Ovlivnění chodu motorů pohánějících pásy pomocí času. V tomto režimu máme k dispozici čtyři vstupní porty.

TANK SECONDS

2x Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad).

Identification 240 Time Seconds - doba otáčení motorů udávaná ve vteřinách.

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motorů. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False.

 

 

On for Degrees (otočení o zadaný úhel)

Ovlivnění chodu motorů pohánějících pásy pomocí úhlových stupňů. V tomto režimu máme k dispozici čtyři vstupní porty.

 TANK DEGREES

2x Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad).

Identification 288 DegreesAngle Plus360 Degrees - míra natočení motorů zadávaná v úhlových stupních od 0 do 360°.

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motorů. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False

 

 

On for Rotations (otočení o počet otáček)

Ovlivnění chodu motorů pohánějících pásy pomocí počtu nastavených otáček. V tomto režimu máme k dispozici čtyři vstupní porty.

TANK ROTATIONS

 2x Identification 203 Speed Plus75 Power - rychlost otáčení motorů udávaná v procentech na stupnici od 100 (vpřed) do -100 (vzad).

Identification 503 NumberRotations Rotations - počet prováděných otáček motorů.

Identification 508 BrakeAtEnd BrakeBreak at End - způsob zastavení motorů. Okamžité zastavení (Break) reprezentuje logická hodnota True a pozvolné dojetí (Coast) hodnota False

 

 

1 1 1 1 1 1 1 1 1 1 Hodnocení 3.00 (2 hodnocení)

Nemáte oprávnění přidat komentář.
Komentáře mohou přidávat pouze registrovaní uživatelé, kteří neporušují pravidla diskuze.