zurueck.gif

Der AVR- Programmer

200313ab-010a.jpg

Obwohl es heute recht komfortabel möglich ist AVR- Programme in einem Arduino zu brennen, beinhaltet dies den Nachteil, dass damit nur jeweils ein Controllertyp der AVR- Familie, in der Regel ein ATMega 328P,  programmiert werden kann. Verwendet man in seinem Projekt anderer AVR- Typen so ist man darauf angewiesen kleine Programmierschaltungen diskret aufzubauen. Ferner benötigt man zusätzliche Komponenten, wie LCDs, Taster, usw. um die Funktion der Schaltung zu testen. Das ist ein lästiger zusätzlicher Arbeitsaufwand. Um den zu vermeiden habe ich ein kleines Programmiergerät entwickelt, das alle häufig verwendeten Komponenten enthält.

190117aa-004b.JPGAußer dem AVR- Programmeer benötigen Sie einen ISP- Brenner, wie ihn verschiedene Onlinehändler anbieten. Das nebenstehende Foto zeigt das von mir verwendete Exemplar. Damit lassen sich alle gängigen AVRs brennen. Sowohl die Arduino-IDE als auch der Bascom-AVR unterstützen das Gerät. Ganz ohne Macken ist mein Exemplar jedoch auch nicht. So müssen Sie erst die USB-Verbindung herstellen und können erst dann den ISP- Anschluss in den Wannenstecker der AVR- Programmers stecken, sonst funktioniert das Gerät nicht. Außerdem sollten Sie den USB- Anschluss trennen, wenn Sie die ISP-Verbindung getennt haben. Ermitteln Sie mit dem Gerätemanager die COM- Schnittstelle des Brenners. Sie benötigen  die COM- Nr. sowohl im BASCOM- AVR, als auch im Arduino- Shield. Im BASCOM wählen Sie als Programmer den "STK500 nativ driver", in der Arduino IDE wählen Sie als Programmer zum brennen des Arduino- Bootloaders das "Atmel STK500 development board". Näheres lesen Sie bitte in dem Artikel "Etwas über AVR- Bootloader" nach. Wenn Sie diese Maßnahmen berücksichtigen werden Sie keine Schwierigkeiten mit dem Brenner haben.

Zurück zu dem Programmer. Der AVR- Programmer besteht im wesentlichen aus mehreren IC- Sockeln, deren Kontakte der Anschlüsse SCK, MISO, MOSI, Reset, +5V und GND parallel geschaltet sind. Darüber hinaus gibt es einen 16- poligen IC- Sockel zur freien Beschaltung.  Weiterhin sind einige LEDs mit Vorwiderstand, sowie vier Taster und  zwei 10 kOhm Trimmer verbaut.  Über alle Anschlüsse der Komponenten können Steckverbindungen hergestellt werden. Und Letzt endlich ist da noch die Stromversorgung zu erwähnen, die eine Versorgung aus unterschiedlichen Quellen: wie einen internen 9V-Block, ein 9V- Steckernetzteil und den 5 V des ISP-Brenners ermöglichen. Ein Arduino Uno R3 übernimmt die Funktion eines USB zu RS232 Wandlers und über einen Spannungsteiler können Signale z.B. an die Soundkarte eines PCs geschickt werden. Zu erwähnen ist noch das LCD-Display, das in die Frontseite des Gehäuses eingebaut ist.
170408aa-001a.JPG

