Mikrokontrolér 20M2 - robot Sumo GT12

Odpovědět
tomis2

Mikrokontrolér 20M2 - robot Sumo GT12

Příspěvek od tomis2 »

Dobrý večer,
již dříve jsem se tu zmiňoval o mojí ročníkové práci s robotem z Merkuru. Poskytl jste mi dokumentaci od robota Alfa. Díky ní jsem byl již schopen robota rozjet. Narazil jsem však na několik problémů. I přesto, že jsem oboum motorům poslal sériovou linkou signál pro maximální rychlost točení, jeden motor se vždy točil trochu pomaleji, což mělo za důsledek zatáčení robota. To jsem vyřešil ubráním na rychlosti rychlejšího motoru. Robot již je schopen jezdit rovně, i když poměrně pomalu. Dále mám problém s tímto kódem:

Kód: Vybrat vše

#picaxe 20m2
#no_data
Default:
symbol Out_Pin = 7
Symbol Left_Motor = b0
Symbol Right_Motor = b1
Symbol Black = 0
Symbol White = 1

High Out_Pin
pause 2500
High b.1

Main:

  for Right_Motor = 64 to 128 step 2
  Left_Motor = Right_Motor - 114
  pause 100
 
  serout Out_Pin, T4800_4, (Right_Motor,Left_Motor)
  
  
  next Right_Motor
 

  

goto Main


Chtěl bych tím docílit plynulého rozjezdu robota. Čeho se však dočkám je to, že se jeden z motorů nejdříve trošku zatočí dozadu a posléze se oba motory opravdu začnou rozjíždět, ale když dosáhnou nějaké konstantní rychlosti, cyklus se přeruší, motory se zastaví a celé se to opakuje. Prosil bych o radu. Děkuji
AlesH
Příspěvky: 323
Registrován: 25 úno 2013, 09:18

Re: Mikrokontrolér 20M2 - robot Sumo GT12

Příspěvek od AlesH »

Ahoj. Řekl bych, že pozorované chování přesně odpovídá tomu zapsanému programu.

Protože máš na konci napsáno "goto Main", tak je celý program nekonečná smyčka, takže se cyklus rozjíždění opakuje pořád dokolečka (od pomalé rychlosti k maximální).

Předpokládám, že hodnotami Left_Motor a Right_Motor se určuje rychlost i směr otáčení motorů. Protože pro Left_Motor vždy odečítáš hodnotu 114 od hodnoty Right_Motor, tak po většinu cyklu (od 64 do 113) je hodnota pro Left_Motor "záporná" (ve skutečnosti zřejmě "přeteče" mezi hodnoty 178 až 255). Odhaduju, že při takových hodnotách se motor může točit i "dozadu" (to ale asi záleží na celkovém nastavení robota).

Takže řešením je rozjižděcí smyčku po dokončení už neopakovat a při rozjíždění zajistit, aby hodota pro Left_Motor nepadala do "záporných hodnot". Je to srozumitelné?
tomis2

Re: Mikrokontrolér 20M2 - robot Sumo GT12

Příspěvek od tomis2 »

Ta záporná hodnota byla spíše chyba z nepozornosti, i tak děkuji za upozornění. S tím skokem na začátek procedury jste měl pravdu a opravdu to již fonguje jak má, nechápu, že jsem na to nepřišel sám :-D Každopádně vám moc děkuju. :)
Odpovědět