ATMEGA88 programmieren für die Lüftersteuerung ohne Programmierkenntnisse


zurück zur Vorseite

corvintaurus_avr_hex_programmieren_banner.jpg
Juni 2018

Dies ist eine Schritt für Schritt - Anleitung für die programmierung des ATMEGA88 Cips, welcher die große Lüftersteuerung mit Tachosignalauswertung antreibt.

Ich möchte darauf Hinweisen, das sich diese Anleitung hauptsächlich um das Programm -AVR Brenner- geht, welches von Jens Gürtler erschaffen wurde. Es dient ausschließlich dazu eine fertige HEX Datei auf einen leeren IC von Atmel zu spielen, entsprechende FUSES einzustellen und noch einige weitere Einstellungen vorzunehmen.
Vielen Dank Jens für deine freundlich kompetente und ausdauernde Hilfe.

Noch ein paar Worte von mir.
Bitte lest euch alles in Ruhe mehrmals durch. Ich setze etwas technischen Sachverstand und logisches Denkvermögen, sowie Kenntnisse im Bereich der Elektrotechnik voraus! Dieses Projekt ist ganz sicher nicht in 5min erledigt. Nehmt euch bitte Zeit bei allem!! Für entstandene Sach. und Personenschäden übernehme ich absolut keine Haftung!!!!!

corvintaurus_avr_hex_programmieren_01.jpg
Als ersten Schritt braucht man als Hintergrundsoftware für das von Jens programmierte Programm die Software Win-AVR. Dazu folgt ihr diesem Link. Er führt euch auf die Seiten von sourceforge. Dort gibt es allerlei Software.
Dort klickt ihr erst einmal auf den gezeigten Link im Bild.


corvintaurus_avr_hex_programmieren_02.jpg
Nun einmal einen Klick hier drauf. Dieser Link führt euch in den WinAVR Ordner.


corvintaurus_avr_hex_programmieren_03.jpg
Nun wählt ihr die letzte Version. Die sollte eigentlich immer oben stehen.


corvintaurus_avr_hex_programmieren_04.jpg
Jetzt habt ihr Zugang zur eigentlichen exe Datei. Wenn ihr hier draufklickt, erscheint eine weitere Seite.


corvintaurus_avr_hex_programmieren_05.jpg
Auf dieser Seite müsst ihr nur kurz warten, bis ein kleines Windows Fenster erscheint, in dem ihr aufgefordert werdet einen Speicherort zu wählen. Klar kann es auch sein, das ihr euren Browser anders konfiguriert habt, und automatisch alles woanders hin gespeichert wird. Das bekommt ihr dann schon raus !
Diese Datei könnt ihr nun ausführen und das Programm installieren. Ich bin mir nicht ganz sicher, aber es kann sein das automatisch Net.Framework mit installiert wird.


corvintaurus_avr_hex_programmieren_06.jpg
Nun geht es daran das Programm von Jens herunterzuladen. Hierzu folgt ihr nun diesen Link. Lest euch alles gut durch und scrollt dann nach ganz unten.


corvintaurus_avr_hex_programmieren_07.jpg
Nun findet ihr die entsprechenden Quelllinks für seine Software AVR-Brenner v0.9. Es gibt die Version a und b. Naja...schwierig. Ich habe die Version d genommen. Darunter findet man auch noch einmal den Querlink zu WinAVR.
Nun könnt ihr auch die Software AVR-Brenner v0.9 installieren. Wenn alles problemlos geklappt hat, dann gehts weiter.


corvintaurus_avr_hex_programmieren_08.jpg
Zum einspielen der fertigen HEX Datei, die sich im übrigen hier ganz unten zu finden.
Es handelt sich um den Pony Prog Programmer von Claudio Lanconelli, nachgebaut von Jens Gürtler. Auch wenn mein Programmer nur auf einer Lochrasterplatine, mit viel zu großen Z-Dioden und einer eigenen 5V Spannungsversorgung aufgebaut wurde, funktioniert er tadellos. Es badarf meiner Meinung nach keiner Nachbesserung. Das kann aber jeder selbst bauen wie er möchte. Auch habe ich die Möglichkeit die ganze Schaltung über eine externe Spannungsversorgung zu betreiben, denn ein 7805 ist auf der Lochrasterplatine inkludiert. Der 9 V Block liegt mit einer Diode in Sperrrichtung an den Bananenbuchsen. So kann alles ohne umstecken mit dem 9V Block oder extern Versorgt werden, ohne den 9V Block entfernen zu müssen.

