Prusa i2 “Mendel” firmware – Marlin met RAMPS board

Marlin Logo

Marlin met RAMPS board
Prusa i2 Mendel

Deze pagina beschrijft het backuppen, bijwerken of instellen van de software Marlin voor de 3D printer “Prusa i2 mendel”, met behulp van de Arduino IDE.

Mijn “Prusa i2” printerconfiguratie (hardware)

– Frame: Prusa i2 Classic
– Controller: Arduino MEGA + RAMPS 1.4 shield + A4988 drivers.
– Stappenmotor X-as: NEMA 17 / 42BYGHW811 / 2.5A(U) / 1.8deg/step / Tandwiel: GT2-20 tands.
– Stappenmotor Y-as: NEMA 17 / 17HS4401 / 1.7A(U) / 1.8deg/step / Tandwiel: GT2-20 tands.
– Stappenmotors Z-as: NEMA 17 / 42BYGHW811 / 2.5A(U) / 1.8deg/step / Stang: M5.
– Extruder: 1 kleur / Wade extruder met 9/47 herring gears
– Endstops: Microswitch NO/NC.
– Heated Bed: Geen.
– Temperatuursensoren: Weerstand in glas 100K NTC (EPCOS) 1%.
– Display: RepRapDiscount Smart Controller (LCD 4×20 met draaiknop, buzzer en reset).

Voorbeeld standaard Prusa i2 Mendel:

Prusa i2 mendel voorkant

Wat heb je nodig?

1) Arduino IDE
2) 3D Printer Firmware – Marlin

Backup maken

Firmware backup
Voordat je begint met het updaten van een (goed werkende) printer, is het verstandig om eerst een backup te maken van de firmware van de Prusa i3, onder het RAMPS bord zit een Arduino MEGA, en backup met avrdude.exe is te maken met het commando:

avrdude.exe -v -c stk500v2 -p m2560 -P COM4 -b 115200 -U flash:r:prusa.hex:i

Of

avrdude.exe -v -c wiring -p m2560 -P COM4 -b 115200 -U flash:r:prusa.hex:i

Ps. avrdude is te vinden in: ArduinoIDE\hardware\tools\avr\bin\

(eventueel avrdude.conf uit ArduinoIDE\hardware\tools\avr\etc\ ook hierheen kopiëren)

Eeprom en printer instellingen
Als je bijvoorbeeld het softwarepakket Repetier Host hebt geïnstalleerd doe je er goed aan de printer instellingen en Eeprom instellingen te noteren, hieronder een screen van de instellingen van een goed werkende Prusa i3 “Wood” printer:

Prusa i3 - Printer informatie

Prusa i3 - Eeprom instellingen

Installeren van Marlin

Nadat je ArduinoIDE hebt geïnstalleerd installeer je de “Marlin” folder vanuit het archief “Marlin v1.0.2-1” naar Arduino IDE

Dus de folder “Marlin-1.0.2-1 (2015-05-30).7z\Marlin-1.0.2-1\Marlin” naar “ArduinoIDE\Marlin“.

Start de Firmware op door op Marlin.ino te dubbelklikken, ArduinoIDE wordt dan opgestart, daarin zie je heel veel TAB’s en venstertjes openstaan:

ArduinoIDE met Marlin

Marlin configureren voor de Prusa i2

Let op: Dit stukje behandeld lang niet alle aspecten en mogelijkheden van de firmware, maar geeft de veranderingen in beeld voor de “Prusa i3” vanuit de standaard Marlin instellingen.

Board selecteren
De meeste instellingen staan in het bestand configuration.h, daar moet je ook het board selecteren in de regels:

Ps. de aanwezige boards voor Marlin kun je vinden in het bestand boards.h

We kiezen hier voor: BOARD_RAMPS_13_EFB

Arduino Mega shield Ramps 1.4

Naam instellen
Je kan je printer een naam geven, van ongeveer max. 10 karakters, dit doe je op de regel:

// #define CUSTOM_MENDEL_NAME "This Mendel"

Bijvoorbeeld voor de Prusa i3:

#define CUSTOM_MENDEL_NAME "Prusa i2"

Temperatuursensoren instellen
Het volgende stuk in behandeld de temperatuur instellingen:

De gebruikte weerstand in mijn geval voor de extruder en het heated bed is (en de meest gebruikte): weerstand glas 100K NTC (EPCOS):

Weerstand 100K NTC (3950)

Dat geeft weerstand optie: 1

Ps. Weet je niet welke je moet hebben, in veel gevallen werkt optie 1 ook.

Maximale temperaturen instellen
In het volgende stukje kun je maximale waarden van de temperaturen instellen:

In veel gevallen is boven de 250 graden funest voor je extruder systeem, voor mijn extruder: Bowden Geetech J-head-23QWS is 250 graden meer dan voldoende, mijn MK2B heated bed heb ik op 75 graden staand, zelfs voor ABS is dat meer dan genoeg:

Eindschakelaars instellen
Ik maak gebruik van simpele microschakelaars als endstop, dit geeft de volgende configuratie:

Bewegingsrichtingen instellen
In het volgende stukje worden de bewegingsrichtingen behandeld, voor de prusa is dit de volgende instelling:

