Mikrokontroller

Från ElektronikWikin

Hoppa till: navigering, sök

Mikrokontroller?

En mikrokontroller (förkortas ofta µC ; µ = micro, C = Controller), även populärt kallad enchipsdator, är ett chip som innehåller alla funktioner som behövs för att exekvera en kod som du själv kan programmera in i den. För att läsa om hur dessa fungerar, se HowStuffWorks.


För att börja programmera mikrokontrollers krävs följande:

Hårdvara:

  • Dator
  • Mikrokontroller (med kristall)
  • "Programmerare" som överför mjukvara från datorn till mikrokontrollern

Mjukvara:

  • Programmeringsverktyg i form av mjukvara
  • IDE (Integrated Development Environment) = programmeringsmiljö
  • Kompilator


Innehåll

Dator

En dator antar jag att du har eftersom du läser detta. Det går bra att arbeta i både Windows- och Linuxmiljö. Den mesta mjukvaran finns för båda plattformar. Ett krav är dock en ledig serieport, USB eller parallellport (se "programmerare").


Mikrokontroller

Självklart behöver man själva mikrokontrollern för att komma igång. Det finns många olika µC att välja på. Tre vanliga som jag tänker presentera här är:

  • Basic Stamp
  • PIC
  • AVR


Basic Stamp

Basic Stamp är grupp färdiga moduler tillverkade av Parallax. Stampen är mycket nybörjarvänlig, det går snabbt att komma igång att experimentera. Detta på bekostnad av priset (högt) och styrkan (låg hastighet och mycket begränsade extra funktioner). Eftersom Stampen är en färdig modul behöver den bara spänning för att fungera, "plug and play".

Basic Stamp kan köpas på exempelvis Robotshop Basic Stamp finns generellt i två familjer. Stamp 1 och Stamp 2. Tvåan är uppföljare till ettan och därmed mer intressant att abeta med. Av Stamp 2 finns det några olika modeller med extra finesser. Se tillverkarens hemsida för mer info.


PIC

PIC är en familj mikrokontrollers tillverkade av Microchip. Dessa finns i väldigt många modeller. Några vanligt förekommande PICar är PIC16F84A, PIC16F628A och PIC16F877A. Jag avråder dock från att införskaffa en PIC16F84(A), de är föråldrade, överprisade och överskattade. PIC16F628A är en utmärkt ersättare i samma klass, fast billigare.

Normalt behöver en PIC en stabiliserad spänningsmatning och en kristall för att fungera. Många av de nyare (d.v.s i princip alla modeller som är aktuella för hobbyister) har även en inbyggd oscillator, och kan då köras utan kristall.

PIC kan köpas i välsorterade elektronikåterförsäljare, exempelvis Elfa, vars sortiment dock är lite begränsat, speciellt bland de lite nyare kretsarna som kan vara intressanta för hobbyister. Bland övriga kan t.ex nämnas JESCAB.

Går även att få som samples av tillverkaren.

PIC finns i flera olika familjer:

  • PIC10F - Små 6-pins ytmonterade chip (SOT23-6) med lite begränsade finesser. Även i standard 8-pin DIP för utveckling och test.
  • PIC12F - 8-pin. PIC12F5xx har en äldre arkitektur och är tänkta som "Flash-upgrade" till äldre PIC12C modeller. PIC12F6xx har samma (lite bättre) arkitektur som PIC16F serien. 12F615 är en ny medlem i familjen. Billig och med nya CCP-modulen är saker som i många fall gör den bättre än 12f675 som börjar bli lite gammal idag.
  • PIC16F - Mellan-familjen. 14-68 pin. Innehåller en hel del användbara finesser.
  • PIC18F - Kraftfullaste familjen 8-bitars. 18-80 pin. Enklare assembler kodning än PIC16. C-kompilator från Microchip som finns i en gratis "Student Edition" variant (med vissa begränsningar i optimeraren).
  • PIC24F - En ny 16-bitars arkitektur. Ej i DIP, dock.
  • dsPIC - I princip samma arktitektur som PIC24, men med en "DSP-engine". Två varianter, dsPIC30 samt dsPIC33

Sen finns det även ett stort antal "C-modeller" (PIC16Cxxxx). Se upp med dom, de är OTP ("One Time Programmable") och är inte avsedda för hobbyister !!

AVR

AVR är en familj mikrokontrollers tillverkade av Atmel. De har många likheter med PIC, men är lite kraftfullare och lite snabbare. Det finns många modeller på AVR, några vanliga är ATtiny26, ATtiny2313 och ATmega88. AVR behöver, precis som PIC, en stabil matningsspänning och en oscillator (finns inbyggd i de flesta modeller) för att fungera. AVRs största fördel jämfört med PIC är att alla familjer inom AVR är byggd på samma kärna, vilket gör det mycket lättare rent programmeringsmässigt att migrera mellan olika familjer/modeller.

AVR kan köpas i vissa elektronikaffärer. Hos t ex Elfa hittar man ett urval av AVR-chip. Kan även gå att få som sample.

