====== Jenny ====== This is Jenny's project page, created when I upgraded Jenny from a Prusa Mendel i2 to an i3. ===== Specs ===== *__**Architecture :**__ Prusa Mendel i3 Rework 1.5 (source : eMotion Tech) *__**Extruder :**__ Direct Drive [[http://www.geeetech.com/wiki/index.php/MK8_Extruder|MK8]] (custom X carriage) *__**Auto-level Z sensor :**__ Capacitive *__**LCD Screen :**__ Full Graphic - DOGM128 *__**SD Card**__ : Yes === XYZ Motors === *__**Ref :**__ 42BYGHW609 *__**Step Angle :**__ 1.8° *__**Rate Voltage :**__ 3.4V *__**Rate Current :**__ 1.7A === Space under heatbed === Space for anything under 200 x 65 x 50 (mm) === Font === The font used for the cut-out in the frame is **Hand Stencil** ===== Pics ===== | {{projets:jenny_i3.jpg?367}} | {{projets:jenny_i3_assembly.jpg?400}} | | Nearly completed | An early mess but operational | ===== Upgrades ===== ==== MK8 Custom X Carriage ==== Custom MK8 Carriage with custom airblower designed for a 12V 50mm radial fan. | {{projets:mh8-mk8-carriage.png?224}} | {{projets:x_carriage_full.jpg?300}} | {{projets:x_carriage_top.jpg?300}} | I bought an MK8 Extruder on the internet and had to find a carriage to fasten it to Prusa i3 architecture. I found a community made piece that was OK but lacked some refinements. Using it as a base model I entirely remodeled my own version with an attachable exhaust for a 12V radial fan to cool the print zone. * __**Files :**__[[https://www.thingiverse.com/thing:3837424|Download STL]] * __**Design :**__ mh8 ---- ==== Spool holder ==== **I tested a ton of different spool holders.** Seriously. I printed about a dozen and tried various techniques. This is the best one I've found for Jenny so far. | {{projets:spool_holder_full.jpg?300}} | {{projets:spool_holder_detail.jpg?300}} | {{projets:spool_holder_top.jpg?300}} | In 3D printing, every mechanical detail has it's impact on the final quality of the print. Filament feeding is mainly the extruder's part, but bringing the filament easily, fluidly and with as little resistance as possible //to the extruder// should not be neglected. The great advantage of having the spool sit atop the printer is that the filament is fed directly to the extruder with the least curve - and resistance - as possible. The great disadvantage is at the cost of safety : in case of a fire accidently starting on the printer, the spool is sitting right up there, just waiting to catch the flames and be set ablaze. * __**Files :**__ * __**Design :**__ ---- ==== Screen case ==== The Full Graphic DOGM128 Screen is a great upgrade from the 2 lines 20x4 characters LCD screen that used to equip most RepRaps in the beginning. It features a 128x64 point screen and comes equiped with a SD Card slot, a control knob, reset switch and buzzer for sound feedback. | {{projets:screen_case_full.jpg?300}} | {{projets:screen_case_support.jpg?224}} | {{projets:screen_case_SD.jpg?224}} | Of course it just sits there near the printer if it hasn't got a case and some supports to fasten it somewhere to the frame. I customized mine by adding the "JENNY" cut-out, but since it was printed upside down it kind of blurped. Also, it was printed with a 0.4mm standard nozzle which gives a poor X-Y resolution on small details like this. Still, it's readable. And customized. *__**Files :**__ *__**Design :**__ ---- ==== eMotronic (Smoothieboard) mainboard ==== Purchased in february 2020. The smoothieboard (and eMotronic) uses an ARM CPU clocked at 100MHz and the stepper drivers are soldered directly on the PCB and configurable via the simple config.txt file present on the SD card. Changing the settings does not require reflashing the board as it does on an Arduino Mega which itself is only clocked at 16MHz. The board should bring an improvement to the quality of movement control which is essential in 3D printing and any CNC based solution. | {{projets:unboxing_smoothieboard.jpg?300}} | I tested it out but the eMotronic board I ordered differs from the smoothieboard project in a few ways. First, the entire PCB was redesigned by eMotion Tech and most of the pin numbers were reaffected. Documentation of the eMotronic is at the time of writing rather poor and scarce. I encountered some major problems with the Z motors and manual control rendering the board impossible to use. As I thought the board was defective I sent it back to shop for revision and testing. They found no fault on the stepper drivers so they sent it back. **As it turns out the eMotronic board takes many liberties with the original smoothieboard design and is not an easy implementation on an i3-type architecture.** Jenny still runs on the good old Mega + Ramps with a 2.0+ marlin firmware. She also has brand new stepper motors for controlling X, Y and Z. ---- ==== New Fan Duct ==== I redesigned the fan duct of the radial fan cooling the print. The problem with the first design was the large flat bottom surface too close to the print that would hit on any print part warping during print. | {{projets:jenny_new_fan_duct.jpg?300}} | It requires supports to print but does it's job perfectly. *__**Files :**__ [[https://mh8.fr/resources/files/mh8_fan_duct_v3.stl|Download STL]] *__**Design :**__ mh8 ---- ===== Next Steps ===== === Currently working on === *Try some new gcode on print stop line 1050 of configuration_adv.h (try multiple successive commands) *Design some new PSU fasteners for the new PSU unit so it is fixed on the Z frame === Upcoming === * Lookout for resonance on the cooler radial fan * Measure % offset on size to get exact dimensions -> print test part, measure, compensate x,y,z, print again * Update wiki with Marlin firmware (latest), a backup of Printer/Prusament profiles for prusa-slicer, etc.. * Ground the frame to the power supply * Run a printer safety check page according to RepRap Wiki * Setup emergency stop button * Redesign custom X-carriage blower for a fan with [[https://www.reprap-france.com/produit/1234568367-ventilateur-turbine-40x10mm-12v|a larger diameter on output]] (e.g. the entire lower side here) * Calibrate in firmware extruder offset from origin * Set up a solid state relay to cut power supply in case motherboard detects a MOSFET broken/stuck in full power mode * Setup max endstops to limit the machine from going to impossible positions ===== Infos & Measurements ===== Between the smooth rods of the Y carriage there is exactly 162 mm (170mm between the centers of the LM8UU slots so by removing 4mm + 4mm (radius of each 8mm smooth rods) we get 162mm) The mainframe had to be moved along the Y axis to correct an alignment issue where the nozzle was approx. 20mm inside the print zone when the Y axis was at 0 (print bed up against the Y endstop and Y endstop as far back as possible). A new measure has to be given to indicate where it stands now in relation to the rest of the frame. Caution when removing the radiator of the MK8 extruder the setup does not hit the X end-stop properly which needs to be replaced by fixing it using the opposing screw hole than the one indicated on the assembly instructions. ==== Bed Shape & measures ==== //These values are given at launch of i3 Rework in April 2019, using my custom mh8 X-carriage for MK8 extruder with the radiator removed.// | **X axis** | X-min : 0 | X-max : 200 | Bed left : 20 | | **Y axis** | Y-min : 0 | Y-max : 185 | Bed front : 0 | | **Print area** | width : 180 | depth : 165 | height : 190 | === Ziflex Print Bed === These might have changed after Ziflex bed was installed in January 2020. Also, there seems to be a ~25°C difference between the heatbed temperature and the surface temperature of the Ziflex printbed. This is probably due to heat propagation on the aluminium plate holding the 3M sticker part. The Preheat value was adjusted accordingly in the firmware to 80°C. The heat value was also adjusted in Slic3r filament settings and beginning G-Code. === Probe removal & Z mechanical endstop === In April 2020 I removed the Z Probe which was not consistent on first layers. I replaced it with a mechanical Endstop fastened above the Z left motor. -0.05mm was added to slicer Z offset to squish a little the first layer. ===== Firmware ===== ==== Upgrade to Marlin 2.0.5 - April 2020 ==== [[https://mh8.fr/resources/files/Marlin-2.0.5-Jenny-04-2020.zip|Jenny Marlin 2.0.5 Slic3r Backup - April 2020]] **Jenny's Z probe was not reliable** and I was having difficulty getting consistent first layers without tweaking the settings at every print. I reverted Jenny to a more reliable mechanical endstop to control Z min and at the same time updated Marlin to latest version and reconfigured it from scratch. === configuration.h === #define CUSTOM_MACHINE_NAME "Jenny" // Z Clearance between probe points - This removes lifting Z when homing X and Y #define Z_CLEARANCE_BETWEEN_PROBES 0 #define Z_AFTER_HOMING 10 #define STRING_CONFIG_H_AUTHOR "(mh, Jenny-marlin-2.0.5)" #define BAUDRATE 115200 #define DEFAULT_NOMINAL_FILAMENT_DIA 1.75 #define TEMP_SENSOR_0 1 #define TEMP_SENSOR_BED 1 #define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 104 } #define DEFAULT_MAX_FEEDRATE { 100, 100, 12, 120 } #define DEFAULT_MAX_ACCELERATION { 3000, 3000, 100, 10000 } // ACCELERATION LEFT UNTOUCHED. DIFFERS FROM PREVIOUS MARLIN SETUP #define X_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Y_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. #define Z_MIN_ENDSTOP_INVERTING true // Set to true to invert the logic of the endstop. //#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN //Commented out : Not using a Z-probe for now #define INVERT_Z_DIR true #define X_MIN_POS 0 #define Y_MIN_POS 0 #define Z_MIN_POS 0 #define X_MAX_POS X_BED_SIZE #define Y_MAX_POS Y_BED_SIZE #define Z_MAX_POS 190 // Preheat Constants #define PREHEAT_1_LABEL "PLA" #define PREHEAT_1_TEMP_HOTEND 200 #define PREHEAT_1_TEMP_BED 80 #define PREHEAT_1_FAN_SPEED 0 // Value from 0 to 255 #define SDSUPPORT #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER #define REVERSE_ENCODER_DIRECTION //#define REVERSE_MENU_DIRECTION #define EEPROM_SETTINGS ---- === Thermal Protection - configuration_adv.h === During one of the first prints after upgrade I had a false positive of a bed temperature hysteresis. I modified the thermal protection values to the following. Thermal protection for the heated chamber should not have any incidence since Jenny is not equipped with a heated chamber nor a sensor for that function but it was kept activated nonetheless just in case it's of any use that I don't know of. // Tolerance increased (2 -> 8) and Time increased (20 -> 30) for Thermal hysteresis on bed #if ENABLED(THERMAL_PROTECTION_BED) #define THERMAL_PROTECTION_BED_PERIOD 30 // Seconds #define THERMAL_PROTECTION_BED_HYSTERESIS 8 // Degrees Celsius // Time decreased (60 -> 40) for watchdog on bed heating -- Jenny's bed heats up quickly enough #define WATCH_BED_TEMP_PERIOD 40 // Seconds #define WATCH_BED_TEMP_INCREASE 2 // Degrees Celsius #endif // Tolerance increased (2 -> 5) and time increased (20 -> 30) just in case to avoid false positives #if ENABLED(THERMAL_PROTECTION_CHAMBER) #define THERMAL_PROTECTION_CHAMBER_PERIOD 30 // Seconds #define THERMAL_PROTECTION_CHAMBER_HYSTERESIS 5 // Degrees Celsius I closely monitored a 7 hour print and found the following : **Heat Bed :** Jenny's bed target temperature is 80°C and it oscillates +/- 3 degrees during print. The oscillations are not long but the thermistor (taped under the heatbed with Kapton) may be subject to cooling air drafts in the room and it could be enought to spike a false thermal hysteresis. Values were tweaked to allow a 10% tolerance for 30 seconds. The protection should still be effective if the thermistor comes loose during print. //With the bed Heated at 80°C it took 21.2s for the thermistor to read 72°C (-10%) when bed heating was interrupted.// **Hot End :** Jenny's hot end target temperature is 195°C and does not move during print. Thermal protection settings were left untouched. **Possible improvement :** Add a custom bitmap with Jenny's name instead of Marlin logo ---- ==== Old Marlin ==== ++++ Click to unfold | === In configuration.h === //If commented by default, uncomment the thermal runaway protection to activate it.// #define INVERT_X_DIR false #define INVERT_Z_DIR true #ifdef Z_SAFE_HOMING #define Z_SAFE_HOMING_X_POINT (100) // X point for Z homing when homing all axis (G28) #define Z_SAFE_HOMING_Y_POINT (100) // Y point for Z homing when homing all axis (G28) #endif #ifdef AUTO_BED_LEVELING_GRID // set the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 70 #define RIGHT_PROBE_BED_POSITION 170 #define BACK_PROBE_BED_POSITION 170 #define FRONT_PROBE_BED_POSITION 80 // set the number of grid points per dimension // I wouldn't see a reason to go above 3 (=9 probing points on the bed) #define AUTO_BED_LEVELING_GRID_POINTS 2 #else // not AUTO_BED_LEVELING_GRID // with no grid, just probe 3 arbitrary points. A simple cross-product // is used to esimate the plane of the print bed #define ABL_PROBE_PT_1_X 70 #define ABL_PROBE_PT_1_Y 80 #define ABL_PROBE_PT_2_X 120 #define ABL_PROBE_PT_2_Y 170 #define ABL_PROBE_PT_3_X 170 #define ABL_PROBE_PT_3_Y 80 #endif // AUTO_BED_LEVELING_GRID #define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,400,110} // default steps per unit for Ultimaker #define DEFAULT_MAX_FEEDRATE {100, 100, 12, 120} // (mm/sec) #define DEFAULT_MAX_ACCELERATION {8000,8000,200,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. Using the Ziflex print bed I switched the preheat PLA values (80°C preheating gives approximately 55°C on the surface of the Ziflex) #define PLA_PREHEAT_HPB_TEMP 80 === In ultralcd.cpp == if the knob encoder is moving backwards in the LCD when turned clockwise change this value : #define ENCODER_PULSES_PER_STEP -1 //instead of 1 ---- ++++ ===== Slicer ===== Currently using [[https://www.prusa3d.com/prusaslicer/|Prusa slic3r]]. [[https://mh8.fr/resources/files/Jenny_PrusaSlicer_config_bundle-04_2020.ini.dummy|Backup PrusaSlic3r config - April 2020]] //-> Save under .ini file// ==== Start G-Code ==== === Current version (April 2020) === This was setup in april 2020 on a configuration without a Z-Probe and with a mechanical endstop to get Z home. M140 S80 ; set bed temp don't wait M104 S200 ; set nozzle temp don't wait G28 X Y; home X & Y M190 S80 ; wait for bed temp G28 ; home all axes G0 X100 Y100 Z20 F4000 ; Center on bed and lift Z a bit so we can clean any drooling filament M82 ; use absolute distances for extrusion G92 E0 ; reset extrusion G1 E10 F1000 ; prime G4 S4 ; Wait 4 seconds M109 S200 ; wait for nozzle temp === Older version (June 2019) === ++++ Click to unfold | //I set this one up mid June 2019 and it works OK// I was following [[https://www.thingiverse.com/groups/simplify3d/forums/general/topic:16606|this thread on Thingiverse]], copied someone's code and tweaked it to Jenny's needs. M140 S55 ; set bed temp don't wait M104 S200 ; set nozzle temp don't wait G28 X ; home x M190 S55 ; wait for bed temp M109 S200 ; wait for nozzle temp G28 ; home all axes G29 ; auto-leveling G92 E0 ; Reset extruder G1 X0.0 Y0.0 Z10.0 F4000 ; Go to Prime position M109 S200 ; wait for nozzle temp G1 E20.0 F1000.0 ; prime G1 X100.0 Y100.0 F4000 ; Go to print area G92 E0; Reset extruder Possible upgrades : Prime is not necessary when using a skirt. It wastes time and requires user assist to remove primed plastic lest it clutters the print area. ++++ ==== End G-Code ==== This one has been used for some time now M104 S0 ; turn off hot end M140 S0 ; turn off bed G91 ; relative coords G0 E-2 ; retract G0 Z5 ; lift Z off the print G90 ; absolute coords G28 X0 ; home X axis G0 Y185 ; Bring Bed fully to front M84 ; disable motors ==== First Layer Tips ==== === Print Bed === * Level Print surface relative to the nozzle * Clean Bed with 90% alcohol before every print * Use good quality material * For TPE & PETG don't print directly on the bed (use some protection & release agent) === Settings === * Print with **slightly higher temperature (~+5°C)** * Push **First Layer Line Width** (+150-200%) * Push **First Layer Height** (0.3 for 0.4mm nozzle) * Lower **First Layer Print Speed** (20-30 mm/s) ===== 3D Modeling Tips ===== To get pieces that should snap in together, like notches, leave a 0.35mm space margin between both pieces in model. In every case, it's worth it to just print a test part of the parts that need to snap together to test different values. ===== System Calibration Logs ===== ++++ Logs as written during Calibration in 2019 | === 12/03 === Firmware flash as given by eMotion Tech. Flashed without issue. Parameters on Repetier Host as indicated by eMotion Tech. Could not save them to custom printer. Issue should be adressed asap. Y motor homes in the right direction. X motor does not home in the correct direction. Firmware change in configuration.h : #define INVERT_X_DIR false While examining firmware, thermal runaway protection was commented. Uncommented for next flash. Thermal runaway should be tested live when printer is fully functionnal. === 14/03 === The two Z spin in two different directions and need to be inverted on the board. The custom motor holder v1 has several major defaults : * the Z sensor hole should have a diameter of 12 * the M4 nut holes are not large enough to hold M4 nuts and need a little more margin. 0.25mm margin on each side should help ease them in. The stepper drivers were set at a VRef of 680mV for each X Y Z drivers which is equivalent to a 1.7A current draw on the motor, per coil. If Marlin operates in full-step mode however, the motor will actually draw only 70% of that value approximately, and some more will be lost in heat. The extruder stepper motor was set at 780mV as a wild guess. The stepper motors still buzz and high pitch whistles. Extrusion works fine. Need to check calibration. === 18/03 === Problem on the Z fixed by inverting one of the motor wiring. The proper wiring is : on the outer Z motor, from bottom to top, Blue/Red then Green/Black, and on the inner Z motor, the one closest to the stepper driver, Green/Black then Blue/Red. The Z probe might not be functionning. The length on the X Motor and X end-stop should be set when the carriage is at a high position. At the moment they will pull heavily on the system if the cables go too high. Inverting Z value and reflashing the firmware. In configuration.h : #define INVERT_Z_DIR true Electronic boards were fully dismounted to solder two male pins on the RAMPS board to power the HotEnd cooler fan through the Z sensor board. When the electronics were remounted, the Z motors were stepping in different directions again. The wiring was aligned as it was before, that is the same bottom to top color alignment on **both** Z motors, effectively cancelling the previous fix mentioned earlier. Z alignment was recalibrated. === 19/03 === I discovered that the G92 command actually works but repetierHost does not dynamically update the information on location. You can query the data using M114. Here is a proper sequence to use G92 and then manual control (in RepetierHost): *The axis must have been homed prior (i.e. display in black, not in red) *Set G92 Z10 (or other) *Use G0 Z8.9 to move only 0.1, the display will correct *Use manual control Debugged the problem of G28 all axis homing, it homed X, then Y, then tried to home Z using probe outside of bed area. Reflashed firmware after changing this value in configuration.h : #ifdef Z_SAFE_HOMING #define Z_SAFE_HOMING_X_POINT (100) // X point for Z homing when homing all axis (G28) #define Z_SAFE_HOMING_Y_POINT (100) // Y point for Z homing when homing all axis (G28) #endif One thing good to know : the arduino keeps the Z offset in memory when you reflash the firmware === 20/03 === I cut a piece of aluminium to serve as a print bed (going to provide polyimide tape to put over it). I reset the Z probe position for aluminium sensing (<1mm offset from hot end) I reset correct movement settings using M203 (and M503) and set them in slic3r PE : X/Y : 100mm/s max Z : 1mm/s max acceleration : X/Y : 4800 mm/min Z : 100 mm/min I'm almost printing but I have a problem with first layer height which is way too high. These values have to be set in slic3r as well because they are re-set at the beginning of each Gcode. === 21/03 === First cube printed. Extruder is not calibrated so it's over extruded. I had a lot of difficulty getting the correct Z offset in the system so that the first layer would actually print at the correct height. I recalibrated the Z steps per unit from 1600 to 410.25. The steps per unit for the extruder have to be set the same way. This change led me to change back to 12 mm/s the feedrate on Z but it's going very slowly, it could go faster. I need a cooling system for the print and polyimide tape for the print bed === 26/03 === I recalibrated the extrusion at a step per unit value of 105. Seems good but it under-extruded a cube. I still seemed to have a problem with the Z at each new print so I recalculated the Z motor steps per unit and got closer to 396. I set it to 400 which as a round value seems to be a good idea. I found out that to calibrate the Z offset it's useful to set a G92 Z## value that is "less" than what RepetierHost seems to think it is so that you can use manual control to lower Z to 0 instead of having to input G0 Z## commands repeatedly. Caution using this method a misclick on a Z order can send the hot end into the heatbed though. === 27/03 === I changed default accelerations back to 8000 for X/Y and 200 for Z I printed a cube and a low poly dino and the prints went to the end but with warping on both, due to bad adhesion to the build plate. I will change the build plate material soon which might correct this issue. I modified the firmware values for auto-probing and set them to (in configuration.h) : #ifdef AUTO_BED_LEVELING_GRID // set the rectangle in which to probe #define LEFT_PROBE_BED_POSITION 70 #define RIGHT_PROBE_BED_POSITION 170 #define BACK_PROBE_BED_POSITION 170 #define FRONT_PROBE_BED_POSITION 80 // set the number of grid points per dimension // I wouldn't see a reason to go above 3 (=9 probing points on the bed) #define AUTO_BED_LEVELING_GRID_POINTS 2 #else // not AUTO_BED_LEVELING_GRID // with no grid, just probe 3 arbitrary points. A simple cross-product // is used to esimate the plane of the print bed #define ABL_PROBE_PT_1_X 70 #define ABL_PROBE_PT_1_Y 80 #define ABL_PROBE_PT_2_X 120 #define ABL_PROBE_PT_2_Y 170 #define ABL_PROBE_PT_3_X 170 #define ABL_PROBE_PT_3_Y 80 #endif // AUTO_BED_LEVELING_GRID I also changed : #define Z_RAISE_BEFORE_HOMING 5 // (in mm) Raise Z before homing (G28) for Probe Clearance. and : #define DEFAULT_AXIS_STEPS_PER_UNIT {80,80,400,110} // default steps per unit for Ultimaker #define DEFAULT_MAX_FEEDRATE {100, 100, 12, 120} // (mm/sec) #define DEFAULT_MAX_ACCELERATION {8000,8000,200,10000} // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for Skeinforge 40+, for older versions raise them a lot. I need to find a way to quiet the extruder fan on command... M106/M107 controls the print fan If I still see uneven extrusion I can try to modify the maximum feedrate of E and the acceleration of E. And I can adjust the steps/unit if needed === 03/04 === I launched another low-poly print to test the printer and still had some difficulties getting it at the proper Z height for the first layer. After fiddling a while, resetting the Z-offset in the firmware and **adding a Z-offset value inside the slicer** the print launched rather successfully it's first layer. All other layers after that seemed at a proper Z difference from the previous layers so the Z steps/unit value seems to be OK. The result of the print is mitigated. Some parts are really proper and smooth, but some other parts, particularly in the overhangs are completely messed up. Also, there was a lot of warping **during the print**. This is most probably due to improper cooling since the print cooling is still done with the fan just zip-tied @ approx. 40mm away from the print zone with nothing to focus the airflow directly on the print zone. I'm modelling another X-carriage and print fan blower to fix that problem. It will be based on a radial fan instead of a 40mm classic one. The print bed is still laden with white masking tape which isn't ideal as a print surface. Kapton tape should be provided. === 16/04 === I changed the print bed and finished modeling a new vent and carriage system based on a 50mm radial fan. This was installed and a new calibration is necessary. === 17/04 === I recalibrated the Z-probe and wrote a procedure of Z calibration. I encountered some major difficulties printing. The first layer was never on the bed. I tried many different values of Z offset going all the way to -1.25 offset in Slicer but to no success. Also, I reset many times the offset in the firmware value and found out that if the Z offset value is set to 0 in Slic3r the G-code will being at an effective height of 0.2 from a 0 point. The thing is, when it runs the G28 homing procedure the head is left at a distance of Z something from the print bed which is not compensated during print. === 18/04 === I finally got the first decent print out of Jenny. I recalibrated her Z sensor and accidentaly put a dint in the new buildtak print bed in the process. The inductive sensor needs to be very close to the nozzle bottom to detect properly. I could get same results with less hassle by swapping for a capacitive sensor. After resetting the Z sensor probe properly and lowering it to an appropriate spot and recalibrating the Z offset I sent a successful Gengar print at full scale that turned out quite nice. === 19/04 === I updated repetierHost, Marlin and this wiki page with the proper bed shape settings. I also added a -0.15mm Z offset in slic3r to get a proper first layer. I sent a 4 point auto-level G29 command and saved it to memory. === 25/04 === I discovered the reason why the first layers were too thin and pressed hard against the buildtak build plate. The Z offset set in memory is set using the probe value of the inductive probe. That value is a distance of detection of the aluminium plate underneath the buildtak. The buildtak's thickness is approximately 0.35mm thick as measured with a caliper. I reset the Z offset value from -0.40 to -0.15 to compensate. I'm still leaving a 0.1mm delta so the print will be well pressed against the buildtak. I haven't printed anything yet to test these new values but that will be done first thing next morning. I need to change that inductive sensor for a capacitive one, and if I can couple it with a new buildtak glued on a heat-resistant flexible material resting on the aluminium buildplate I should be fine. Buildtak adhesion seems to work so well I could even test printing on a cold bed. === 20/05 === I swapped the inductive Z-probe for a capacitive one. What a change ! It is so much better, detects any type of material at a greater distance. I also reprinted in PolyMax PLA my custom carriage in a v2 version along with the fan duct. Mounting it is a little tricky but with a little experience you get the correct gestures in the correct order. I need to recalibrate on the regular buildtak to be sure I have the correct procedure but I should be good from now on with Z endstop. === 25/07 === I swapped the previous LCD screen for a full graphic LCD screen. I had to reflash firmware with the following changes : In configuration.h : comment //#define REPRAP_DISCOUNT_SMART_CONTROLLER and uncomment #define REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER You have to install the ug8lib library from the library manager and if you get the following message at compile : utility.com/u8g.h: No such file or directory You need to replace the following line #include for this one : #include ++++ ==== E Steps/mm Fine tuning ==== This procedure was launched in February 2020 to further correct the quality of prints. Using Triffid Hunter's Guide from RepRap wiki (cf. Ressources), I downstepped E Steps/mm gradually from 110 to 103.56 where I was confident I saw the tiny gaps in between the 95% rectilinear infill on the print. As I was doing the gradual -0.5% increments, the number of spurt blobs on the outer shell was notably reduced. This procedure will be done again after motor change and smoothieboard update. The small clutter blobs on the side of prints are still there. ==== Z Calibration procedure : ==== === Mechanical Endstop Calibration === The trick is to get the printer to go below it's Z=0 so that you can manually lower it to paper-grab height from the print bed and set the Z endstop in position with the carriage at that Z position. M211 is super useful for this. It controls the software endstop status and is ON by default. You can turn it off by sending the G-code M211 S0. This will allow the printer to go below Z=0 (it's normal Z_MIN_HEIGHT position). Note that repetierHost does not allow this move with manual jog but the latest marlin firmware has improved movement control and allows for .1mm moves on all axes. Start by sending a Z homing order and manually clicking the endstop so the printer thinks it has reached it. Note the endstop has to be clicked twice, the second time is when it comes back down in slow homing speed. Try and do this pretty near the print bed but keep a safe distance so you don't ram the carriage into the bed. Use the LCD Screen & controller to bring the printer down to paper-grab height. Set the endstop into position and verify it by jogging back and forth between that position and +.4mm. The endstop does not unclick immediatly but you're looking to have it consistently click at paper height grab and not more than +.1mm higher. === Probe Calibration === ++++ Probe Calibration (unused as of April 2020) | * M851 Z0 : Cancel any previous Z offset. * Heat up the hot end and the bed to nominal values (to take in account any thermal deformation of the hot end and build plate) * Manually bring the hot end to a paper's thickness from the bed. This is the tricky part. It can be done using the following commands : * Home X, Y, Z (G28) * Raise Z 10mm * G92 Z20 to make the printer think it's higher than it is * G0 Z10 to bring it back down 10mm (it will be a few mm from the bed) * Lower 0.1mm at a time until you get the paper-grab (G0 Z9.9 - check - G0 Z9.8 - check - etc.) * G92 Z0 at paper-grab point * Raise Z 10mm (G0 Z10) * G30 to probe and get the Z offset value of the distance between your probe and the 0 point of the nozzle. * M851 Z-X.X (X.X is the offset value from previous step) * M500 to save current configuration * G29 can now be run to get an auto-leveling grid * M500 again to save current configuration === Concerning M851/M114 in RepetierHost === When homing X/Y/Z in RepetierHost the position indicator might indicate 0 on all positions when the reality is probably X/Y at Z home position (100/100 on Jenny for example) and Z at last registered M851 position. **Sending M114 command resets Repetier's position indicator to current printer-known location which is correct.** Don't attempt manual jog on Z before asking M114 to reset Repetier's position indicator or you could send Z right into the heat bed Using this, one could set M851 to a larger (negative) value than the previous one to use manual jog on Z to set the new one, instead of setting M851 to 0 as indicated above and then having to manually input G0 codes to get Z to paper-grab height. **Warning !** If using this method be very careful on where you click on the Z jog for you are tricking the printer's knowledge of where the print-bed is and you can send it straight into it. ++++ ==== Useful G-Code ==== //A complete list of marlin G-code can be found [[http://marlinfw.org/docs/gcode/G000-G001.html|here]]// ^ G-Code ^ Action ^ Example ^ | **G type G-Codes** ||| | G1 | Linear move (F = accel.) | G1 X10 F3000 | | G28 | Home | G28 X Y Z or just G28 | | G29 | Bed-leveling | see [[http://marlinfw.org/docs/gcode/G029-abl.html|usage]] | | G30 | Single Z-probe | - | | G92 | Set position | G92 Z10 | | **M type G-Codes** ||| | M17 | Activate/Deactivate motors | - | | M24 | Pause/Resume print | - | | M92 | Set steps/unit | M92 E600 | | M114 | Get current position | - | | M119 | Get endstop status | Useful for testing a Z sensor | | M203 | Set max feedrate on axis | M203 X200 | | M211 | Toggle Software Endstop | Useful for setting a mechanical Z endstop in position | | M410 | Quickstop | Needs re-homing afterwards. Steppers out of pos. | | M500 | Save settings to EEPROM | - | | M503 | Get current settings | Feedrate, acceleration, etc. | ===== Ressources ===== === General === *[[https://www.thingiverse.com/thing:40465|Thingiverse - 6mm frame]] *[[https://www.prusaprinters.org/does-your-freshly-assembled-original-prusa-i3-mk3-print-as-the-best-it-can/|Prusa Official Site - Printer calibration troubleshooting]] *[[https://help.prusa3d.com/|Prusa Official troubleshooting guides]] *[[https://www.youtube.com/channel/UCb8Rde3uRL1ohROUVg46h1A|Thomas Sanladerer YT Channel]] *[[https://en.wikipedia.org/wiki/Tetrahydrofuran|Wikipedia : Tetrahydrofuran (PLA smoother)]] *[[https://marlinfw.org/|Marlin Firmware Home Page]] === RepRap === *[[https://reprap.org/wiki/Safety|General Safety Guide]] *[[https://reprap.org/wiki/Board_safety|Board Safety]] *[[https://reprap.org/wiki/Choosing_a_Power_Supply_for_your_RepRap#LED_strip_PSUs_or_ATX_PSUs_.3F|Choosing PSU]] *[[https://reprap.org/wiki/Triffid_Hunter%27s_Calibration_Guide#E_steps|Triffid Hunter's Calibration Guide (RepRap)]] *[[https://reprap.org/wiki/RAMPS_1.4|RepRap Wiki : RAMPS]] === Smoothieboard === *[[http://smoothieware.org/3D-printer-guide|Main 3D Printer Guide]] *[[http://smoothieware.org/configuration-options|Configuration options]] *[[https://forum.makerforums.info/c/controllers/smoothie|Smoothieboard forum]] *[[https://www.nxp.com/docs/en/data-sheet/LPC1769_68_67_66_65_64_63.pdf|LPC1769 Datasheet]] === eMotronic === *[[https://www.reprap-france.com/article/lemotronic-quesaco|Article eMotion Tech]] *[[http://www.mon-fablab.fr/labtech/cartes_elec/emotronic_board|Doc Lab'Tech]] === Post-Processing === *[[https://rigid.ink/blogs/news/how-to-finish-your-3d-prints|Rigid Ink - Ultimate Guide to Filling, Priming, Sanding & Painting 3D Printed Parts]] *[[https://rigid.ink/blogs/news/how-to-smooth-pla-to-a-mirror-finish|Rigid Ink - Guide to sanding PLA]]