Byggbeskrivning introARM
Den här bygg-guiden till IntroARM är uppdelad i delar, varje del kommer innehålla två moment, ett lödning- och byggmoment samt ett programeringsmoment.
Byggmomentet involverar framförallt lödning men även lite skruvande och pressande. Vidare så ger kittet endast den elektriska och mekanska grunden och sedan är det upp till dig att lägga till din personliga finish.
Programmeringen under konstruktionen involverar framförallt att ladda upp ett färdigt program till microkontrollern som möjliggör testning av de komponenter som monterades i det tillhörande lödningsmomentet. Men vi ser gärna att ni lär er en liten del programmering i varje steg och kommer därför försöka förbereda några enkla övningar och länka till lämpliga läroresurser. Annars kan det lätt bli för mycket att ta in när du väl börjar programmera.
Förberedelser
Rekommenderat är att du skriver ut komponentkartorna till varje steg då det är lättare att hitta var vilka komponenter skall sitta med hjälp av dem. Du det är också rekommenderat att du kontrollerar att allt finns med mot den fullständiga komponentlistan:
Komponent | Artikelnr | Referens | Antal | Finns med |
---|---|---|---|---|
Mikrokontroller | 511-STM32F100C8T6B | U2 | 1 | Förmonterad |
H-brygga, DRV8833 | 595-DRV8833PWPR | U3 | 1 | Förmonterad |
Switchregulator (3.3V) | 595-TPS62056DGS | U1 | 1 | Förmonterad |
IMU | MPU6050 | U4 | 1 | Förmonterad |
Knappar, små | 688-SKHRAB | SW1-SW3 | 3 | |
Tantal, 100uF, 10V | 581-TPSB107M010R0400 | C7,C15,C39 | 3 | |
Stor keram 10uF | 963-TMK316BJ106KLHT | C2-C5,C13,C19-C20,C27-C30,C37-C38,C40 | 14 | |
Liten Keram 100nF | 77-VJ1206Y104KXXPBC | C1,C6,C8-C12,C14,C18,C21-C26,C31-C36 | 21 | |
Lastkapacitans Kristall 18pF | 77-VJ1206A180JXXPBC | C16-C17 | 2 | |
10k resistor | 660-RK73B2BTTD103J | R6, R11, R13, R15, R17, R19-R20, R27 | 8 | |
3k3 resistor | 660-RK73B2BTTDD332J | R1-R5,R7-R9,R21,R33-R37 | 7 | |
100R resistor | 660-RK73B2BTTD101J | R1-R5,R7,R8, R10,R12,R14,R16,R18,R22-R26,R28 | 18 | |
10R | 660-RK73B2BTTDD100J | R29-R32 | 4 | |
IR-LED | 78-TSUS5400 | LED8-LED11 | 4 | |
IR-mottagare | 782-TSOP38238 | IRMOT1-IRMOT5 | 5 | |
Mostfet (P-kanal) | 771-PMV65XP-T/R | Q1-Q5 | 5 | |
LED Grön | 720-LGN971-KN-1 | LED1-LED2,LED4,LED6 | 4 | |
LED Röd | 720-LYN971-HL-1 | LED3,LED5,LED7 | 3 | |
Induktor (switchregulator) | 963-NRS5020T100MMGJ | L1 | 1 | |
Reflexdetektor | 638-ITR8307TR8 | REF1-REF4 | 4 | |
Kristall 8 MHz | 815-ABL-8-B2 | X1 | 1 | |
5V-regulator (1117-5) | 863-NCP1117ST50T3G | U6 | 1 | |
Diod | 652-CD214A-B130LF | D1 | 1 | |
Buzzer | 254-PB1440-ROX | SP1 | 1 | |
SD-socket | 688-SCHD3A0100 | U5 | 1 | |
Stiftlister | Pin headers | P1, P3-P10 | 1 | |
Stiftlister Vinklade | Pin headers | P2 | 1 | |
Krympslang 8 mm | 4 | |||
PCB | By CRF | 1 |
Hårdvara som inte ska lödas på kortet
Komponent | Artikelnr | Referens | Antal | Finns med |
---|---|---|---|---|
Micro metal gear, 100:1 HP | 1101 | 2 | ||
Motorbrackets, par | 1089 | 1 | ||
Hjul, par | 1090 | 1 | ||
CP2102/CP2104 | CP2102 | 1 | ||
Lipo, 2s | 9210000005 | 1 |
Bilder på komponenter
Bild över alla komponenter som ingår. Tyvärr syns inte vilka motstånd eller kondingar som är vilka.
Nödvändig utrustning
- Dator med en ledig usb-port
- Lödstation
- Lödtenn (Använd blyat lödtenn, då blyfritt är hälsofarligt)
- Flussmedel är rekommenderat, men inte helt nödvändigt
- Pincett
- Avbitartång
- Värmepistol, Varmluftsstation, Ciggaretttändare eller Lödstationen (för krympslangen)
- Liten kryssmejsel
- Någonting att hålla fast kretskortet med under lödningen
- Multimeter rekommenderas till felsökning
Del 1- Spänningsmatning och Microcontroller
Del 1 är framförallt mikrokontrollerns kringkomponenter, kraftförsörjning och grundläggande funktioner som indikatorleds och användarknappar. Här ingår även den krets som styr bootloadern som används för programmering. De komponenter som behövs till denna del kan ses i tabell 1 nedan.
Ingående komponenter del 1
Komponent | Antal | Referens |
---|---|---|
Mikrokontroller | 1 (färdigmonterad) | U2 |
Switchregulator (3.3V) | 1 (färdigmonterad) | U1 |
Stor keram 10uF | 5 | C2, C3, C4, C5, C13 |
Liten Keram 100nF | 7 | C6, C8, C9, C10, C11, C12, C14 |
Tantal, 100uF, 10V | 3 | C1, C7, C15 |
Lastkapacitans Kristall 18pF | 2 | C16, C17 |
10k resistor | 2 | R6, R11, R20 |
3k3 resistor | 1 | R9, R21 |
100R resistor | 8 | R1, R2, R3, R4, R5, R7, R8, R10 |
Mosfet (P-kanal) | 3 | Q1, Q2, Q3 |
LED Grön | 4 | LED1, LED3, LED5, LED7 |
LED Röd | 3 | LED2, LED4, LED6 |
Induktor (switchregulator) | 1 | L1 |
Diod | 1 | D1 |
Kristall 8 MHz | 1 | X1 |
Stiftlist (1x2) | 1 | P1 |
Stiftlist vinklad (1x4) | 1 | P2 |
Knappar, små | 3 | SW1, SW2, SW3 |
Att tänka på
Viktiga saker att tänka på när du löder detta moment är följande (se även bilder på komponenter):
LED1 - LED7 är lysdioder och har därmed polaritet, dvs att det spelar roll åt vilket håll de sitter åt. På LEDsen så finns det på ena kortänden lite grönt på ovansidan som markerar katoden (minus). På undersidan av leden så varierar det hur det är markerat, men generellt så är det en grön pil mot katoden eller ett streck som pekar mot katoden. Katoden är markerat med ett dubbelsträck på komponentavtrycket på kretskortet.
D1 är en vanlig diod och har även den polaritet. Katodsidan är i detta fall markerad med ett svagt grått streck på ovansidan. Denna markering skall matchas mot dubbelstrecket i komponentavtrycket.
C1, C7 och C15 är tantalkapacitatorer och även dessa har polaritet. Komponenterna skall monteras med det bruna strecket mot det breda strecket utanför komponentens avtryck.
Hålmonterade:
- Stiftlister
- Knappar
- Kristall
Notera: Bootkretsen är planerad att tas bort. För revision 2 på kretskortet kan följande procedur användas för att skippa bootkretsen:
- Löd inte C15, R10 och Q3
- Istället för D1, kortslut detta med ett komponentben eller liknande (du får sådana från en IR-mottagare eller IR-led)
- Löd ett kontaktstift (stiftlist) till +-polen på C15 eller den R10-padden som är närmast motorerna.
- Pinnen som kallas för boot är kopplad mot reset och den extrapinnen du lödade är kopplad mot boot0.
Testning
När alla komponenter ovan är monterade är det dags att testa. Rekommenderat är följande procedur:
- Ifall du har en multimeter, använd den och mät resistansen mellan V+ och GND, samt mellan VCC och GND. Där bör det inte vara någon nämnvärd kontakt (flertalet kohm).
- Koppla in batteriet på Vin (precis bredvid buzzern). Tänk på att koppla åt rätt håll. Svart mot GND och röd mot Vin. Nu ska LED1 (power) börja lysa. Ifall den inte gör det, koppla snabbt ur
Du kan testa några program som gör följande:
- Tänder LEDs
- Tänder/släcker LEDs baserat på tid (delay)
- Tänder slöcker LEDs baserat på knappar
- Visar batteriets laddning (ADC)
Komponentlista
Del 2 - Motorer
I detta steg kommer roboten att börja röra på sig. Motordrivaren översätter microcontrollers svaga signaler till starka signaler so morkar driva motorerna framåt och bakåt. Vidare finns det även tachometrar (REF1 och 2) som kan användas för att mäta motorernas (hjulens) hastigheter.
Komponentlista del 2
Komponent | Antal | Referens |
---|---|---|
H-brygga, DRV8833 | 1 (färdigmonterad) | U3 |
10k resistor | 2 | R15, R13 |
100R resistor | 2 | R12, R14 |
Reflexdetektor | 2 | REF1, REF2 |
Stor keram 10uF | 2 | C19, C20 |
Liten Keram 100nF | 1 | C18 |
Micro metal gear, 100:1 HP | 2 | |
Motorbrackets, par | 1 | |
Hjul, par | 1 | |
Stiftlist (1x2) | 2 | P3, P4 |
Att tänka på
- Montera de små komponenterna först och vänta med motorerna och motorfästena till sist.
- För att sätta fast motorerna elektriskt, böj ut stiftlisterna P3 och P4 till motorkontakterna och löd fast dem.
- Hjulet kan vara lite trögt att få på, men det går med milt våld. Det kommer att vara trögare att få av.
Testning
VIKTIGT! Roboten kommer att springa iväg ifall du inte förbereder för detta. Två saker bör man alltid ha med när man testar robotar som kan röra på sig:
- I koden ska du inte låta motorer köra förrän du har givit startkommando (t.ex. via en knapp). Din kod bör se ut liknande som följer:
<syntaxhighlight lang="C"> init_stuff(); //Do normal init routines while(!SW1){} //Wait for input switch 1 to be true run_motors(); //Start your engines! </syntaxhighlight>
- Palla upp roboten så att den är fysiskt förhindrar att åka iväg (t.ex. på en tejprulle, liten mugg eller liknande)
Todo: Ladda in program som kör motorerna. Tryck lite på knapparna för att köra motorerna i olika hastighet, framåt och bakåt.
Del 3 - Sensorer
Här kan roboten börja ta intryck av omgivningen. Det finns ett par olika sensorer:
- 4 st Hinderdetektorer - Består av IR-mottagare för fjärrkontroller samt lysdioder som pulsas enligt ett visst mönster. När ljuset studsar på ett hinder får mottagaren signal.
- 2 st Reflexdetektorer - Känner av underlagets reflektivitet. Kan används för att hitta bordskanter eller en vit linje runt en sumoplan. Skickar ut ljus och mäter hur mycket som kommer tillbaka.
- 1 st IMU (Inertia Measurement Unit) - En krets som innehåller en 3-axlig accelerometer och ett 3-axligt gyro. Kan användas om man vill balansera roboten.
- 1st Fjärrkontrollsmottagare - Denna är likadan som hinderdektetorerna men riktad bakåt. Används för att ta emot kommandon från fjärrkontroller som använder RC5 (vanligt protokoll för TV-fjärrkontroller) t.ex. start/stopp och hastighetsinställningar.
Komponentlista del 3
Komponent | Antal | Referens |
---|---|---|
IMU | 1 (färdigmonterad) | U4 |
10k resistor | 4 | R17, R19, R27 |
3k3 resistor | 3 | R34, R35 |
100R resistor | 8 | R16, R18, R22, R23, R24, R25, R26, R28 |
22R resistor | 4 | R29, R30, R31, R32 |
Stor keram 10uF | 4 | C27, C28, C29, C30 |
Liten Keram 100nF | 1 | C21, C22, C23, C24, C25, C26, C31, C32, C33, C34 |
IR-mottagare | 4 | IRMOT1, IRMOT2, IRMOT3, IRMOT4, IRMOT5 |
IR-LED | 4 | LED8, LED9, LED10, LED11 |
Reflexdetektor | 2 | REF3, REF4 |
Mosfet (P-kanal) | 1 | Q4 |
Krympslang X mm | 4 |
Att tänka på
- R21 finns på två ställen. Den ena ska vara R20. Återkommer om vilken det är. Dessa ska även flyttas till att lödas i del 1
- Tänk på att inte löda IR-mottagarna och lysdioderna hela vägen ner. Spara en del av benen så att de kan böjas tillrätta.
- IR-ledsen är polkänsliga. Det långa benet är plus (anod). Ifall någon har skojat och klippt av benen kan man titta i LEDen. Det ena benet går till en stor platta. Denna stora plattan är minus (katod).
- Ir-mottagarna och lsydioderna behöver mycket skärmning. Använd krympslangen eller svart eltejp till detta. Här får man pröva sig fram lite.
Del 4 - Extrafunktioner
Dessa funktioner är inte nödvändiga för att din IntroARM ska kunna fungera som en robot, utan mer lite roliga extrafunktioner. Detta består av 3 funktioner:
- 5V-regulator - Försörjer 5V till ev andra extra funktioner som du sätter dit själv (t.ex. extra sensorer)
- Buzzer - Roboten låter! Rolig funktion med vilken roboten kan göra olika ljud och enklare spela musik. Kan vara bra som interface till roboten.
- SD-sockel - En kontakt att montera SD-kort i (Sd-kort medföljer ej) på vilket man kan spara t.ex. loggar eller musik med hjälp av Fat-FS.
Komponentlista del 4
Komponent | Antal | Referens | |
---|---|---|---|
5V-regulator (1117-5) | U6 | 1 | |
Buzzer | 1 | SP1 | |
Mosfet (P-kanal) | 1 | Q5 | |
Stor keram 10uF | 3 | C37, C38, C40 | |
Liten Keram 100nF | 2 | C35, C36 | |
Tantal, 100uF, 10V | 1 | C39 | |
SD-sockel | 1 | U5 |
Att tänka på
Testning
Program för pipande. Kanske nåt enkelt program för att läsa en fil eller nåt (spara en logg)
Del 5 - Extra interface
Kontakter för de extra interface som finns utdraget på IntroARM (t.ex. extra UART, SPI, I2C, DAC, ADC) VIKTIGT! Montera enbart dessa stiftlister vid behov, de kommer att vara ivägen för batteriet. Vid normalt användande behövs de ej. Motstånden är seriemotstånd till UART3.
Komponentlista del 5
Komponent | Antal | Referens |
---|---|---|
Motstånd 3k3 | 2 | R36, R37 |
Stiftlist (1x2) | 2 | P5, P6 |
Stiftlist (1x4) | 1 | P7 |
Stiftlist (1x5) | 2 | P8, P9 |
Stiftlist (1x8) | 1 | P10 |