Rozšiřující výstupní moduly (zasílání dat pro řízení modulů)
• lineární motory,
• multiplexování výstupů.

KURZ: Multiplexování výstupů

Při programování robotické stavebnice nalezneme velké množství členů, které slouží jako přepínače vstupů či výstupů řídící jednotky. V tomto článku se zaměříme na multiplexování výstupů. Popíšeme si ho na multiplexeru NXTMMX-v2 od společnosti Mindsensors. Ten dokáže po připojení k řídící jednotce NXT pracovat s jedním připojeným senzorem a dvěma připojenými motory. Na obrázku můžete vidět schéma multiplexeru. Červeně jsou označeny porty pro připojení motorů (M1 a M2). Zeleně zvýrazněný je port k připojení řídící jednotky NXT a žlutě port k připojení senzoru.

NXTMMX v2

Multiplexer je připojen k některému ze vstupních portů (1-4). Umožní nám tak pracovat až se dvěma motory a jedním senzorem prostřednictvím jediného vstupního portu. Pro jeho chod je zapotřebí, aby byl připojen ke zdroji napájení. Je možné jej například připojit pomocí jeho dvou vodičů k alkalinové baterii o napětí 9V, což k jeho napájení postačí.

Pro praktické využití v programování robotické stavebnice LEGO Mindstorms NXT se multiplexer hodí spíše jako rozšiřující zařízení umožňující pracovat s dalšími dvěma motory připojenými ke vstupnímu portu. Možnosti připojení senzorů jsou totiž značně omezené. Multiplexer podporuje pro připojení ke vstupu SENSOR pouze senzory I2C, digitální senzory nebo další multiplexery.

PRÁCE S multiplexerem V PROGRAMOVACÍCH PROSTŘEDÍCH

NXT-G

Blok pro ovládání multiplexeru

Rozcestník


Umístění bloku

Multiplexování výstupů je v programovacím prostředí NXT-G řízeno pomocí bloku Multiplexer blok maly NXT MMX. Tento blok není součástí základní instalace. Pro jeho použití je nutné jej do prostředí importovat. Návod k importu rozšiřujících modulů naleznete v kapitole Instalace rozšiřujících modulů.

Poznámka: Blok naleznete ke stažení na stránkách výrobce ZDE.

Multiplexer blok

 

Popis bloku

Blok Multiplexer blok maly NXT MMX obsahuje celkem deset konektorů pro propojení s dalšími programovými bloky:

Number Operate On - vyjadřuje, jaká operace je prováděna (ovládání motorů, čtení hodnoty čítače otáček motoru nebo zjišťování hodnoty připojeného elektrického napětí).

Power Power - intenzita otáčení motoru.

Direction Direction - vyjadřuje směr otáčení motoru (vpřed, vzad nebo stůj).

Number Duration  - označuje dobu trvání otáčení motoru.

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

Boolean Wait for Completion - ukončení činnosti před dalším krokem programu.

Number Power Ramp - označuje, zda je zapnuta regulace relativních změn intenzity otáčení motoru.

EncoderM1 Encoder M1 - čítač otáček motoru M1.

EncoderM1 Encoder M2 - čítač otáček motoru M2.

Voltage Voltage - označuje úroveň elektrického napětí připojeného napájení.

 

Parametry bloku

 Multiplexer

Port: označuje, ke kterému portu je multiplexer připojen a jeho I2C adresu v hexadecimálním vyjádření.

Direction: směr otáčení motoru.

Power Ramping: vyjadřuje, zda je zapnuta regulace relativních změn intenzity otáčení motoru (Disabled - vypnuta, Enabled - zapnuta).

Power: tažítkem nebo zadáním hodnoty nastavitelná hodnota intenzity otáčení motoru.

Operation: vyjadřuje, jaká operace je prováděna:

  • Operate Motors - ovládání motorů,
  • Read Encoders - čtení hodnoty čítače otáček motoru,
  • Read Voltage - zjišťování hodnoty připojeného elektrického napětí.

