Driv- / positions kort samt motorer
Övergripande
Driv- / positionskortet driver roboten framåt med hjälp av två oberoende 12 V DCmotorer som styrs med pulsbreddsmodulerade signaler. Kortet använder sig av
halleffektsgivare för att kunna fastställa riktning på varje hjul samt tillryggalagd
sträcka. Med hjälp av den informationen så kan position (X,Y koord.) och vinkel
relativt startposition räknas fram.
Kortet tar emot order från Huvudkortet som anger hastighet/riktning på respektive
hjul. Drivningen kan även tas över av en PC via FM-länken. När roboten ska ”docka”
under en IR-fyr så tar sensorkortet över drivningen av roboten.
Halleffektsgivarna klockar en 4-bitars räknekrets per hjul som räknar pulserna.
Processorn läser av räknarna var 40:e millisekund. Då motorerna är bestyckade med
dubbla halleffektsgivare så kan man med hjälp av en JK-vippa styra räknarnas
UP/DOWN ingång för att få fram riktning.
Kortet spänningsmatar motorerna med +12V via en H-brygga uppbyggd av reläer.
Halleffektsgivarna matas från kortet med +5V.
Kortet ska bestyckas med diverse filter och avkopplingar för att förhindra störningar
från motorer respektive logikkretsar.
Prestanda
De två DC-motorerna kan framdriva roboten i en ungefärlig hastighet av 4,5 km/h
vilket ligger över den specade hastigheten på ”normal” promenadtakt. Hjulen har en
diameter på 19,3 cm.
Hastigheten till motorerna ska filtreras så att inga så hastiga rörelser görs så att reset
av roboten riskerar att ske.
Positionen ska kunna bestämmas på 1,8 m på hela området mellan två IR-fyrar där
absolut positionering bestäms. Felmarginalen vid vinkelbestämning är 2 grader vilket
ger 0,9 m fel på 25 m (uppskattat avstånd mellan två fyrar). Vid dockning kan den
absoluta positionen skilja på max 1 pixel = 30 cm. Positionskortet får sålunda ha en
maximal onoggrannhet på 0,6 m mellan två fyrar.
Elektriskt interface
Kortet matas med en separat matning för motorerna, +12V från motorbatteriet.
Busspecifikation
CAN-gränssnitt (enligt separat specifikation) används för kommunikation med övriga
enheter.
Insignaler för motordrivningsdelen, CAN meddelanden
MOTORSTYRNING samt KROCK
Samtliga signaler deklareras som unsigned då inga negativa koordinater eller vinklar
är tillåtna.
MOTORSTYRNING (2 Byte)
MSB
Dator







LSB
Hastighet Vänster
IR
HK
L/R
X
Hastighet Höger
X
F/B-V
F/B-H
2 Byte (2 char), första byten i meddelandet visas överst i meddelandetabellen.
Meddelanden skickas inte med en fast frekvens utan skickas vid förändring,
som ny riktning/hastighet. Drivkortet följer senaste ordern tills en ny ges.
X = Don’t care
Dator - biten indikerar att meddelandet kom från FM-modulen på kartkortet =
”Datorgränssnittet”.
IR – biten indikerar att meddelandet kom ifrån sensorkortet.
HK – biten indikerar att meddelandet kom ifrån huvudkortet.
L/R – biten indikerar om meddelandet innebär en ”lock” respektive ”release”
av modulen, se förklaring nedan.
Beskrivning av de övre fyra bitarna av den andra byten i Motorstyrningsmeddelandet.
Bitarna innebär en prioritetshantering enligt följande, (högst prio. = 1):
1. 1001 Datorn tar över motorstyrningen och låser kortet så att alla meddelanden
med lägre prioritet ignoreras.
1000 Datorn låser upp modulen och öppnar den för meddelanden av lägre
prioritet.
2. 0101 Sensorkortet tar över styrningen av roboten och försöker att docka den
under IR-fyren. Kortet är låst för meddelanden av lägre prioritet. Meddelande
från datorn kan dock fortfarande ta över modulen.
0100 Roboten har dockat och sensorkortet låser upp modulen för medelanden
av lägre prioritet.
3. 001X Meddelanden från HK kan inte låsa modulen och de har lägst prioritet.
Detta är ”normal” syntax för meddelanden vid gång mellan IR-fyrar.
Vid kollision så skickas CAN-meddelandet KROCK som innehåller 0 Byte. Endast
CAN ID avkodas. Meddelandet skickas från sensorkortet till alla moduler. Vid
kollision så bromsas motorerna ner snabbt till stillastående. Drivkortet inväntar sen ny
order.
Signaler till och från positionsdelen, CAN meddelanden KARTBYTE
(insignal) samt BERÄKNAD POSITION (utsignal)
Samtliga signaler deklareras som unsigned då inga negativa koordinater eller vinklar
är tillåtna.
KARTBYTE (5 Byte)
MSB
D7-X
D7-Y
D6-X
D6-Y
D5-X
D5-Y
D4-X
D4-Y
D3-X
D3-Y
D2-X
D2-Y
D1-X
D1-Y
LSB
D0-X
D0-Y
D15-V
D7-V
X






D14-V
D6-V
X
D13-V
D5-V
X
D12-V
D4-V
X
D11-V
D3-V
X
D10-V
D2-V
X
D9-V
D1-V
X
D8-V
D0-V
X
5 Byte (2 char, 1 int samt 1 char), första byten i meddelandet visas överst i
tabellen.
Meddelandet skickas från HK till drivkortet samt kartmodulen.
Uppdatering sker vid dockning i gateway.
Den sista byten (char) i meddelandet anger kartbyte och ignoreras av
drivkortet.
X samt Y (char) anges i pixlar (30*30 cm), drivkortet omvandlar pixelns
mittpunkt till cm precision för vidare beräkning.
Vinkeln (int) anges i grader och är utläst med hjälp av kompass.
BERÄKNAD POSITION (6 Byte)
MSB
D15-X
D7-X
D15-Y
D7-Y
D15-V
D7-V




D14-X
D6-X
D14-Y
D6-Y
D14-V
D6-V
D13-X
D5-X
D13-Y
D5-Y
D13-V
D5-V
D12-X
D4-X
D12-Y
D4-Y
D12-V
D4-V
D11-X
D3-X
D11-Y
D3-Y
D11-V
D3-V
D10-X
D2-X
D10-Y
D2-Y
D10-V
D2-V
D9-X
D1-X
D9-Y
D1-Y
D9-V
D1-V
LSB
D8-X
D0-X
D8-Y
D0-Y
D8-V
D0-V
6 Byte (3 int), första byten i meddelandet visas överst i tabellen.
Meddelandet skickas till HK samt till Datorn via FM-modulen.
Uppdatering sker var 500:e millisekund, detta säkerställer att roboten max.
hinner förflytta sig en pixel.
Beräkningar sker med cm precision och koordinater levereras i cm. Vinkeln
levereras i grader.