Maximale printgrensen instellen
Hier heb je een meetlint, rolmaat of duimstok voor nodig, meet de maximale waarden op in mm wat je op het printbed kan printen vanuit het nulpunt gemeten:

Voor mijn Prusa i3 “Wood” is dit:

Motor stappen en snelheden instellen
Hier heb je een aantal berekeningen voor nodig, zie onder

Formule riem aandrijving (X-as/Y-as):
In veel gevallen is deze voor de X-as hetzelfde als de Y-as, het aantal stappen per unit wordt bepaald door het aantal stappen per omwenteling gedeeld door het aantal tanden van het tandwiel, gedeeld door de riem pitch (afstand tussen de tandjes)

Stappen per unit = Motor stappen per omwenteling / aantal tandwiel tanden / riem pitch

In mijn geval heb ik NEMA 17 stappenmotors met 1,8 graad per rotatie met op de as een GT2-20 tand tandwiel met een GT2 riem, mijn poluludrivers staan op 1/16 stappen.

Motor stappen per rotatie: een rotatie is 360 graden / aantal graden per stap geeft: 360/ 1,8 = 200 stappen per omwenteling.

1/16 = 200 / 20 / 2 geeft: 1/16 = 5 , geeft: 1 = 80 , dat geeft het getal: 80

Ps. er is een handige website voor ingericht: prusaprinters.org calculator

Prusa i3 stappen calculatie XY-as

Formule stang aandrijving (Z-as):
Het aantal stappen per unit wordt bepaald door het aantal stappen per omwentelingl, gedeeld door de draadstang pitch (bijvoorbeeld de afstand van de verplaatsing van een moer bij in 1 omwenteling)

Stappen per unit = Motor stappen per omwenteling / draadstang pitch

In mijn geval heb ik NEMA 17 stappenmotors met 1,8 graad per rotatie en een verloop naar een M5 draadstang, mijn poluludrivers staan op 1/16 stappen.

Motor stappen per rotatie: een rotatie is 360 graden / aantal graden per stap geeft: 360/ 1,8 = 200 stappen per omwenteling.

1/16 = 200 / 1.25 geeft: 1/16 = 160 , geeft: 1 = 2560 , dat geeft het getal: 2560

Prusa i2 stappen calculatie Z-as

Extruder aandrijving (E-as):
Het aantal stappen per unit wordt bepaald door het aantal stappen per omwenteling, maal de overzetverhouding, gedeeld door wiel diameter maal Pi.

In mijn geval heb ik “Greg’s Wade reloaded” extruder met een tandwielverhouding van 49/7

Prusa i2 Greg's wade reloaded 01Prusa i2 Greg's wade reloaded 02

met een NEMA 17 stappenmotor met 1,8 graad per rotatie en rechtstreeks op de as een tandwiel van 9 tanden die overbrengt op een as met een M8 Hobbed bolt met een tandwiel van 47 tanden, mijn poluludrivers staan op 1/16 stappen.

De formule is: Stappen per unit = Motor stappen per omwenteling * overzetverhouding / (wiel diameter * 3.1415)

Hobbed bolt afmetingen:

Hobbed boltHobbed bolt afmetingen

De wieldiameter dat we nodig hebben is vanuit het hart van het filament (1.75mm) en dus 5 + (1.75 / 2) = ca. 5.88

Motor stappen per rotatie: een rotatie is 360 graden / aantal graden per stap geeft: 360/ 1,8 = 200 stappen per omwenteling.
De overzetverhouding tandwielen is 47 op 9, dit geeft 47 / 9 = 5.22

1/16 = 200 * 5.22 / (wieldiameter * 3.1415) ,geeft 1/16 = 1044.44 / 18.47 , geeft  1/16 = 56.55 , geeft: 1 = 904.77 , dat geeft het getal: 905

De configuratie geeft dan:

Let op!, de berekeningen hierboven zijn gebaseerd op de A4988 drivers:

Stappenmotor aansturing module A4988 bovenkant

Gebruik je de DRV8825 drivers:

Stappenmotor aansturing module DRV8825 bovenkant

Dan moeten de waarden hierboven gehalveerd worden!

Preheat instellingen
Preheat instellingen staan ingebakken in de firmware en zijn te kiezen vanuit het menusysteem, mijn instellingen:

Display gebruiken
Het grote voordeel van het gebruik van een display module is dat je de printer zonder computer kan gebruiken, het programma (gcode) staat dan immers op een SD kaartje welke je in het slot kan van de display module kan steken.

Voor mijn display “Reprap Discount Smart Controller”:

Reprap Discount Smart Controller cartoon

moet ik de commentaar voor deze regel aanpassen naar:

Rotatieknop goed instellen

Standaard draait de rotatieknop de “verkeerde kant op”, ikzelf vind het fijn om het menusystemen en instellingen te wijzigen en getallen te vermeerderen door met de klok mee te draaien, ga naar de TAB Pins.h en wissel dan deze waarden om: BTN_EN1 (31) en BTN_EN2 (33) onder het kopje “#ifdef REPRAP_DISCOUNT_SMART_CONTROLLER“, deze regels:

Worden: