Arduino Mega 2560, AMS1117, ATMega CPU. Teil 2 – Firmware

Nachdem nun mechanisch alles in Ordnung gebracht wurde, kommt der zweite kniffelige Teil.

Mein Arduino Mega war noch über Seriell ansprechbar, daher wird hier nur die CPU selbst beschrieben, nicht der USB-Seriell-Wandler (Atmega18U2, CHG340 oder was eben so auf dem Board ist)

Es wird benötigt: Ein Programmer für Atmel 8-bit CPUs.
Software, Arduino IDE.

Ich habe folgende Tools:
UsbASP (fischl.de) als Programmer
AVR8-Burn-o-Mat als Frontend
Arduino-IDE 1.06 „classic“
Google 🙂

Neben der CPU sieht man einen ICSP-Anschluss aus einer 3×2 Pfostensteckerleiste. Das ist standartisiert, wer dazu noch keinen Adapter hat kann sich das googeln.

Die CPU ist nun noch komplett nackig, es fehlt der Arduino Bootloader und die passende Konfiguration in den Fuses-Registern.

Also ran an den ISCP-Anschluss, auf Pin1 aufpassen und UsbASP anschließen.
AVR8-Burn-o-Mat starten (Unter Linux: als Root, sonst hat das Programm keinen zugriff auf /usr/bin/avrdude, ggf. config anpassen um den korrekten Pfad zu ARVDUDE einzutragen. AVRDude wird dann auch als Root ausgeführt was wichtig ist für den Zugriff auf die USB-Hardware).

Zunächst müssen die FUSES gesetzt werden. Der Prozessor ist noch langsam und es ist zu empfehlen den Jumper für langsame Prozessoren am UsbASP zu stecken.
Google liefert dazu diesen Treffer:
http://www.codingwithcody.com/2011/04/arduino-default-fuse-settings/

Arduino Mega 2560
Low Fuse 0xFF
High Fuse 0xD8
Extended Fuse 0xFD

im AVR8-burn-o-Mat wählt man also den AVR-Type ATmega2560 aus, daneben ist der Button „Fuses“.
Der öffnet ein Dialogfeld mit vielen optionen.
Da wir schon wissen welche Hexwerte gebraucht werden wird der Reiter „Fuse HEX Editor“ gewählt und die 3 Werte eingetragen.

Apply anklicken, dann oben „write Fuses“.
Die Ausgabe von AVRDUDE im Programmfenster beobachten, ob es geklappt hat.

Nun alles einmal abstecken und wieder anstecken, damit der Prozessor neu startet, am UsbASP den Jumper 2 wieder entfernen, sonst dauert das schreiben des Bootloaders sehr lange.

Jetzt kann das AVR8DUDE wieder zugemacht werden.
Wir brauchen nun die Arduino-IDE. (unter Linux wieder als Root)

In der Arduino IDE nun im Menü Tools wieder das Board „Arduino Mega2560“ auswählen. Dann den Programmer UsbASP auswählen, und im Menü Tools „Bootloader installieren“ starten.
(Ausgabe in der Statusleiste beobachten)

Nun ist der Arduino Mega wieder einsatzbereit und kann ganz normal über die IDE per „upload“ programmiert werden.

Arduino Mega 2560, AMS1117 Spannungsregler und CPU Teil 1

Nun wieder mal was neues..
Ich hatte mich HIER ja bereits zu dem ganzen Ärgernis ausgekotzt.

Nun habe ich zwei tote Arduino Mega hier liegen, und gestern kamen aus China neue CPUs. Die kosteten etwa 4,70 E pro Stück, während die hier für 11,50 feilgeboten werden. Für 7,40 E gibts aus China einen komplett neuen Arduino Mega.

Aber es geht ja ums Prinzip, wegwerfen kann ja jeder.

In beiden Fällen ist bei meinen Arduinos die CPU zum Teil gestorben, der ADC ist kaputt, die CPUs verbraten viel mehr Strom als sie dürfen und erhitzen sich entsprechend.