AVR finns i olika familjer:

  • ATtiny - Små chip, 8-20 pin, med de nödvändigaste funktionerna.
  • ATmega - 28-100 pin. Kraftfulla och stora!
  • AT90S - Den här serien nyproduceras inte längre, utan har ersatts helt av Tiny- & Mega-serien.
  • AT90USB - Stora AVR:er med USB-stöd.
  • AT90CAN - Stora AVR:er med CAN-stöd.
  • AVR32 - Riktigt kraftfulla 32-bit processorer som inte spelar i samma division som de andra familjerna här.
  • XMEGA - 32-100 pin. Riktigt kraftfulla 8-bitars med DMA,DAC,ADC,SDRAM,mm.

Parameterlista över olika AVR:er

Kristall

För att µC ska kunna arbeta måste den ha en tidsreferens - en oscillatorkrets - som svänger ett exakt antal gånger varje sekund. Vanligtvis avänder man kristaller för detta ändamål. De som används till PIC och AVR brukar ligga mellan 1-20 MHz. För Basic Stamp är kristallen integrerad i modulen. Den ständiga utveckligen har lett till att många µC idag har en integrerad oscillator på exempelvis 4 MHz eller 8 MHz. I följande familjer har alla medlemmar integrerade oscillatorer: PIC10, PIC12, ATiny, ATmega, ATXmega. Utöver dessa finns det många chip i de övriga familjerna som också har denna finess.

För de µC som inte har integrerad oscillator behövs alltså en kristall. På Elfa kan man hitta mikroprocessorkristaller för ca 14 kr. Välj en i listan som inte har högre frekvens än vad den rekommenderade maxfrekvensen för din µC är (se dess datablad). Dessa kristaller behöver två stycken sk. lastkapacitanser för att kunna fungera korrekt. Enligt några datablad för AVR och PIC bör man välja kondensatorer med kapacitansen 12-22 pF. Om man höftar så väljer man exempelvis 18 pF. Här är några lämpliga att välja på. Du behöver alltså två kondensatorer för varje kristall.

Bild:Kristall.gif <-- Kristall (lågprofil)

Sen kommer själva inkopplingen. µC har normalt två ben som heter XTAL1 och XTAL2 (AVR) eller OSC1 och OSC2 (PIC). Mellan dessa ska man koppla in sin kristall. Kondensatorerna kopplas sedan på vardera ben på kristallen ner till jord. Förvillande, antagligen. Kolla på bilden istället!

Bild:Osc.gif Bild:Xtal.gif

Det finns även ett alternativ i form av "Resonatorer", dessa finns med inbyggda lastkondensatorer och lösa kondensatorer behövs därför inte. Dessa resonatorer är oftast billigare än kristaller men inte fullt lika exakta i frekvensen men till projekter som inte är mycket känsliga med timing duger de mycket väl.

Programmerare

En programmerare är en krets man måste ha som länk mellan dator och mikrokontroller. Gränssnittet är oftast RS232 (serieporten), men parallellporten förekommer också. USB håller på att bli ett populärt alternativ. Basic Stamp behöver ingen speciell programmerare, eftersom den är integrerad på själva modulen. PIC oc AVR behöver båda programmerare. Här finns två alternativ: Att bygga en själv eller att köpa en färdig. Att bygga en själv kräver förstås lite förkunskaper inom elektronik, men kan bespara dig några hundralappar.

AVR

PIC

IDE - Programmeringsmiljö

Basic Stamp

  • Medföljer modulerna.

PIC

AVR


Kompilator och Språk

Basic Stamp

  • Basic . Inget annat. Medföljer modulerna.


PIC

  • Assembler - Gratis assembler via MPLAB
  • Basic - Många versioner. Exempel: MikroBasic (Gratis)
  • C - Många versioner. Exempel: PICCLite (Gratis)
  • JAL - JAL


AVR

Övriga länkar


Filer för dig som vill börja med AVR.

Innehåller färdiga laborationer som är enkla att följa samt många kodexempel.
Bland annat lär man sig följande:

Använda 16 tangenters "telefontangentbord"
Använda en display med HD44780 kontroller krets.
Använda UART.
Använda en realtidsklocka DS1302
Grundläggande C++ uttryck if satser mm.


Filer för dig som vill använda Realtidssystem på en AVR.

Innehåller färdiga laborationer samt en hel bok om realtidssystem.
Bland annat lär man sig följande:

Grundläggande multitasking med RoundRobin.
Installera samt använda realtidskärnan AVRX.
Installera samt hur man kompilerar m.h.a AVR-GCC.
Hantera AVRX olika funktioner, bla seriekommunikation.
Genomgång av CAN-bus.
Samt mycket mer.

Felsökning av mikrokontroller:

  • Stadig matningsspänning (oftast 3,3 eller 5 volt)
  • Reset signal måste aktiveras vid start
  • Yttre kristal ska ge sinusvåg på anslutningsbenen.
  • "Power LED" kommer oftast från mikrokontrollern. Så om den inte lyser kan det vara fel från mikrokontrollern.
Personliga verktyg