Duration: pole pro zadání doby provádění pohybu motoru, která může být vyjádřena v:

  • Degrees - úhlové stupně,
  • Rotations - počet otáček motoru,
  • Seconds - vteřiny,
  • Unlimited - nekonečný pohyb,
  • To Encoder Position - pohyb prováděný do určitého počtu otáček nasčítaných pomocí čítače.

Wait: možnost, po jejímž zaškrnutí bude ukončena činnosti před dalším krokem programu.

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

RobotC

Příkazy a metody  pro ovládání mutliplexeru

Úspěšné ovládání multiplexeru výstupů se skládá z několika kroků, jejichž dílčí provedení vede k bezproblémovému ovládání. Z důvodu, že multiplexer nepodporuje žádný z běžných LEGO senzorů, se zaměříme pouze na ovládání k němu připojených motorů.

Rozcestník


Volání vývojové knihovny

Prvním krokem pro správné nastavení multiplexeru je zavolání příslušné vývojové knihovny, která obsahuje jeho deklaraci a definované metody a příkazy, které budeme k ovládání potřebovat. Potřebnou knihovnu nalezneme ke stažení na stránkách výrobce ZDE.

Po umístění knihovny do příslušného kořenového adresáře instalačních souborů programového prostředí je nutné knihovnu v našem programu zavolat. Volání knihovny a jeho zápis vypadá následovně:

 
#include "NXTMMX-lib.h"
 

Inicializace multiplexeru

V počáteční inicializaci v našem programu definujeme, k jakému portu řídící jednotky je multiplexer připojen a jaká je jeho adresa. Multiplexeru musíme přiřadit I2C adresu, která je vyjádřena hexadecimálně proto, aby byla zajištěna jeho správná komunikace na datové sběrnici.

K počátečnímu nastavení slouží příkaz MMX_Init(). Jeho prvním parametrem v závorce je označení portu, ke kterému je multiplexer připojen (S1-S4). Druhý parametr označuje I2C adresu. Poslední parametr označuje, zda je aktivována regulace otáček motoru (PID). Jedná se o logickou hodnotu (1 = True(Pravda), 0 = False(Nepravda)).

 
 MMX_Init( S1, 0x06, 0 );
 

Příkazy k ovládání motorů

Motor připojený k řídící jednotce prostřednictvím multiplexeru nám nabízí stejné možnosti řízení, jako motor připojený k jednotce přímo. Jelikož je ovšem ovládání multiplexeru závislé na knihovně, ve které jsou všechny příkazy a metody pro jeho ovládání definovány, jsou i příkazy pro řízení motorů odlišné.

V následující části uvedeme příkazy, které můžeme v programování využít nejčastěji. Po otevření zdrojového kódu vývojové knihovny naleznete mnoho dalších, které jsou však spíše rozšiřujícího charakteru. Pro naše potřeby vystačí níže uvedené. Můžete vždy vidět název metody a v závorce výčet parametrů, které jsou nezbytné pro její použití.

 
// prikaz pro nekonecne otaceni motoru
int MMX_Run_Unlimited( port, byte I2C_adresa, byte oznaceni_motoru, byte smer_otaceni, byte rychlost);
 
// prikaz pro nastaveni otaceni motoru po urcitou dobu vyjadrenou v sekundach
int MMX_Run_Seconds( port, byte I2C_adresa, byte oznaceni_motoru, byte smer_otaceni, byte rychlost, byte trvani_pohybu, byte pockat_na_dokonceni, byte dalsi_akce) ;
 
// prikaz pro moznost natoceni motoru o urcity pocet uhlovych stupnu
int MMX_Run_Degrees(port, byte I2C_adresa, byte oznaceni_motoru, byte smer_otaceni, byte rychlost, long stupne, byte pockat_na_dokonceni, byte dalsi_akce );
 