Hier kann mein PonyProg Nachbau nochmals beäugt werden.


Punkt 1

zeigt die Serielle Schnittstelle, mit der ich den PC an den PonyProg Programmer anschließe.

Punkt 2

zeigt die Platine des Programmers, welche auf einen DIP8 Sockel und einer kleinen Stiftleiste die wichtigen Signale ausgibt. So bleibe ich flexibel.

Punkt 3

zeigt die Adern, welche MOSI, MISO, GND, 5V, SCK und Reset beinhalten. Diese kommen quasi von meinem PonyProg Programmer.

Punkt 4

zeigt die kleine Platine, welche ich günstigst bei Ebay erworben habe. Sie hat einen tollen Null Kraft Sockel und Stiftleisten für alle Anschlüsse des ATMEGA88. So könnte man auch ein Experimentierboard direkt an den ATMEGA88 anschließen.


corvintaurus_avr_hex_programmieren_09.jpg
Hier sieht man den Programmieradapter von Ebay. Er ist günstig und für den Preis absolut hervorragend verarbeitet. Die USB Schnittstelle ist auschließlich für eine Möglichkeit gedacht, um das Teil und damit auch den Chip mit den nötigen 5Volt zu versorgen. Wie ihr die 5Volt da rein bekommt kann jeder selbst basteln.
Mir ging es um den Nullkraft Sockel und die Möglichkeit die Ausgänge auch direkt auf ein Experimentierboard zu bringen. Einfach folgendes in die Ebay-Suche eingeben.
ATmega8 ATmega48 Development Board AVR Development Board 8M DIY Kit Without Chip


corvintaurus_avr_hex_programmieren_10.jpg
Die 9 Polige Serielle RS232 Schnittstelle ist mitlerweile eine selten gewordene Schnittstelle an PCs. Leider funktioniert der PonyProg Adapter NUR mit einer echten RS232 Schnittstelle. Ein USB zu RS232 Adapter funktioniert nicht. Ihr bekommt zwar ne Verbindung zu dem ATMEGA, aber er lässt sich nicht programmieren. Möglicherweise müsste man sich eine entsprechende Schnittstellenkarte für den PC kaufen, oder einen anderen von Jens angeboteten Adapter bauen. KLICK.


corvintaurus_avr_hex_programmieren_11.jpg
Nachdem ihr nun den PonyProg Programmer an die RS232 Schnittstelle angeschlossen habt und das Programm gestartet habt, erfolgt folgende Meldung. Das Programm ist nun Startbereit.


corvintaurus_avr_hex_programmieren_12.jpg
Klickt ihr nun auf AVR Verbindungstest, sucht er einen entsprechenden Chip. Wenn ihr alles richtig eingestellt habt, sollte er den Chip auch finden. Nun gibt euch das Programm die Option den gefundenen Chip automatisch einzustellen. Wählt hier nun JA.
Die COM Port Verteilung findet ihr in eurer Hardwareumgebung eures PCs. Wie das geht, steht weiter unten, wenn es um die Erklärung des Terminal-Programms geht.


corvintaurus_avr_hex_programmieren_13.jpg
Ich habe hier mal einen für den ARDUINO gedachten 328P ATMEGA als Beispiel genommen. Den 88A würde genauso finden und entsprechend anzeigen.