Ursache ist in beiden Fällen die Stromversorgung gewesen. Beim Teilnehmer 1 habe ich die Beleuchtung des angeschlossenen Displays stark flackern sehen als der Atmega kaputt ging. Der Spannungsregler fing an zu schwingen.
Daraufhin habe ich am Ersatzboard noch einen zusätzlichen Kondensator (0805-SMD) direkt an die Beinchen des Spannungsreglers gelötet. Außerdem wurde auf die Platinenunterseite direkt auf die Durchkontaktierungen ein kleiner Kühlkörper geklebt. Die Eingangsspannung wurde schon im Sommer von 12 auf 10,5V gesenkt um die Verlustleistung zu begrenzen. Im prinzig ging es dem Regler also gar nicht so schlecht.

Der zweite Teilnehmer hat nur ein paar Tage durchgehalten, da hatte der Spannungsregler dann gleich komplett auf Durchzug geschaltet und die 10,5V auf die 5V-Elektronik gebrückt. Das hielt auch gar nicht lange an, denn nach kurzer Zeit sprengte sich der vorgeschaltete Schaltregler mit einem lauten Knall in die Luft.

Wegen der hohen Spannung hatte diesmal nicht nur der Atmel-CPU einen Schaden, sondern sind auch 4 Motortreiber kaputt. Leider waren da auch teure Silent Steptick dabei. Also 40-50 Euro Schaden und der Aufwand das ganze Elend wieder instand zu setzen.

Also gestern den ersten kaputten Arduino mega zur Brust genommen.
Als kleine Schwierigkeit ist noch zu erwähnen, das der Chip 100 Anschlüsse hat, die sehr eng zusammen liegen.

Hinweis: Bitte denkt an statische Aufladung beim Hantieren mit den CPUs. Wenn ihr keine geeignete Arbeitsumgebung (ausreichend hohe Luftfeuchte, Baumwollklamotten, unlackierter Holztisch, keine Plastestühle) habt, dann Anstistatikmatte, Armband und so nicht vergessen)

Nun zur Instandsetzung: Wie bekommt man das Ding überhaupt herunter, ohne die Leiterplatte zu beschädigen.
Es gibt zwei praktikable Methoden:
Methode 1: Vorwärmen und dann mit Heißluft alle Löstellen auf einmal flüssig machen. Dazu braucht man eine spezielle Düse oder gleich die ganze Reworkstation, ich habe beides nicht.
Dann bräuchte man eine Siebdruckmaske um Lötpaste aufzubringen und könnte es mit Heißluft wieder verlöten.
Deshalb habe ich die archaische Methode 2 angewandt:
Abflexen von 3 Pinreihen direkt am Chip mit dem Stabschleifer (Dremel ect) mit mini-Trennscheibe. Aufpassen das man nicht bis auf die Platine kommt.
Die vierte Reihe kann man dann mit viel Zinn benetzen und über die ganze Breite auf einmal ablöten. Mit Entlötlitze die ganzen Reste entfernen.

Dann muss der neue drauf. Eine Ecke ist etwas mehr schräg „abgeflacht“ als die anderen 3, das dient als Orientierung für die richtige Montagerichtung.

Ein kleines Pad verzinnen, den Chip auflegen und positionieren und ein Beinchen anlöten. Kontrollieren ob alles fluchtet. Dann ringsherum reichlich Flussmittel auf die Beinchen auftragen und mit Lötzinn alles anlöten. Es werden sich bei unter 0,5mm Abstand eine Menge Lötzinnbrücken
bilden, was sich nicht vermeiden lässt.

Nun mit Entlötlitze alles überflüssige Zinn entfernen. Dann alles mit dem Mikroskop kontrollieren. Mit bloßem Auge kann man das gar nicht sehen ob alles passt. Ich habe zum Beispiel dieses olle Beinchen nicht gesehen, weil je nach Licht/Blickrichtung es nicht geglänzt hatte.
Die kleinen Strukturen sind leider schon recht nah an der optischen Auflösung unserer Augen. Gesehen habe ich nur den Versatz der Beinchen auf einer Seite.

Mit dem Auge sieht man etwa das hier:

Mit dem Mikroskop dann schon eher das hier:

Da hing wohl ein abgetrenntes Beinchen noch in der Entlötlitze, und hat sich zurück auf die Platine gemogelt.

Fehler dann entsprechend nochmal nacharbeiten, wenn nötig direkt unter dem Mikroskop.

Nun mal vorsichtig mit dem Labornetzteil mit Strombegrenzung bei 50mA das Teil an den Strom bringen. Geht das Netzteil in Strombegrenzung ist noch was faul.

