User Manual
97
void moveAtSpeed(uint8_t desired_speed_left, uint8_t desired_speed_right)
Tato funkce nastavuje provozní rychlost. Jednotlivé parametry budou definovat požadovanou
rychlost levého a pravého motoru. Opakované volání funkce motionControl (jak bylo popsáno
v předchozí kapitole) zajistí nastavení hodnot pro regulaci rychlosti. Nastavení této hodnoty na
nulu vyvolá zpomalování následované úplným vypnutím modulu PWM.
getDesSpeedLeft() a getDesSpeedRight()
Tato makra umožňují čtení okamžitého nastavení hodnoty rychlosti. Jak můžete vidět
v následujícím ukázkovém programu, používá se velmi jednoduše:
... a nyní se začne RP6 pohybovat! Robot samozřejmě nebude reagovat na některé překážky a
pohybuje se pouze dopředu! Systém se bude pouze pokoušet regulovat rychlost a automaticky
nastavovat výkon motorů – tj. stoupání a sjíždění svahu.
BUĎTE OPATRNÍ: Toto chování může být velmi nebezpečné pro vaše
vlasní prsty – dávejte pozor, aby se prsty nedotýkali pásové dráhy a
hnacích kol. Udržujte v čistotě desku plošných spojů a vedení pásů.
Existuje velké nebezpečí úrazu! Jak jsme již zmínili, výkon motoru se při
zátěži automaticky zvýší a motory jsou poměrně výkonné!
Parametry rychlosti pro funkci moveAtSpeed nejsou specifikovány v cm/s nebo ekvivalentních
jednotkách, ale v jednotkách rychlosti otáčení.
Rychlost robotu závisí především na reálném obvodu pásů a kol neboli jinak řečeno na rozlišení
enkodérů. Můžeme zde uvažovat toleranci od 0,23 do 0,25 mm na každý segment enkodéru.
Proto se má rozlišení enkodérů měřit.
Systém bude měřit rychlost otáčení v intervalech 200ms, který odpovídá rychlosti 5 krát za
sekundu. Takže jednotkou je “počet segmentů enkodéru za 200ms”. Hodnota 70, která se
používá v příkladu na předchozí stránce, může být interpretována jako 70 • 5 = 350 započítání