corvintaurus_avr_hex_programmieren_14.jpg
So. Nun geht es darum die HEX Datei in den AVR zu brennen. Zu finden ist die HEX Datei, wenn ihr die 7,3MB große 7zip Datei herunderladet, die ich euch anbiete. Wenn ihr nun aufmerksam das Bild betrachtet, werdet ihr einen Dateipfad sehen, der im hinteren Teil auch bei euch vorhanden ist. Dieser zeigt den Weg zu der HEX Datei.
Die HEX Datei wird also geladen --alle 7zip Daten müssen vorher entpackt werden!!!!--. Zum laden öffnet sich der entsprechende Windows-Dialog.


corvintaurus_avr_hex_programmieren_15.jpg
Wenn ihr diese geladen habt, könnt ihr sie auch sogleich übertragen. Nun wird rechts alles Gelb und die Datei wird in den ATMEGA88 gebrannt. Der aktuelle Fortschritt wird angezeigt. Das ganze dauert nur wenige Sekunden.


corvintaurus_avr_hex_programmieren_16.jpg
Wenn alles geklappt hat, zeigt ech das Programm dieses auch eindeutig an.


corvintaurus_avr_hex_programmieren_17.jpg
Nun geht es daran die entsprechenden FUSE-Bits zu setzen. Dazu wählt ihr im Programm AVR-Brenner in der obigen Reihe die FUSE-Bits aus. Nun öffnet sich ein neues Fenster in dem ihr besonders viel falsch machen könnt. Daher immer eines nach dem anderen !!!
Klickt nun in dem neuen Fenster, etwas weiter unten auf Sicherungskopie laden. Es öffnet sich ein neues Dialogfenster von Windows, in dem IHR den Dateipfad wählt. Dieser sollte zwei Ordner höher als die HEX Datei liegen.


corvintaurus_avr_hex_programmieren_18.jpg
Wenn ihr die Datei geladen habt, steht im hellgelben Fenster was ihr geladen habt. Nun setzt ihr zwei Haken auf HIGH und LOW Bites setzen. Nun klickt auf Fuse-Bits setzen. Nun werden auch diese übertragen. Es ist ganz besonders darauf hinzuweisen, das nach dem setzen der FUSES der ATMEGA ausschließlich mit einem externen Quarz zu einer Funktion überredet werden kann. Sollte das "China-Board" keinen Quarz besitzen, ist genau nach dem setzen kein erneutes Brennen mehr möglich.... BIS ein externer Quarz mit angeschlossen wird.
Damit ist der ATMEGA88 fertig zum Einbau in die fertige Schaltung. Nur mal so nebenbei... der ATMEGA 48 für die LED-Ansteuerung wird exakt nach dem selben Schritten programmiert !


corvintaurus_avr_hex_programmieren_19.jpg
Wenn ihr die Steuerung mit ihren angeschlossenen Lüftern und der LED-Platine in Betrieb nehmt, sollten alle Lüfter auf 100 Prozent laufen. Es kann auch der erste Alarm aufkommen. Alles kein grund für erste Schrecksekunden. Es läuft alles nach Plan ! Nun geht es an die Konfiguration.
INFO: 2 x PWM Kanäle können von 0 - 100 Prozent geregelt werden. Es stehen insgesammt 7 Eingänge zur Verfügung. Jedem der zwei PWM Kanäle sind 3 LüfterÜberwachungseingänge zugeordnet. der 7te Kanal ist für den Strömungswächter gedacht, KANN aber auch für einen 7ten Lüfter genutzt werden. Nur ist dieser dann NICHT Spannungsgesteuert!!!!!!


Da auch ihr einen kleinen USB zu RS232 Adapter verwenden werdet um die ganze Steuerung zu konfigurieren und auch auslesen zu können, ist das folgende Konfigurieren ganz einfach. Bitte verwechselt das jetzt NICHT damit, den ATMEGA88 zu brennen. Auf diesem Weg könnt ihr die HEX Datei nicht auf den ATMEGA88 bringen. DAZU steht direkt neben dem CHIP eine ISP Schnitstelle zur Verfügung. Ihr könnt den ATMEGA88 also AUCH in der Schaltung brennen!! Dann müsst ihr halt anstelle des China-Nullkraftsockel-Adapters einfach die Lüftersteuerung anschließen. Schaut in den Schaltplan wie die Pins vergeben sind.
Vorteil wäre hier, das ihr bei laufender und angeschlossener Schaltung keine Versorgungsspannung von 5 Volt benötigt. Allerdings könnten Lötfehler dazu führen, das ihr den ATMEGA88 nicht innerhalb der Schaltung brennen könnt und ihr den Fehler ggf. beim ATMEGA sucht.
Daher habe ich das externe brennen bevorzugt, da man so eventuelle Fehlerteufel ausschließen kann. Das ihr die fertig geätzte Platine vor dem Löten auf Kurzschlüsse prüfen solltet, brauche ich ja nicht betonen.

