Skip to content

Ovladani serv

Svata Dedic edited this page Apr 3, 2018 · 5 revisions

Table of Contents

Ovládání serv

Nastavení rozsahu

Každé servo má následující vlastnosti, které se jednou nastaví a pak se při jednotivých akcích používají:

  • levá poloha
  • pravá poloha
  • rychlost
Servo lze přestavit i na konkrétní polohu zadanou jako úhel 0-180, ale pro mnoho aplikací postačí dvě polohy, které je tak možné vyzkoušet a zaznamenat samostatně a pak používat. Při opravě, výměně serva může dojít ke změně krajních poloh - pak není nutné měnit jednotlivé akce a definice, ale postačí změnit nastavení serva.

Nastavení serva se prování příkazem

RNG:s:l:p
RNG:s:l:p:r
kde
s
číslo serva. Pokud má již rozsah definovaný, přepíše se novou definicí.
l
levá poloha serva, jako úhel 0-180
p
pravá poloha serva, jako úhel 0-180
r
rychlost, 1 nejvyšší, 8 nejnižší.
Z důvodu úspory paměti jsou levá a pravá poloha reprezentované jako menší číslo, zaokrouhluje se na 3 stupně. Program po zadání číslo upraví na nejbližší násobek. Rychlost je nepovinný parametr, nemusí se uvádět - standardní je rychlost 1.

Příkaz RNG je konfigurační, neukládá se do sekvence akcí pro reakce na tlačítka

Příklad nastavení serva:

RNG:1:80:120:5
pomaleji (rychlost 5) se hýbající servo, levá poloha 80, pravá 120 stupňů
RNG:2:90:110
servo se pohybuje standardní rychlostí, levá poloha 90, pravá 110 stupňů

Kalibrace

Nastavení je možné ještě "interaktivně", pomocí příkazu

CAL:s
kde "s" je číslo serva. CAL znamená "CALibrate". Po zadání CAL se zpracování vstupu přepne na *jednotlivé znaky*. Náklon serva se ovládá stiskem nebo přidržením tlačítek klávesnice PC:
q, +
"nahoru", většá úhly. Každý stisk vychýlí servo o 3 stupně.
a, -
"dolů", menší úhly.
ENTER
potvrdí polohu
ESC nebo "." (tečka)
zruší celou kalibraci
Po spuštění CAL se servo nastaví do (prozatím definované) levé polohy. Není-li ještě servo nastavené, je levá a pravá poloha 90. Nejprve nastaví levá poloha, potvrdí ENTER. Pak pravá poloha, opět potvdí ENTER. Pak se nastavuje rychlost. Během nastavení rychlosti servo přejíždí mezi nastavenými polohami. Posledním stiskem ENTER (po seřízení rychlosti) se nastavení uloží ve formě příkazu RNG, jako by jej zadal uživatel přímo.

Příkaz CAL je konfigurační, neukládá se do sekvence akcí pro reakce na tlačítka

Příklad kalibrace serva:

CAL:5

Nastavení ohlasu serva

Každé servo může být (volitelně) spojené s jedním výstupem, na kterém se signalizuje "ohlas" polohy. Při pohybu serva do pravé polohy se takový výstup sepne, při pohybu serva do levé polohy se rozepne. Pokud se servo pohybuje do polohy zadané jako stupně, má ohlas jiný význam - je sepnutý během pohybu serva, rozepnutý, je-li servo v klidu.

Ohlas serva se nastaví jako

SFB:s:o
kde "s" je číslo serva, "o" je číslo výstupu. Pokud je číslo výstupu 0, ohlas u serva se zruší (příkaz SFB zmizí z konfigurace). Dvě serva mohou mít přiřazený stejný výstup; pak platí, že poslední pohyb vyhrává. Po zapnutí napájení Arduino vyhodnotí polohy serva a je-li některé v (zapamatované) poloze R (pravé), zapne jeho ohlas.

Sepnutí výstupů odpovídající ohlasům je možné kontrolovat ve výpisu příkazu INF, kde každému sepnutému výstupu odpovídá "1" v řádku "Out state".

Ohlasy je možné použít pro spínání přídavných zařízení, signalizaci, ... například pro provázání s řízením znaků návěstidel podle polohy výhybek.

Příkaz SFB je konfigurační, neukládá se do sekvence akcí pro reakce na tlačítka

Příklad nastavení ohlasu

SFB:1:5
Nastaví ohlas pro servo 1 na výstupu 5.
SFB:2:0
Zruší ohlas serva 2.

Pohyb serva

Pohyb serva nařídí příkaz

MOV:x:p
MOV:x:p:r
kde "x" je číslo serva (1-8) a "p" je poloha. Poloha může být
  • L - úhel levé polohy nastavený příkazem RNG
  • R - úhel pravé polohy nastavený příkazem RNG
  • konkrétní úhel, kam se má páka serva nastavit.
V zapojení desky ServoPoint jsou vyvedené 2 řídící PWM signály pro serva, znamená to, že některé dvojice serv se mohou pohybovat zároveň. Jde o dvojice 1,2 - 3,4 - 5,6 a 7,8. Pokud se spustí pohyb jednoho serva z dvojice bez čekání na dokončení, a spustí se druhé servo z dvojice, začne se pohybovat okamžitě. Pokud se vykonají akce ke spuštění serv mimo určené dvojice, čeká se vždy na uvolnění signálu (dokončení pohybu serva). Potřebujete-li pohybovat servy zároveň, musíte jejich zapojení podřídit uspořádání do dvojic.

Pokud není možné servem hýbat (servo mimo pár je nyní v pohybu), akce zablokuje svou sekvenci až do doby uvolnění servo výstupu - a to i v případě, že se na dokončování akcí nečeká.

Po dokončení pohybu serva se opraví výstup ohlasu, je-li pro servo nastavený. Pokud je servo již v poloze nařízené příkazem, povel se považuje za vykonaný ihned.

Příklady:

 MOV:1:R
 MOV:2:L
 MOV:3:150
</blockquote>
Nastaví nejprve servo 1 do pravé polohy (zkonfiurované předtím příkazem RNG), pak servo 2 do levé polohy a nakonec nastaví servo 3 na úhel 150 stupňů.