Hochwertige Kontakte wiederverwenden.

An einem Wagen habe ich eine Sitzheizung nachgerüstet. Damit das auch schön aussieht, gab es die originalen Schalter für das Armaturenbrett vom Schrott.

Leider hat der Schrotti entgegen der üblichen Verhaltensweise wenn man die Stecker nicht braucht, nämlich beim zerlegen einfach den Kabelbaum durchzuschneiden und die Stecker am Bauteil stecken zu lassen, diesmal wirklich nur die nackten Schalter geschickt.

Das Problem hatte ich dann erstmal so gelöst:

Das Teil oben am Bildrand war an der Klebenaht befestigt und sollte die Kontakte auf die Kupferbahnen drücken. Dazu wurde oben und unten Moosgummi aufgeklebt.

Das hat auch zwei Jahre lang relativ gut funktioniert, bis auf der Beifahrerseite zunächst die Schalterbeleuchtung immer wieder ausging, und später dann auch die Sitzheizung kalt blieb.

Das kann so nicht bleiben, nur wie macht mans besser (außer die teuren Originalstecker kaufen).
Ich habe da vor Wochen einmal einen alten HF-Verteiler der hochwertigeren Sorte von der Arbeit mitgebracht (die dort zentnerweise verschrottet wurden) und hineingesehen, und dabei die schönen vergoldeten Phosphorbronzekontakte gesehen.
Die würden sich doch gut bei meinem Steckerproblemchen anbieten.

Also auf zum Kontakte-ernten.

Es braucht natürlich einen Adapter bzw. Steckergehäuse damit die Kontakte auch dahin gelangen wo sie hin sollen, und vor allem dort bleiben.
Eine Aufgabe für den 3D-Drucker 🙂


Es sind zwei Teile geworden. Wer noch nicht erkannt hat, wozu das zweite Teil ist, sieht es im nächsten Bild.

Das Teil passt so genau, das es durch Passung im Schalter hält.
Das andere kann dann passend hineingesteckt werden. Durch die asymetrische Anordnung der Kontakte im Loch kann der Stecker auch nicht verkehrtherum eingesteckt werden.

Das wird also so eingebaut, nachdem über den Lötanschlüssen noch eine Isolierung aufgeklebt ist.

Feineinstellbarer Z-Endschalter am Prusa I3, Extruderwechsel

Ich habe zwangsweise an meinem Prusa I3 Drucker einiges umgebaut, weil das Material aus dem ich die gedruckten teile für diesen Drucker hergestellt habe, leider nicht viel getaugt hat. Es bekommt Wochen bis Monate nach der Fertigung von innen heraus Risse und zerbricht dann irgendwann.

Nun sind sehr viele Teile kaputt gegangen und eine größere Wartung ist notwendig geworden.
Das ist eine gute Gelegenheit gleich noch ein paar Schwächen zu beseitigen.

Ich habe ja Vorbereitungen zum einfachen Austausch der Druckköpfe getroffen, und dann auch einen weiteren zusammengebaut für 3mm Filamente.
Das wechseln hat aber gezeigt, das es beinahe unmöglich ist, die Schrauben auf der Rückseite der Druckkopfhalterung fest oder loszuschrauben, ohne den ganzen Drucker hervorzuziehen und umzudrehen.

Deshalb habe ich mir dafür Rädelschrauben angefertigt.

Ein weiteres Problem ist die unterschiedliche Länge von der Druckdüse zur Befestigung. Dadurch ändert sich die Nullposition der Z-Achse natürlich jedes mal. Deshalb habe ich nun eine Verstellung mit Schwalbenschwanzführung eingebaut.

Nun ist das Druckkopf Auswechseln auf der mechanischen Seite nicht mehr ganz so kompliziert.

Nur das Einfädeln des Filamentfadens beim „Gregs Wade reloaded“ Antrieb ärgert mich immer mal wieder ein wenig, besonders wenn die Materialspule bald leer ist, und der Filamentfaden deshalb sehr krumm von der Rolle kommt.

Außerdem habe ich auf der Z-Achse auf Bronzegleitlagerbuchsen gewechselt.

Dual Extruder und gesteuerte Lüfter am Ramps 1.4 mit Repetier Firmware (2)