Die Schaltpläne:
Die untenstehenden Schaltpläne zeigen die Funktion der Schaltung.
Über die 5V Versorgung des ISP- Brenners wird ein Miniaturrelais  geschaltet. Ein Umschalter dieses Relais schaltet im angezogenen Zustand des Relais die Stromversorgung des ISP-Brenners auf die Sicherung F1. Im abgefallen Zustand des Relais wird der Strom von der 9V Versorgung über einen 7805 auf F1 geschaltet. Ein Öffner des Relais in dem 9V- Kreis verhindert, dass Strom von der Batterie verbraucht wird wenn die Stromversorgung des ISP- Brenners aktiv ist und die 9V- Versorgung versehentlich nicht mit S1 abgeschaltet wurde. Der Elko und der dazu parallel geschaltete  270 Ohm Widerstand reduzieren den Haltestrom des Relais, wobei der Elko für den benötigten Anzugstrom sorgt. Die grüne LED signalisiert generell eine aktive Stromversorgung. Die rote LED brennt zusätzlich zur Grünen wenn die Stromversorgung über den ISP- Brenner erfolgt. Aus dem Arduino Uno R3 muss der ATMega 328P-PU entfernt werden. Es ist daher ein Arduino mit 28-poligen  PDIP- Controller zu verwenden.  Eine RS232 Schnittstelle ist an heutigen Computern nicht mehr vorhanden, deshalb verwenden wir den Arduino als Schnittstellenwandler. Nützlich ist die RS232- Schnittstelle allemal, da fast jeder AVR eine solche besitzt und mit ihrer Hilfe das Debugging beträchtlich erleichtert wird, indem die relevanten Werte über eine Terminalemulation ausgelesen werden.
200220aa-002.jpg
200220aa-003.jpg
Im wesentlichen geht es also darum die Anschlüsse des externen ISP-Brenners an die richtigen Pins der IC- Sockel zu bringen. So braucht man zum Brennen der AVRs nur noch den gewünschten AVR in seinen Sockel zu stecken und schon kann es losgehen. Damit man  danach sogleich den Erfolg seiner Bemühungen kontrollieren kann, ist jeder IC- Sockel mit mehren Steckbuchsen verbunden. Diese werden dann mit Drahtbrücken mit den jeweils benötigten Komponenten, wie Taster, Low- current- LEDs (schon mit den richtigen Vorwiderständen für 5V), Potis, der RS232-Schnittstelle über den Arduino Uno R3 verbunden. Die Taster und LEDs können mit Drahtbrücken gegen Masse geschaltet werden, aber auch andere Anschlussvarianten sind möglich. Ebenso ist eine freie Beschaltung der Potis denkbar.Der IC- Sockel U3 kann wahlweise mit 8-poligen AVRs, wie zum Beispiel dem ATTiny 45 oder den 20-poligen AVRs, wie zum Beispiel dem ATTiny 2313 bestückt werden. Dabei muss der unterschiedliche Masseanschluss berücksichtigt
200321ab-004b.jpg
200321ab-007b.jpg 200319aa-001a.JPG
werden. Die obigen Fotos verdeutlichen das. Der 16-polige IC- Sockel U4 ist völlig frei beschaltbar. Hier kann z.B. ein ATTiny 44 gesteckt werden. Allerdings hat man dann selbst für die richtigen Verbindungen zur Stromversorgung und den ISP-Anschlüssen Sorge zu tragen. Man greift sie einfach von einem anderen IC- Sockel z.B. den darüber-liegenden 20-poligen Sockel U3 ab. Sehr praktisch kann auch ein 8MHz- Quarzgenerator  auf diesem Sockel sein, den man benötigt wenn man z.B. einen „verfusten“ AVR retten will.

Die Platinen-Layouts:
200320-002.jpg
200320aa-001d.jpg
Der Hardwareaufbau erfolgt auf Streifenrasterplatinen. Die Zahlen am Rande der Layouts entsprechen der  Anzahl der Löcher auf der Platine. Die Leiterbahnunterbrechungen habe ich in die Platine 1 NICHT mit eingezeichnet, weil die Zeichnung sonst zu unübersichtlich würde. Sie müssen ungeachtet dessen natürlich trotzdem ausgeführt werden.
Die gesamte Schaltung ist auf zwei Platinen untergebracht. Die IC- Sockel, sowie die zugänglichen Komponenten und Anschlüsse befinden sich auf einer Epoxyd Lochrasterplatine im Europaformat, Die Stromversorgung wird in einem Arduino–200313ab-009a.JPG Shield realisiert. Die Steckerleisten auf der Platine 2 werden auf die Leiterbahnseite aufgelötet. Die Steckerleiste die auf der Arduino- Platine ausserhalb des Rastermaßes liegt wird nicht benutzt. Die Stromversorgung über die 9V- Buchse des Arduino wird NICHT verwendet. Da die Platine 1 die zu steckenden Komponenten aufnimmt und damit stärkeren mechanischen Belastungen ausgesetzt ist, besteht sie aus Epoxydharz. Der Arduino- Shield kann ebenfalls, muss aber nicht, aus Epoxydharz bestehen.  Hier genügt auch Hartpapier. Die obenstehende Zeichnung zeigt Platine 1, die daneben stehende Zeichnung zeigt Platine 2. Dabei bedeuteten rote, orangene und blaue Linien Leiterbahnen und grüne Linien Drahtbrücken auf der Bestückungsseite. Ebenfalls  außerhalb von Platine 2 befindet sich der Batteriehalter B1. Er ist auf der Schmalseite der Gehäusewand eingebaut. Und zwar auf der dem Arduino gegenüber liegende Seite. Das LCD- Display ist auf der Frontseite eingebaut. Mittels Drahlitzen erfolgt eine Verbindung zu Platine 1. 

Das Gehäuse
200313ab-005a.JPG
200313ab-006a.JPG
Das Gehäuse wurde mit einem 3D-Drucker erstellt. Sollten Sie selbst noch keinen 3D- Drucker haben, können Sie auch einen 3D- Drucker in Ihren nächst gelegenen FabLab nutzen. Das von mir verwendete Filament ist PLA.  Die Qualität sollte 0,2 mm betragen, die Fülldichte 30%, eine Stützstruktur ist nicht notwendig. Die STL- Dateien können Sie hier [1] herunterladen. Das Gehäuse enthält Aussparungen für die Batteriehalterung, das LCD- Display, den Anschlüssen für den Arduino, der Buchse für die 9V- Versorgung und dem Audio- Ausgang. In dem Boden befinden sich passende Löcher um das Arduino- Board mit M3-Schrauben anzuschrauben. Die Platine 1 wird mit vier 3mm-Blechschrauben an das Gehäuse angeschraubt. Bitte ziehen Sie die Blechschrauben nur "handwarm" an, sonst reißt der Kunststoff aus.  Zwischen Platine 1 und dem Gehäuse, sowie zwischen dem Arduinoboard und dem Gehäuse setzen Sie bitte 5mm Distanzhülsen aus Kunststoff. Unter dem Boden werden 4 Gummifüße geklebt, damit der Programmer einen sicheren Stand hat. Das LCD-Display wird mit vier 2mm Zylinderkopfschrauben an die Frontwand angeschraubt. Der Arduino  wird mit drei Schrauben M3 auf dem Gehäuseboden befestigt. Ggf. müssen Sie Sie Löcher und Aussparungen etwas nacharbeiten. Ich empfehle den Einsatz von Unterlegscheiben.
Programmiergeraet_2020.jpg

Drahtbrücken:
170414ab-001a_2.JPG Verbindungen auf dem Programmiergerät steckt man mit Drahtbrücken. Links eine Drahtbrücke, wie ich sie für die Masseanschlüsse der LEDs und Taster verwende. Sie sind 1/10 Zoll (2,54mm) breit. Ich biege sie mir aus 0,5 mm Schaltdraht. Rechts eine käufliche Drahtbrücke, die ich für Verbindungen der AVRs mit den Komponenten verwende. Sie sind über Amazon recht preisgünstig zu beziehen. Im unteren Bild sieht man eine Standardbelegung, wie ich sie fast ständig gesteckt lasse, weil ich sie immer wieder benötige 170421aa-004a.jpg
.
Standardbelegung.jpg

Inbetriebnahme:
Schließen Sie Ihren ISP-Brenner und die Stromversorgung noch nicht an. Prüfen Sie bitte zunächst einmal mit einem Ohmmeter alle Verbindungen gegen Masse, ob Sie auch keine Kurzschlüsse in Ihrer Schaltung haben. Wenn ja, müssen diese natürlich erst einmal gefunden und beseitigt werden. Das gleiche gilt natürlich auch für Leitungsunterbrechungen und unerwünschte Kontakte zwischen den Leiterbahnen. Ist bis hier hin alles in Ordnung dann legen Sie eine volle Batterie in das Gerät ein und schalten Sie es ein. Die grüne LED muss jetzt leuchten. Messen Sie die Betriebsspannung. Sie muss etwa 5V betragen. Bauen Sie Ihr Gerät nun endgültig zusammen. Vergessen Sie auch die Distanzrollen nicht. Die kann man übrigens mit etwas Alleskleber fixieren. Ihr Gerät ist nun betriebsbereit. Sie können jetzt einen zu brennenden AVR einsetzten und Ihren ISP-Brenner anschließen. Die rote und die grüne LED leuchten, wenn der ISP-Brenner angeschlossen ist. Leuchtet die grüne LED einmal wider erwarten nicht, so ist das ein Hinweis darauf, dass die Sicherung F1 durchgebrannt ist und (nach Beseitigung der Ursache) ersetzt werden muss.

Und noch etwas...
Es ist zwar eigentlich selbstverständlich, aber ich sage es lieber trotzdem. Obwohl Sie auf der Platine 1 mehrere IC- Sockel haben, können  Sie gleichzeitig immer nur EINEN AVR brennen!
Und noch ein Tip: Sockeln Sie Ihre AVRs ehe Sie sie in das Programmiergerät stecken. Das schont die Beinchen Ihrer AVRs und sorgt für einen sicheren Kontakt.

Download
[1] STL - Dateien

zurueck.gif