atmega doku

11

Upload: wiliam-javier

Post on 25-Nov-2015

60 views

Category:

Documents


3 download

DESCRIPTION

arduino

TRANSCRIPT

  • Ltanleitung fr das Atmega-Basis-Board

    Version 1.2

    Benjamin Reh

    November 26, 2012

    Contents

    1 Einleitung 2

    2 Zusammenbau 2

    2.1 Teileliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2.2 Ausrichten der Platine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2.3 Atmega Sockel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

    2.4 Spannungsversorgung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

    2.5 LED . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.6 Quarz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    2.7 Programmieradapter und Reset-Schaltung . . . . . . . . . . . . . . . . . . . . . 5

    2.8 Spannungsversorgung fr den ADC . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.9 Transistoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    2.10 Pins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2.11 Ltbrcken SJ1 und SJ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    3 Inbetriebnahme 7

    3.1 Fusebits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    3.2 Erstes Programm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    4 Anhang 7

    4.1 Fehlersuche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    4.2 Berechnung eines Vorwiderstands . . . . . . . . . . . . . . . . . . . . . . . . . . 8

    4.3 Abbildungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

    1

  • Version Mrz 2012 IWR-Robotiklabor

    1 Einleitung

    Dieses Dokument dient als Hilfe beim Zusammenbau des Atmega Boards. Da die Platinen

    nicht bedruckt sind, mssen die Bauteile mit Hilfe von Abbildung 1 und dieser Anleitung

    richtig positioniert werden.

    Der hier beschriebene Vorgang fhrt zum Vollausbau der Platine. Einzelne Abschnitte kn-

    nen bersprungen werden, sofern die Hardware nicht bentigt wird.

    2 Zusammenbau

    2.1 Teileliste

    Bezeichnung Wert Bauteil

    C1, C4, C5, C6 100nF Keramik-Kondensator

    C7,C8 22pF Keramik-Kondensator

    C2 220F Elektrolyt-Kondensator

    C3 10F Elektrolyt-Kondensator

    IC1 Atmega168 IC

    IC2 A7805 Spannungsregler

    Q1 16Mhz Quarz

    JP22 Verpolungssicherer Pin

    LED1 3mm LED

    R1 10kOhm Widerstand

    R2 10Ohm Widerstand

    R3 22OOhm

    1

    Widerstand

    JP1 Wannenstecker

    Q2, Q3 BS250 Transistor

    2.2 Ausrichten der Platine

    Als erstes ist es ntig zu erkennen, von welcher Seite aus die Platine bestckt wird und von

    welcher Seite geltet wird. Am Besten legt man sich die Platine gem der nebenliegenen

    Abbildung (Abb. 1) hin. Die Platine ist von beiden Seiten beschriftet. Auf der Seite, auf der

    die Zeile Robotiklabor an der Uni Heidelberg steht, wird bestckt. Dem zufolge wird auf der

    anderen Seite geltet.

    Ab Version 1.2 sind die Platinen mit oben (Bestckungsseite) und unten (Ltseite) beschriftet.

    2.3 Atmega Sockel

    Der Atmega selbst wird in einen Sockel gesteckt, um ihn gegebenenfalls austauschen zu knnen.

    Der Sockel wird in die Lcher in der Mitte platziert und zwar so, da die Markierung in Form

    einer Einbuchtung an der kurzen Seite nach links zeigt. Den Atmega selbst steckt man am

    Besten erst nach dem Zusammenbau ein.

    2

  • Version Mrz 2012 IWR-Robotiklabor

    Figure 1: Board in der Version 1.1

    2.4 Spannungsversorgung

    Die Spannungsversorgung besteht aus einen 5V Spannungsregler, drei Kondensatoren undeinem Doppelpin zum Anschlieen der Spannung von auen.

    1. Als erstes werden die 2 Pins mit der Verpolungsschutz verltet. Der Verbinder wird so

    eingeltet, da die Fahne zur Platineninnenseite zeigt.

    2. Als Spannungregler wird hier ein LM7805 im TO-220 Gehuse verwendet (Abb.2 ) Er

    wird so eingeltet, da die Khlfahne nach auen von der Platine weg zeigt.

    3. Der Keramikkondensator (C1) wird in die zwei Ltpunkte vor dem Spannungsregler ein-

    geltet, die Polung ist wie bei allen Keramik-Kondensatoren unwichtig.

    4. Der kleine Elektrolytkondensator (C3) wird in die zwei groen Lcher weiter zur Mitte

    leicht oberhalb eingeltet. Die mit mehreren Minus-Zeichen gekennzeichnete Seite mu

    dabei nach auen zeigen.

    5. Der etwas grere Elektrolytkondensator (C2) wird nun noch links unterhalb der Span-

    nungsversorgung eingeltet. Minus ist oben auf der Platine.

    Achtung: Bei Elektrolytkondensatoren ist die richtige Polung wichtig! Sonst wird das Bauteil

    zerstrt!

    Figure 2: A7805 Spannungsregler

    3

  • Version Mrz 2012 IWR-Robotiklabor

    Direkte Spannungsversorgung (alternativ)

    In seltenen Anwendungsbereichen mchte man die Spannung nicht wie oben beschrieben glt-

    ten. Das ist aber eher ein Spezialfall, z.B. wenn die Versorgung von auen bereits ausreichend

    gut ist. Hier wird gezeigt, wie die externe Spannung direkt angeschlossen wird.

    Schliet man die Basis-Platine an eine externe Schaltung an, die schon 5 Volt liefert, so ist

    der Spannungsregler nicht ntig. Der Mikrocontroller vertrgt eine Spannung zwischen 4.5 und

    5.5 Volt. Statt des Spannungsreglers wird dann ein in der Mitte isolierter Draht als Brcke

    eingeltet, der die beiden ueren Ltaugen verbinden. Er darf aber nicht den Ground am

    mittleren Kontakt berhren, deshalb ist die Isolation notwendig. (Siehe Abbildung 3)

    Einer der beiden Elkos ist dann auf jeden Fall berssig. Ist die externe Versorgungsspan-

    nung ausreichend stabil, so knnen theoretisch auch alle drei Kondensatoren der Spannungsver-

    sorgung weggelassen werden.

    Figure 3: Ltbrcke anstelle des Spannungsreglers

    2.5 LED

    Die Leuchtdiode an sich dient lediglich dem Zweck, das Anliegen der Spannung anzuzeigen.

    Sie kann nicht geschaltet werden. Abhngig von der Farbe der LED ist ein entsprechender

    Widerstand R3 zu whlen. Typische Werten liegen zwischen 140 und 220. Zur Berechnungdes Vorwiderstands siehe 4.2.

    Die LED wird mit dem krzeren Bein (Kathode) nach unten hin in die zwei Lcher ganz

    rechts unten eingeltet. Der dazugehrige Vorwiderstand R3 stehend in die zwei Pins direkt

    darber.

    Figure 4: LED

    Die Schaltung ist jetzt bereit fr den ersten Test. Schliet man eine Spannung von mindestens

    6 bis 7 V bei vorhandenem Spannungsregler an, so sollte die LED nun leuchten

    2.6 Quarz

    Der Quarz wird bentigt, um den Atmega mit einer Taktfrequenz 16Mhz betreiben zu knnen.

    4

  • Version Mrz 2012 IWR-Robotiklabor

    Der Quarz (Q1) selbst wird in die zwei Lcher auf der unteren Seite zwischen den beiden

    groen Pinfelder, die zwei Kerkos (C7, C8) rechts und links vom Quarz eingeltet. Die

    Polung ist dabei unwichtig.

    2.7 Programmieradapter und Reset-Schaltung

    Achtung: Bei Version 1.1 ist der Resetknopf vor der Wannenstecker einzulten!

    Der Reset-Knopf kommt in die vier Lcher links unten, unterhalt die Wannenbuchse.

    Die Wannenbuchse wird ganz links in die Pins eingeltet. Die Aussparung in der Buchse

    zeigt zum Atmega hin.

    Der Pullup-Widerstand (R1) fr den Reset kommt bei Platinen-Versionen < 1.2 direkt

    darunter etwas weiter rechts. Ab Version 1.2 wird er stehend links oberhalb des Atmegas

    eingeltet.

    Als letztes wird noch ein Kondensator (C4) zwischen Reset-Schalter und dem Keramikkon-

    densator des Quarzes bentigt.

    2.8 Spannungsversorgung fr den ADC

    Um den Analog-Digital-Wandler benutzen zu knnen, mssen zwei Kerkos und ein Widerstand

    eingeltet werden.

    Der Widerstand R2 wird direkt zwischen der Stiftleiste oben rechts und dem Atmega-

    Sockel eingeltet.

    Die Kondensatoren C5 und C6 kommen in die verbleibenden Postionen links daneben.

    2.9 Transistoren

    Mit einem Pin an einem Mikrocontroller knnen nur sehr begrenzte Strme geschaltet werden.

    Einmal ist das durch die Fhigkeit eines einzelnen Pins begrenzt, zum anderen auch durch den

    maximalen Gesamtstrom, den der Controller aufnehmen darf. Bereits sehr helle LEDs oder

    Infrarot-Dioden knnen da zu viel sein. (Nheres bitte im Datenblatt des zu verwendenden

    Controllers nachlesen).

    Mchte man hhere Strme schalten, so bietet sich dazu ein Transistor an. Das Platinende-

    sign sieht dafr zwei pMOS Transistoren vor, die mit den Pins PB1 und PB2 geschaltet werden

    knnen. Diese Pins knnen auch im Pulsweiten-Modus betrieben werden und sind deshalb ideal

    z.B. fr die Regelung der Helligkeit einer Lampe/LED oder die Geschwindigkeit eines Motors.

    Ist nicht ganz klar, ob die Transistoren fr den geplanten Aufbau erforderlich sind, so sollte

    Rckfrage gehalten werden.

    Aufbau

    Die zwei Transistoren Q2 und Q3 selbst werden in die zwei mal 3 Lcher rechts vom Atmega,

    unterhalb des gren Kondensators und oberhalb des Spannungsreglers eingeltet. Die ache

    Seite des Transistors zeigt dabei jeweils zur Mitte hin, die runde nach auen. Der mittlere Pin

    5

  • Version Mrz 2012 IWR-Robotiklabor

    mu unter Umstnden etwas weggebogen werden, um in das mittlere, leicht versetzte Loch zu

    passen.

    An der 2x2 (als Teil der 2x3 Leiste) Pinleiste ganz rechts oben liegen zur Mitte hin die

    Ausgangssignale an, auen Ground.

    2.10 Pins

    Nun fehlen lediglich die Pins, an denen die Peripherie angeschlossen werden. Dazu sind jeweils

    drei Pins vorgesehen. Der Platinenuere hat Ground, der mittlere 5V und der dem Atmegazugewandte ist mit einem Pin auf dem Mikrocontroller verbunden.

    Getrennte Versorgunsspannung (Ab Version 1.1)

    Unter Umstnden kann es sinnvoll sein, da man an den Pin fr die Versorgungsspannung

    nicht die vorgelterte Spannung des Atmega anlegen mchte. Das knnte dann sein, wenn

    man z.B. fr Servos mehr als nur 5V bentigt oder wenn die Spannung zum Beispiel durch einServo derart gestrt wird, da der Atmega abstrzen wrde. Auch wenn hhere Strme ieen,

    bietet es sich an, diese an dem Spannungsregler der Platine vorbeizufhren. Deshalb ist die

    Versorgungsspannung auf den oberen Pinleisten abgetrennt.

    Mchte man die Abtrennung nicht und einfach die Pins mit Platinenspannungspannung

    versorgen, so ist einfach ein Jumper auf die zwei linken Pins der oberen 2x3-Pin-Matrix zu

    stecken. Alternativ kann auch eine Drahtbrcke eingeltet werden.

    Ansonsten kann der Pin oben links der 2x3-Matrix zur Versorgung mit einer Alternativspan-

    nung genutzt werden.

    2.11 Ltbrcken SJ1 und SJ2

    Ab Version 1.2

    Zuknftige Programmieradapter knnen die Mglichkeit bieten, zustzlich zum Aufspielen der

    Software auch noch eine serielle Verbindung von PC und Controller bereitstellen. Aus diesem

    Grund ist es mglich, durch die Ltbrcken SJ1 und SJ2 links unten auf der Platine die RX-

    und TX-Pins des Mikrocontrollers auf den Programmieradapter zu legen. Dazu sind einfach

    die zwei Kontakte je Ltbrcken mit etwas Ltzinn zu verbinden.

    Workaround

    Leider ist bei der Umstellung auf Version 1.2 mit der Einfhung der Ltbrcken eine kleine

    Inkompartibilitt mit vorhandenen Programmieradaptern entstanden. Auf den Pins der 10-

    poligen Pfostensteckerbuchse, die nun fr RX und TX verwendet werden knnen, erwarten

    diese stattdessen Ground. Sollte es ein Problem mit dem Aufspielen der Software geben, so

    wird hier ein Workaround dargestellt:

    Man Verbindet die drei Pins links unten an der 10-poligen Programmier-Buchse miteinander.

    Entweder mit Ltzinn oder indem man einen Draht mit zur Verbindung verwendet. Dadurch

    liegen alle drei Pins, wie bei vorherigen Versionen, auf Ground.

    6

  • Version Mrz 2012 IWR-Robotiklabor

    3 Inbetriebnahme

    3.1 Fusebits

    Um mit den Atmega vollstndig nutzen zu knnen, sollte er auf die Benutzung des externen

    Quarzes eingestellt (gefust) werden. Dies geschieht entweder mit dem avrstudio unter Windows

    oder viel einfacher mit dem Linux-Tool avrdude. Unter der Adresse http://www.engbedded.

    com/fusecalc/ ist ein Hilfe zu nden, wie sich die Fusebits zusammensetzen. Sinnvolle Werte

    fr den Atmega168 und den 16Mhz-Quarz sind als target im Makele des Basis-Codes enthalten.

    Wie man den Basis-Code bekommt, steht im nchsten Abschnitt. Mit make fuse knnen direkt

    die richtigen Fusebits gesetzt werden.

    Von Hand ginge es sonst so

    avrdude -p m168 -U lfuse:w:0xff:m -U hfuse:w:0xd7:m -c [Programmer] -P [Port]

    3.2 Erstes Programm

    Um ein Programm auf den Mikrocontroller zu bertragen kann ebenfalls das Tool avrdude

    verwendet werden. Um den Start in die Mikrocontrollerprogrammierung zu erleichtern, haben

    existiert auf der Homepage des Labors

    (http://roboter.uni-hd.de/DEVELOPMENT/)

    ein Projekt namens Basis, das Beispielcode und ein Makele bereitstellt.

    Alternativ (empfohlen) kann man auch ein svn checkout machen und erhlt so auch das

    Datenblatt des Atmega168 sowie die allerneueste Version der Basis. Das geht mit dem Befehl

    svn co http://ornella.iwr.uni-heidelberg.de/svn/basis/.

    Das Makele enthlt ein target prog mit den Optionen, um ein Programm in den Flash-

    Speicher des Mikrocontrollers zu bertragen. Oft bentigte Funktionen sind in der Basis bereits

    implementiert, dazu verweisen wir auf die entsprechenden Header-Dateien der Projekts.

    Ein separates Dokument in Form eines Tutorials zur Einfhrung in die Mikrocontrolle-

    Programmierung schliet an genau diesem Punkt an.

    4 Anhang

    4.1 Fehlersuche

    Eine Auistung huger Fehler und deren Ursachen:

    1. LED leuchtet nicht

    LED falsch herum eingeltet

    Spannung zu gering (mind. 6V bei eingebautem Spannungsregler)

    Kurzschlu

    2. Controller lt sich nicht programmieren

    Platine mit ausreichend Spannung versorgen (Leuchtet die LED?)

    Bei Platinen ab Version 1.2 siehe 2.11

    Controller richtig herum eingesetzt? Markierung mu Richtung Programmierbuchse

    zeigen

    7

  • Version Mrz 2012 IWR-Robotiklabor

    3. Obere Leiste hat keine Spannung

    Bei Platinen ab Version 1.1 siehe 2.10

    4. Controller arbeitet nicht, aber Spannung liegt an

    Ist der Programmieradapter in der Platine eingesteckt aber nicht ber USB mit dem

    Rechner verbunden?

    5. Controller hlt das Timing nicht ein

    Fusebits berprfen 3.1

    6. Controller resettet sich

    Spannung bricht ein:

    Strombegrenzung am Netzteil erhhen.

    Akkus laden

    zu viel Last auf der internen 5V Spannungsversorgung?

    Software-Fehler wie fehlerhafte Pointer

    (Es gibt keinen Segfault auf dem Mikrocontroller)

    4.2 Berechnung eines Vorwiderstands

    Bei einigen Bauteilen, wie z.B. LEDs, bentigt man einen Vorwiderstand, um sie an der Ver-

    sorgungsspannung betreiben zu knnen. Ein Vorwiderstand ist ein Widerstand, der mit dem

    Bauteil selbst in Reihe, also hintereinander, geschaltet ist. Dadurch erreicht man, da die

    zulssige Spannung und der zulssige Strom (gem Datenblatt) nicht berschritten werden

    Figure 5: Vorwiderstand

    Wie in Abbildung 5 zu erkennen, werden eine Diode R (ber die die Spannung URabfllt) undein Vorwiderstand RV (mit dazugehrigen Spannung UR) hintereinander an eine gemeinsameSpannung U angeschlossen.Gem des Kircho'schen Maschenregel addieren sich die Spannungen:

    U = UR + UV UV = U URNach der Kircho'schen Knotenregel ist der Strom durch den Widerstand gleich dem durch

    die Diode, also gleich dem Gesamtstrom:

    I = IV = IR

    8

  • Version Mrz 2012 IWR-Robotiklabor

    Fr den Vorwiderstand ergibt sich nun ein Wert von

    RV =UVIV

    =U URIR

    Beispiel

    Der Vorwiderstand fr eine typische grne LED mit einer Spannung von 2.2V und einem Stromvon 20mA soll an einer Spannungsquelle von 5V betrieben werden.

    RV =U URIR

    =5V 2.2V

    0.020A= 140

    Nicht jeder Widerstandswert ist aber als Bauteil verfgbar. Hier wrde am Besten ein Vor-

    widerstand von 150 gewhlt werden, weil er am dichtesten an dem berechneten Wert liegt.Auerdem ist man mit einem etwas grerer Widerstand sicher, da der zulssige Strom nicht

    berschritten wird. Grere Vorwiderstnde bei LEDs fhren zu weniger Stromverbrauch und

    mindern die Helligkeit nur gering.

    9

  • Version Mrz 2012 IWR-Robotiklabor

    4.3 Abbildungen

    Version 1.1

    Version 1.1

    12

    3

    10

  • Version Mrz 2012 IWR-Robotiklabor

    Version 1.2

    12

    3

    IC1

    IC2

    C2C3

    R1

    JP1

    C7

    C8Q1

    JP2

    JP3

    JP4

    JP5

    JP6

    JP7

    JP8

    JP9

    JP10

    JP11

    JP12

    JP13

    JP14

    JP15

    JP16

    JP17

    JP18

    JP19

    JP20

    JP21

    JP22C5 C6

    R2

    R3LE

    D1

    C4

    C1

    S1

    JP23

    Q2

    Q3SJ1SJ2

    12

    3

    IC1

    IC2

    C2C3

    R1

    JP1

    C7

    C8

    Q1

    JP2

    JP3

    JP4

    JP5

    JP6

    JP7

    JP8

    JP9

    JP10

    JP11

    JP12

    JP13

    JP14

    JP15

    JP16

    JP17

    JP18

    JP19

    JP20

    JP21

    JP22C5 C6

    R2

    R3LE

    D1

    C4

    C1

    S1

    JP23

    Q2

    Q3SJ1SJ2

    11

    EinleitungZusammenbauTeilelisteAusrichten der PlatineAtmega SockelSpannungsversorgungLEDQuarzProgrammieradapter und Reset-SchaltungSpannungsversorgung fr den ADCTransistorenPinsLtbrcken SJ1 und SJ2

    InbetriebnahmeFusebitsErstes Programm

    AnhangFehlersucheBerechnung eines VorwiderstandsAbbildungen