Nun kommt der zweite Teil: Woher weiß denn die Druckerelektronik von der Erweiterung?

Nun, das muss in die Firmware hineinkompiliert werden.
Das klingt schlimmer als es ist.
Da ich die Repetier-Firmware verwende, muss man also die Repetier-Firmware herunterladen.
Dabei durchläuft man auf der Internetseite das onlinetool zum erzeugen der Konfiguration, die man sich hinterher fertig herunterladen kann.

Es muss nur jeweils für die nun neu hinzugekommenen Funktionen (die in der Firmware bereits enhalten, aber deaktiviert waren) der benutzte Anschluß festgelegt werden.

Die Anschlüsse sind alle Nummeriert, und der Schaltplan vom Ramps 1.4 zeigt die Zuordnung der Anschlüsse zu den Arduino- bzw. Atmega-Prozessorpins. Es gibt dazu eine einheitliche Nummerierung auf arduino.cc
https://www.arduino.cc/en/Hacking/PinMapping2560
Die Nummern in der Spalte „Digital Pins“ entsprechen den Dxx Nummern im Repetier-Firmware Onlinekonfigurator.
Den Schaltplan findet man im Reprap Wiki:
http://reprap.org/wiki/RAMPS_1.4

Wie man an den Skizzen im ersten Beitrag sehen konnte, habe ich mir den Anschluß AUX2 ausgesucht. Hier kommt noch eine Besonderheit: Der Anschluß hat zusätzlich noch „Axx“ Anschlüsse. Die gehen auf Pins am Atmega-Prozessor die auch als Analog-Eingang verwendet werden können. Ich habe mich an die D-Anschlüsse gehalten.
Will man die A-Anschlüsse auch verwenden, braucht man deren D-Nummern. Das die doppelt benamt sind war mir erst nicht klar, ich habe dann später aber festgestellt das der Anschlußplan von Ramps die erforderlichen zusätzlichen Nummern enthält.

Für die hier benutzen Erweiterungen sind keine weiteren Änderungen an der Firmware notwendig. Wer sich unsicher ist kann später in der pins.h bei der Hardware Nummer 33 nachsehen.

Wenn man nun die Firmware und die config.h heruntergeladen hat, braucht man die Arduino Classic IDE. Sie trägt die Versionsnummer 1.0.6
Das lädt man sich ebenfalls herunter und installiert es.
Dann wird die Firmware in einen Ordner entpackt, die config.h hineinkopiert und per doppelklick auf die repetier.ino Datei die IDE aufgerufen.

Nun Rechts oben im Menü den richtigen Arduino aussuchen, also den Arduino Mega 2560, und die richtige virtuelle serielle Schnittstelle.
Dann kann mit dem Button Upload (ganz links zu finden) die neue firmware automatisch kopiliert und in den Drucker geladen werden.
Danach stehen die gewünschten Funktionen zur Verfügung, wenn man alles richtig gemacht hat.
pins.h in arduino -> hardware „== 33“ – keine änderung nötig
features in firmware aktivieren.

Wasserkocherdeckelzuhaltung (mal wieder)

Wieder einmal ein Wasserkocher mit kaputtem Deckel.
Diesmal mein eigener.

Ein „Riegel“ der Deckelzuhaltung lässt sich nicht mehr zurückziehen, weshalb der Deckel schlecht auf und zu geht.
Das kleine Riegelchen ist an der Stelle gebrochen, an der die höchste Belastung auftritt. Eine etwas lawede Konstruktion.

Ich hatte diese Stelle vor etwa 6 Wochen schon einmal zusammengeklebt, es hat aber nicht lange gehalten.

Das ist unschön. Leider sind die Teile auch nicht geschraubt, sondern mit diesen breitgeschmolzenen Nasen festgehalten. Das ist nicht nett.

Doch da lässt sich was machen: Das kaputte Teil geht natürlich an der Schadstelle leicht herauszubiegen.

Ich habe ein passendes Neuteil angefertigt, welches an dieser Stelle verstärkt ist. Es lässt sich unter die orginale Halterung mit einfädeln.

Nun funktioniert es wieder.

Vielen Dank an dieser Stelle an Heaterman auf dem FEW-Forum, der mir eine Probe HT-PLA mit Lebensmittelzulassung (wenn auch nur FDA) überlassen hatte. Die kam hier zum Einsatz.