<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Raketenfred</id>
	<title>Mikrocontroller.net - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mikrocontroller.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Raketenfred"/>
	<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/articles/Spezial:Beitr%C3%A4ge/Raketenfred"/>
	<updated>2026-04-12T01:20:27Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Akku_Tester&amp;diff=45632</id>
		<title>Akku Tester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Akku_Tester&amp;diff=45632"/>
		<updated>2010-04-02T17:05:11Z</updated>

		<summary type="html">&lt;p&gt;Raketenfred: /* Leistungsteil */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;von Philipp Kälin [[Benutzer:philippk]]&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
[[Bild:AkkuTesterFoto.png|center]]&lt;br /&gt;
&lt;br /&gt;
Mit diesem Artikel will ich ein Projekt vorstellen, mit dem man (wie es der Name schon verrät) Akkus Testen kann. Die Idee ist, dass man einen Akku den man testen möchte zuerst mit einem Ladegerät voll lädt. Der Akku Tester entlädt dann den Akku und misst die Kapazität [mAh] die entnommen wurde, und die Energie [mWh]. Diese Werte kann man dann mit den Herstellerangaben vom Akku vergleichen und so sehen, wie fit der Akku noch ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
* Bedienung mit nur einem Drehknopf und einem Taster&lt;br /&gt;
* Vordefinierte Akkutypen&lt;br /&gt;
* Vordefinierte Ladeschlussspannungen&lt;br /&gt;
* Mehrsprachige grafische Menüführung (Deutsch / Englisch) kann noch erweitert werden&lt;br /&gt;
* Abspeichern der Einstellungen ins interne EEPROM&lt;br /&gt;
* Loggen der Daten auf eine SD-Speicherkarte mit FAT12 / FAT16 / FAT32&lt;br /&gt;
* Spannungen bis 40V&lt;br /&gt;
* Strom bis 5A&lt;br /&gt;
* Drehzahlregelung eines Lüfters zur Kühlung&lt;br /&gt;
* Mehrere Logdateien können auf einer SD-Karte abgespeichert werden da der Dateiname einstellbar ist&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elektrische Daten&#039;&#039;&#039;&lt;br /&gt;
* Betriebsspannung: 12 - 15V DC&lt;br /&gt;
* Betriebsstrom: 150 mA (mit Lüfter)&lt;br /&gt;
* Min. Entladestrom: 10mA&lt;br /&gt;
* Max. Entladestrom: 5000 mA&lt;br /&gt;
* Schrittbreite Entladestrom: 10 mA&lt;br /&gt;
* Max. Akkuspannung: 40 V&lt;br /&gt;
* Min. Spannung Standardschaltung: ~3V (erst ab 9V max. Entladestrom)&lt;br /&gt;
* Min. Spannung Schaltung für kleine Spannungen: ~0.5 bis 1V&lt;br /&gt;
* Max. Entladeleistung: 100W&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einstellparameter im Menü&#039;&#039;&#039;&lt;br /&gt;
* Akkutyp (Pb, NiCd, HiMH)&lt;br /&gt;
* Zellenzahl (je nach Akkutyp)&lt;br /&gt;
* Entladestrom (10 mA bis 5000mA)&lt;br /&gt;
* Schlussspannung (50 mV bis 30000 mV &lt;br /&gt;
* Speicherintervall (10 s bis 900 s oder aus)&lt;br /&gt;
* Sprache (Deutsch, Englisch)&lt;br /&gt;
* Dateiname der Logdatei&lt;br /&gt;
* Auf Werkseinstellungen zurücksetzen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://web205.server-drome.net/AkkuTester/Bilder/Thumbnails.html Bilder von meinem Aufbau]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.mikrocontroller.net/topic/108663#960254 Diskussionsforum]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://web205.server-drome.net/AkkuTester/Doxygen/index.html DoxygenDokumentation]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fragen und Antworten ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Welche Speicherkarten kann man verwenden?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Grundsätzlich kann man alle SD und MMC Speicherkarten verwenden. In den Beschreibungen wird nur von SD-Karten geschreiben, da diese viel verbreiteter sind. Die SD-Karte ist jedoch abwärt kompatibel zur MMC und wird auch wie eine Solche angesprochen. Die Speicherkarten sollten mit FAT12, FAT16 oder FAT32 formatiert sein. Gestestet habe ich nur mit einer 128MB Kingston und einer 1GB Swissbit und allen FAT Dateisystemen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warum braucht es eine 3.3V Speisung?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Die Speicherkarten brauchen 3.3V. Man könnte die Spannung auch einfach mit 2 Dioden aus den 5V erzeigen, davon ist aber abzuraten, da die Spannung dann schwankt weil eine schnelle SD-Karte beim schreiben auch mal 100mA ziehen kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kann man auch andere OPs verwenden?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Grundsätzlich gibt es viele OPs die man verwenden kann. Man sollte jedoch darauf achten dass der OP RailToRail Ein- und Ausgänge hat.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&#039;&#039;&#039;Kann man auch einen anderen Controller als den ATmega32 verwenden?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Ja, aber auf keinen Fall einen Mit AT90Sxxxx oder ATMega8515 da bei denen die SD-Routinen nicht mehr funktionieren. Auch muss man darauf achten, dass der Controller mehr als 1 kB RAM hat, da die SD-Routinen alleine schon 1,2kB RAM brauchen.&lt;br /&gt;
&lt;br /&gt;
== Worauf sollte man achten ==&lt;br /&gt;
* Die Signale zur SD-Karte sind sehr schnell, bei Leitungslängen von mehr als 10cm ist da nichts mehr zu machen.&lt;br /&gt;
&lt;br /&gt;
* Die Leitungen in denen viel Strom fliesst so kurz wie möglich halten.&lt;br /&gt;
&lt;br /&gt;
* Die Verbindungen zwischen Controller und Powerteil direkt am Akku aschliessen, da durch den Widerstand der Leitungen sonst ein Spannungsabfall entsteht.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
==== Versorgung ====&lt;br /&gt;
[[Bild:Versorgung.png|thumb|center|500px|Spannungsversorgung]]&lt;br /&gt;
&lt;br /&gt;
* Die Schaltung wird über ein externes Steckernetzteil gespeist. Bei dem Netzteil muss darauf geachtet werden, dass es eine Spannung von etwa 12V hat um den Maximalstrom zu erreichen (Transistor als Spannungfolger) aber die Spannung nicht grösser als 16V ist, da das die maximale Betriebsspannung des OPs ist.&lt;br /&gt;
* Für die 5V Versorgung wird ein 7805 Festspannungsregler verwendet; die Kondensatoren müssen nicht genau dieselben sein, da sie nur zur Stabilisierung dienen.&lt;br /&gt;
* Für die 3,3V Versorgung wird ein LM317 verwendet. Ich habe ein Poti verwendet, da man mit E12 Widerständen keinen guten Spannungsteiler hinbekommt. Bei der Spannung sollte darauf geachtet werden, dass sie nich allzuviel über 3,3V liegt, da die Speicherkarten empfindlich auf Überspannung reagieren. Wichtig ist die LED! Der LM317 braucht einen Minimalstrom von etwa 10mA, damit er richtig funktioniert. Auch hier können die Kondensatoren angepasst werden.&lt;br /&gt;
&lt;br /&gt;
==== Prozessor ====&lt;br /&gt;
Es gibt unstimmigkeiten, ob man am DO Pin der SD-Karte einen PullUp zuschalten sollte oder nicht. Ich habe einen 10k hingemacht. Mehr dazu:&lt;br /&gt;
[http://www.mikrocontroller.net/topic/119520#new MMC-Karte funktioniert nicht]&lt;br /&gt;
[[Bild:CPU.png|thumb|center|500px|CPU]]&lt;br /&gt;
&lt;br /&gt;
* Als Prozessor wird ein ATmega32 verwendet, da die FAT-Library für die SD-Karte mindestens 1,2kB RAM benötigt.&lt;br /&gt;
* SW1 ist ein Inkrementaldrehgeber mit eingebautem Taster, der zur Bedienung dient.&lt;br /&gt;
* Zur Programmierung und zum Debuggen wird eine JTAG Schnittstelle auf eine 10pol Pfostenleiste mit Standardbelegung hinausgeführt.&lt;br /&gt;
* Da die SD-Karte ein 3,3V Interface hat, braucht es eine Pegelanpassung mit R4-R9 auf den Datenleitungen vom Prozessor zur SD-Karte. In die Gegenrichtung braucht es keine Pegelanpassung, da der Prozessor 3,3V als ein High erkennt. Die SD-Karte wird uber den SPI-Bus angesteuert.&lt;br /&gt;
* Beim LCD handelt es sich um ein Standard 128x64 Pixel mit KS0108 Treibern. R16 wird zur Strombegrenzung der LED-Hintergrundbeleuchtung verwendet. R15 ist ein Poti zur Kontrasteinstellung.&lt;br /&gt;
&lt;br /&gt;
==== Leistungsteil ====&lt;br /&gt;
Beim Leistungsteil gibt es zwei verschiedene Varianten, wobei bei der Variante für kleine Spannungen ein paar besondere Sachen beachtet werden müssen &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Standard Schaltung für grosse Ströme&#039;&#039;&#039;&lt;br /&gt;
[[Bild:Power V1.1.png|thumb|center|500px|Power]]&lt;br /&gt;
&#039;&#039;&#039;Für kleine Spannungen&#039;&#039;&#039; Achtung es sind spezielle Massnahmen zu beachten&lt;br /&gt;
[[Bild:Power LV.png|thumb|center|500px|Power LV]]&lt;br /&gt;
* Bei dieser Schaltung wird die Leistung nicht mehr über einem Transistor und einem Leistungswiderstand verheitzt, sondern nur noch auf dem Transistor. Daher ist diese Schaltung nur für kleine Leistungen geeignet.&lt;br /&gt;
* Es ist empfehlenswert den Transistor direkt auf das Kühlblech zu montieren, da eine Isolierfolie in den meisten Fällen schon einen zu grossen Wärmewiderstand hat und der Transistor sich dann in Rauch auflöst. Dabei ist zu beachten, dass die Kühlfahne mit dem Kollektor verbunden ist, oder anders gesagt mit dem +Pol des Akkus. !!! Erhöhte Kurzschlussgefahr !!!&lt;br /&gt;
* Damit man die gleiche Software verwenden kann kommt der OP IC4B zum einsatz. Er sorgt dafür, dass bei gleichem Strom die gleiche Spannung am &amp;quot;Messwiderstand&amp;quot; anliegt wie bei der Standardschaltung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Um den Strom zu regeln gibt der Prozessor ein PWM Signal auf den Tiefpass mit C1 und R11 der dann eine Analogspannung generiert. Diese Analogspannung ist der Sollwert für den Strom. Der OP IC5A vergleicht die Sollspannung mit der, die über den Spannungsteiler R10 und R21 zurückkommt. Über diesen Spannungsteiler kann der Prozessor gleichzeitig den Strom (Spannung) messen. Da der OP IC5A keine Rückkopplung hat (und somit eine riesige Verstärkung hat) wird sein Ausgang immer an einem der beiden Anschläge sein. Dieses Signal wird mit einem weiteren Tiefpass aus R22 und C16 zu einer Analogspannung geglättet. IC4A dient als Impedanzwandler um den Tiefpass nicht zu belasten und den Transistor, der als Emitterfolger arbeitet, anzusteuern. Der Spannungsteiler R13 und R12 dient dazu, die Spannung am Akku zu messen.&lt;br /&gt;
* R20 und C11 bilden einen Tiefpass, der das PWM Signal vom Prozessor in eine Analogspannung umwandelt. Die Spannung wird mit dem OP IC5B um den Faktor 2.5 Verstärkt. Der Transistor T1 bildet einen Emitterfolger, der dann den Lüfter steuert. Die Diode D2 dient als Schutz, da der Lüfter induktiv ist und somit Spannunsspitzen verursachen kann. Der Kondensator dient der Pufferung und Entlastung des Transistors.&lt;br /&gt;
* Mit IC6 und R14 wird die Temperatur gemessen. IC6 ist sozusagen eine Temperaturabhängige Z-Diode mit 10mV pro Kelvin. Somit wird die Temperaturmessung einfach, da der Temperatursensor eine lineare Spannung liefert.&lt;br /&gt;
* Um die Spannung und den Strom genauer messen zu können werden zwei Referenzspannungen verwendet. Die interne 2,56V und AVCC(5V). Da bezweckt, dass man hohe Spannungen messen kann und doch bei kleinen Spannungen eine hohe Auflösung hat. Der Prozentuale Fehler über den ganzen Spannungsbereich bleibt immer etwa gleich.&lt;br /&gt;
* Die Schottkydiode D3 schütz den Transistor vor verpoltem Akku. Der Prozessor schützt sich selber, da er am Eingeng zwei Dioden hat, die die Spannung begrenzen. Durch den Hochohmigen Spannungsteiler R12 und R13 wird der Strom durch die Dioden so klein gehalten, dass diese keinen Schaden nehmen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eingansschaltung eines IO-Pins&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Das Bild ist aus dem Datenblatt von Atmel kopiert.&lt;br /&gt;
[[Bild:Eingangsschaltung_m32.png|thumb|center|500px|Power]]&lt;br /&gt;
&lt;br /&gt;
=== Worterläuterungen ===&lt;br /&gt;
* Emitterfolger: An die Basis wird eine Spannung angelegt (ohne Vorwiderstand). Da ein Transistor ein Ube von 0,7V hat wird am Emitter eine Spannung anliegen, die um 0,7V kleiner ist als die an der Basis. Wird nun an den Emitter ein Widerstand zu GND angelegt so hat man einen konstanten Widerstsnd und eine konstante Spannung. --&amp;gt; I = U/R Und man hat eine Stromquelle.&lt;br /&gt;
* Rückkopplung: Ein OP will nichts anderes als dass zwischen dem invertierenden (-) und dem nicht invertierenden (+) Eingang kein Spannungsunterschied herrscht. Mit einer Rückkopplung wird der Ausgang über ein Bauteil (Widerstand, Kondensator, Diode usw.) mit dem invertierenden Eingang verbunden. Daher &amp;quot;weiß&amp;quot; der OP, was er am Ausgang macht und kann vernünftig regeln. Weiß er das nicht, wird der Ausgang immmer an einem der beiden Speisungen anschlagen.&lt;br /&gt;
* Impedanzwandler: Der Ausgang wird mit dem invertierenden Eingang des OPs verbunden. Somit &amp;quot;macht&amp;quot; er am Ausgang immer die gleiche Spannung wie am nicht invertierenden Eingang. Der Sinn dieser Schaltung ist, dass der Eingang das was davor ist nicht belastet und der Ausgang belastet werden kann, ohne dass sich die Spannung verändert.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Danke an:&lt;br /&gt;
* Fabian Maximilian Thiele für die GLCD Library http://www.mikrocontroller.net/topic/12202#new&lt;br /&gt;
* Holger Klabunde für die SD und FAT Library http://www.holger-klabunde.de/index.html&lt;br /&gt;
&lt;br /&gt;
=== Speicherung der Daten ===&lt;br /&gt;
Die Daten werden in einer Textdatei abgespeichert, die einfach in ein Tabellenkalkulationsprogramm importiert werden kann (z.B Microsoft Office Excel, OpenOffice Calc).&lt;br /&gt;
&lt;br /&gt;
Die Daten werden wie folgt abgespeichert:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
Akkutyp Pb&lt;br /&gt;
Zellenzahl 5&lt;br /&gt;
Schlussspannung 8750&lt;br /&gt;
Entladestrom 200&lt;br /&gt;
Speicherintervall 20&lt;br /&gt;
&lt;br /&gt;
Entladezeit[s] Spannung[mV] Strom[mA] Kapazität[mAs] Energie[mWs]&lt;br /&gt;
11     660     22      73      46&lt;br /&gt;
31     660     33      358     226&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tipps zum Aufbau ==&lt;br /&gt;
Eine günstige Variante ist es einen Prozessorkühler von einem PC zu nehmen und den Transistor und den Leistungswiderstand dort draufzubauen. Wichtig ist es, alle Leitungen, in denen viel Strom fließt, so kurz wie möglich zu halten.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Das Archiv enthält das Eagle(5.1) Schema und ein PDF davon&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version / Datum&lt;br /&gt;
!Bescheibung&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|1.1 / 22.08.2008&lt;br /&gt;
|Schutz bei verpoltem Akku hinzugefügt&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/3/3f/HW_2008_08_22_V1.1.zip&lt;br /&gt;
|-&lt;br /&gt;
|1.0 / 16.08.2008&lt;br /&gt;
|Erstes Schema&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/8/8e/HW_2008_08_16_V0.5.zip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
Die Software wurde mit AVR-GCC 4.3 kompiliert &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fusebit Einstellungen&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/wikifiles/c/cc/Fusebits.pdf&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version / Datum&lt;br /&gt;
!Bescheibung&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|1.2 / 26.10.2008&lt;br /&gt;
|* Die Temperatur wird immer gemessen nicht nur während dem Entladen &amp;lt;br&amp;gt; * BigStep der Spannungseinstellung ist nur noch 100 anstatt 1000 &amp;lt;br&amp;gt; * Die Zusammenfassung wurde durch eienen Fehler nicht mehr angezeigt &amp;lt;br&amp;gt; * Unterstützung für Lithium-Ionen Akkus &amp;lt;br&amp;gt; * Die Schlussspannung wird nicht mehr errechnet sondern ins EEPROM abgespeichert &amp;lt;br&amp;gt; * Neueset Library für SD-Karte und FAT-Dateisystem &amp;lt;br&amp;gt; * Watchdog eingeschaltet beim holen der Informationen der SD-Karte &amp;lt;br&amp;gt; * Die Spannung kann Kalibriert werden&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/0/03/2008_10_26_V1.2.zip&lt;br /&gt;
|-&lt;br /&gt;
|1.1 / 05.10.2008&lt;br /&gt;
| * Bug beim ändern des Dateinamens behoben &amp;lt;br&amp;gt; * In der Zusammenfassung der Einstellungen wird hinter der Zellenzahl nun auch noch die Spannung geschrieben &amp;lt;br&amp;gt; * Der Entladevorgagn kann unterbrochen werden um Einstellungen zu ändern ohne dass eine neue Logdatei erstellt wird &amp;lt;br&amp;gt; * Die Taste muss nicht mehr so lange gedrückt bleiben &amp;lt;br&amp;gt; * Doxygen Schönheitsfehler behoben&lt;br /&gt;
|Bei dieser Version funktioniert das Loggen nicht &amp;lt;br&amp;gt; http://www.mikrocontroller.net/wikifiles/8/8c/2008_10_05_V1.1.zip&lt;br /&gt;
|-&lt;br /&gt;
|1.0 / 14.09.2008&lt;br /&gt;
| * Bug bei der Mittelwertbildung korrigiert &amp;lt;br&amp;gt; * Bug bei der Energie Anzeige bei sehr grossen Akkus korrigiert&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/b/b1/2008_09_14_V1.0.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.9 / 06.09.2008&lt;br /&gt;
| * Bug beim Drehrichtungswechsel des Encoders korrigiert &amp;lt;br&amp;gt; * Lüftersteuerung optimiert, indem die Temperatur, bei der der Lüfter voll läuft unabhängig von der Maximaltemperatur ist &amp;lt;br&amp;gt; * Spannungen bis 40V sind nun möglich&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/1/1e/2008_09_06_V0.9.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.8 / 24.08.2008&lt;br /&gt;
| * Bug bei der Spannunganzeige bei Spannungen &amp;gt; 17V behoben &amp;lt;br&amp;gt; * Einschalttemperatur des Lüfters von 50°C auf 40°C herabgesetzt &amp;lt;br&amp;gt; * Schreibfehler in der Logdatei behoben&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/1/16/2008_08_24_V0.8.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.7 / 23.08.2008&lt;br /&gt;
| * Auf Wunsch von Hegy werden die Daten in der Logdatei neu mit einem Tabulator anstatt einem Semikolon getrennt &amp;lt;br&amp;gt; * Der Dateiname der Logdatei kann eingestellt werden und somit mehrere Logdateien auf einer SD-Karte gespeichert werden &amp;lt;br&amp;gt; * Auf Wunsch von Hegy sind nun alle Dateiname einheitlich klein geschrieben und ein paar Warnings behoben&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/2/24/2008_08_23_V0.7.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.6 / 19.08.2008&lt;br /&gt;
| * Einheiten beim Abspeichern korrigiert &amp;lt;br&amp;gt; * Beim einstellen des Stroms die Maximale Verlustleistung beachten &amp;lt;br&amp;gt; * Bei Überhitzung den Strom ausschalten und warten bis wieder abgekühlt &amp;lt;br&amp;gt; * Berechnung der Scrollbalkenläng im Menü korrigiert &amp;lt;br&amp;gt; Fehler beim 60s Timeout des Menüs korrigiert&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/4/47/2008_08_19_V0.6.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.5 / 16.08.2008&lt;br /&gt;
|Erste freigegebene Version&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/5/59/SW_2008_08_16_V0.5.zip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:1. Wettbewerb]]&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Raketenfred</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=Akku_Tester&amp;diff=45631</id>
		<title>Akku Tester</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=Akku_Tester&amp;diff=45631"/>
		<updated>2010-04-02T17:04:11Z</updated>

		<summary type="html">&lt;p&gt;Raketenfred: /* Software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;von Philipp Kälin [[Benutzer:philippk]]&lt;br /&gt;
&lt;br /&gt;
== Einleitung ==&lt;br /&gt;
[[Bild:AkkuTesterFoto.png|center]]&lt;br /&gt;
&lt;br /&gt;
Mit diesem Artikel will ich ein Projekt vorstellen, mit dem man (wie es der Name schon verrät) Akkus Testen kann. Die Idee ist, dass man einen Akku den man testen möchte zuerst mit einem Ladegerät voll lädt. Der Akku Tester entlädt dann den Akku und misst die Kapazität [mAh] die entnommen wurde, und die Energie [mWh]. Diese Werte kann man dann mit den Herstellerangaben vom Akku vergleichen und so sehen, wie fit der Akku noch ist.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Features&#039;&#039;&#039;&lt;br /&gt;
* Bedienung mit nur einem Drehknopf und einem Taster&lt;br /&gt;
* Vordefinierte Akkutypen&lt;br /&gt;
* Vordefinierte Ladeschlussspannungen&lt;br /&gt;
* Mehrsprachige grafische Menüführung (Deutsch / Englisch) kann noch erweitert werden&lt;br /&gt;
* Abspeichern der Einstellungen ins interne EEPROM&lt;br /&gt;
* Loggen der Daten auf eine SD-Speicherkarte mit FAT12 / FAT16 / FAT32&lt;br /&gt;
* Spannungen bis 40V&lt;br /&gt;
* Strom bis 5A&lt;br /&gt;
* Drehzahlregelung eines Lüfters zur Kühlung&lt;br /&gt;
* Mehrere Logdateien können auf einer SD-Karte abgespeichert werden da der Dateiname einstellbar ist&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Elektrische Daten&#039;&#039;&#039;&lt;br /&gt;
* Betriebsspannung: 12 - 15V DC&lt;br /&gt;
* Betriebsstrom: 150 mA (mit Lüfter)&lt;br /&gt;
* Min. Entladestrom: 10mA&lt;br /&gt;
* Max. Entladestrom: 5000 mA&lt;br /&gt;
* Schrittbreite Entladestrom: 10 mA&lt;br /&gt;
* Max. Akkuspannung: 40 V&lt;br /&gt;
* Min. Spannung Standardschaltung: ~3V (erst ab 9V max. Entladestrom)&lt;br /&gt;
* Min. Spannung Schaltung für kleine Spannungen: ~0.5 bis 1V&lt;br /&gt;
* Max. Entladeleistung: 100W&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einstellparameter im Menü&#039;&#039;&#039;&lt;br /&gt;
* Akkutyp (Pb, NiCd, HiMH)&lt;br /&gt;
* Zellenzahl (je nach Akkutyp)&lt;br /&gt;
* Entladestrom (10 mA bis 5000mA)&lt;br /&gt;
* Schlussspannung (50 mV bis 30000 mV &lt;br /&gt;
* Speicherintervall (10 s bis 900 s oder aus)&lt;br /&gt;
* Sprache (Deutsch, Englisch)&lt;br /&gt;
* Dateiname der Logdatei&lt;br /&gt;
* Auf Werkseinstellungen zurücksetzen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://web205.server-drome.net/AkkuTester/Bilder/Thumbnails.html Bilder von meinem Aufbau]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://www.mikrocontroller.net/topic/108663#960254 Diskussionsforum]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[http://web205.server-drome.net/AkkuTester/Doxygen/index.html DoxygenDokumentation]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Fragen und Antworten ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Welche Speicherkarten kann man verwenden?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Grundsätzlich kann man alle SD und MMC Speicherkarten verwenden. In den Beschreibungen wird nur von SD-Karten geschreiben, da diese viel verbreiteter sind. Die SD-Karte ist jedoch abwärt kompatibel zur MMC und wird auch wie eine Solche angesprochen. Die Speicherkarten sollten mit FAT12, FAT16 oder FAT32 formatiert sein. Gestestet habe ich nur mit einer 128MB Kingston und einer 1GB Swissbit und allen FAT Dateisystemen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warum braucht es eine 3.3V Speisung?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Die Speicherkarten brauchen 3.3V. Man könnte die Spannung auch einfach mit 2 Dioden aus den 5V erzeigen, davon ist aber abzuraten, da die Spannung dann schwankt weil eine schnelle SD-Karte beim schreiben auch mal 100mA ziehen kann.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Kann man auch andere OPs verwenden?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Grundsätzlich gibt es viele OPs die man verwenden kann. Man sollte jedoch darauf achten dass der OP RailToRail Ein- und Ausgänge hat.&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&#039;&#039;&#039;Kann man auch einen anderen Controller als den ATmega32 verwenden?&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Ja, aber auf keinen Fall einen Mit AT90Sxxxx oder ATMega8515 da bei denen die SD-Routinen nicht mehr funktionieren. Auch muss man darauf achten, dass der Controller mehr als 1 kB RAM hat, da die SD-Routinen alleine schon 1,2kB RAM brauchen.&lt;br /&gt;
&lt;br /&gt;
== Worauf sollte man achten ==&lt;br /&gt;
* Die Signale zur SD-Karte sind sehr schnell, bei Leitungslängen von mehr als 10cm ist da nichts mehr zu machen.&lt;br /&gt;
&lt;br /&gt;
* Die Leitungen in denen viel Strom fliesst so kurz wie möglich halten.&lt;br /&gt;
&lt;br /&gt;
* Die Verbindungen zwischen Controller und Powerteil direkt am Akku aschliessen, da durch den Widerstand der Leitungen sonst ein Spannungsabfall entsteht.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
==== Versorgung ====&lt;br /&gt;
[[Bild:Versorgung.png|thumb|center|500px|Spannungsversorgung]]&lt;br /&gt;
&lt;br /&gt;
* Die Schaltung wird über ein externes Steckernetzteil gespeist. Bei dem Netzteil muss darauf geachtet werden, dass es eine Spannung von etwa 12V hat um den Maximalstrom zu erreichen (Transistor als Spannungfolger) aber die Spannung nicht grösser als 16V ist, da das die maximale Betriebsspannung des OPs ist.&lt;br /&gt;
* Für die 5V Versorgung wird ein 7805 Festspannungsregler verwendet; die Kondensatoren müssen nicht genau dieselben sein, da sie nur zur Stabilisierung dienen.&lt;br /&gt;
* Für die 3,3V Versorgung wird ein LM317 verwendet. Ich habe ein Poti verwendet, da man mit E12 Widerständen keinen guten Spannungsteiler hinbekommt. Bei der Spannung sollte darauf geachtet werden, dass sie nich allzuviel über 3,3V liegt, da die Speicherkarten empfindlich auf Überspannung reagieren. Wichtig ist die LED! Der LM317 braucht einen Minimalstrom von etwa 10mA, damit er richtig funktioniert. Auch hier können die Kondensatoren angepasst werden.&lt;br /&gt;
&lt;br /&gt;
==== Prozessor ====&lt;br /&gt;
Es gibt unstimmigkeiten, ob man am DO Pin der SD-Karte einen PullUp zuschalten sollte oder nicht. Ich habe einen 10k hingemacht. Mehr dazu:&lt;br /&gt;
[http://www.mikrocontroller.net/topic/119520#new MMC-Karte funktioniert nicht]&lt;br /&gt;
[[Bild:CPU.png|thumb|center|500px|CPU]]&lt;br /&gt;
&lt;br /&gt;
* Als Prozessor wird ein ATmega32 verwendet, da die FAT-Library für die SD-Karte mindestens 1,2kB RAM benötigt.&lt;br /&gt;
* SW1 ist ein Inkrementaldrehgeber mit eingebautem Taster, der zur Bedienung dient.&lt;br /&gt;
* Zur Programmierung und zum Debuggen wird eine JTAG Schnittstelle auf eine 10pol Pfostenleiste mit Standardbelegung hinausgeführt.&lt;br /&gt;
* Da die SD-Karte ein 3,3V Interface hat, braucht es eine Pegelanpassung mit R4-R9 auf den Datenleitungen vom Prozessor zur SD-Karte. In die Gegenrichtung braucht es keine Pegelanpassung, da der Prozessor 3,3V als ein High erkennt. Die SD-Karte wird uber den SPI-Bus angesteuert.&lt;br /&gt;
* Beim LCD handelt es sich um ein Standard 128x64 Pixel mit KS0108 Treibern. R16 wird zur Strombegrenzung der LED-Hintergrundbeleuchtung verwendet. R15 ist ein Poti zur Kontrasteinstellung.&lt;br /&gt;
&lt;br /&gt;
==== Leistungsteil ====&lt;br /&gt;
Beim Leiszungsteil gibt es zwei verschiedene Varianten, wobei bei der Variante für kleine Spannungen ein paar besondere Sachen beachtet werden müssen &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Standard Schaltung für grosse Ströme&#039;&#039;&#039;&lt;br /&gt;
[[Bild:Power V1.1.png|thumb|center|500px|Power]]&lt;br /&gt;
&#039;&#039;&#039;Für kleine Spannungen&#039;&#039;&#039; Achtung es sind spezielle Massnahmen zu beachten&lt;br /&gt;
[[Bild:Power LV.png|thumb|center|500px|Power LV]]&lt;br /&gt;
* Bei dieser Schaltung wird die Leistung nicht mehr über einem Transistor und einem Leistungswiderstand verheitzt, sondern nur noch auf dem Transistor. Daher ist diese Schaltung nur für kleine Leistungen geeignet.&lt;br /&gt;
* Es ist empfehlenswert den Transistor direkt auf das Kühlblech zu montieren, da eine Isolierfolie in den meisten Fällen schon einen zu grossen Wärmewiderstand hat und der Transistor sich dann in Rauch auflöst. Dabei ist zu beachten, dass die Kühlfahne mit dem Kollektor verbunden ist, oder anders gesagt mit dem +Pol des Akkus. !!! Erhöhte Kurzschlussgefahr !!!&lt;br /&gt;
* Damit man die gleiche Software verwenden kann kommt der OP IC4B zum einsatz. Er sorgt dafür, dass bei gleichem Strom die gleiche Spannung am &amp;quot;Messwiderstand&amp;quot; anliegt wie bei der Standardschaltung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Um den Strom zu regeln gibt der Prozessor ein PWM Signal auf den Tiefpass mit C1 und R11 der dann eine Analogspannung generiert. Diese Analogspannung ist der Sollwert für den Strom. Der OP IC5A vergleicht die Sollspannung mit der, die über den Spannungsteiler R10 und R21 zurückkommt. Über diesen Spannungsteiler kann der Prozessor gleichzeitig den Strom (Spannung) messen. Da der OP IC5A keine Rückkopplung hat (und somit eine riesige Verstärkung hat) wird sein Ausgang immer an einem der beiden Anschläge sein. Dieses Signal wird mit einem weiteren Tiefpass aus R22 und C16 zu einer Analogspannung geglättet. IC4A dient als Impedanzwandler um den Tiefpass nicht zu belasten und den Transistor, der als Emitterfolger arbeitet, anzusteuern. Der Spannungsteiler R13 und R12 dient dazu, die Spannung am Akku zu messen.&lt;br /&gt;
* R20 und C11 bilden einen Tiefpass, der das PWM Signal vom Prozessor in eine Analogspannung umwandelt. Die Spannung wird mit dem OP IC5B um den Faktor 2.5 Verstärkt. Der Transistor T1 bildet einen Emitterfolger, der dann den Lüfter steuert. Die Diode D2 dient als Schutz, da der Lüfter induktiv ist und somit Spannunsspitzen verursachen kann. Der Kondensator dient der Pufferung und Entlastung des Transistors.&lt;br /&gt;
* Mit IC6 und R14 wird die Temperatur gemessen. IC6 ist sozusagen eine Temperaturabhängige Z-Diode mit 10mV pro Kelvin. Somit wird die Temperaturmessung einfach, da der Temperatursensor eine lineare Spannung liefert.&lt;br /&gt;
* Um die Spannung und den Strom genauer messen zu können werden zwei Referenzspannungen verwendet. Die interne 2,56V und AVCC(5V). Da bezweckt, dass man hohe Spannungen messen kann und doch bei kleinen Spannungen eine hohe Auflösung hat. Der Prozentuale Fehler über den ganzen Spannungsbereich bleibt immer etwa gleich.&lt;br /&gt;
* Die Schottkydiode D3 schütz den Transistor vor verpoltem Akku. Der Prozessor schützt sich selber, da er am Eingeng zwei Dioden hat, die die Spannung begrenzen. Durch den Hochohmigen Spannungsteiler R12 und R13 wird der Strom durch die Dioden so klein gehalten, dass diese keinen Schaden nehmen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Eingansschaltung eines IO-Pins&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
Das Bild ist aus dem Datenblatt von Atmel kopiert.&lt;br /&gt;
[[Bild:Eingangsschaltung_m32.png|thumb|center|500px|Power]]&lt;br /&gt;
&lt;br /&gt;
=== Worterläuterungen ===&lt;br /&gt;
* Emitterfolger: An die Basis wird eine Spannung angelegt (ohne Vorwiderstand). Da ein Transistor ein Ube von 0,7V hat wird am Emitter eine Spannung anliegen, die um 0,7V kleiner ist als die an der Basis. Wird nun an den Emitter ein Widerstand zu GND angelegt so hat man einen konstanten Widerstsnd und eine konstante Spannung. --&amp;gt; I = U/R Und man hat eine Stromquelle.&lt;br /&gt;
* Rückkopplung: Ein OP will nichts anderes als dass zwischen dem invertierenden (-) und dem nicht invertierenden (+) Eingang kein Spannungsunterschied herrscht. Mit einer Rückkopplung wird der Ausgang über ein Bauteil (Widerstand, Kondensator, Diode usw.) mit dem invertierenden Eingang verbunden. Daher &amp;quot;weiß&amp;quot; der OP, was er am Ausgang macht und kann vernünftig regeln. Weiß er das nicht, wird der Ausgang immmer an einem der beiden Speisungen anschlagen.&lt;br /&gt;
* Impedanzwandler: Der Ausgang wird mit dem invertierenden Eingang des OPs verbunden. Somit &amp;quot;macht&amp;quot; er am Ausgang immer die gleiche Spannung wie am nicht invertierenden Eingang. Der Sinn dieser Schaltung ist, dass der Eingang das was davor ist nicht belastet und der Ausgang belastet werden kann, ohne dass sich die Spannung verändert.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
Danke an:&lt;br /&gt;
* Fabian Maximilian Thiele für die GLCD Library http://www.mikrocontroller.net/topic/12202#new&lt;br /&gt;
* Holger Klabunde für die SD und FAT Library http://www.holger-klabunde.de/index.html&lt;br /&gt;
&lt;br /&gt;
=== Speicherung der Daten ===&lt;br /&gt;
Die Daten werden in einer Textdatei abgespeichert, die einfach in ein Tabellenkalkulationsprogramm importiert werden kann (z.B Microsoft Office Excel, OpenOffice Calc).&lt;br /&gt;
&lt;br /&gt;
Die Daten werden wie folgt abgespeichert:&lt;br /&gt;
&amp;lt;c&amp;gt;&lt;br /&gt;
Akkutyp Pb&lt;br /&gt;
Zellenzahl 5&lt;br /&gt;
Schlussspannung 8750&lt;br /&gt;
Entladestrom 200&lt;br /&gt;
Speicherintervall 20&lt;br /&gt;
&lt;br /&gt;
Entladezeit[s] Spannung[mV] Strom[mA] Kapazität[mAs] Energie[mWs]&lt;br /&gt;
11     660     22      73      46&lt;br /&gt;
31     660     33      358     226&lt;br /&gt;
&amp;lt;/c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tipps zum Aufbau ==&lt;br /&gt;
Eine günstige Variante ist es einen Prozessorkühler von einem PC zu nehmen und den Transistor und den Leistungswiderstand dort draufzubauen. Wichtig ist es, alle Leitungen, in denen viel Strom fließt, so kurz wie möglich zu halten.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
Das Archiv enthält das Eagle(5.1) Schema und ein PDF davon&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version / Datum&lt;br /&gt;
!Bescheibung&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|1.1 / 22.08.2008&lt;br /&gt;
|Schutz bei verpoltem Akku hinzugefügt&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/3/3f/HW_2008_08_22_V1.1.zip&lt;br /&gt;
|-&lt;br /&gt;
|1.0 / 16.08.2008&lt;br /&gt;
|Erstes Schema&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/8/8e/HW_2008_08_16_V0.5.zip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
Die Software wurde mit AVR-GCC 4.3 kompiliert &amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fusebit Einstellungen&#039;&#039;&#039; &amp;lt;br&amp;gt;&lt;br /&gt;
http://www.mikrocontroller.net/wikifiles/c/cc/Fusebits.pdf&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Version / Datum&lt;br /&gt;
!Bescheibung&lt;br /&gt;
!Link&lt;br /&gt;
|-&lt;br /&gt;
|1.2 / 26.10.2008&lt;br /&gt;
|* Die Temperatur wird immer gemessen nicht nur während dem Entladen &amp;lt;br&amp;gt; * BigStep der Spannungseinstellung ist nur noch 100 anstatt 1000 &amp;lt;br&amp;gt; * Die Zusammenfassung wurde durch eienen Fehler nicht mehr angezeigt &amp;lt;br&amp;gt; * Unterstützung für Lithium-Ionen Akkus &amp;lt;br&amp;gt; * Die Schlussspannung wird nicht mehr errechnet sondern ins EEPROM abgespeichert &amp;lt;br&amp;gt; * Neueset Library für SD-Karte und FAT-Dateisystem &amp;lt;br&amp;gt; * Watchdog eingeschaltet beim holen der Informationen der SD-Karte &amp;lt;br&amp;gt; * Die Spannung kann Kalibriert werden&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/0/03/2008_10_26_V1.2.zip&lt;br /&gt;
|-&lt;br /&gt;
|1.1 / 05.10.2008&lt;br /&gt;
| * Bug beim ändern des Dateinamens behoben &amp;lt;br&amp;gt; * In der Zusammenfassung der Einstellungen wird hinter der Zellenzahl nun auch noch die Spannung geschrieben &amp;lt;br&amp;gt; * Der Entladevorgagn kann unterbrochen werden um Einstellungen zu ändern ohne dass eine neue Logdatei erstellt wird &amp;lt;br&amp;gt; * Die Taste muss nicht mehr so lange gedrückt bleiben &amp;lt;br&amp;gt; * Doxygen Schönheitsfehler behoben&lt;br /&gt;
|Bei dieser Version funktioniert das Loggen nicht &amp;lt;br&amp;gt; http://www.mikrocontroller.net/wikifiles/8/8c/2008_10_05_V1.1.zip&lt;br /&gt;
|-&lt;br /&gt;
|1.0 / 14.09.2008&lt;br /&gt;
| * Bug bei der Mittelwertbildung korrigiert &amp;lt;br&amp;gt; * Bug bei der Energie Anzeige bei sehr grossen Akkus korrigiert&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/b/b1/2008_09_14_V1.0.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.9 / 06.09.2008&lt;br /&gt;
| * Bug beim Drehrichtungswechsel des Encoders korrigiert &amp;lt;br&amp;gt; * Lüftersteuerung optimiert, indem die Temperatur, bei der der Lüfter voll läuft unabhängig von der Maximaltemperatur ist &amp;lt;br&amp;gt; * Spannungen bis 40V sind nun möglich&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/1/1e/2008_09_06_V0.9.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.8 / 24.08.2008&lt;br /&gt;
| * Bug bei der Spannunganzeige bei Spannungen &amp;gt; 17V behoben &amp;lt;br&amp;gt; * Einschalttemperatur des Lüfters von 50°C auf 40°C herabgesetzt &amp;lt;br&amp;gt; * Schreibfehler in der Logdatei behoben&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/1/16/2008_08_24_V0.8.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.7 / 23.08.2008&lt;br /&gt;
| * Auf Wunsch von Hegy werden die Daten in der Logdatei neu mit einem Tabulator anstatt einem Semikolon getrennt &amp;lt;br&amp;gt; * Der Dateiname der Logdatei kann eingestellt werden und somit mehrere Logdateien auf einer SD-Karte gespeichert werden &amp;lt;br&amp;gt; * Auf Wunsch von Hegy sind nun alle Dateiname einheitlich klein geschrieben und ein paar Warnings behoben&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/2/24/2008_08_23_V0.7.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.6 / 19.08.2008&lt;br /&gt;
| * Einheiten beim Abspeichern korrigiert &amp;lt;br&amp;gt; * Beim einstellen des Stroms die Maximale Verlustleistung beachten &amp;lt;br&amp;gt; * Bei Überhitzung den Strom ausschalten und warten bis wieder abgekühlt &amp;lt;br&amp;gt; * Berechnung der Scrollbalkenläng im Menü korrigiert &amp;lt;br&amp;gt; Fehler beim 60s Timeout des Menüs korrigiert&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/4/47/2008_08_19_V0.6.zip&lt;br /&gt;
|-&lt;br /&gt;
|0.5 / 16.08.2008&lt;br /&gt;
|Erste freigegebene Version&lt;br /&gt;
|http://www.mikrocontroller.net/wikifiles/5/59/SW_2008_08_16_V0.5.zip&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:1. Wettbewerb]]&lt;br /&gt;
[[Kategorie:Spannungsversorgung und Energiequellen]]&lt;/div&gt;</summary>
		<author><name>Raketenfred</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=WinAVR&amp;diff=40154</id>
		<title>WinAVR</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=WinAVR&amp;diff=40154"/>
		<updated>2009-10-23T15:40:13Z</updated>

		<summary type="html">&lt;p&gt;Raketenfred: /* Passende AVR-Studio Version */  Leerzeichenfehler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:AVR]]&lt;br /&gt;
