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.