Kann man die Arduino Software auch für ähnliche Mainboards verwenden?
Ich habe einen 3D Drucker mit einem Atmel Mainboard. Die Firmware kann ich flashen und ihre Version ändern, das habe ich schon öfters getan.
Der Arduino Mega 2560 kann man dann als 3D Drucker Mainboard verwenden und die Firmware selbst, ziemlich unkompliziert programmieren.
Meine Frage ist, ob ich bei meinem Mainboard mit Atmel Prozessor, das ja eigentlich äquivalent wie der Arduino Mega ist, Auf diese Art die Achsen steuern kann, sowie alle nötigen Sensoren, sowie die Nozzle ansteuern kann.
Die Schnittstellen sind auf dem Mainboard gekennzeichnet und theoretisch sollte ich ja diese alle ansteuern können, oder? Wenn dies der Fall wäre, könnte ich ja mithilfe des Arduinos eine eigene Firmware auf den Drucker laden (natürlich selbst programmiert. Ich kenne mich bereits aus mit dem Programmieren von Arduinos.) Meine Drucker Firmware hat gewisse Hürden, die mich zwingen das Hauseigene Filament zu verwenden. Da die Anschlüsse auf dem Printer nicht alles Standartanschlüsse sind, möchte ich bestenfalls das Originale Mainboard behalten.
Ich habe es selbst noch nicht ausprobiert, da ich unsicher war. Kann mir jemand bestätigen, dass dies möglich ist? Und muss ich noch etwas bestimmtes beachten?
LG Lubi
4 Antworten
Du kannst grundsätzlich die selbe IDE nehmen du musst aber drauf achten, dass du die richtigen Devicefiles ladest.
Atmel Prozessor ist eben nicht gleich Atmelprozessor. Ein Atxmega hat einen anderen Befehlssatz wie der Atmega oder der ATSam und auch unter den Atmega gibts Unterschiede wie Memorylayout ISR Jumptable etc. du brauchst also die für diesen Prozessor entsprechenden Linkerfiles und den Initialisierungscode. Wie du die bei der Arduino IDE einbindest weiß ich nicht aber in Atmelstudio kannst du ein Projekt für diesen uC erstellen und das erstellt die Linkerfiles automatisch.
Du musst zudem hoffen dass der Atmega nicht gesperrt ist. Meines wissens gibts bestimte Fuses die ein reflashen oder auslesen der Firmware aus den Controllern verhindern und die man nicht mehr Rücksetzen kann. Also du kannst nur versuchen ob du ihn Programmieren kannst.
Zum Programmieren musst du entweder den ISP nehmen oder bei uC in diesem Package kann auch JTAG notwendig sein, je nachdem ob der ISP bei diesem Atmel möglich ist und aktiviert ist oder nicht. Musst du im Datenblatt nachsehen und schaun ob die ein ISP Interface haben und dann die entsprechenden Leitungen anzapfen.
Die Programmierung mittels UART wie sie bei den Arduinos üblich ist geht hier aber sicher nicht weil auf den uC mit sicherheit kein Arduino Bootloader oben ist, du musst also JTAG oder ISP verwenden.
Edit ja es ist ein Atsam damit hat er einen Arm Core da brauchst du einen Arm Compiler. Wie vorher erwähnt kannst du aber für diesen uC zumindest mit Atmelstudio programme erstellen. Eventuell kannst du die Arduinolibs ja in das Atmelstudio importieren und dann dort so ähnlich wie für Arduino Programmieren. Die Libraries müssen natürlich auch für diesen Prozessor gebuildet worden sein. Also die Atmega Arduino Libraries kannst du nicht verwenden.
Ich würde ja ein anderes Mainboard nehmen, aber keins hat diesen Flachband Anschluss.. was kann ich da machen?
Im Endeffekt kannst du selbst ein Board mit so einem Anschluss machen, aber da bräuchtest du die Pinbelegung und einen Reflowofen sonst kannst du das nicht gut löten.
Naja das neu Flashen von dem Kern und auch das Programmieren dafür ist idr nicht all zu kompliziert. Du musst dich hald mit der Hardware auseinandersetzen. Kann durchaus sein dass es für diesen Atsam auch eine Integration in die Arduino IDE gibt ich verwende die selbst eigentlich nicht von da her kann ich hierzu nicht all zu viel sagen.
Btw damit du sicher sagen kannst wie diese Anschlüsse am Prozessor hängen bräuchtest du ein Boardlayout. Die sind mit hoher Wahrscheinlichkeit nicht alle 1zu1 auf den Atsam geführt.
ich habe herausgefunden, dass mein 32 bit ARM prozessor von marlin unterstützt wird... theoretisch sollte es funktionieren...
Marlin kenne ich nicht.
Aber wie gesagt Programmieren musst du per ISP oder Jtag (Aufgrund des Armcores würde ich auf JTAG tippen) sprich der Standard Arduino Programmiervorgang geht mit hoher Wahrscheinlichkeit nicht.
Zudem musst du deine Software so anpassen dass sie auch mit der Elektronik am Board kompatibel ist. Wenn du da eine Software für eine anderes Hardwarelayout drauf lädst kann das Ding schnell mal kaputt werden.
Ja ich muss die Pins anpassen, ansonsten kommt das nicht gut... Installing Marlin | Marlin Firmware (marlinfw.org) ich versuche mich daran zu halten...
Ja du musst die Pins anpassen aber dazu musst du ja erstmal das Boardlayout kennen sonst weisd du ja nicht wie die Pins belegt und geroutet sind.
hab gehofft, dass jemand schon das gleiche problem hatte und einfach einen adapter gemacht hat xD
In wie fern einen Adapter?
Meinst du ein Konfigurationsfile für Marlin?
Also im Endeffekt gehts darum wie der Atsam auf dem Board gelayoutet ist. Sprich welche Leiter gehn zu den Steppertreibern, welche Treiber sind verbaut, wie sind die Sensoren angebunden zB ADC, I2C, SPI an welchen Pins sind die angebunden usw
ich habe ein 32 bit mainboard... kein 8 bit... es geht darum, dass ich einen vorgefertigten 3d drucker habe, den ich umprogrammieren werde. wenn dies doch schief geht, gäbe es die möglichkeit, ein neues mainboard einzubauen... das ist auch nicht das problem, sondern, dass meine Nozzle mit dem Flachband- Kabel verbunden wird. das Problem dabei ist, dass dieses nicht kompatibel ist mit anderen Mainboards... das heisst, ich müsste das Kabel adaptieren, oder die Nozzle komplett neu verbinden... Ich bin dabei aber ziemlich unsicher, wie ich vorgehen soll, ich habe kaum Erfahrung damit.
oh sorry, ich habe vollkommen aus dem kontext antworten gegeben, ignorier meine letzten zwei antworten xD ich hab diese konversation mit einer anderen verwechselt.
Das Mainboard Layout zu finden, wird wohl ein Ding der unmöglichkeit, denn es ist nicht ein Mainboard, dass einfach jeder umprogrammieren kann... da müsste ich wohl fast die Hersteller nach einem Layout fragen und diese geben mir das nicht in tausend jahren xD
Ich weiß dass du einen 32Bit Processor hast die Arm Cortex M sind alle 32Bit Kerne. Meine Ausführungen gelten für 8Bit 16Bit 32Bit und auch 64Bit Kerne sofern sie die entsprechnde Peripherie um den Kern enthalten und diese Schnittstellen hat jeder Atsam.
Wenn du das Originale Mainboard von deinem Drucker neu Programmieren willst dann musst du das Hardwarelayout kennen da führt kein weg drann vorbei. Oder weisst du Auswendig an welchem Prozessorpin der Endschalter der Z Achse verbunden ist? Wenn du die Frage mit Nein beantwortest dann brauchst du das Layout denn du musst in der Software sagen an welchem Pin dieses Signal zu finden ist. Eventuell ist der Endschalter auch an einem I2C Portexpander dann musst du in der Software diesen Portexpander auslesen um den Zustand des Endschalters zu bekommen usw.
Wenn du das Mainboard komplett gegen eines tauschen willst welches direkt von Merlin unterstützt wird (nicht nur der Prozessor sondern das ganze Board) dann brauchst du da Adapter das ist richtig.
Ok dann siehts eher schlecht aus. Ich meine Fragen kostet nichts aber für gewöhnlich bekommst du es nicht.
ich bringe eine Ausrede, dann machen sie's bestimmt xD
Würden beide Biards auf ATMega 2560 basieren, sollte das eigentlich funktionieren. Ich weiß, dass der ATMega 2560 ein gerne genutzter Controller für 3D-Drucker ist, was mich hier aber irritiert, ist der "ARM"-Aufdruck auf dem Controller.
Ist ein Atsam die nicht die Atmega Kerne sondern die Cortex M Kerne von Arm
Dann versuche ich es mal... das mainboard ist mit der aktuellen firmware sowieso nicht mehr brauchbar... deshalb habe ich auch nichts zu verlieren.
Hallo,
was jetzt viele verwirrt, du hast ein board genommen wo ein ARM Cortex M4 zeigt, was von der leistung her sehr gut ist..und sehr gut für 3d-drucker ist..
nicht alle 3d-Drucker Boards haben diesen Prozessor, meiner (anycubic i3 Mega S) hat z.B. wirklich den ATMEGA2560 16AU onboard..es gibt mittlerweile 5 achsen steuerungsplatinen für den arduino ATMEGA2560 extra für 3D-Drucker .. dieser hätte einfach die schrittmotortreiber onboard, und diverse anschlüsse was man so alles braucht..
Beispiel:
http://img.fasttechcdn.com/188/1881805/1881805-2.jpg
aber es gibt auch boards wo alles auf einem board ist wo natürlich platzsparend ist..für ca 30€ kriegt man solch ein board schon mittlerweile (nackt ohne treiber oder andere teile wie display oder sd-karten-slot) ..
und ja man kann diese mit der arduino IDE umflashen (siehe Marlin Firmware)..
Also mein Board ist doch Marlin basierend, oder? Das heisst doch, dass es keine Rolle spielt und ich es trotzdem mit der Arduino IDE umflashen kann, oder? Mein Problem ist, dass ich, wenn es geht, kein neues Board haben will und der Temperatur-BUS meiner Nozzle Wahrscheinlich nur mit diesem Mainboard kompatibel ist...
Im Prinzip heisst das doch, dass mein Board eine solch simple Firmware haben kann und die ganzen Zusatzfunktionen, die es bietet (Filament NFC Reader, Wireless Funktion), nicht unbedingt beachtet werden müssen?
Wenn dies nicht der Fall wäre, und die beiden Boards (mein Mainboard und den Arduino MEGA) zwei verschiedene paar Schuhe sind, dann bitte sagen.
ja es sind paar verschiedene schuhe..die prozessor-architektur..
atmega=8bit (AVR), cortex M4 = 32 bit (ARM)
kann sein dass es marlin basierend ist, aber daVinci hat sich da vollkommen verschlossen was firmware angeht..da muss man selbst ran..
ja es gibt seit marlin 2.0.0 32-bit prozessor unterstützung..
und laut
https://hackaday.com/2014/05/11/unbricking-the-da-vinci-and-installing-custom-firmware/
gibt es jemanden, der eigenes ding geschrieben hat..
mit arduino würde ich diesen nicht mehr flashen, du musst ja denn irgendwie bootloader vorher draufbügeln..
Installing Marlin | Marlin Firmware (marlinfw.org) hier steht, dass marlin 2.0 32bit arm support hat... könnte das mein Problem lösen? Hier muss ich Marlin und PlatformIO installieren... das ist es wohl, oder?
Das würde auch erklären, warum die alten Firmwares noch nicht Cura kompatibel waren und die neue Firmware dann ging... jetzt muss ich nur noch eine komplett unabhängige Firmware hinkriegen! das wird ja wohl noch machbar sein :D
ich denk ja, aber achte darauf, dass du vorher deine ein/ausgänge an deinem board anpasst..sowie andere angeschlossene nebenbetriebe, die auf dem board sind..LCD-Treiber z.b. oder richtige umrechnung von dem heatbed-sensor..
Also der Printer hat keine LCD und Headbed Sensoren... Aber meine Nozzle könnte noch Probleme verursachen... Was meinst du genau mit "anpassen"?
na die blanke software weiss ja nicht von vornerein welche anschlüsse an welchen GPIO's sind, sind es endlagenschalter? sind es temp-sensoren? ist es SD_Karten-slot? ist es USB? ..dein board ist ja fertig bedrahtet und bestückt..also sind die pin-belegung ja vordefiniert..
das musst du anpassen bevor du die firmware draufmachst..
Achso, ja. Darauf werde ich sicherlich achten. Das ist ja immer so. Es gibt nur verdammt viele Anschlüsse, mehr als bei einem kleinen Arduino... ich hoffe ich kriege das hin xD... Aber mir war bereits von beginn an klar, dass ich währenddessen viel dazulernen werde und wahrscheinlich von einigen Dingen keine Ahnung haben werde... Aber wie gesagt, im schlimmsten fall ist halt das Board futsch xD... Vielen Dank für deine Hilfe :)
aber willst du unbedingt dein altes board nutzen? warum?
ich würd auf deiner stelle das alte weglegen, und neues holen, was offener für firmware ist..die ganzen anschlüsse adaptieren..da wurde ja nichts neues erfunden..
paar 4-pin Schrittmotoren, paar endlagenschalter, heatbed, evtl level-sensor, hot-end sowie den dazugehörigen fühler..paar lüfter-anschlüsse, usb/sd-karte
dass man da einen 32bit prozessor braucht, ist sowieso übertrieben..wenn keine weiteren aufgaben für benötigt werden..
solche boards gibt es mittlerweile für 30€ alá China...
Das Problem ist der Flachband anschluss meiner Nozzle... keine ahnung wie man den adaptiert... die meisten mainboards haben einen anderen Anschluss
was ist besonderes an der nozzle dran? meist hat man da hotend samt fühler, lüfter mit PWM, und evtl LED-Licht. sind dann 11 Drähte wenn ich mich nicht irre, die kann man selbst zum nozzle hochziehen..
hotend 2 drähte, fühler 2 drähte, lüfter 3 oder 2 drähte, LED 2 drähte..extruder-motor auch dran? dann 4 weitere drähte..sind endlagenschalter dran? dann 3 oder 4 weitere drähte..
gibt leider keine unbricked version für davinci mini w... hab die Firmware bereits gedowngraded.. die tools dafür hab ich bereits... im prinzip bräuchte ich nur die firmware und der Rest würde mit meinem Tool machbar sein... xyz ist das Apple der 3D Drucker und mich macht es langsam stinkig...
Wow... Das überschreitet meine Programmierkenntnisse xD ... Also reflashen kann ich ... das sollte kein Problem sein... der rest wird wohl nicht ganz leicht... oder unmöglich haha