corvintaurus_avr_hex_programmieren_20.jpg
Wie konfigurieren wir nun das ganze Teil??? Gute Frage! Klickt erst einmal auf diesen Link. Er bringt euch auf die Seite des Open-Control-Projekts.
Auf dieser sehr umfangreichen Internetpräsenz werden wir uns ein von Jens Gürtler erdachtes Programm herunterladen. Es ist ein schlankes Terminal Programm, mit der man universell die RS232 Schnittstelle bedienen kann. Alles in allem muss ich vor Jens meinen Hut ziehen!


corvintaurus_avr_hex_programmieren_21.jpg
Nun einmal nach unten scrollen und den Butten Downloads finden und klicken.


corvintaurus_avr_hex_programmieren_22.jpg
Jetzt scrollt ihr auch einmal soweit, bis ihr die folgende Datei findet, die ich mit dem roten Pfeil markiert habe. Geht nun mit dem Maus Curser auf die Datei, macht einen Rechtsklick mit der Maus und öffnet damit das Kontextmenü. Darin wählt ihr Ziel speichern aus. Warum so umständlich?? ich habe festgestellt, das der Ping beim direkten anwählen der Datei recht groß ist und man durchaus versucht sein könnte wild umher zu klicken, obwohl die Datei noch abgerufen wird.
Daher dieser direkte Weg. Bis sich das Dialogfenster zum Speicherort wählen aufpoppt, kann enige Sekunden dauern. Die Datei ist nur wenige hundert Kilobyte groß.


corvintaurus_avr_hex_programmieren_23.jpg
Nun sucht ihr den Dateipfad auf, entpackt das inne liegende Programm auf den Desktop. Es ist keine direkte Installationsdatei, die nur zum Installieren benötigt wird. Diese exe Datei kann direkt auf den Desktop wandern. Einfach anklicken und rüberziehen.
Da die ganze Lüftersteuerung ja über einen USB zu RS232 Adapter angeschlossen wird ( ihr könnt NARTÜRLICH auch direkt an eure richtige RS232 Schnittstelle gehen!!! ), muss im vorfeld ersteinmal geklärt werden wie man die COM Schnittstellen erkennen kann und wie man sieht, wo denn nun der USB zu RS232 Adapter angeschlossen ist. Wem diese Schritte nicht bekannt sind, dem biete ich hier einen kurzen Exkurs in Windows.


corvintaurus_avr_hex_programmieren_24.jpg
Ihr geht auf Start und anschließend auf eure Systemsteuerung.


corvintaurus_avr_hex_programmieren_25.jpg
Dort angekommen sucht ihr den punkt Hardware und Sound. Windows7 hat alles so wunderbar zusammengefasst, das man schon fast erbrechen könnte. Man...was vermisse ich doch Windows XP. Da war alles noch suppi.


corvintaurus_avr_hex_programmieren_26.jpg
Nun suchet und findet den Geräte-Manager. So klicket ihn...


corvintaurus_avr_hex_programmieren_27.jpg
Nun solltet ihr in dem richtigen Reiter auch alle COM Ascnhlüsse finden. Jeh nachdem was ihr an eurem PC zu hängen habt, kann das durchaus anders aussehen. Wichtig ist nur das eben die COM Schnittstelle auftaucht.


