Actions

IntroARM

From Chalmers Robotics

IntroARMRev3 3D Pose.jpg
IntroARM är den senaste byggsatsen i Chalmers robotförenings serie av utbildningskit. Den är utvecklad med ytmonterade komponenter, har en mycket kraftfullare processor och bättre motorer och växellåda än föregångaren.

Introduktion

IntroARM är det senaste kittet i Chalmers robotförenings serie av utbildningskit. Till skillnad från de tidigare kit:en som har varit designade med enbart hålmonterade komponenter(komponenter med långa komponentben som går igenom kretskortet och fästs på andra sidan av det) så är IntroARM designat med huvudsakligen ytmonterade komponenter. Detta är mer i led med tiden då utanför då hålmonterade komponenter i stort sett inte längre används utanför prototypdesign för hobbyister. Dessutom är ytmonterade komponenter mindre, billigare och lättare att tillverka kretskort till då det inte behöver borras lika många hål genom kretskortet. Det är dessutom enklare att göra om ifall man råkar göra fel.
Att komponenterna är mindre och inte längre har långa komponentben medför dock att lödningen av kittet blir svårare (kan diskuteras). Vi har därför valt att förmontera de svåraste komponenterna samt välja större mer nybörjarvänliga komponenter i övrigt. Tanken är att göra användaren mer bekväm med ytmonterade komponenter så att han eller hon inte känner att det är svårare än att arbeta med hålmonterade komponenter. Då det mesta arbete med kretskort på föreningen sker med ytmonterade komponenter så kan även de mer erfarna medlemmarna arbeta med kortet utan att de känner att de tar ett steg bakåt.

Ytmonterade komponenter ger även en möjlighet att använda en kraftigare, mer modern mikrokontroller som ger användaren mer möjligheter än tidigare. Den nya mikrokontrollern är en 32-bitars mikrokontroller av med ARM Cortex-M3-kärna från ST Microelectronics. Den är en del i en stor serie av ARM-processorer som ST erbjuder som alla kan programmeras på liknande sätt. Serien sträcker sig från svagare mikrokontrollers till bland de kraftigaste på mikrokontroller marknaden.
Den mikrokontroller som används i IntroARM är en STM32F100 som är en av de svagare i STs utbud, men fortfarande kraftigare än de tidigare som använts i Introbot. Vidare så erbjuder även ST ett färdigt funktionsbibliotek till som täcker alla lågnivåfunktioner på deras mikrokontrollers och gör det lättare att komma igång och implementera nya saker.

Till skillnad från sina föregångare är IntroARM mer fokuseard mot att bli en minisumo, detta gör att det har gjorts vissa avkall mot modulariteten jämfört med tidigare byggsatser, men vi anser att de extra funktionerna och kvaliteten gör det värt det. Det krävs numera t.ex. ingen extra hårdvara (t.ex. chassi) för att få roboten att bara köra. Det är självklart möjligt att göra andra saker med byggsatsen, såsom t.ex. linjeföljare, inverterad pendel eller bara ett enkelt utvecklingskort. Det finns ett antal expansionsportar enkelt tillgängliga som man kan anvädna för ytterligare funktioner.

Features

Den kraftigare mikrokontrollern ger också möjlighet att utöka mängden funktioner från de som fanns på Introbot09. De funktioner som finns på IntroARM är:

Elektronik

  • STM32F100CBTx med ARM Cortex-M3, 64-128kB Flash, 8kB RAM
  • 4 IR-avståndssensorer
  • 2 kantsensorer
  • Styrning av två motorer
  • 6 indikatorLEDs
  • 2 användarknappar
  • 2 tachometrar (hjulhastighetsmätare)
  • Hållare för SD-kort
  • Högtalare
  • 3-axlig accelerometer
  • 3-axlig gyrometer
  • Batterimätning

Mekanik

  • 2 Pololu Micro Metal Gear motor HP (100:1 som standard)
  • 2 Motorfästen som monteras direkt på kretskortet
  • 2 Hjul med tachometertänder
  • Ett flertal fästpunker att skruva fast ett egenbyggt chassi i

Förberedelse programmering STM32

Vilse har satts på att göra en allomfattande guide för nybörjare som tar dig igenom alla moment för att komma igång med programmering.

Då många av de aktiva på robotföreningen använder linux som primärt operativsystem när vi programmerar så är det lättare för oss att underhålla en linuxbaserad lösning än en windowsbaserad lösning. Därför rekomenderar vi om ni inte använder linux i nuläget att ni antigen dualbootar ert existerande operativsystem med en linuxpartition eller använder en virtuell maskin i ert existerande operativsystemet som kör linux (kräver lite bättre dator då det innebär att köra två operativsystem samtidigt). Vi kommer att ge instruktioner för hur ni sätter upp den virtuella maskinen här i denna guide och även ge en färdigkonfigurerad virtuell linux installation. Hur man sätter upp en dualboot finns det mycket instruktioner om hur man göra på andra ställen, bara att googla. (Kanske hitta guider för bägge och länka till dem?)

I annat fall är google din vän. Googla på t.ex. Setting up STM32 for (och så det OS du använder). Du kan även slänga med din favoritutvecklingsmiljö (Eclipse) i söksträngen. En IDE underlättar utvecklingen enormt.

Byggbeskrivning introARM

Byggbeskrivning introARM går igenom hur du sätter ihop hårdvaran för din IntroARM. Innehåller t.ex. vilka komponenter som ska sitta vart, lite testmöjligheter osv.

Programmering STM32