// prikaz pro natoceni motoru o urcity pocet otacek
int MMX_Run_Rotations( port, byte I2C_adresa, byte oznaceni_motoru, byte smer_otaceni, byte rychlost, byte pocet_otacek, byte pockat_na_dokonceni, byte dalsi_akce ) ;
 
 
 
 
Parametry příkazů

Port: zadáváme označení vstupního portu, ke kterému je multiplexer připojen (S1, S2, S3 nebo S4).

I2C adresa: udáváme adresu I2C v hexadecimálním vyjádření (zadáváme například 0x06, 0x07 atd.).

Označení motoru: specifikujeme, který z motorů připojených k multiplexeru chceme ovládat.

  • MMX_Motor_1 - pokud se jedná o motor na portu M1,
  • MMX_Motor_2 - pokud se jedná o motor na portu M2,
  • MMX_Motor_Both - pokud se jedná o oba motory zároveň.

Směr otáčení: vyjadřuje, jakým směrem se bude motor otáčet.

  • MMX_Direction_Forward - pro otáčení směrem vpřed,
  • MMX_Direction_Reverse - pro otáčení směrem vzad.

Rychlost: číselná hodnota udávající intenzitu otáčení motoru (0-100). Využít můžeme také nadefinované konstanty.

  • MMX_Speed_Full - rychlost 90%,
  • MMX_Speed_Medium - rychlost 60%,
  • MMX_Speed_Slow - rychlost 25%.

Trvání pohybu: číselná hodnota udávající dobu trvání pohybu v sekundách.

Stupně: číselná hodnota udávající úhel natočení ve stupních ( zadáváme hodnotu 0-360).

Počet otáček: číselná hodnota udávající počet otáček motoru.

Počkat na dokončení: možnost, která udává, zda se má počkat na dokončení vykonávání pohybu motoru a až poté začít vykonávat další příkaz. Jako parametr můžeme využít dvě nadefinované konstanty:

  • MMX_Completion_Wait_For - bude se čekat na dokončení,
  • MMX_Completion_Dont_Wait - nebude se čekat na dokončení.

Další akce: možnost, která udává, zda se má po dokončení úkonu motor zastavit nebo pokračovat v chodu.

  • MMX_Next_Action_Float - motor pokračuje v chodu,
  • MMX_Next_Action_Brake - motor se zastaví (čítačem otáček nejsou zaznamenávány další pohyby motoru),
  • MMX_Next_Action_BrakeHold - motor je zastaven (otáčky motoru budou zaznamenány i po zastavení motoru - například pootočení motoru uživatelem).

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

KURZ: Lineární motory

V robotické stavebnici LEGO Mindstorms NXT je možné používat velké množství rozšiřujících senzorů a zařízení od různých výrobců. Nyní se zaměříme na zařízení, jehož výrobcem je firma Firgelli Technologies Inc. Jedná se o lineární motor, který je někdy nazývaný také jako lineární aktuátor. Jeho funkcí je pohyb výsuvného ramena poháněného vestavěným motůrkem v jednom směru. Je pouze na konstruktérovi robota, zda jej použije pro zařízení v horizontálním nebo vertikálním směru. Praktické využití může být směřováno například k robotovi, který využívá posuvného ramena jeřábu. Další možností může být vetikální pohon zdvihového zařízení skladového manipulátoru, někdy zvaného též ještěrka.

PRÁCE S lineárním motorem V PROGRAMOVACÍCH PROSTŘEDÍCH

NXT-G

BLOK PRO OVLÁDÁNÍ LINEÁRNÍHO MOTORU

Rozcestník


UMÍSTĚNÍ BLOKU

Lineární motor je v programovacím prostředí NXT-G řízen blokem Linearni aktuator blok maly Actuator Block. Tento blok není součástí základní instalace. Pro jeho použití je nutné jej do prostředí importovat. Návod k importu rozšiřujících modulů naleznete v kapitole Instalace rozšiřujících modulů.