corvintaurus_avr_hex_programmieren_28.jpg
Nicht ganz unwichtig ist auch der Richtige treiber für den China-USB zu RS232 Adapter. Wenn ihr auf den IC schaut, welcher auf dem Adapter verlötet wurde, findet ihr eine Bezeichnung. Wenn ihr diese bei Google eingebt, leitet euch das recht unkomliziert auf die richtigen Seiten. Möglicherweise passt der USB Treiber auch, den ich beigelegt habe.


corvintaurus_avr_hex_programmieren_29.jpg
Nun öffnet ihr das Terminal-Programm und stellt folgenderichtig den COM-Port ein, an dem ihr nun mit der Steuerung hängt.


corvintaurus_avr_hex_programmieren_30.jpg
Die Baudrate stellt ihr auf 38400 ein.


corvintaurus_avr_hex_programmieren_31.jpg
Wenn ihr nun auf Verbinden drückt, müssten erste Werte eintrudeln. Auf diesem Bild ist von mir schon alles parametriert worden. Bei euch tauchen andere Werte auf.
In der ersten Zeile werden nur mehere 1270 stehen, mit Komma getrennt. Das könnt ihr ändern. Hier geht es um den Temperaturwert, der euch dreistellig angezeigt wird. Um das dieses bei euch geht, müsst ihr wie im nächsten Bild den Befehl Suche-I2C eingeben. Nun wird euch die entsprechende Adresse des I2C Busses angezeigt.
Mit dem nächsten Befehl lest ihr die Adresse des angeschlossenen DS18B20 Temperatursensors aus...vorausgesetzt ihr habt einen angeschlossen. Die nun angezeigten Zahlen werden mit dem dritten Befehl zusammen eingegeben. Wie folgt: Save-Tempsensor1 40,64...u.s.w Nach dem Save_Tempsensor kommt ein Leerzeichen!
Somit habt ihr den angeschlossenen Temperatursensor erfolgreich eingebunden. Im nächsten Bild geht es weiter.


corvintaurus_avr_hex_programmieren_33.jpg
Hier ist einmal die Syntax zu sehen.


corvintaurus_avr_hex_programmieren_32.jpg
Nun geht es weiter, wie folgt.

Punkt 1:

Anpassen der Lüfterdrehzahlen an die benötgte Kühlleistung des PCs mit Save-PWM1 und Save-PWM2. Hiermit kann man mit Werten zwischen 0 ( Stillstand ) und 255 ( Maximum ) die Lüfterdrehzahlen der beiden Kanäle einstellen. Wie oben schon geschrieben... zwei Kanäle mit jeweils Platz für 3 Lüfter. Also werden immer 3 Lüfter gemeinsam eingestellt und das insgesammt zweimal. Nachdem das getan wurde und der PC ausreichend gekühlt wird, sieht man im Terminal nun die entsprechenden Impule der Lüfter ( 2 Impulse pro Umdrehung ).

Punkt 2:

Da nun die Sollwerte der Drehzahlen bekannt sind, kann man Kanal für Kanal abklappern und mit dem Befehl Save-MIN1 bis 7 die Alarmschwellen setzen. Bei 50 Impulsen, würde ich eine Schwelle von 45 wählen, sofern die 50 im Normalbetrieb +-2 stabil sind. Bei unterschreiten der 45 Impulse löst das einen Voralarm aus. Nach X Sekunden dann einen Hauptalarm.

Punkt 3:

Mit dem Befehl Save-Hauptalarm 45, wähl man die Zeitspanne, die es braucht bis vom Voralarm in den Hauptalarm geschwenkt wird, VORAUSGESETZT der Fehler steht weiterhin an.

Die restlichen Befehle sollten selbsterklärend sein, wie ich finde. Am besten man probiert alles mögliche einfach aus und schaut ob es für einen selbst passt.





Ganz wichtig an dieser Stelle ist zu erwähnen, das auftretende Probleme sehr gerne kommuniziert werden können. Über mein Kontaktformular ist es immer möglich mich zu erreichen.
Ich wünsche viel Spaß bei der Steuerung !

zurück zur Vorseite


Valid XHTML 1.0 Strict