Programmering STM32 går igenom hur man utvecklar programvara för STM32. Den innehåller information om drivrutiner till peripherals och STs biblioteik (stdperiph). Denna sida handlar inte hur man sätter upp utvecklingsmiljöer. Det görs i Förberedelse programmering STM32. Notera att det även finns alternativ till STs bilbiotek, som har en lite tråkig kommersiell licens. Ett alternativ är libopencm3. IntroARM är dock i dagsläget byggt på STs bibliotek och kommer fortsätta vara så.

Ladda över programmet

För att ladda över programmet använder vi oss av de

Program IntroARM

Program IntroARM går igenom det program som finns är utvecklat av robotföreningen som är en bra punkt att utgå från. Den innehåller information om de färdiga funktioner som är skräddarsydda för IntroARM-kortet.

Förbättringsförslag

Här samlas buggar och förbättringsförslag på hårdvaran till IntroARM. Alla förbättringar ligger mot nästa revision. Om du har en gammal revision får du kolla längre ner. Nuvarande version: Rev3
OBS: Värt att notera är att vi blandar begreppet version of revision ganska friskt i beskrivningar, kod etc. Vi menar eg samma sak. Det är numret efter som är viktigt.

Till revision 4

  • Byt ut Buzzern till 254-EMB15-RO. Detta är en magnetisk buzzer som är gjord för 5V. Eftersom den är magnetisk blir det bättre ljud. Den är också billigare och mindre. Dock behövs en skyddsdiod runt buzzern (kanske kan lösas med ett motstånd och en P-fet).
  • Silkscreenen på komponentnamnen (för kondingar/motstånd) är väldigt små. Försök göra dom större om möjligt.
  • Buzzern har inget namn i silkscreen
  • Det står inte vilken SPI det är i silkscreenen (det står bara MISO/MOSI etc)
  • Det vore bra med någon mätpunkt/kontakt för V+ efter polvändningsskyddet på ovansidan.
  • Jordpadden för oscilloskopsklämma har lödmask på undersidan. Det borde den kanske inte ha.
  • Lägg stopmask (exponerad koppar) i jordplanet på andra sidan från motordrivaren. Vian borde även även vara större.
  • Flytta C23 och R23 lite längre från IRMOT2.
  • Det går ledare och vias under ena motorn. Försök att routa om dessa.
  • Det saknas revisionstext och namn etc. Glöm inte detta! Revision 3 känns igen på att den stora jordpadden inte är exponerad på undersidan.
  • Re-annotera alla komponentreferenser (så att referenser som inte finns längre tas bort)
  • Gör hålen för kantsensorerna lite mindre (totalt 1 mm i bredd och höjd kanske).
  • Transistorerna är lite svåra att löda, förstora padsen.
  • Lägg till silkscreen för de vinklade stiftlisterna.
  • 5V och 3,3V markeringen täcks av motorfästena.
  • Flytta tachometrar längre in på kortet (c:a 2mm)
  • Flytta power-LED till ovansidan (antingen i bakkant eller vid någon av sidosensorerna)
  • Flytta IR-LEDs till sidosensorer längre in på kortet (möjligen rikta mer ut åt sidan). Skärmningen är svår att få till inom storleksbegränsningen på 10cm.
  • Flytta Vin så att den inte ligger precis bakom en sensor. Man kan vilja böja IR-mottagarna bakåt.
  • Förstora silkscreen på SD-sockeln. Den går in i skruven litegrann.
  • Flytta isär IR-mottagarna fram så att man får in Lipot mellan (behövs bara några mm extra)
  • På SWD-kontakten bör GND och VCC byta plats, så att det blir ordentligt 1:1 med en STM32F4Discovery. Det kan vara så att det är felmärkt.
  • Sätt en silkscreeen vid MPU6050 som förklarar vilka håll axlarna går åt (enligt ISO8855).

Till revision 3

  • Silkscreenen för C17 syns dåligt på kretskortet, flytta markeringen till nästa revision. C17 är helt slopad.
  • Silkscreen på tantalerna saknas/syns dåligt. Lägg till i footprintet ordentligt.
  • Det står inte vilken uart/I2C som går till vilken stiftlist. Detta borde märkas ut som RX1/TX1, RX2/TX2 osv. Fixa i nästa revision.
  • Motorkontakterna är långt ifrån motorerna, flytta i nästa revison.
  • Benen till mikrokontrollern, h-bryggan och IMU är korta vilket för det svårare att löda. Dessa bör vara längre. Fixa i nästa revision.
  • Se till att det finns någonstans att sätta en jordklämma för att mäta med oscilloskop.
  • Footprintet till tachometrarna (REF1 och REF2) är dåligt. Markeringen syns dåligt.
  • Kantdetektorerna har för korta ben för hålen, det finns kantdetektorer med längre ben, använd dem. Fixa till nästa revision. Problem, går inte att köpa från Mouser. De kan köpas från Elfa. Vi kör på dom med korta ben och ändrar hålet.
  • Ta bort bootloader-kretsen. Eftersom stm32flash fungerar bra nu med att styra båda pinnarna behövs inte denna. Dra ut boot till programmeringsstiftlisten.
  • Fundera ifall motstånden till IR-ledsen behöver vara 10ohm (sternå fick det att funka bra med 100ohm). Kör på 100ohm.
  • Flytta C35 till innan MOSFETen till Buzzern
  • Ingen plusmarkering för IR dioderna, det korta benet skall vara mot GND. GND kan identifieras genom att det är ett stort plan på kretskortet istället för en enkel ledare till lödpadden. Fixa till nästa revision.
  • Footprintet för switchregulatorn behöver pin-1 markering, lägg till i nästa revision. Den sitter mot knapparna (från microcontrollern)