Poznámka: Blok naleznete ke stažení na stránkách výrobce ZDE.

Linearni aktuator blok

 

POPIS BLOKU

Blok lineárního motoru obsahuje celkem 5 konektorů pro propojení s dalšími bloky:

Number Output dup - výstupní port umožňující předání řízení jinému motoru na jiném portu.

Boolean Wait for Completion? - konektor, který vyjadřuje, zda se má čekat na dokončení příkazu.

Number Distance in Milimetres - označuje, o kolik se má motor posunout (v mm).

Number Power - vyjadřuje rychlost pohybu motoru (0 - 100).

Number Output - označuje port, ke kterému je motor připojen.

 

PARAMETRY BLOKU 

Linearni aktuator

Port: označuje, ke kterému výstupnímu portu je lineární motor připojen.

Direction: směr posunu motoru.

Speed: rychlost posunu motoru (0 - 100).

Distance: vzdálenost, o kterou má být rameno motoru vysunuto nebo zasunuto. Je možné ji vyjadřovat v milimetrech (mm) nebo ve standardizovaných LEGO jednotkách (holes). Jedna jednotka se rovná 8 mm.

Wait: vybráním této možnosti dáváme motoru pokyn ukončit svoji činnost ještě před dalším krokem programu.

Manual: zaškrtnutí volby umožní řídit motor ručně pomocí tlačítek na řídící kostce NXT.

RobotC

Příkazy a metody

Ovládání lineárního motoru je totožné s ovládáním klasického servomotoru. Provádí se pomocí příkazu motor[].

Port: označení portu, ke kterému je motor připojen je uvedeno v závorce jako parametr příkazu (motorA, motorB nebo motorC).

 
motor[motorA] = 20; // Motor je pripojen k portu A a otaci se smerem vpred s vykonem 20%.
 

Intenzita otáčení motoru: udává na stupnici od 0 do 100% výkon motoru.

 
motor[motorA] = 20; // Motor je pripojen k portu A a otaci se smerem vpred s vykonem 20%.
 

Směr otáčení motoru: v programovacím prostředí RobotC se směr pohybu motoru označuje znaménkem. Pokud je hodnota intenzity pohybu lineárního motoru kladná, vysouvá se jeho rameno směrem ven. Pokud je hodnota záporná, jedná se o opačný pohyb, tedy zasouvání ramena.

 
motor[motorA] = -20; // Motor je pripojen k portu A a otaci se smerem vzad s vykonem 20%.
 

OVLIVNĚNÍ DOBY posunu MOTORU

Délka trvání pohybu je nastavována v milisekundách pomocí příkazu wait1Msec() nebo v desítkách milisekund příkazem wait10Msec().

 
motor[motorA] = 40; // Posuv linearniho motoru je provaden rychlosti 40%.
wait1Msec(4000); // Doba posunu je stanovena na 4 sekundy.
 

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)

KURZ: Rozšiřující výstupní moduly

Seznam článků kapitoly

  1. Lineární motory
  2. Multiplexování výstupů

Úvod

Stejně jako můžeme využívat mnohá vstupní zařízení od jiných výrobců než je společnost LEGO, je možné do robota zakomponovat některá zařízení výstupní. Pro pohyb robota a pohon jiných pohyblivých částí slouží servomotory. Budeme-li ovšem potřebovat některou jeho součást posouvat pouze v lineárním směru, může se nám hodit Lineární motor. Jeho praktické využití je časté hlavně u posuvných ramen jeřábu nebo jiných manipulátorů. Záleží pouze na konstruktérovi, jak ho v horizontální či vertikální poloze použije.

U rozšiřujících výstupních modulů jsme si představili možnosti rozšíření počtu vstupních portů. Stejnou možnost máme také u modulů výstupních. Pomocí čeho této možnosti docílíme, se dozvíte v kapitole Multiplexování výstupů.

1 1 1 1 1 1 1 1 1 1 Hodnocení 0.00 (0 hodnocení)