&lt;br /&gt;
WinAVR ist die Windows-Distribution der [[C]], C++ und [[AVR-Ada|Ada]]-Compiler aus der GNU compiler-collection [[AVR-GCC]] für [[AVR]]-[[Mikrocontroller]]. WinAVR enthält neben dem Compiler und den erforderlichen Zusatzprogrammen (sogen. Binutils) noch einige andere Pakete, z.B. die C-Standardbibliothek avr-libc (inkl. Dokumentation), die Programmiersoftware [[AVRDUDE]] und den Editor Programmer&#039;s Notepad.&lt;br /&gt;
&lt;br /&gt;
[http://winavr.sourceforge.net/ Download über die WinAVR-Startseite]&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
&lt;br /&gt;
Nach dem Installieren sollten Win9X-Rechner neu gestartet werden, um die Erweiterung des Suchpfades um die WinAVR-Verzeichnisse zu aktivieren (autoexec.bat). Bei Windows NT/2000/XP ist üblicherweise kein Neustart erforderlich, sollte aber dennoch ausgeführt werden, wenn Probleme auftreten (Fehler in der Art: &#039;&#039;Der Befehl ist falsch geschrieben/kann nicht gefunden werden...&#039;&#039;). Danach kann man sofort im Programmer&#039;s Notepad z.B. mit dem Beispielcode anfangen. &lt;br /&gt;
&lt;br /&gt;
Zwei WinAVR Verzeichnisse müssen in der PATH-Umgebungsvariable aufgeführt sein:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\Dokumente und Einstellungen\willi&amp;gt;path&lt;br /&gt;
PATH=[...]C:\WinAVR\bin;C:\WinAVR\utils\bin;[...]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tipps + Tricks ==&lt;br /&gt;
&lt;br /&gt;
=== Umstieg von AVR-Studio mit avr-gcc zu WinAVR mit AVRISP ===&lt;br /&gt;
* Programmer&#039;s Notepad 2 hat konfigurierbare Menüpunkte, vorkonfiguriert sind: &lt;br /&gt;
**Make all&lt;br /&gt;
**Make clean&lt;br /&gt;
**Make program&lt;br /&gt;
* Man muss sich selbst um ein passendes Makefile kümmern. Dazu kann WinAVR/mfile/mfile.tcl genutzt werden (Achtung, F_CPU ist im Template bereits mit 8 MHz eingestellt und muss ggf. von Hand geändert werden). mfile benötigt TCL/TK ([http://www.activestate.com/Products/Download/Download.plex?id=ActiveTcl Win32 download], ca 20 MB). &lt;br /&gt;
* Zum Flashen wird AVRDUDE benutzt.&lt;br /&gt;
* Wenn es beim Flashen einen &#039;out of sync&#039; Fehler gibt, ist nicht der richtige AVRISP eingestellt (unterschiedliche Softwareversionen).&lt;br /&gt;
&lt;br /&gt;
=== WinAVR Version ===&lt;br /&gt;
&lt;br /&gt;
Die aktuelle WinAVR Version ist derzeit (03/2009) WinAVR-20090313. &lt;br /&gt;
&amp;lt;span style=&amp;quot;font-size: 9px&amp;quot;&amp;gt;[http://sourceforge.net/projects/winavr/ &#039;&#039;&#039;SourceForge.net WinAVR&#039;&#039;&#039; &#039;&#039;Projekt-Seite und Download&#039;&#039;]&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Enthalten sind u.a.:&lt;br /&gt;
* GCC Version 4.3.2&lt;br /&gt;
* avr-libc 1.6.6&lt;br /&gt;
* Avrdude 5.6&lt;br /&gt;
* GDB 6.8&lt;br /&gt;
&lt;br /&gt;
Weitere Infos siehe:&lt;br /&gt;
[http://sourceforge.net/news/?group_id=68108 Liste der Änderungen]&lt;br /&gt;
&lt;br /&gt;
=== Passende AVR-Studio Version ===&lt;br /&gt;
Wenn eine WinAVR-Version 2007... mit AVR Studio betrieben wird, ist AVR Studio Version &amp;gt;= 4.13 erforderlich. Beim Projekt Erstellen möglichst einen Leerzeichen freien Pfad nehmen, da es andern falls zu Problemen/Fehlern(z.B. error: &#039;UBRR&#039; undeclared (first use in this function)) kommen &#039;&#039;&#039;kann&#039;&#039;&#039; beim Compilen, eine neue Installation behebt den Fehler nicht.&lt;br /&gt;
&lt;br /&gt;
Downloadadressen sind derzeit:&lt;br /&gt;
* [http://www.atmel.no/beta_ware AVR Tools Beta Site]&lt;br /&gt;
* [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 AVR Studio 4 Site] (Registrierung notwendig!)&lt;br /&gt;
&lt;br /&gt;
=== MAKE funktioniert nicht ===&lt;br /&gt;
&lt;br /&gt;
==== Richtiges Make Programm? ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; make all&lt;br /&gt;
MAKE Version 5.2  Copyright (c) 1987, 2000 Borland&lt;br /&gt;
Error makefile 461: Command syntax error&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn make mit dieser oder ähnlichen Fehlermeldung abbricht, ist der Pfad für ausführbare Programme nicht auf das make Programm aus dem GCC/Binutils Paket gesetzt. Es wird ganz banal das falsche Make-Programm (z.B. von Borland C oder Delphi) für das verwendete makefile aufgerufen. In diesem Fall ist die Umgebungsvariable PATH in Autoexec.Bat (Windows 98SE) bzw. in der Systemsteuerung (Windows XP, 2000) anzupassen.&lt;br /&gt;
&lt;br /&gt;
==== gcc plug-in: Error: Object file not found on expected location ====&lt;br /&gt;
&lt;br /&gt;
Diese Fehlermeldung kann nur auftauchen, wenn der GNU C Compiler aus dem AVR-Studio heraus bedient wird. Dass keine weiteren Fehlerursachen genannt werden, ist eigentlich ein [[AVR-Studio Bugs|AVR-Studio Bug]]. &lt;br /&gt;
&lt;br /&gt;
Eine Analyse des AVR-Studio Bugs hat [http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=53658 Johan Ekdahl im avrfreaks.net Forum] beschrieben. AVR-Studio erkennt in gewissen Fällen beim &#039;&#039;&#039;Build&#039;&#039;&#039;-Vorgang auftretende Fehler nicht und erwartet eine nie hergestellte Ausgabedatei. &lt;br /&gt;
&lt;br /&gt;
Auf jeden Fall sollte man in AVR Studio mal zwischen dem Build und Message-Fenster umschalten, ob ein einem von beiden mehr Infos stehen, was wodurch den Fehler produziert.&lt;br /&gt;
&lt;br /&gt;
Wenn nicht mehr Infos aus AVR Studio herauszukitzeln sind, könnte man das Projekt beispielsweise als herkömmliches Make-Projekt aufsetzen, mit WinAVR kompilieren (Kommandozeile oder aus dem Programmers Notepad heraus) und auf Fehlermeldungen achten.&lt;br /&gt;
&lt;br /&gt;
Siehe auch:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/80188 gcc plug-in: Error: Object file not found...] im Forum&lt;br /&gt;
&lt;br /&gt;
==== avr-gcc: _spawnvp: No such file or directory ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; &amp;quot;make.exe&amp;quot; all&lt;br /&gt;
&lt;br /&gt;
-------- begin --------&lt;br /&gt;
avr-gcc (GCC) 4.1.1 (WinAVR 20070122)&lt;br /&gt;
Copyright (C) 2006 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is&lt;br /&gt;
NO&lt;br /&gt;
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR&lt;br /&gt;
PURPOSE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Linking: main.c.elf&lt;br /&gt;
avr-gcc -mmcu=at90s2313 -I. -gdwarf-2 -DF_CPU=7372800UL -Os&lt;br /&gt;
-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall&lt;br /&gt;
-Wstrict-prototypes -Wa,-adhlns=  -std=gnu99 -Wundef -MMD -MP -MF&lt;br /&gt;
.dep/main.c.elf.d  --output main.c.elf -Wl,-Map=main.c.map,--cref&lt;br /&gt;
-lm&lt;br /&gt;
avr-gcc: _spawnvp: No such file or directory&lt;br /&gt;
make.exe: *** [main.c.elf] Error 1&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Process Exit Code: 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bei WinAVR-20070122 und WinAVR-20070525 kann es unter VISTA und Windows98SE eine ähnliche Fehlermeldung wie oben gezeigt geben. &lt;br /&gt;
&lt;br /&gt;
Verschiedene Binärpatches können diese Probleme beheben:&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/61716#508449 Forenbeitrag von MadWizard] und [http://www.madwizard.org/extern/winavr-vista/ Originalseite] für VISTA (32-Bit). Bei der 64-Bit Version von VISTA wird berichtet, dass der Linker mit Fehlermeldung abbricht.&lt;br /&gt;
* [http://www.mikrocontroller.net/topic/60163#490161 Forenbeitrag von Stefan] für Windows98SE&lt;br /&gt;
&lt;br /&gt;
WinAVR-20071221 funktioniert unter Windows98SE, wie erste Tests zeigen, wie aus der Tüte, d.h. ohne Binärpatch (Jippy!).&lt;br /&gt;
&lt;br /&gt;
==== ...\WinAVR\utils\bin\sh.exe: *** Couldn&#039;t reserve space for cygwin&#039;s heap, Win32 error 487 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt; &amp;quot;make.exe&amp;quot; all&lt;br /&gt;
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000&lt;br /&gt;
E:\WinAVR\utils\bin\sh.exe: *** Couldn&#039;t reserve space for cygwin&#039;s heap, Win32 error 487&lt;br /&gt;
&lt;br /&gt;
-------- begin --------&lt;br /&gt;
avr-gcc (GCC) 3.4.3&lt;br /&gt;
Copyright (C) 2004 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO&lt;br /&gt;
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
AllocationBase 0x0, BaseAddress 0x71590000, RegionSize 0x470000, State 0x10000&lt;br /&gt;
E:\WinAVR\utils\bin\sh.exe: *** Couldn&#039;t reserve space for cygwin&#039;s heap, Win32 error 487&lt;br /&gt;
make.exe: *** [sizebefore] Error 1&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Process Exit Code: 2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn make mit dieser oder ähnlichen Fehlermeldung abbricht, ist es einen Versuch wert, die Hilfsdatei &#039;&#039;&#039;msys-1.0.dll&#039;&#039;&#039; im Ordner des Tools sh.exe (beim Beispiel E:\WinAVR\utils\bin\) auszutauschen. Eine Anleitung dazu gibt es von Madwizard (http://www.madwizard.org/extern/winavr-vista). Siehe auch im Forum die [http://www.mikrocontroller.net/topic/70505#573305 Frage von Lukas] und die [http://www.mikrocontroller.net/topic/79973#667605 Frage von werdlangsammüde].&lt;br /&gt;
&lt;br /&gt;
==== make: *** [####.eep] Error 1 ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Build started 18.8.2007 at 20:14:23&lt;br /&gt;
avr-objcopy -j .eeprom --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot;&lt;br /&gt;
--change-section-lma .eeprom=0 -O ihex I2C_Motor.elf I2C_Motor.eep&lt;br /&gt;
c:\Programme\WinAVR\bin\avr-objcopy.exe: there are no sections to be&lt;br /&gt;
copied!&lt;br /&gt;
c:\Programme\WinAVR\bin\avr-objcopy.exe: --change-section-lma&lt;br /&gt;
.eeprom=0x00000000 never used&lt;br /&gt;
make: *** [I2C_Motor.eep] Error 1&lt;br /&gt;
Build succeeded with 0 Warnings...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese oder eine ähnliche Fehlermeldung erscheint, wenn im erzeugten Programm der [[EEPROM]]-Abschnitt unbenutzt ist. Um die Fehlermeldung zu unterdrücken, kann man vor den Aufruf von avr-objcopy im Makefile ein Minuszeichen schreiben ([http://www.mikrocontroller.net/topic/76369#633387 Forenbeitrag von Jörg]).&lt;br /&gt;
&lt;br /&gt;
Beispielzeilen in einem Makefile &#039;&#039;&#039;ohne&#039;&#039;&#039; Fehlerunterdrückung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%.eep: %.elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_EEPROM) $@&lt;br /&gt;
	$(OBJCOPY) -j .eeprom \&lt;br /&gt;
        --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; \&lt;br /&gt;
	--change-section-lma .eeprom=0 \&lt;br /&gt;
        --no-change-warnings -O $(FORMAT) \&lt;br /&gt;
        $&amp;lt; $@ || exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispielzeilen in einem Makefile &#039;&#039;&#039;mit&#039;&#039;&#039; Fehlerunterdrückung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
%.eep: %.elf&lt;br /&gt;
	@echo&lt;br /&gt;
	@echo $(MSG_EEPROM) $@&lt;br /&gt;
	-$(OBJCOPY) -j .eeprom \&lt;br /&gt;
        --set-section-flags=.eeprom=&amp;quot;alloc,load&amp;quot; \&lt;br /&gt;
	--change-section-lma .eeprom=0 \&lt;br /&gt;
        --no-change-warnings -O $(FORMAT) \&lt;br /&gt;
        $&amp;lt; $@ || exit 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== make.exe: *** No rule to make target `main.elf&#039;, needed by `elf&#039;. ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-------- begin --------&lt;br /&gt;
avr-gcc (GCC) 4.2.2 (WinAVR 20071221rc1)&lt;br /&gt;
Copyright (C) 2007 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is NO warranty;&lt;br /&gt;
not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.&lt;br /&gt;
&lt;br /&gt;
make.exe: *** No rule to make target `main.elf&#039;, needed by `elf&#039;.  Stop.&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Process Exit Code: 2&lt;br /&gt;
&amp;gt; Time Taken: 00:02&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese oder eine ähnliche Fehlermeldung erscheint, wenn der Quelltest NICHT main.c heisst und ein Makefile OHNE weitere Anpassung an den verwendeten Dateinamen der Quelltextdatei verwendet wird. &lt;br /&gt;
&lt;br /&gt;
Abhilfe ist also die Quelltextdatei in main.c umbenennen oder das Makefile anzupassen (siehe [[AVR-GCC-Tutorial]]).&lt;br /&gt;
&lt;br /&gt;
Eine weitere Fehlerursache könnte auch eine Ordnerstruktur mit Leerzeichen und/oder Sonderzeichen im Pfad sein.&lt;br /&gt;
&lt;br /&gt;
Eine weitere Ursache kann das benutzte Makefile sein. Es ist da anscheinend eins im Umlauf mit falscher Einrückung der Anweisungen ([http://www.mikrocontroller.net/topic/123719#1126830] und [http://www.mikrocontroller.net/topic/116346#1043825])&lt;br /&gt;
&lt;br /&gt;
==== fatal error: opening dependency file .dep/main.o.d: No such file or directory ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
avr-gcc (GCC) 4.2.2 (WinAVR 20071221)&lt;br /&gt;
Copyright (C) 2007 Free Software Foundation, Inc.&lt;br /&gt;
This is free software; see the source for copying conditions.  There is&lt;br /&gt;
NO&lt;br /&gt;
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR&lt;br /&gt;
PURPOSE.&lt;br /&gt;
&lt;br /&gt;
Compiling: main.c&lt;br /&gt;
avr-gcc -c -mmcu=atmega16 -I. -gdwarf-2   -Os -funsigned-char&lt;br /&gt;
-funsigned-bitfiel&lt;br /&gt;
ds -fpack-struct -fshort-enums -Wall -Wstrict-prototypes&lt;br /&gt;
-Wa,-adhlns=main.lst  -&lt;br /&gt;
std=gnu99 -DF_OSC=3686400 -MD -MP -MF .dep/main.o.d main.c -o main.o&lt;br /&gt;
main.c:21: fatal error: opening dependency file .dep/main.o.d: No such&lt;br /&gt;
file or directory&lt;br /&gt;
compilation terminated.&lt;br /&gt;
make: *** [main.o] Error 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sind Leerzeichen oder Sonderzeichen im Verzeichnispfad ([http://www.mikrocontroller.net/topic/99642#864556])?&lt;br /&gt;
&lt;br /&gt;
Wird VISTA 64 benutzt? Obige Fehlermeldung kann als zweite Fehlermeldung nach der eigentlichen VISTA-spezifischen Fehlermeldung (sync_with_child Problem) kommen. Die Lösung hat dann [http://www.madwizard.org/electronics/articles/winavrvista MADWIZARD].&lt;br /&gt;
&lt;br /&gt;
=== Portable Installation ===&lt;br /&gt;
&lt;br /&gt;
Das Hauptproblem beim Ausführen von WinAVR von einem USB-Stick ist der fehlende Eintrag für den Compilerpfad in der Windowsumgebungsvariable PATH. &lt;br /&gt;
&lt;br /&gt;
Die folgende Batchdatei zum Starten des Programmers Notepad extrahiert mit %~dp0 das Laufwerk und den Pfad vom Aufruf der Batchdatei und setzt damit PATH neu. &lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, das die neu gesetzte PATH Variable nicht systemweit etabliert wird, sondern nur für Prozesse gilt, die aus dieser Batch (mit dieser cmd Session) aufgerufen werden (in diesem Fall pn.exe)&lt;br /&gt;
&lt;br /&gt;
....\WinAVR\pn.bat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
@echo off&lt;br /&gt;
echo PN.BAT Version 1.0&lt;br /&gt;
&lt;br /&gt;
set BatchPath=%~dp0&lt;br /&gt;
set BinDir=pn\&lt;br /&gt;
set BinDir=%BatchPath%%BinDir%&lt;br /&gt;
set PATH=%BatchPath%\bin;%BatchPath%\utils\bin;%PATH%&lt;br /&gt;
&lt;br /&gt;
start %BinDir%pn.exe&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Code-Größe anzeigen ===&lt;br /&gt;
* [[WinAVR: Code-Größe anzeigen]]&lt;br /&gt;
* Das Tool [[AVR-GCC#Tipps_.26_Tricks|avr-nm]]&lt;br /&gt;
&lt;br /&gt;
=== Avrdude findet libusb0.dll nicht (WinAVR-20070525) ===&lt;br /&gt;
[http://www.mikrocontroller.net/topic/83524#701461 Forenbeitrag von Paul]: Habe leider noch etwas zu bemängeln, und zwar meckerte avrdude, dass es die &amp;quot;libusb0.dll&amp;quot; nicht fand. Musste dann erst noch manuell den Pfad c:\winavr\utils\libusb\bin in die autoxecec.bat eintragen. Siehe auch [http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;p=373283 Diskussion bei www.avrfreaks.net]&lt;br /&gt;
&lt;br /&gt;
=== C-Quellcode fehlt im *.LSS Listing (WinAVR-20071221) ===&lt;br /&gt;
&lt;br /&gt;
In WinAVR-20071221 werden im ggf. erzeugten Disassemblerlisting (Dateiendung .LSS) keine Quellcodezeilen angezeigt. Es handelt sich um ein Problem des Programms avr-objdump ([http://www.mikrocontroller.net/topic/87778#744096 Forenbeitrag]). Der User DosMan hat einen [http://www.avrfreaks.net/index.php?name=PNphpBB2&amp;amp;file=viewtopic&amp;amp;t=59538 Workaround #1] bei www.avrfreaks.net angegeben (zum Download ggf. kostenlos registrieren). Ein anderer ebenfalls bei www.avrfreaks.net beschriebener [http://www.mikrocontroller.net/topic/87778#774185 Workaround #2] besteht darin, die Zeilenenden im C-Quelltext in &amp;quot;Unix-Zeilenenden&amp;quot; (nur \n statt \n\r) umzuformen bzw. nur mit Editoren zu arbeiten, die solche Unix-Zeilenenden erzeugen.&lt;br /&gt;
&lt;br /&gt;
=== Hilfe! Habe neues WinAVR und das Datensegement ist jetzt riesig! (WinAVR-20071221) ===&lt;br /&gt;
&lt;br /&gt;
Es gibt in der aktuellen Version bereits gemeldete Bugs im Zusammenhang mit &#039;&#039;&#039;float&#039;&#039;&#039; Variablen bzw. den neu geschriebenen Gleitzahlfunktionen der avr-libc ([http://www.mikrocontroller.net/topic/86837#734278 Forumsbeitrag]). Wir können im Moment nur hoffen (oder besser: mitarbeiten), dass bald ein WinAVR Update herauskommt.&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[AVR-GCC-Tutorial]]&lt;br /&gt;
* [[AVR-GCC]]&lt;br /&gt;
* [[AVR-Studio]]&lt;br /&gt;
* [http://www.mikrocontroller.net/forum/gcc GCC-Forum]&lt;/div&gt;</summary>
		<author><name>Raketenfred</name></author>
	</entry>
	<entry>
		<id>https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_Equipment&amp;diff=39997</id>
		<title>AVR-Tutorial: Equipment</title>
		<link rel="alternate" type="text/html" href="https://www.mikrocontroller.net/index.php?title=AVR-Tutorial:_Equipment&amp;diff=39997"/>
		<updated>2009-10-16T10:01:00Z</updated>

		<summary type="html">&lt;p&gt;Raketenfred: /* STK500 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= AVR-Tutorial - Benötigte Ausrüstung =&lt;br /&gt;
==Hardware==&lt;br /&gt;
&lt;br /&gt;
Ein Mikrocontroller alleine ist noch zu nichts nützlich. Damit man etwas damit anfangen kann, braucht man eine Schaltung, in die der Controller eingesetzt wird. Dazu werden bei Elektronikhändlern Platinen angeboten, die alles nötige (Taster, LEDs, Steckverbinder...) enthalten. Häufig enthalten diese Platinen nicht nur Platz für den Mikroprozessor, sondern auch einen ISP-Programmierer (Näheres dazu später).&lt;br /&gt;
&lt;br /&gt;
=== Fertige Evaluations-Boards und Starterkits ===&lt;br /&gt;
&lt;br /&gt;
==== AVR Starterkit aus dem Mikrocontroller.net-Shop ====&lt;br /&gt;
&lt;br /&gt;
Sehr gut für dieses Tutorial geeignet ist das [http://shop.mikrocontroller.net/?product_id=67 AVR-Starterkit aus dem Mikrocontroller.net-Shop]. Das Kit enthält eine Platine mit dem Controller ATmega8, einen USB-ISP-Programmieradapter und ein Steckernetzteil.&lt;br /&gt;
&lt;br /&gt;
==== STK500 ====&lt;br /&gt;
[[Bild:Stk500.jpg|right]]&lt;br /&gt;
Das STK500 ist das Standard-Board für AVR Entwicklung, direkt von Atmel. Es enthält auch einen ISP-Programmer und ist fertig aufgebaut. Es ist unter Entwicklern sehr beliebt und wird natürlich von Atmel unterstützt. Es gilt allgemein als gute Investition, wenn man ernsthaft in das Thema einsteigen möchte.&lt;br /&gt;
&lt;br /&gt;
Das STK500 kostet bei Reichelt ca. 80 Euro (ein geeignetes Netzteil muss zusätzlich erworben werden).&lt;br /&gt;
&lt;br /&gt;
==== Pollin Eval.-Board v2.x ====&lt;br /&gt;
&lt;br /&gt;
Bei Pollin Elektronik gibt es für 15 Euro ein Evaluation Board zum Selbstlöten (mit Platine und Bauteilen, aber ohne Mikrocontroller). Auch dieses Board enthält einen ISP-Programmer, allerdings der einfacheren Sorte. Im Vergleich zum STK500 ist das Board recht unflexibel und hat weniger Features. Die Beschreibung zum Zusammenlöten des Boards ist ausreichend, zur Benutzung des Boards erfährt man außer dem Schaltplan praktisch nichts. Der Schaltplan und dieses AVR-Tutorial zusammen sind allerdings ausreichend. &lt;br /&gt;
&lt;br /&gt;
Siehe: [http://www.pollin.de http://www.pollin.de]&lt;br /&gt;
&lt;br /&gt;
==== Pollin Funk-AVR-Evaluationsboard v1.x ====&lt;br /&gt;
&lt;br /&gt;
Bei diesem Board besteht die Möglichkeit, Funkmodule wie das [[RFM12]], RFM01 oder RFM02 auf dem Board aufzulöten.&lt;br /&gt;
&lt;br /&gt;
Siehe: &lt;br /&gt;
* [[Pollin Funk-AVR-Evaluationsboard]]&lt;br /&gt;
* [http://www.pollin.de http://www.pollin.de]&lt;br /&gt;
&lt;br /&gt;
==== ATmega8-Entwicklungsplatine ====&lt;br /&gt;
&lt;br /&gt;
Eine weitere Möglichkeit ist die [http://shop.mikrocontroller.net/?product_id=43 ATmega8-Entwicklungsplatine von shop.mikrocontroller.net]. Diese enthält eine Fassung für den Controller, einen Spannungswandler, die Beschaltung für die serielle Schnittstelle und einen Anschluss für den Programmieradapter. Die restliche Hardware wie LEDs und Taster kann man sich selber nach Belieben auf das Lochrasterfeld löten.&lt;br /&gt;
&lt;br /&gt;
==== Andere ====&lt;br /&gt;
&lt;br /&gt;
Das Angebot an AVR-Evaluationboards, -Experimentierplatinen, -Entwicklerplatinen oder wie die jeweiligen Hersteller ihre Produkte auch immer bezeichnen, ist mittlerweile recht groß geworden. Sie alle zu bewerten ist unmöglich geworden.&lt;br /&gt;
&lt;br /&gt;
===Selbstbau===&lt;br /&gt;
&lt;br /&gt;
Ein fertiges Board ist gar nicht nötig, man kann die benötigte Schaltung auch selbst auf einem kleinen Steckbrett oder einer Lochrasterplatine aufbauen. So kompliziert wie das STK500 wird es nicht, es reichen eine Hand voll Bauteile. Wie man das macht wird im Folgenden beschrieben.&lt;br /&gt;
&lt;br /&gt;
Die folgende Schaltung baut man am besten auf einem &#039;&#039;&#039;Breadboard&#039;&#039;&#039; (Steckbrett) auf. Solche Breadboards gibt&#039;s z.B. bei [http://www.reichelt.de Reichelt],  [http://www.conelek.com/Steckplatinen ConeleK], [http://www.elv.de/ ELV] oder [http://www.conrad.de/ Conrad]. &lt;br /&gt;
&lt;br /&gt;
[[Bild:Mega8_Tutorial.png|center|framed| Die Grundschaltung eines Mega8]]&lt;br /&gt;
&lt;br /&gt;
Über den Takteingang &#039;&#039;&#039;XTAL1&#039;&#039;&#039; ist der Mikrocontroller mit dem &#039;&#039;&#039;Quarzoszillator&#039;&#039;&#039; verbunden, der den benötigten Takt von 4 MHz liefert (siehe unten). Achtung: die Pins werden, wenn man den Oszillator mit der Schrift nach oben vor sich liegen hat, von unten links aus abgezählt. Unten links ist Pin 1, unten rechts Pin 7, oben rechts Pin 8 und oben links Pin 14 (natürlich hat der Oszillator nur 4 Pins. Die Nummerierung kommt daher, dass bei einem normalen IC dieser Größe an den gleichen Positionen die Pins Nr. 1, 7, 8 und 14 wären). &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;PD0-PD7&#039;&#039;&#039; und &#039;&#039;&#039;PB0-PB5&#039;&#039;&#039; sind die &#039;&#039;&#039;IO-Ports&#039;&#039;&#039; des Mikrocontrollers. Hier können Bauteile wie LEDs, Taster oder LCDs angeschlossen werden.&lt;br /&gt;
Der &#039;&#039;&#039;Port C (PC0-PC5)&#039;&#039;&#039; spielt beim Atmega8/AT90S4433 eine Sonderrolle: mit diesem Port können Analog-Spannungen gemessen werden. Aber dazu später mehr!&lt;br /&gt;
An &#039;&#039;&#039;Pin 17-19&#039;&#039;&#039; ist die Stiftleiste zur Verbindung mit dem ISP-Programmer angeschlossen, über den der AVR vom PC programmiert wird (Achtung: PINs in Abbildung entsprechen nicht der Belegung des AVRISP mkII. Die korrekte Pin-Belegung kann im Handbuch des AVRISP mkII eingesehen werden).&lt;br /&gt;
Die Resetschaltung, bestehend aus &#039;&#039;&#039;R1&#039;&#039;&#039; und &#039;&#039;&#039;C1&#039;&#039;&#039;, sorgt dafür, dass der Reseteingang des Controllers standardmäßig auf Vcc=5V liegt.&lt;br /&gt;
Zum Programmieren zieht der ISP-Adapter die Resetleitung auf Masse (GND), die Programmausführung wird dadurch unterbrochen und der interne Speicher des Controllers kann neu programmiert werden.&lt;br /&gt;
Zwischen Vcc und GND kommen noch jeweils ein 100nF Keramik- oder Folienkondensator C3 und C4, um Störungen in der Versorgungsspannung zu unterdrücken. Dieser [[Abblockkondensator]] sollte so nah wie möglich am Controller plaziert werden. An den Ausgang ARef wird ebenfalls ein 100nF Kondensator angeschlossen. Dieser wird allerdings erst benötigt, wenn der Analog/Digital Konverter des µC in Betrieb genommen wird.&lt;br /&gt;
&lt;br /&gt;
Für den Anschluss des ISP-Programmiergerätes kann man im Grunde jede beliebige Pin-Belegung des ISP Steckers benutzen, solange nur alle benötigten Leitungen mit dem Programmiergerät verbunden sind. In der Praxis haben sich allerdings bestimmte Belegungen durchgesetzt. Im Schaltbild ist eine eigene Belegung des 6-poligen Steckers gezeigt. Die alternative Pinbelegung eines 2-reihigen/10-poligen Steckers ist eine übliche Belegung. Benutzt man so eine übliche Belegung, so reicht normalerweise ein 10-poliges Flachbandkabel, um den vorhandenen ISP-Programmer mit der Schaltung so zu verbinden, dass alle Signale am richtigen Prozessorpin ankommen. Siehe auch [[AVR_In_System_Programmer]].&lt;br /&gt;
&lt;br /&gt;
Hier die Liste der benötigten Bauteile: &lt;br /&gt;
&lt;br /&gt;
* R1         Widerstand 10 kOhm&lt;br /&gt;
* C1         Keramikkondensator 47 nF&lt;br /&gt;
* C2, C3, C4 Keramik- oder Folienkondensator 100 nF&lt;br /&gt;
*            Stiftleiste 6-polig&lt;br /&gt;
*            Mikrocontroller ATmega8 (kann auf [http://shop.mikrocontroller.net/ http://shop.mikrocontroller.net/] bestellt werden)&lt;br /&gt;
*            Quarzoszillator 4 MHz&lt;br /&gt;
&lt;br /&gt;
Beim Breadboard ist darauf zu achten, dass man die parallel laufenden Schienen für GND (blau) und Vcc (rot) jeweils mit Drähten verbindet (nicht Vcc und GND miteinander!).&lt;br /&gt;
&lt;br /&gt;
Eine Zusammenstellung der benötigten Bauteile befindet sich in der [[AVR-Tutorial_Bestellliste|Bestellliste]].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;border: 1px solid grey; padding: 1ex; font-size: 90%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Ergänzende Hinweise zur Taktversorgung (kann übersprungen werden) ===&lt;br /&gt;
&lt;br /&gt;
Ein Mikrocontroller benötigt, wie jeder Computer, eine Taktversorgung. Der Takt ist notwendig, um die internen Abläufe im Prozessor in einer geordneten Reihenfolge ausführen zu können. Die Frequenz des Taktes bestimmt im Wesentlichen, wie schnell ein Computer arbeitet.&lt;br /&gt;
&lt;br /&gt;
Bei einem ATMega8 gibt es 2 Möglichkeiten zur Taktversorgung&lt;br /&gt;
* interner Takt&lt;br /&gt;
* externer Takt&lt;br /&gt;
&lt;br /&gt;
====interner Takt====&lt;br /&gt;
Dies ist der Auslieferungszustand bei einem Mega8. Dabei wird der Takt von einem internen Schwingkreis geliefert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteil&#039;&#039;&#039;: Keine externe Beschaltung notwendig. Die Pins, an denen ansonsten ein Quarz oder ein Quarzoszillator angeschlossen wird, sind daher als normale Portpins für Ein/Ausgaben verwendbar.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil&#039;&#039;&#039;: Der Schwingkreis ist nicht sehr genau. Bei Temperaturänderungen verändert er seine Frequenz. Nur 4 Frequenzen (1MHz, 2MHz, 4MHz und 8MHz) sind bei einem Mega8 realisierbar. Es gibt zwar die Möglichkeit, die interne Frequenz in Grenzen noch zu verändern, dies ist aber aufwändig und erfordert mindestens einen Frequenzzähler, wenn man eine bestimmte Frequenz erreichen will.&lt;br /&gt;
&lt;br /&gt;
====externer Takt====&lt;br /&gt;
Hier gibt es diesmal drei Möglichkeiten:&lt;br /&gt;
* Quarz&lt;br /&gt;
* Quarzoszillator&lt;br /&gt;
* Keramikschwinger/Resonator&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Vorteil&#039;&#039;&#039;: Die Taktfrequenz ist so stabil, wie es der Quarz, Oszillator oder Keramikschwinger vorgibt. Und das ist wesentlich genauer als der interne Oszillator. Kein Abgleich notwendig, wenn eine bestimmte Frequenz erreicht werden soll, solange es einen Quarz bzw. Oszillator oder Keramikschwinger in dieser Frequenz gibt.&lt;br /&gt;
Ein spezieller Vorteil des Keramikschwingers ist, dass dieser keine Kondensatoren nach Masse braucht, weil er die schon eingebaut hat.&lt;br /&gt;
Es muss lediglich ein dritter Pin mit Masse verbunden werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Nachteil&#039;&#039;&#039;: Die Pins an denen der Quarz bzw. Oszillator oder Keramikschwinger angeschlossen wird, sind nicht mehr als I/O Pins nutzbar.&lt;br /&gt;
&lt;br /&gt;
Spätestens dann, wenn eine RS232-Verbindung zu einem anderen Computer aufgebaut werden soll, ist eine exakte Taktversorgung einer der Schlüssel, um diese Verbindung auch stabil halten zu können. Aus diesem Grund wird in diesem Tutorial von vorne herein mit einem externen Takt gearbeitet. Es spielt dabei keine Rolle, ob dafür ein Quarzoszillator, ein Quarz oder ein Keramikschwinger benutzt wird.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=&amp;quot;FF0000&amp;quot;&amp;gt;Achtung: Ein ATMega8 wird mit aktiviertem internen Takt ausgeliefert. Um einen Quarzoszillator oder einen Quarz zu aktivieren, müssen die Fuse-Bits des Prozessors verändert werden. Details dazu finden sich [[AVR_Fuses|hier]].&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Quarz statt Quarzoszillator ====&lt;br /&gt;
&lt;br /&gt;
Wird anstelle eines Quarzoszillators ein Quarz eingesetzt, so sieht die Anbindung des Quarzes so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:tutorial-quarz-schaltplan.png|center|framed| Quarz Standardbeschaltung]]&lt;br /&gt;
&lt;br /&gt;
Die beiden Kondensatoren &#039;&#039;&#039;C3&#039;&#039;&#039; und &#039;&#039;&#039;C4&#039;&#039;&#039; sind zum Betrieb des Quarzes notwendig. Ihre Größe ist abhängig von den Daten des Quarzes. 22pF sind ein Wert, der bei den meisten Quarzen funktionieren sollte.&lt;br /&gt;
&lt;br /&gt;
==== Keramikschwinger/Resonator- statt Quarz/Oszillator ====&lt;br /&gt;
&lt;br /&gt;
Wird anstelle eines Quarz/Oszillators ein Keramikschwinger eingesetzt, so sieht die Anbindung des Keramikschwingers so aus:&lt;br /&gt;
&lt;br /&gt;
[[Bild:Resonator.png|framed|center| Resonator Standardbeschaltung]]&lt;br /&gt;
&lt;br /&gt;
Es werden keine Kondensatoren benötigt, daher ist der Anschluss eines Keramikschwingers kinderleicht.&lt;br /&gt;
Zu beachten ist dass ein Keramikschwinger eine höhere Toleranz ausweist, die aufgedruckte Frequenz also nicht so genau liefert wie ein Quarz.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Stromversorgung ===&lt;br /&gt;
&lt;br /&gt;
Die Versorgungsspannung &#039;&#039;&#039;Vcc&#039;&#039;&#039; beträgt 5V und kann z.B. mit folgender Schaltung erzeugt werden:&lt;br /&gt;
&lt;br /&gt;
[[Bild:V_Regler.gif|framed|center|Standard Netzteil Beschaltung eines 7805]]&lt;br /&gt;
&lt;br /&gt;
Bauteile:&lt;br /&gt;
* IC1: 5V-Spannungsregler 7805&lt;br /&gt;
* C1: Elko 10µF (Polung beachten!)&lt;br /&gt;
* C2,C3: 2x Kondensator 100nF (kein Elektrolyt)&lt;br /&gt;
* D1: Diode 1N4001&lt;br /&gt;
&lt;br /&gt;
Hauptelement der Schaltung ist das IC 7805. Seine Aufgabe ist es aus der Versorgungsspannung stabile 5V zu erzeugen. Dieses IC gibt es seit vielen Jahren und wird von vielen Chipherstellern produziert. Er stellt die einfachste und simpelste Möglichkeit dar, aus einer vorhandenen Gleichspannung definierte 5V zu erzeugen. Den 7805 gibt es in verschiedenen Ausführungen, was seine maximale Strombelastung angeht. Für die Zwecke dieses Tutorials ist die Standard-Variante, welche maximal 1A abgeben kann völlig ausreichend. Der 7805 enthält eine Übertemperatursicherung, so dass er abschaltet, wenn es ihm zu heiß wird.&lt;br /&gt;
&lt;br /&gt;
Die beiden 100nF Kondensatoren haben die Aufgabe, eine mögliche Schwingneigung des 7805 zu unterdrücken. Sie müssen so nahe wie möglich an den Anschlusspins des 7805 angeschlossen werden, um ihre Wirkung zu entfalten.&lt;br /&gt;
&lt;br /&gt;
An den Eingang (+ und - im Schaltplan) wird ein Steckernetzteil mit einer Spannung von 9 - 12V angeschlossen. Der 7805 benötigt an seinem Eingang eine Gleichspannung die mindestens 8V beträgt. Mit einem 6V oder 7V Netzteil wird der 7805 keine stabilen 5V erzeugen können. Auf der anderen Seite macht es auch keinen Sinn, wesentlich über 12V Eingangsspannung hinauszugehen. Der 7805 ist ein Linearregler. Salopp gesagt, wird die überschüssige Spannung in Form von Wärme vernichtet. Liegt die Eingangsspannung weit über 12V, so wird schon wesentlich mehr Energie in Form von Wärme umgesetzt, als am Ausgang entnommen werden kann. Mal ganz davon abgesehen, dass der 7805 davon brennheiß werden wird.&lt;br /&gt;
&lt;br /&gt;
Eine Stromversorgung mit Batterien ist grundsätzlich auch möglich, wenn die elektrischen Grenzdaten des µC eingehalten werden (max. Spannung, min. Spannung). Bei der geregelten Stromversorgung oben sollte die Batteriespannung ca. 1.5 - 2.5V (Dropout-Spannung des Linearreglers) größer sein als die Versorgungsspannung des µC. Die [[Versorgung aus einer Zelle]] ist ein Thema für Fortgeschrittene.&lt;br /&gt;
&lt;br /&gt;
=== Der ISP-Programmierer (In-System-Programmer)===&lt;br /&gt;
&lt;br /&gt;
[[Bild:Mikrocontroller.gif|framed|right|ISP Programmierer]]&lt;br /&gt;
Dann braucht man nur noch den &#039;&#039;&#039;ISP-Programmieradapter&#039;&#039;&#039;, über den man die Programme vom PC in den Controller übertragen kann. Eine Übersicht über mögliche ISP-Programmer Varianten findet sich im Artikel [[AVR_In_System_Programmer]].&lt;br /&gt;
&lt;br /&gt;
Fertige ISP-Programmer zum Anschluss an den Parallelport oder USB gibt es z.B. auf http://shop.mikrocontroller.net/. &lt;br /&gt;
&lt;br /&gt;
Eine Bauanleitung gibt es u.a. auf [http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel http://www.rn-wissen.de/index.php/AVR-ISP_Programmierkabel] oder [http://rumil.de/hardware/avrisp.html http://rumil.de/hardware/avrisp.html].&lt;br /&gt;
&lt;br /&gt;
Den ISP-Adapter schließt man an den Parallelport an und verbindet ihn mit der Stiftleiste SV1 über ein 6-adriges Kabel (siehe Schaltplan).&lt;br /&gt;
&lt;br /&gt;
=== Sonstiges ===&lt;br /&gt;
&lt;br /&gt;
Wer vorausschauend kauft, kauft mehr als einen Mikrocontroller. Bis der erste Controller defekt ist oder man durch Austauschen sicher gehen möchte, ob der Fehler im Programm oder im Controller ist, vergeht nur wenig Zeit.&lt;br /&gt;
&lt;br /&gt;
Für die anderen Teile des Tutorials sollte man sich noch die folgenden Bauteile besorgen: &lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 2 (I/O-Grundlagen)&lt;br /&gt;
* 5 LEDs 5mm&lt;br /&gt;
* 5 Taster&lt;br /&gt;
* 5 Widerstände 1k&lt;br /&gt;
* 5 Widerstände 10k&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 6 (LC-Display)&lt;br /&gt;
* 1 Potentiometer 10k&lt;br /&gt;
* 1 HD44780-kompatibles LCD, z.B. 4x20 oder 2x16 Zeichen&lt;br /&gt;
*   besitzt das LCD eine Hintergrundbeleuchtung, dann noch einen Vorwiderstand dafür. Details dazu stehen im Datenblatt des LCD. Ein Wert von 50 Ohm sollte aber in jedem Fall passen. Schlimmstenfalls ist die Hintergrundbeleuchtung dann etwas zu dunkel.&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 10 (Der UART)&lt;br /&gt;
* 1 Pegelwandler MAX232, MAX232&#039;&#039;&#039;A&#039;&#039;&#039; oder MAX202&lt;br /&gt;
* 5 Kondensatoren&lt;br /&gt;
** Bei einem MAX232: je 1µF Elektrolytkondensator&lt;br /&gt;
** Bei einem MAX202 oder MAX232&#039;&#039;&#039;A&#039;&#039;&#039;: je  100nF Keramik- oder Elektrolytkondensator&lt;br /&gt;
:Die Kondensatoren dürfen auch größer sein. Ist man sich nicht sicher, welchen MAX232 man hat (A oder nicht A), dann die größeren Kondensatoren 1µF nehmen, die funktionieren auch beim MAX232A oder MAX202.&lt;br /&gt;
* 1 9-polige SUBD-Buchse (female)&lt;br /&gt;
* 1 dazu passendes Modem(nicht Nullmodem!)-Kabel&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 14 (ADC)&lt;br /&gt;
* 1 Kondensator 100n&lt;br /&gt;
* 1 Potentiometer 10k&lt;br /&gt;
* nach Lust und Laune temperatur- oder lichtabhängige Widerstände und jeweils einen Widerstand in der gleichen Größenordnung wie der Sensor&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 17 (Schieberegister)&lt;br /&gt;
* 2 Schieberegister 74HC595&lt;br /&gt;
* einige LED, damit man an die Schieberegister auch etwas anschliessen kann, samt passenden Vorwiderständen&lt;br /&gt;
&lt;br /&gt;
---------------------------&lt;br /&gt;
Teil 19 (7-Segmentanzeige)&lt;br /&gt;
* 4 7-Segmentanzeigen mit gemeinsamer Anode&lt;br /&gt;
* 4 PNP Transistoren BC338&lt;br /&gt;
* 4 Widerstände 1k&lt;br /&gt;
* 7 Widerstände 100Ohm&lt;br /&gt;
&lt;br /&gt;
Für weitere Bauteile, die man als angehender µC Bastler auch des Öfteren mal benötigt, empfiehlt sich ein Blick in die Liste der [[Standardbauelemente]] bzw. in die [[Absolute_beginner|Grundausstattung]]. Wenn ihr Händler Großpackungen (zb. 100 Stück) von 100n Kondensatoren, 10k, 1k oder 100Ohm Widerständen anbietet, sollten sie deren Erwerb in Erwägung ziehen. Diese Bauteile benötigt man oft und derartige Großpackungen sind oft nicht teurer, als wennn man einige wenige Exemplare einzeln kauft. Dies hängt damit zusammen, daß das Herauszählen von 9 Bauteilen für den Verkäufer teurer kommt, als 100 Bauteile abgepackt aus dem Regal zu nehmen.&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
In diesem Tutorial wird nur auf die Programmierung in Assembler eingegangen, da Assembler für das Verständnis der Hardware am besten geeignet ist.&lt;br /&gt;
&lt;br /&gt;
=== Assembler ===&lt;br /&gt;
&lt;br /&gt;
Zuerst braucht man einen &#039;&#039;&#039;Assembler&#039;&#039;&#039;, der in Assemblersprache geschriebene Programme in Maschinencode übersetzt. Windows-User können das [http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 AVR-Studio] von Atmel verwenden, das neben dem Assembler auch einen Simulator enthält, mit dem sich die Programme vor der Übertragung in den Controller testen lassen; für Linux gibt es [http://www.tavrasm.org/ tavrasm], [http://avra.sourceforge.net/ avra] und [http://avr-asm-tutorial.net/gavrasm/index_de.html gavrasm]. &lt;br /&gt;
&lt;br /&gt;
Um die vom Assembler erzeugte &amp;quot;.hex&amp;quot;-Datei über den ISP-Adapter in den Mikrocontroller zu programmieren, kann man unter Windows z.B. das Programm [http://www.myplace.nu/avr/yaap/ yaap] verwenden, für Linux gibt es [http://savannah.nongnu.org/projects/uisp/ uisp], für beide avrdude.&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
Wer in C programmieren möchte, kann den kostenlosen GNU-C-Compiler AVR-GCC (unter Windows &amp;quot;WinAVR&amp;quot;) ausprobieren. Dieser C-Compiler kann auch in das für Assembler-Programmierung notwendige AVR-Studio integriert werden. In der Artikelsammlung gibt es ein umfangreiches [[AVR-GCC-Tutorial|Tutorial]] zu diesem Compiler;&lt;br /&gt;
&lt;br /&gt;
Wer unter Windows und Linux gleichermassen kostenlos entwickeln will, der sollte sich die [http://www.eclipse.org/ IDE Eclipse for C/C++ Developers] und das [http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin AVR-Eclipse Plugin ] ansehen, beide sind unter Windows und Linux einfach zu installieren. Hier wird auch der AVR-GCC benutzt. In der Artikelsammlung gibt es ein umfangreiches [[AVR Eclipse|AVR Eclipse Tutorial]] zu dieser IDE.&lt;br /&gt;
Ebenfalls unter Linux und Windows verfügbar ist die Entwicklungsumgebung [http://www.codeblocks.org/ Code::Blocks] (aktuelle, stabile Versionen sind als Nightly Builds regelmäßig im [http://forums.codeblocks.org/ Forum] verfügbar). Innerhalb dieser Entwicklungsumgebung können ohne die Installation zusätzlicher Plugins &amp;quot;AVR-Projekte&amp;quot; angelegt werden.&lt;br /&gt;
&lt;br /&gt;
Fragen dazu stellt man am besten hier im [http://www.mikrocontroller.net/forum/list-2-1.html GCC-Forum].&lt;br /&gt;
&lt;br /&gt;
=== Pascal ===&lt;br /&gt;
Wer in Pascal programmieren muss, kann [http://www.e-lab.de AVRPascal] ausprobieren.&amp;lt;br&amp;gt; &lt;br /&gt;
Dieser Pascalcompiler ist kostenfrei bis 4kb Code und bietet viele ausgereifte Bibliotheken für Servoansteuerung, Serielle Schnittstellen (COM, TWI, SPI), PWM, Timernutzung, LCD-Displays usw.&amp;lt;br&amp;gt; &lt;br /&gt;
Außerdem gibt es eine kostenfreie Version für den Mega8 und den Mega88.&lt;br /&gt;
[http://www.e-lab.de E-LAB].&lt;br /&gt;
&lt;br /&gt;
=== Basic ===&lt;br /&gt;
Auch Basic-Fans kommen nicht zu kurz, für die gibt es z.B. [[Bascom AVR]] ($69, Demo verfügbar).&lt;br /&gt;
&lt;br /&gt;
=== Forth ===&lt;br /&gt;
Wer einen direkten und interaktiven Zugang zum Controller haben will, sollte sich [http://amforth.sourceforge.net Forth] anschauen. Voraussetzung ist ein serieller Anschluß (Max232), also etwas mehr als die Minimalbeschaltung.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
Bevor man anfängt, sollte man sich die folgenden PDF-Dateien runterladen und zumindest mal reinschauen:&lt;br /&gt;
&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf Datenblatt des ATmega8 (4,54 MB)]&lt;br /&gt;
* [http://www.atmel.com/dyn/resources/prod_documents/doc0856.pdf Befehlssatz der AVRs (1,27 MB)]&lt;br /&gt;
* oder [http://www.avr-roboter.de/controller/befehle/befehle.html Befehlssatz in deutscher Übersetzung online]&lt;br /&gt;
&lt;br /&gt;
Das Datenblatt eines Controllers ist das wichtigste Dokument für einen Entwickler. Es enthält Informationen über die Pinbelegung, Versorgungsspannung, Beschaltung, Speicher, die Verwendung der IO-Komponenten und vieles mehr.&lt;br /&gt;
&lt;br /&gt;
Im Befehlssatz sind alle Assemblerbefehle der AVR-Controllerfamilie aufgelistet und erklärt.&lt;br /&gt;
 &lt;br /&gt;
{{Navigation_hochvor|	 &lt;br /&gt;
hochtext=Inhaltsverzeichnis|	 &lt;br /&gt;
hochlink=AVR-Tutorial|	 &lt;br /&gt;
vortext=I/O Grundlagen|	 &lt;br /&gt;
vorlink=AVR-Tutorial: IO-Grundlagen}}	 &lt;br /&gt;
 &lt;br /&gt;
[[Category:AVR-Tutorial]]&lt;/div&gt;</summary>
		<author><name>Raketenfred</name></author>
	</entry>
</feed>