https://reprap.org/mediawiki/api.php?action=feedcontributions&user=Eltoozero&feedformat=atomRepRap - User contributions [en]2024-03-29T15:21:56ZUser contributionsMediaWiki 1.30.0https://reprap.org/mediawiki/index.php?title=Tft32&diff=188058Tft322020-06-15T23:41:37Z<p>Eltoozero: /* Firmware */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
* Fundamentally: Functions as touch-screen "head end" to your 3d printer.<br />
* User-defined buttons that can send custom gcode commands.<br />
* With a suitable wifi interface, you can access the serial port console via wifi. (via Pronterface, which supports IP Serial devices)<br />
* Onboard power outage recovery when printing from connected storage. (has a supercap).<br />
* Supports filament runout detection. (via IO pins)<br />
<br />
== Wifi ==<br />
<br />
A bit of a misnomer, the TFT32 unit is already communicating with your actual printer mainboard using a serial interface, and the "wifi" module is really a wifi-rs232 converter, so you're going Wifi->RS232->TFT32->RS232->Mainboard.<br />
<br />
Either way, the MKS HLK-WIFI module connects via an 8-pin 2x4 ribbon cable, exactly like the main interface, and is configured using parameters in the mks_config.txt and can operate in client mode to connect to an existing AP by specifying SSID and Key, or hotspot mode; using a static or dynamic IP address.<br />
<br />
[https://osoyoo.com/2016/07/28/mks-hlkwifi/ Wifi Howto]<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware Setup ==<br />
<br />
=== Marlin ===<br />
#mainboard firmware setting(marlin:1; repetier:2; smoothie:3)<br />
>cfg_firmware_type:1<br />
<br />
If you're running an older (1.x branch) Marlin: no changes on the printer firmware are required.<br />
<br />
If you're attempting to run Marlin 2.0.x firmwares the ADVANCED_OK feature is not compatible and must be disabled: you will be able to move and heat, but printing from SD card will "hang" and you won't get heating when the print tries to start.<br />
<br />
The MKSTFT unit has it's own firmware:<br />
<br />
[https://github.com/makerbase-mks/MKS-TFT Latest MKS Official Firmware for TFTXX models]<br />
<br />
=== Repetier ===<br />
#mainboard firmware setting(marlin:1; repetier:2; smoothie:3)<br />
>cfg_firmware_type:2<br />
<br />
=== Smoothie ===<br />
#mainboard firmware setting(marlin:1; repetier:2; smoothie:3)<br />
>cfg_firmware_type:3<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
* https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
* https://github.com/makerbase-mks/MKS-TFT<br />
* [https://files.banggood.com/2016/10/MKS-TFT32-DataSheet.pdf TFT32 User Manual (Banggood)]<br />
* [https://www.roboter-bausatz.de/media/pdf/1f/7b/e2/MKS-TFT-3-5-V1-0Manual.pdf TFT35 User Manual]<br />
* [https://github.com/majurca/MKS-TFT28-NEW-PICTURES TFT28 Dark Theme]<br />
* [https://github.com/DenisShelema/MKS-TFT3.5-light-and-dark-themes TFT35 Dark & Light Themes]<br />
* [https://github.com/makerbase-mks/MKS-TFT Latest MKS Official Firmware for TFTXX models]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188054Tft322020-06-13T01:00:24Z<p>Eltoozero: /* Firmware */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
* Fundamentally: Functions as touch-screen "head end" to your 3d printer.<br />
* User-defined buttons that can send custom gcode commands.<br />
* With a suitable wifi interface, you can access the serial port console via wifi. (via Pronterface, which supports IP Serial devices)<br />
* Onboard power outage recovery when printing from connected storage. (has a supercap).<br />
* Supports filament runout detection. (via IO pins)<br />
<br />
== Wifi ==<br />
<br />
A bit of a misnomer, the TFT32 unit is already communicating with your actual printer mainboard using a serial interface, and the "wifi" module is really a wifi-rs232 converter, so you're going Wifi->RS232->TFT32->RS232->Mainboard.<br />
<br />
Either way, the MKS HLK-WIFI module connects via an 8-pin 2x4 ribbon cable, exactly like the main interface, and is configured using parameters in the mks_config.txt and can operate in client mode to connect to an existing AP by specifying SSID and Key, or hotspot mode; using a static or dynamic IP address.<br />
<br />
[https://osoyoo.com/2016/07/28/mks-hlkwifi/ Wifi Howto]<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
[https://github.com/makerbase-mks/MKS-TFT Latest MKS Official Firmware for TFTXX models]<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
* https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
* https://github.com/makerbase-mks/MKS-TFT<br />
* [https://files.banggood.com/2016/10/MKS-TFT32-DataSheet.pdf TFT32 User Manual (Banggood)]<br />
* [https://www.roboter-bausatz.de/media/pdf/1f/7b/e2/MKS-TFT-3-5-V1-0Manual.pdf TFT35 User Manual]<br />
* [https://github.com/majurca/MKS-TFT28-NEW-PICTURES TFT28 Dark Theme]<br />
* [https://github.com/DenisShelema/MKS-TFT3.5-light-and-dark-themes TFT35 Dark & Light Themes]<br />
* [https://github.com/makerbase-mks/MKS-TFT Latest MKS Official Firmware for TFTXX models]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188053Tft322020-06-13T00:59:23Z<p>Eltoozero: Added links</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
* Fundamentally: Functions as touch-screen "head end" to your 3d printer.<br />
* User-defined buttons that can send custom gcode commands.<br />
* With a suitable wifi interface, you can access the serial port console via wifi. (via Pronterface, which supports IP Serial devices)<br />
* Onboard power outage recovery when printing from connected storage. (has a supercap).<br />
* Supports filament runout detection. (via IO pins)<br />
<br />
== Wifi ==<br />
<br />
A bit of a misnomer, the TFT32 unit is already communicating with your actual printer mainboard using a serial interface, and the "wifi" module is really a wifi-rs232 converter, so you're going Wifi->RS232->TFT32->RS232->Mainboard.<br />
<br />
Either way, the MKS HLK-WIFI module connects via an 8-pin 2x4 ribbon cable, exactly like the main interface, and is configured using parameters in the mks_config.txt and can operate in client mode to connect to an existing AP by specifying SSID and Key, or hotspot mode; using a static or dynamic IP address.<br />
<br />
[https://osoyoo.com/2016/07/28/mks-hlkwifi/ Wifi Howto]<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
* https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
* https://github.com/makerbase-mks/MKS-TFT<br />
* [https://files.banggood.com/2016/10/MKS-TFT32-DataSheet.pdf TFT32 User Manual (Banggood)]<br />
* [https://www.roboter-bausatz.de/media/pdf/1f/7b/e2/MKS-TFT-3-5-V1-0Manual.pdf TFT35 User Manual]<br />
* [https://github.com/majurca/MKS-TFT28-NEW-PICTURES TFT28 Dark Theme]<br />
* [https://github.com/DenisShelema/MKS-TFT3.5-light-and-dark-themes TFT35 Dark & Light Themes]<br />
* [https://github.com/makerbase-mks/MKS-TFT Latest MKS Official Firmware for TFTXX models]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188052Tft322020-06-13T00:51:51Z<p>Eltoozero: /* Capabilities */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
* Fundamentally: Functions as touch-screen "head end" to your 3d printer.<br />
* User-defined buttons that can send custom gcode commands.<br />
* With a suitable wifi interface, you can access the serial port console via wifi. (via Pronterface, which supports IP Serial devices)<br />
* Onboard power outage recovery when printing from connected storage. (has a supercap).<br />
* Supports filament runout detection. (via IO pins)<br />
<br />
== Wifi ==<br />
<br />
A bit of a misnomer, the TFT32 unit is already communicating with your actual printer mainboard using a serial interface, and the "wifi" module is really a wifi-rs232 converter, so you're going Wifi->RS232->TFT32->RS232->Mainboard.<br />
<br />
Either way, the MKS HLK-WIFI module connects via an 8-pin 2x4 ribbon cable, exactly like the main interface, and is configured using parameters in the mks_config.txt and can operate in client mode to connect to an existing AP by specifying SSID and Key, or hotspot mode; using a static or dynamic IP address.<br />
<br />
[https://osoyoo.com/2016/07/28/mks-hlkwifi/ Wifi Howto]<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
- https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
- https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188051Tft322020-06-13T00:47:57Z<p>Eltoozero: /* Capabilities */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
* Fundamentally: Functions as touch-screen "head end" to your 3d printer.<br />
* User-defined buttons that can send custom gcode commands.<br />
* With a suitable wifi interface, you can access the serial port via wifi.<br />
* Onboard power outage recovery when printing from connected storage. (has a supercap).<br />
* Supports filament runout detection. (via IO pins)<br />
<br />
== Wifi ==<br />
<br />
A bit of a misnomer, the TFT32 unit is already communicating with your actual printer mainboard using a serial interface, and the "wifi" module is really a wifi-rs232 converter, so you're going Wifi->RS232->TFT32->RS232->Mainboard.<br />
<br />
Either way, the MKS HLK-WIFI module connects via an 8-pin 2x4 ribbon cable, exactly like the main interface, and is configured using parameters in the mks_config.txt and can operate in client mode to connect to an existing AP by specifying SSID and Key, or hotspot mode; using a static or dynamic IP address.<br />
<br />
[https://osoyoo.com/2016/07/28/mks-hlkwifi/ Wifi Howto]<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
- https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
- https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188050Tft322020-06-13T00:43:18Z<p>Eltoozero: </p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
Custom buttons that can run custom gcode commands.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Wifi ==<br />
<br />
A bit of a misnomer, the TFT32 unit is already communicating with your actual printer mainboard using a serial interface, and the "wifi" module is really a wifi-rs232 converter, so you're going Wifi->RS232->TFT32->RS232->Mainboard.<br />
<br />
Either way, the MKS HLK-WIFI module connects via an 8-pin 2x4 ribbon cable, exactly like the main interface, and is configured using parameters in the mks_config.txt and can operate in client mode to connect to an existing AP by specifying SSID and Key, or hotspot mode; using a static or dynamic IP address.<br />
<br />
[https://osoyoo.com/2016/07/28/mks-hlkwifi/ Wifi Howto]<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
- https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
- https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188049Tft322020-06-12T21:35:44Z<p>Eltoozero: Added wifi details</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
Custom buttons that can run custom gcode commands.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Wifi ==<br />
<br />
A bit of a misnomer, the TFT32 unit is already communicating with your actual printer mainboard using a serial interface, and the "wifi" module is really a wifi-rs232 converter, so you're going Wifi->RS232->TFT32->RS232->Mainboard.<br />
<br />
Either way, the MKS HLK-WIFI module connects via an 8-pin 2x4 ribbon cable, exactly like the main interface, and is configured using parameters in the mks_config.txt and can operate in client mode to connect to an existing AP by specifying SSID and Key, or hotspot mode; using a static or dynamic IP address.<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
- https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
- https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188048Tft322020-06-12T21:25:14Z<p>Eltoozero: </p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
* TFT24 = 2.4" screen<br />
* TFT28 = 2.8" screen (same firmware as TFT32)<br />
* TFT32 = 3.2" screen (same firmware as TFT28)<br />
* TFT35 = 3.5" screen<br />
* TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
Custom buttons that can run custom gcode commands.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having an available serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie), configured in mks_config.txt.<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Firmware Upgrade ==<br />
<br />
the TFT unit firmware is loaded from USB/SD Card (I have only tested SD card):<br />
<br />
# Set FileSys to SD<br />
# place the following files on SD card:<br />
## mkstft28.bin (actual firmware file; tft28 firmware also applies to tft32)<br />
## mks_pic (images for the "skin")<br />
## mks_font (font files)<br />
## mks_config.txt (configuration file)<br />
# Reboot TFT32 to upload firmware.<br />
<br />
If you get stuck at at a message "loading bmp_dir.bin"; you are loading incorrect mks_pics for your model.<br />
<br />
== Compatibility ==<br />
<br />
* MKS Base<br />
* MKS Gen<br />
* MKS Mini<br />
* Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
- https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
- https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188047Tft322020-06-12T19:34:50Z<p>Eltoozero: /* TFT32 */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
- TFT24 = 2.4" screen<br />
- TFT32 = 3.2" screen<br />
- TFT28 = 2.8" screen<br />
- TFT35 = 3.5" screen<br />
- TFT70 = 7.0" screen<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having a spare serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie).<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Compatibility ==<br />
<br />
- MKS Base<br />
- MKS Gen<br />
- MKS Mini<br />
- Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
- https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
- https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188046Tft322020-06-12T19:33:56Z<p>Eltoozero: /* Links */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
- TFT32 = 3.2" screen<br />
- TFT28 = 2.8" screen<br />
<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having a spare serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie).<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Compatibility ==<br />
<br />
- MKS Base<br />
- MKS Gen<br />
- MKS Mini<br />
- Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
- https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
- https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188045Tft322020-06-12T19:33:42Z<p>Eltoozero: /* Links */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
- TFT32 = 3.2" screen<br />
- TFT28 = 2.8" screen<br />
<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having a spare serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie).<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Compatibility ==<br />
<br />
- MKS Base<br />
- MKS Gen<br />
- MKS Mini<br />
- Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/<br />
https://github.com/makerbase-mks/MKS-TFT</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188044Tft322020-06-12T19:32:46Z<p>Eltoozero: /* Compatibility */</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
- TFT32 = 3.2" screen<br />
- TFT28 = 2.8" screen<br />
<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having a spare serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie).<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Compatibility ==<br />
<br />
- MKS Base<br />
- MKS Gen<br />
- MKS Mini<br />
- Creality Mainboard >=2.0 (m2560 w/ extra serial header)<br />
<br />
== Links ==<br />
<br />
https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Tft32&diff=188043Tft322020-06-12T19:28:41Z<p>Eltoozero: General info about resistive touch controllers</p>
<hr />
<div>== TFT32 ==<br />
<br />
These resistive touch screen ARM based units indirectly control a 3D printer via gcodes sent via a serial interface.<br />
<br />
Available under several different names, indicating the touch screen size:<br />
<br />
- TFT32 = 3.2" screen<br />
- TFT28 = 2.8" screen<br />
<br />
<br />
== Capabilities ==<br />
<br />
Functions as touch-screen "head end" to your printer.<br />
With a suitible wifi interface, you can access the serial port via wifi.<br />
<br />
== Usage ==<br />
<br />
There is no "printer side" configuration required, other than having a spare serial interface and knowing the correct baud rate and "flavor" of gcode (Marlin, Repitier, Smoothie).<br />
<br />
== Firmware ==<br />
<br />
No changes on the printer firmware are required, but the screen has it's own firmware.<br />
<br />
== Compatibility ==<br />
<br />
<br />
== Links ==<br />
<br />
https://osoyoo.com/2016/07/25/mks-tft-2-8-touch-screen/</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Z_probe&diff=155137Z probe2015-09-30T21:53:17Z<p>Eltoozero: /* Inductive probing: */</p>
<hr />
<div>One strategy to compensate for an un-level bed is to make multiple measurements of the bed using a probe and to use those measurements to calculate a dynamic offset of the z-distance to be employed during the print.<br />
<br />
'''Caution:''' Using this feature will make your z-motors run nearly continuously, how this affects the lifetime of the motors running or single stepper driver is up for debate.<br />
<br />
=== Inductive probing: ===<br />
<br />
A very popular model of inductive probe is the LJ12A3-4-Z/BX (blue tip), this probe is normally closed so your firmware configuration should treat this as an "inverted" endstop.<br />
<br />
LJ12A3-4-Z/B'''Y''' (brown tip) also available and is normally open.<br />
<br />
Additionally, this probe is rated to run at 6-36V and output the same, which is not safe to directly connect to the 5V inputs on the RAMPS board.<br />
<br />
[[File:7805ZPROBE.png|right|600px]] To adapt this probe to the 5V input you can utilize a voltage divider, or a 7805 voltage regulator tied inline to the output of the probe. <br />
<br />
Appropriate values for a voltage divider from 12v to 5v would be 4.7K and 6.8K.<br />
<br />
Please Note: If while printing you notice your z-motors oscillate more than a half turn or so as your head travels back and forth across the bed you should probably stop the print and eyeball the nozzle height across the bed, you may need to twiddle one of the z-axis lead screws a turn or so to bring the distance closer. Having a "mostly" level bed definitely doesn't hurt the process, the less the hardware has to compensate the better.<br />
<br />
There is a repeatability test in Marlin available through an [[G-code#M48:_Measure_Z-Probe_repeatability|M48 GCode]] command which (if sent alone) will probe the current bed point 10x and return the standard deviation, the closer to zero the better.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Z_probe&diff=155136Z probe2015-09-30T21:47:01Z<p>Eltoozero: /* Inductive probing: */</p>
<hr />
<div>One strategy to compensate for an un-level bed is to make multiple measurements of the bed using a probe and to use those measurements to calculate a dynamic offset of the z-distance to be employed during the print.<br />
<br />
'''Caution:''' Using this feature will make your z-motors run nearly continuously, how this affects the lifetime of the motors running or single stepper driver is up for debate.<br />
<br />
=== Inductive probing: ===<br />
<br />
A very popular model of inductive probe is the LJ12A3-4-Z/BX (blue tip), this probe is normally closed so your firmware configuration should treat this as an "inverted" endstop.<br />
<br />
LJ12A3-4-Z/B'''Y''' (brown tip) also available and is normally open.<br />
<br />
Additionally, this probe is rated to run at 6-36V and output the same, which is not safe to directly connect to the 5V inputs on the RAMPS board.<br />
<br />
[[File:7805ZPROBE.png|right|600px]] To adapt this probe to the 5V input you can utilize a voltage divider, or a 7805 voltage regulator tied inline to the output of the probe. <br />
<br />
Appropriate values for a voltage divider from 12v to 5v would be 4.7K and 6.8K.<br />
<br />
Please Note: If while printing you notice your z-motors oscillate more than a half turn or so as your head travels back and forth across the bed you should probably stop the print and eyeball the nozzle height across the bed, you may need to twiddle one of the z-axis lead screws a turn or so to bring the distance closer. Having a "mostly" level bed definitely doesn't hurt the process, the less the hardware has to compensate the better.<br />
<br />
There is a repeatability test in Marlin available through an M48 command which (if sent alone) will probe the current bed point 10x and return the standard deviation, the closer to zero the better.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Triffid_Hunter%27s_Calibration_Guide&diff=155135Triffid Hunter's Calibration Guide2015-09-30T21:37:04Z<p>Eltoozero: /* Calculate */</p>
<hr />
<div>{{Languages}}<br />
<br />
==Prerequisites==<br />
# A tool to precisely measure 100mm. A vernier caliper is ideal.<br />
# A tool to precisely measure something 0.5mm wide. A micrometer is ideal, but a vernier caliper will do.<br />
# Know your stepper motors' '''full steps per revolution''' value. steps = 360 / angle, so 1.8&deg; = 200 steps, 0.9&deg; = 400 steps, etc.<br />
# Know your '''stepper drivers' microsteps''' setting. Most Pololus are set to 16x. GEN3 driver 2.3 is fixed to 2 (half step). Some boards have 32x.<br />
# Know the number of '''teeth on your pulleys'''. Standard printed pulleys have 8 teeth. Most machined pulleys have 10 or 12 teeth since 8 tooth is technically too small for T5 belt<br />
# Know your '''belt pitch'''! XL and T5 belts /look/ the same, but the difference is important!<br />
# Know the number of '''teeth on your extruder gears''', or at least the gear ratio.<br />
# Remove all sources of backlash. Your parts won't be usable as calibration pieces if you have lash!<br />
# Open the [http://prusaprinters.org/calculator/ Online RepRap Calculator] to find XY and E steps, layer heights, and acceleration.<br />
<br />
==XY steps==<br />
<br />
[[File:Teacup Configtool Belt Calculator.png | 300px | thumb | [[Teacup Firmware]]'s Configtool comes with a steps/mm calculator. Values from there are usable for other firmwares, too.]]<br />
<br />
Assuming you're using belts and pulleys, the XY steps-per-mm can be accurately calculated using your motor, pulley, and belt characteristics, and once set they shouldn't need to be calibrated further. But there's no harm in making sure! '''If you've calculated this value correctly but your objects come out the wrong size by a noticeable amount, your belts may be damaged or something else is awry!'''<br />
<br />
The basic formula is:<br />
<br />
<math>steps/mm = \frac{motor\ steps\ per\ rev * driver\ microstep}{belt\ pitch * pulley\ number\ of\ teeth}</math><br />
<br />
Some common examples:<br />
<pre><br />
// NEMA 17 motor with T2 belt and 20-tooth pulley:<br />
(200 * 16) / (2 * 20) = 80.0<br />
<br />
// NEMA 17 motor with T5 belt and 8-tooth pulley:<br />
(200 * 16) / (5 * 8) = 80.0<br />
<br />
// NEMA 17 motor with XL belt and 8-tooth pulley:<br />
(200 * 16) / (5.08 * 8) = 78.74<br />
</pre><br />
<br />
==Z steps==<br />
Most RepRap printers use a pair of threaded rods for the Z axis. So to calculate how far the Z axis moves for each revolution of the motor, first you need to know how much rotation is being transmitted to the Z rods, and then use the "thread pitch" of the rod (distance-per-revolution) to determine the vertical motion.<br />
<br />
The basic formula to calculate motion on a rotating rod is:<br />
<br />
steps_per_mm = (motor_steps_per_rev * driver_microstep) / thread_pitch <br />
<br />
Some common examples:<br />
<pre><br />
// NEMA 17 with standard pitch M5 threaded rod:<br />
(200 * 16) / 0.8 = 4000<br />
<br />
// NEMA 17 with standard pitch M8 threaded rod:<br />
(200 * 16) / 1.25 = 2560<br />
<br />
// NEMA 17 with SAE 5/16" threaded rod. It has 18 threads per inch (25.4mm / 18):<br />
(200 * 16) / (25.4 / 18) = 2267.7165355<br />
</pre><br />
<br />
Some printers connect the Z motor to the Z rods with a belt and pulleys. As long as the pulleys have the same diameter the above formula will work. But if the pulleys differ you'll need to include this ratio in the final result. For example, if the motor pulley was half the size of the rod pulley, you would need to multiply the final result by 2.<br />
<br />
==E steps==<br />
There are an increasingly wide variety of motors and extruder setups to choose from. "Wade" extruders use a NEMA motor to drive a large reduction gear that turns a "hobbed bolt." Direct-drive extruders typically use a motor with a planetary gearbox to turn a drive gear, such as the popular MK7. Bowden setups can use either method to push the filament through a tube to the hot end. There are others, such as worm drives, but we won't get into those here.<br />
<br />
===Calculate===<br />
For a typical Wade extruder, the hobbed bolt will be made from an M8 bolt, and its "effective diameter" will be around 7mm. The direct-drive MK7 gear is specified as having an effective diameter of 10.56mm. These are just starting points to get close to the correct value, and then you'll measure and calibrate to get the exact value later.<br />
<br />
The standard formula is:<br />
e_steps_per_mm = (motor_steps_per_rev * driver_microstep) * (big_gear_teeth / small_gear_teeth) / (hob_effective_diameter * pi)<br />
<br />
Some typical examples:<br />
<pre><br />
// Classic Wade with a 39:11 gear ratio<br />
(200 * 16) * (39 / 11) / (7 * 3.14159) = 515.91048<br />
<br />
// Gregstruder with a 51:11 gear ratio<br />
(200 * 16) * (51 / 11) / (7 * 3.14159) = 674.65217<br />
<br />
// Gregstruder with a 43:10 gear ratio<br />
(200 * 16) * (43 / 10) / (7 * 3.14159) = 625.70681<br />
<br />
// MK7 Direct Drive with 2engineers 50:1 planetary gear motor<br />
(48 * 16) * (50 / 1) / (10.56 * 3.14159) = 1157.49147<br />
<br />
// AndrewBCN Ultimate Greg's Wade's Geared Extruder (thing:961630) on RAMPs<br />
(200 * 16) * (45 / 11) / (7 * 3.14159) = 595.280818 <br />
<br />
// RepRapPro Mendel Mini Extruder on RAMPs<br />
(200 * 16) * (61 / 13) / (7 * 3.14159) = 682.79<br />
</pre><br />
<br />
===Measure===<br />
Required tools: vernier caliper with depth gauge, or similar tool that can precisely measure 100mm. Your hob effective diameter is unlikely to be exactly 7mm.<br />
<br />
# Remove the hot-end from extruder so you don't waste filament.<br />
# Feed in some filament.<br />
# Using the extruder body as a reference point, mark the filament at 120mm.<br />
# Tell the printer to feed 100mm of filament.<br />
# Measure the distance from the extruder body to the mark you made. It will be over 20mm if it moved too little, under if it moved too far.<br />
# <pre>new_e_steps = old_e_steps * (100 / distance_actually_moved) … or, old_e_steps * (100 / (120 - distance_to_mark))</pre><br />
# Set this value in your firmware. You may need to re-flash your board. Sprinter/Marlin supports M92 E''nnn'' to set this value temporarily.<br />
# Repeat from Step 3 until you get between 96-104mm. Then continue with this guide. You'll dial it in perfectly later on.<br />
# '''Don't flash firmware yet.''' There's a further refinement to this value below. ''Why?'' The back-pressure from the hot-end alters how much plastic each hob revolution pushes, and you'll probably end up tightening your idler more which reduces the hob effective diameter.<br />
# Re-attach hot end.<br />
<br />
==Z height==<br />
At Z=0, you should be able to have a single piece of paper between your nozzle and the bed, and move it with a little "grabbing" but not quite enough to bend the paper when you push it. This is a simple, quick and effective test to use when levelling your bed. This small gap almost perfectly compensates for thermal expansion, which causes your hot-end to actually get longer as it heats up!<br />
<br />
Rather than tuning your endstop endlessly, you could simply make a macro that homes Z using the endstop then sends G92 Z-nnn where -nnn is the negative position of your endstop. Your endstop must of course be below Z=0 for this to work. (Not too much, or you may damage the nozzle and/or print-bed!) Ideally in this setup your endstop would be set so that the (cold) nozzle just touches the bed, and then you'd send G92 Z=-0.1 (or your measured thermal expansion). Note that most slicing software adds a HOME command followed by G92 Z0 to the starting G-Code, so you will also need to tune your slicing settings to make sure your G-Code homes to Z-nnn. There are now many adjustable Z-endstops available for download, and these can be real time-savers.<br />
<br />
When your Z=0 point is set correctly, your bottom layer will be slightly fatter than layers on top, but not extremely so. Most slicing software is set up by default to extrude a little extra material in the first layer, and you can tune this to get the perfect extrusion for your first layer, as well. (See below.)<br />
<br />
Bed adhesion is strongly related to the Z=0 point. If you're not getting enough adhesion, print slower with a lower Z=0 point so the first layer is squished more. If you're getting too much adhesion, raise the Z=0 point a little so the first layer isn't quite so squished.<br />
<br />
# Find the appropriate Z=0 point.<br />
# Send G92 Z0.<br />
# Prepare printer for printing- warm up bed, load filament, etc.<br />
<br />
==Slicer settings==<br />
===Layer height, Extrusion width===<br />
These are simple to visualise. When your extruder draws a line of plastic, that line has a height and width. You get to choose these values.<br />
<br />
Best results are obtained when layer height < 80% of nozzle diameter, and extrusion width >= nozzle diameter.<br />
<br />
Eg; with an 0.35 nozzle, your '''maximum''' layer height is 0.35*0.8= '''0.28mm''' and your extrusion width should be 0.4mm or greater.<br />
with an 0.5mm nozzle, your layer height can be up to 0.4mm, and an 0.25mm nozzle will give you 0.2mm max layer height.<br />
<br />
'''You can use a lower layer height or larger extrusion width if you wish, it will work fine'''. The slicing software automatically calculates the appropriate volume to extrude based on the settings you choose. '''There is no hard lower limit on layer height''' - it is limited by your ability to keep flow consistent at very low flowrates. Some reprappers have printed layers as small as 5 micron - 0.005mm!<br />
<br />
Personally I go for layer height of 0.2mm, and extrusion width of 0.5mm regardless of which nozzle I'm using.<br />
<br />
Slic3r automatically chooses an extrusion width for you based on your nozzle diameter. If you're determined to choose, you can use the ''extrusion width'' advanced setting. It is frequently advantageous to choose as models may have walls of a particular width, and by choosing you can ensure they are entirely filled with perimeter with no gap in the middle and no infill.<br />
<br />
==Nozzle Temperature==<br />
Each type of plastic, and each colourant for each type of plastic alters the ideal printing temperature. E.g., I can print opaque PLA at 165°C with fantastic results, but my translucent PLA prefers 180°C!<br />
<br />
Every machine will have different numbers due to differences in thermistor, and how close to barrel temperature your thermistor is actually sensing.<br />
<br />
Here's how I find my optimum temperature for each roll of filament that I have:<br />
<br />
# Choose a fairly simple model that's large enough that you can clearly see the infill while it's printing<br />
# Make sure your hobbed bolt's teeth are clean of debris such as chunks of plastic<br />
# Make sure your idler is tight! really tight! "it hurts my fingers to pull on it and I still can't move it" tight! A too-loose idler gives ''exactly the same symptoms'' as too low temperature.<br />
# Start printing<br />
# Lower temperature by 5° every 2-3 layers<br />
# When infill starts being a row of dots instead of a line, increase temperature by 10°.<br />
# Keep monitoring print, increase by 5° if your infill goes dotty again If you find that your prints are weak along the layer lines or even delaminate mid-print, you may need to go higher again. With ABS, wrapping your printer in a towel helps a LOT by keeping out draughts and breezes- but beware any PLA parts caught within!<br />
# Store or remember that temperature for that type of filament<br />
<br />
==Bed Temperature==<br />
<br />
Bed adhesion is critically important for quality prints. With the right amount of bed adhesion, your parts will:<br />
# stick to the bed<br />
# not curl or warp<br />
# not exhibit 'hourglass' warping, and<br />
# detach by themselves when the bed is cool.<br />
<br />
This procedure helps attain 1 through 3 by finding the correct bed surface temperature. 4 is obtained by experimenting with various bed coatings such as PVA wood glue (best for PLA), [http://forums.reprap.org/read.php?262,189335 UHU Glue] (for nylon), automotive window tint, hairspray, [http://forums.reprap.org/read.php?4,121996 ABS juice], [http://forums.reprap.org/read.php?4,156005 sugar water] (ABS), etc.<br />
<br />
# Pick a starting temperature. a little too high is better than too low for this test. Suggestions: 110°C for ABS, 65°C for PLA.<br />
# Start a print. If your first layer gets poor adhesion, increase by 3-5° and start again.<br />
# At layer 2, send M104 S0 so your nozzle heater turns off. '''LEAVE THE BED HEATER ALONE'''.<br />
# At layer 3, pause the print and move the nozzle away from it. '''LEAVE THE BED HEATER ALONE'''.<br />
# Prepare/consume a <favourite beverage> while you wait for bed surface temperature to reach thermal equilibrium. This should take 10 minutes at most, generally 5 minutes is plenty.<br />
# Remove the print from your bed. If it is soft or stretchy, your bed temperature is too high. Reduce by 5° and start again. It should behave almost the same as when it is cold.<br />
# When your bed temperature is correct, your part will have hardened while you consumed <favourite beverage> and if you set your bed temperature 5° higher it will remain soft.<br />
<br />
You should generally print your first layer with the bed about 10° hotter than the regular layers' temperature, to ensure that the plastic is very sticky and gets a good grip.<br />
<br />
For reference, the SURFACE temperature of your bed (NOT the temperature measured by your sensor) should be around 105°C for ABS, and around 57°C for PLA.<br />
<br />
Your thermistor '''WILL''' sense a higher temperature than the surface – a gradient of several degrees forms across your glass. '''DO NOT''' muck with thermistor tables or move your thermistor to the surface. You '''WANT''' it close to the heater so it can respond quickly and give a short feedback loop. Just find ''whatever number'' gets the surface to the right temperature, and ''stick with it''!<br />
<br />
After performing this procedure, if your prints warp off the bed mid-print at ends or corners, try adding a brim (Slic3r/Cura setting) and experimenting with various bed coatings. PVA wood glue diluted very thinly in water is excellent for PLA, and certain brands of hairspray are reportedly excellent with ABS.<br />
<br />
==E Steps Fine Tuning==<br />
<br />
Now, with everything very close to ideal values, we can finally dial E steps in that final little bit!<br />
<br />
# Find an object with flat tops on a number of levels, such as [http://www.thingiverse.com/thing:24238 this cube stack test] (scale this object by 250% after loading in Slic3r)<br />
# Slice at 95% rectilinear infill. Use the lowest layer height you're comfortable with - the lower the layer height used for this test, the finer your resulting E steps calibration will be. I use 0.2mm for first run, and if I'm feeling ambitious I'll repeat this process at 0.1mm.<br />
# Print.<br />
# Ignore the first 5-6 layers because they're too sensitive to the exact height of the first layer. If it's ''obviously'' over-filling or under-filling, alter E steps or Z=0 point and restart the print.<br />
# Observe infill. If you '''can't''' see ''tiny'' little gaps between the lines, '''reduce''' E steps by 0.5% every 2 layers until you can see tiny gaps.<br />
# Observe solid top layers. If you '''can''' see tiny gaps, '''increase''' E steps by 0.5% every 2 layers until there's no gaps in the top.<br />
# Send the new E steps to your printer with M92 E''nnn'' ''without even pausing the print'' - you will see the result in a couple of layers when the change is this small.<br />
# Goto 5 until the infill has tiny gaps '''AND''' the solid top layers do not.<br />
# '''Now, your E steps value is extremely fine-tuned! Save this value in your firmware's configuration and flash to make permanent.'''<br />
<br />
==Finish==<br />
<br />
'' '''Now''' '' print your favourite calibration piece (e.g., [http://www.thingiverse.com/thing:9804 ultimate calibration]) and see how it measures!<br />
<br />
== Final Polish: Bed Center==<br />
<br />
If you find that your prints are not winding up in the center of the bed you may need to configure a "homing offset" to correct the origin point (0,0) which should be in the lower left of your build area.<br />
<br />
If after homing your bed with a G28 command your nozzle winds up on the lower left of the printable build area, you should not need any additional tweaking as long as you're able to utilize your entire build-area, if not that may indicate your X_MAX_POS/Y_MAX_POS are set incorrectly.<br />
<br />
If however your nozzle homes off the bed you'll need to compensate with a negative value for the X_MIN_POS/Y_MIN_POS indicating the distance from "home position" to the bed area.<br />
<br />
Example: My X-Axis has a total travel of > 245mm but my bed is only 200mm wide, my X_MIN_POS is set to -45 so that after 45mm of travel it will end up at 0 on the extreme left side and after 245mm it will be the extreme right.<br />
<br />
Also see: [[Configuring Marlin Bed Dimensions]]<br />
<br />
==Optional: Switch to volumetric E units==<br />
'''''Note:''' as of Feb 1, 2014, Marlin supports volumetric E units natively, without this modification. Just send an M200 D<millimeters> to set filament diameter before your print, and the Marlin settings below are unnecessary. You still need to do step 3 (change the filament diameter in your slicer to scale the output to cubic millimeters).''<br />
<br />
It seems silly to me to have to reskein if you change filament diameter (i.e., when switching colours – or printers!). Follow these instructions if you want to use mm^3 units for E instead of mm.<br />
<br />
# Record the filament diameter setting you've been using in your slicer.<br />
# Calculate (filament_diameter / 2) ^ 2 * PI. For filament_diameter = 3.0mm, this is almost exactly 7. For 1.75mm filament, it's almost exactly 2.4.<br />
# Change your filament diameter in your slicer to 2*sqrt(1 / pi) = 1.128379<br />
# Divide your E_steps by the number from Step 2.<br />
# Multiply all your E-related speeds and accelerations (esp. maximums in firmware config!), and retract distance by the value from Step 2.<br />
# Repeat E steps calibration above. Your first print should be extremely close.<br />
<br />
Now you can reuse the same gcode over and over again, and simply alter E steps with M92 when you change filament, or use the same gcode on another printer.<br />
<br />
===Rationale===<br />
We currently have 3 tunables affecting one measurable - extrusion multiplier, filament diameter and E steps all affect the amount of plastic extruded.<br />
<br />
Filament diameter does not change significantly - it should not change mid-print, and only changes by a small amount when switching from one roll of filament to another.<br />
<br />
It should be possible to set two of these tunables to fixed values, and alter only the 3rd when necessary.<br />
<br />
It is sensible to choose the tunable which is easiest to alter - this is E steps which can be altered at any time (even mid-print) by sending M92 E''nnn''.<br />
<br />
The slicer calculates the volume of filament to extrude for each line segment. Then, it takes this volume and divides it by (filament_diameter / 2) ^ 2 * PI to find the distance of filament to extrude.<br />
<br />
SO if we alter our filament diameter such that (filament_diameter / 2)^2 * PI == 1.0, then the E words in our gcode will be in units of mm^3.<br />
<br />
Since our new unit is 7x bigger (area of a 3mm diameter circle is ~7mm^2, so 1mm(length) becomes 7mm^3(volume), for 1.75mm filament the factor is 2.4x), we have to adjust our retraction distance, and E steps and acceleration to suit the new units.<br />
<br />
See [http://wooden-mendel.blogspot.com/2011/09/volumetric-stage-two.html my blog post] for more info.<br />
<br />
[[Category:Calibration| ]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Triffid_Hunter%27s_Calibration_Guide&diff=155118Triffid Hunter's Calibration Guide2015-09-30T05:47:34Z<p>Eltoozero: /* Calculate */</p>
<hr />
<div>{{Languages}}<br />
<br />
==Prerequisites==<br />
# A tool to precisely measure 100mm. A vernier caliper is ideal.<br />
# A tool to precisely measure something 0.5mm wide. A micrometer is ideal, but a vernier caliper will do.<br />
# Know your stepper motors' '''full steps per revolution''' value. steps = 360 / angle, so 1.8&deg; = 200 steps, 0.9&deg; = 400 steps, etc.<br />
# Know your '''stepper drivers' microsteps''' setting. Most Pololus are set to 16x. GEN3 driver 2.3 is fixed to 2 (half step). Some boards have 32x.<br />
# Know the number of '''teeth on your pulleys'''. Standard printed pulleys have 8 teeth. Most machined pulleys have 10 or 12 teeth since 8 tooth is technically too small for T5 belt<br />
# Know your '''belt pitch'''! XL and T5 belts /look/ the same, but the difference is important!<br />
# Know the number of '''teeth on your extruder gears''', or at least the gear ratio.<br />
# Remove all sources of backlash. Your parts won't be usable as calibration pieces if you have lash!<br />
# Open the [http://prusaprinters.org/calculator/ Online RepRap Calculator] to find XY and E steps, layer heights, and acceleration.<br />
<br />
==XY steps==<br />
<br />
[[File:Teacup Configtool Belt Calculator.png | 300px | thumb | [[Teacup Firmware]]'s Configtool comes with a steps/mm calculator. Values from there are usable for other firmwares, too.]]<br />
<br />
Assuming you're using belts and pulleys, the XY steps-per-mm can be accurately calculated using your motor, pulley, and belt characteristics, and once set they shouldn't need to be calibrated further. But there's no harm in making sure! '''If you've calculated this value correctly but your objects come out the wrong size by a noticeable amount, your belts may be damaged or something else is awry!'''<br />
<br />
The basic formula is:<br />
<br />
<math>steps/mm = \frac{motor\ steps\ per\ rev * driver\ microstep}{belt\ pitch * pulley\ number\ of\ teeth}</math><br />
<br />
Some common examples:<br />
<pre><br />
// NEMA 17 motor with T2 belt and 20-tooth pulley:<br />
(200 * 16) / (2 * 20) = 80.0<br />
<br />
// NEMA 17 motor with T5 belt and 8-tooth pulley:<br />
(200 * 16) / (5 * 8) = 80.0<br />
<br />
// NEMA 17 motor with XL belt and 8-tooth pulley:<br />
(200 * 16) / (5.08 * 8) = 78.74<br />
</pre><br />
<br />
==Z steps==<br />
Most RepRap printers use a pair of threaded rods for the Z axis. So to calculate how far the Z axis moves for each revolution of the motor, first you need to know how much rotation is being transmitted to the Z rods, and then use the "thread pitch" of the rod (distance-per-revolution) to determine the vertical motion.<br />
<br />
The basic formula to calculate motion on a rotating rod is:<br />
<br />
steps_per_mm = (motor_steps_per_rev * driver_microstep) / thread_pitch <br />
<br />
Some common examples:<br />
<pre><br />
// NEMA 17 with standard pitch M5 threaded rod:<br />
(200 * 16) / 0.8 = 4000<br />
<br />
// NEMA 17 with standard pitch M8 threaded rod:<br />
(200 * 16) / 1.25 = 2560<br />
<br />
// NEMA 17 with SAE 5/16" threaded rod. It has 18 threads per inch (25.4mm / 18):<br />
(200 * 16) / (25.4 / 18) = 2267.7165355<br />
</pre><br />
<br />
Some printers connect the Z motor to the Z rods with a belt and pulleys. As long as the pulleys have the same diameter the above formula will work. But if the pulleys differ you'll need to include this ratio in the final result. For example, if the motor pulley was half the size of the rod pulley, you would need to multiply the final result by 2.<br />
<br />
==E steps==<br />
There are an increasingly wide variety of motors and extruder setups to choose from. "Wade" extruders use a NEMA motor to drive a large reduction gear that turns a "hobbed bolt." Direct-drive extruders typically use a motor with a planetary gearbox to turn a drive gear, such as the popular MK7. Bowden setups can use either method to push the filament through a tube to the hot end. There are others, such as worm drives, but we won't get into those here.<br />
<br />
===Calculate===<br />
For a typical Wade extruder, the hobbed bolt will be made from an M8 bolt, and its "effective diameter" will be around 7mm. The direct-drive MK7 gear is specified as having an effective diameter of 10.56mm. These are just starting points to get close to the correct value, and then you'll measure and calibrate to get the exact value later.<br />
<br />
The standard formula is:<br />
e_steps_per_mm = (motor_steps_per_rev * driver_microstep) * (big_gear_teeth / small_gear_teeth) / (hob_effective_diameter * pi)<br />
<br />
Some typical examples:<br />
<pre><br />
// Classic Wade with a 39:11 gear ratio<br />
(200 * 16) * (39 / 11) / (7 * 3.14159) = 515.91048<br />
<br />
// Gregstruder with a 51:11 gear ratio<br />
(200 * 16) * (51 / 11) / (7 * 3.14159) = 674.65217<br />
<br />
// Gregstruder with a 43:10 gear ratio<br />
(200 * 16) * (43 / 10) / (7 * 3.14159) = 625.70681<br />
<br />
// MK7 Direct Drive with 2engineers 50:1 planetary gear motor<br />
(48 * 16) * (50 / 1) / (10.56 * 3.14159) = 1157.49147<br />
<br />
// Ultimate Greg's Wade's Geared Extruder (2015)<br />
(200 * 16) * (45 / 11) / (7 * 3.14159) = 595.280818 <br />
<br />
// RepRapPro Mendel Mini Extruder<br />
(200 * 16) * (61 / 13) / (? * 3.14159) = 682.79<br />
</pre><br />
<br />
===Measure===<br />
Required tools: vernier caliper with depth gauge, or similar tool that can precisely measure 100mm. Your hob effective diameter is unlikely to be exactly 7mm.<br />
<br />
# Remove the hot-end from extruder so you don't waste filament.<br />
# Feed in some filament.<br />
# Using the extruder body as a reference point, mark the filament at 120mm.<br />
# Tell the printer to feed 100mm of filament.<br />
# Measure the distance from the extruder body to the mark you made. It will be over 20mm if it moved too little, under if it moved too far.<br />
# <pre>new_e_steps = old_e_steps * (100 / distance_actually_moved) … or, old_e_steps * (100 / (120 - distance_to_mark))</pre><br />
# Set this value in your firmware. You may need to re-flash your board. Sprinter/Marlin supports M92 E''nnn'' to set this value temporarily.<br />
# Repeat from Step 3 until you get between 96-104mm. Then continue with this guide. You'll dial it in perfectly later on.<br />
# '''Don't flash firmware yet.''' There's a further refinement to this value below. ''Why?'' The back-pressure from the hot-end alters how much plastic each hob revolution pushes, and you'll probably end up tightening your idler more which reduces the hob effective diameter.<br />
# Re-attach hot end.<br />
<br />
==Z height==<br />
At Z=0, you should be able to have a single piece of paper between your nozzle and the bed, and move it with a little "grabbing" but not quite enough to bend the paper when you push it. This is a simple, quick and effective test to use when levelling your bed. This small gap almost perfectly compensates for thermal expansion, which causes your hot-end to actually get longer as it heats up!<br />
<br />
Rather than tuning your endstop endlessly, you could simply make a macro that homes Z using the endstop then sends G92 Z-nnn where -nnn is the negative position of your endstop. Your endstop must of course be below Z=0 for this to work. (Not too much, or you may damage the nozzle and/or print-bed!) Ideally in this setup your endstop would be set so that the (cold) nozzle just touches the bed, and then you'd send G92 Z=-0.1 (or your measured thermal expansion). Note that most slicing software adds a HOME command followed by G92 Z0 to the starting G-Code, so you will also need to tune your slicing settings to make sure your G-Code homes to Z-nnn. There are now many adjustable Z-endstops available for download, and these can be real time-savers.<br />
<br />
When your Z=0 point is set correctly, your bottom layer will be slightly fatter than layers on top, but not extremely so. Most slicing software is set up by default to extrude a little extra material in the first layer, and you can tune this to get the perfect extrusion for your first layer, as well. (See below.)<br />
<br />
Bed adhesion is strongly related to the Z=0 point. If you're not getting enough adhesion, print slower with a lower Z=0 point so the first layer is squished more. If you're getting too much adhesion, raise the Z=0 point a little so the first layer isn't quite so squished.<br />
<br />
# Find the appropriate Z=0 point.<br />
# Send G92 Z0.<br />
# Prepare printer for printing- warm up bed, load filament, etc.<br />
<br />
==Slicer settings==<br />
===Layer height, Extrusion width===<br />
These are simple to visualise. When your extruder draws a line of plastic, that line has a height and width. You get to choose these values.<br />
<br />
Best results are obtained when layer height < 80% of nozzle diameter, and extrusion width >= nozzle diameter.<br />
<br />
Eg; with an 0.35 nozzle, your '''maximum''' layer height is 0.35*0.8= '''0.28mm''' and your extrusion width should be 0.4mm or greater.<br />
with an 0.5mm nozzle, your layer height can be up to 0.4mm, and an 0.25mm nozzle will give you 0.2mm max layer height.<br />
<br />
'''You can use a lower layer height or larger extrusion width if you wish, it will work fine'''. The slicing software automatically calculates the appropriate volume to extrude based on the settings you choose. '''There is no hard lower limit on layer height''' - it is limited by your ability to keep flow consistent at very low flowrates. Some reprappers have printed layers as small as 5 micron - 0.005mm!<br />
<br />
Personally I go for layer height of 0.2mm, and extrusion width of 0.5mm regardless of which nozzle I'm using.<br />
<br />
Slic3r automatically chooses an extrusion width for you based on your nozzle diameter. If you're determined to choose, you can use the ''extrusion width'' advanced setting. It is frequently advantageous to choose as models may have walls of a particular width, and by choosing you can ensure they are entirely filled with perimeter with no gap in the middle and no infill.<br />
<br />
==Nozzle Temperature==<br />
Each type of plastic, and each colourant for each type of plastic alters the ideal printing temperature. E.g., I can print opaque PLA at 165°C with fantastic results, but my translucent PLA prefers 180°C!<br />
<br />
Every machine will have different numbers due to differences in thermistor, and how close to barrel temperature your thermistor is actually sensing.<br />
<br />
Here's how I find my optimum temperature for each roll of filament that I have:<br />
<br />
# Choose a fairly simple model that's large enough that you can clearly see the infill while it's printing<br />
# Make sure your hobbed bolt's teeth are clean of debris such as chunks of plastic<br />
# Make sure your idler is tight! really tight! "it hurts my fingers to pull on it and I still can't move it" tight! A too-loose idler gives ''exactly the same symptoms'' as too low temperature.<br />
# Start printing<br />
# Lower temperature by 5° every 2-3 layers<br />
# When infill starts being a row of dots instead of a line, increase temperature by 10°.<br />
# Keep monitoring print, increase by 5° if your infill goes dotty again If you find that your prints are weak along the layer lines or even delaminate mid-print, you may need to go higher again. With ABS, wrapping your printer in a towel helps a LOT by keeping out draughts and breezes- but beware any PLA parts caught within!<br />
# Store or remember that temperature for that type of filament<br />
<br />
==Bed Temperature==<br />
<br />
Bed adhesion is critically important for quality prints. With the right amount of bed adhesion, your parts will:<br />
# stick to the bed<br />
# not curl or warp<br />
# not exhibit 'hourglass' warping, and<br />
# detach by themselves when the bed is cool.<br />
<br />
This procedure helps attain 1 through 3 by finding the correct bed surface temperature. 4 is obtained by experimenting with various bed coatings such as PVA wood glue (best for PLA), [http://forums.reprap.org/read.php?262,189335 UHU Glue] (for nylon), automotive window tint, hairspray, [http://forums.reprap.org/read.php?4,121996 ABS juice], [http://forums.reprap.org/read.php?4,156005 sugar water] (ABS), etc.<br />
<br />
# Pick a starting temperature. a little too high is better than too low for this test. Suggestions: 110°C for ABS, 65°C for PLA.<br />
# Start a print. If your first layer gets poor adhesion, increase by 3-5° and start again.<br />
# At layer 2, send M104 S0 so your nozzle heater turns off. '''LEAVE THE BED HEATER ALONE'''.<br />
# At layer 3, pause the print and move the nozzle away from it. '''LEAVE THE BED HEATER ALONE'''.<br />
# Prepare/consume a <favourite beverage> while you wait for bed surface temperature to reach thermal equilibrium. This should take 10 minutes at most, generally 5 minutes is plenty.<br />
# Remove the print from your bed. If it is soft or stretchy, your bed temperature is too high. Reduce by 5° and start again. It should behave almost the same as when it is cold.<br />
# When your bed temperature is correct, your part will have hardened while you consumed <favourite beverage> and if you set your bed temperature 5° higher it will remain soft.<br />
<br />
You should generally print your first layer with the bed about 10° hotter than the regular layers' temperature, to ensure that the plastic is very sticky and gets a good grip.<br />
<br />
For reference, the SURFACE temperature of your bed (NOT the temperature measured by your sensor) should be around 105°C for ABS, and around 57°C for PLA.<br />
<br />
Your thermistor '''WILL''' sense a higher temperature than the surface – a gradient of several degrees forms across your glass. '''DO NOT''' muck with thermistor tables or move your thermistor to the surface. You '''WANT''' it close to the heater so it can respond quickly and give a short feedback loop. Just find ''whatever number'' gets the surface to the right temperature, and ''stick with it''!<br />
<br />
After performing this procedure, if your prints warp off the bed mid-print at ends or corners, try adding a brim (Slic3r/Cura setting) and experimenting with various bed coatings. PVA wood glue diluted very thinly in water is excellent for PLA, and certain brands of hairspray are reportedly excellent with ABS.<br />
<br />
==E Steps Fine Tuning==<br />
<br />
Now, with everything very close to ideal values, we can finally dial E steps in that final little bit!<br />
<br />
# Find an object with flat tops on a number of levels, such as [http://www.thingiverse.com/thing:24238 this cube stack test] (scale this object by 250% after loading in Slic3r)<br />
# Slice at 95% rectilinear infill. Use the lowest layer height you're comfortable with - the lower the layer height used for this test, the finer your resulting E steps calibration will be. I use 0.2mm for first run, and if I'm feeling ambitious I'll repeat this process at 0.1mm.<br />
# Print.<br />
# Ignore the first 5-6 layers because they're too sensitive to the exact height of the first layer. If it's ''obviously'' over-filling or under-filling, alter E steps or Z=0 point and restart the print.<br />
# Observe infill. If you '''can't''' see ''tiny'' little gaps between the lines, '''reduce''' E steps by 0.5% every 2 layers until you can see tiny gaps.<br />
# Observe solid top layers. If you '''can''' see tiny gaps, '''increase''' E steps by 0.5% every 2 layers until there's no gaps in the top.<br />
# Send the new E steps to your printer with M92 E''nnn'' ''without even pausing the print'' - you will see the result in a couple of layers when the change is this small.<br />
# Goto 5 until the infill has tiny gaps '''AND''' the solid top layers do not.<br />
# '''Now, your E steps value is extremely fine-tuned! Save this value in your firmware's configuration and flash to make permanent.'''<br />
<br />
==Finish==<br />
<br />
'' '''Now''' '' print your favourite calibration piece (e.g., [http://www.thingiverse.com/thing:9804 ultimate calibration]) and see how it measures!<br />
<br />
== Final Polish: Bed Center==<br />
<br />
If you find that your prints are not winding up in the center of the bed you may need to configure a "homing offset" to correct the origin point (0,0) which should be in the lower left of your build area.<br />
<br />
If after homing your bed with a G28 command your nozzle winds up on the lower left of the printable build area, you should not need any additional tweaking as long as you're able to utilize your entire build-area, if not that may indicate your X_MAX_POS/Y_MAX_POS are set incorrectly.<br />
<br />
If however your nozzle homes off the bed you'll need to compensate with a negative value for the X_MIN_POS/Y_MIN_POS indicating the distance from "home position" to the bed area.<br />
<br />
Example: My X-Axis has a total travel of > 245mm but my bed is only 200mm wide, my X_MIN_POS is set to -45 so that after 45mm of travel it will end up at 0 on the extreme left side and after 245mm it will be the extreme right.<br />
<br />
Also see: [[Configuring Marlin Bed Dimensions]]<br />
<br />
==Optional: Switch to volumetric E units==<br />
'''''Note:''' as of Feb 1, 2014, Marlin supports volumetric E units natively, without this modification. Just send an M200 D<millimeters> to set filament diameter before your print, and the Marlin settings below are unnecessary. You still need to do step 3 (change the filament diameter in your slicer to scale the output to cubic millimeters).''<br />
<br />
It seems silly to me to have to reskein if you change filament diameter (i.e., when switching colours – or printers!). Follow these instructions if you want to use mm^3 units for E instead of mm.<br />
<br />
# Record the filament diameter setting you've been using in your slicer.<br />
# Calculate (filament_diameter / 2) ^ 2 * PI. For filament_diameter = 3.0mm, this is almost exactly 7. For 1.75mm filament, it's almost exactly 2.4.<br />
# Change your filament diameter in your slicer to 2*sqrt(1 / pi) = 1.128379<br />
# Divide your E_steps by the number from Step 2.<br />
# Multiply all your E-related speeds and accelerations (esp. maximums in firmware config!), and retract distance by the value from Step 2.<br />
# Repeat E steps calibration above. Your first print should be extremely close.<br />
<br />
Now you can reuse the same gcode over and over again, and simply alter E steps with M92 when you change filament, or use the same gcode on another printer.<br />
<br />
===Rationale===<br />
We currently have 3 tunables affecting one measurable - extrusion multiplier, filament diameter and E steps all affect the amount of plastic extruded.<br />
<br />
Filament diameter does not change significantly - it should not change mid-print, and only changes by a small amount when switching from one roll of filament to another.<br />
<br />
It should be possible to set two of these tunables to fixed values, and alter only the 3rd when necessary.<br />
<br />
It is sensible to choose the tunable which is easiest to alter - this is E steps which can be altered at any time (even mid-print) by sending M92 E''nnn''.<br />
<br />
The slicer calculates the volume of filament to extrude for each line segment. Then, it takes this volume and divides it by (filament_diameter / 2) ^ 2 * PI to find the distance of filament to extrude.<br />
<br />
SO if we alter our filament diameter such that (filament_diameter / 2)^2 * PI == 1.0, then the E words in our gcode will be in units of mm^3.<br />
<br />
Since our new unit is 7x bigger (area of a 3mm diameter circle is ~7mm^2, so 1mm(length) becomes 7mm^3(volume), for 1.75mm filament the factor is 2.4x), we have to adjust our retraction distance, and E steps and acceleration to suit the new units.<br />
<br />
See [http://wooden-mendel.blogspot.com/2011/09/volumetric-stage-two.html my blog post] for more info.<br />
<br />
[[Category:Calibration| ]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Stepper_wiring&diff=155049Stepper wiring2015-09-28T23:56:59Z<p>Eltoozero: /* Connectors, Crimping & Re-Pinning */</p>
<hr />
<div>About all Reprap stepper drivers are ''bipolar'' (as opposed to ''unipolar''), so if you're using the standard drivers, you will need a stepper than can be wired as bipolar.<br />
<br />
For any stepper motor to be wired up properly, we'll need to determine which wires are "pairs" or connected to the ends of each coil. These are usually referred to as coil "A" and coil "B", but which is which doesn't matter as much as you'd think.<br />
<br />
This picture shows how 6-wire steppers are wired:<br />
<br />
[[File:Unipolar-stepper-motor-windings.png]]<br />
<br />
'''Four wire motors''' don't have the common wire. We will use all four wires, and we'll only need to determine which wires make up the two pairs.<br />
<br />
'''Five wire motors''' have these two common wires on each coil connected internally and exposed as only one wire. This configuration won't work for the standard reprap electronics. Short of opening the stepper an re-wiring it internally, you have to get another motor. The [[BrickRap]] is using five wire motors driven by a Pollullu. <br />
<br />
'''Six wire motors''' are wired as shown. We won't be using the two common wires, but otherwise it's identical to the four wire version.<br />
<br />
'''Eight wire motors''' have an independent wire on each end of those four coils. You connect the inner endings of the coils to each other to make a six-wire motor, then you ignore them to look at a four-wire motor. Wiring is tricky, see below.<br />
<br />
== Connectors, Crimping & Re-Pinning ==<br />
<br />
A common connector used on Stepper Motors is the JST-PH Series, specifically the JST-PH6 (JST style, PH Series, 6 positions), Digikey part# 455-1162-ND.<br />
Pins for these connectors are available at suppliers like DigiKey, and the correct part # for common 24AWG wire is 455-2148-1-ND, see the associated products for other gauges.<br />
<br />
For crimping it is not advised to do it by hand with pliers, or to buy the manufacturer's $1,500 tool, instead you can easily use a non-ratcheting tool such as the Sargent Tools 1026CT, which is $30, or the Waldom/GC Electronics W-HT-1921 which is $20 from DigiKey.<br />
<br />
Re-pinning the connector is possible and somewhat easily accomplished by '''delicately''' bending the plastic retainer tab for the individual pin on the header while gently tugging the wire away from the connector body. Do not tug on the wire before lifting the retaining tab as the locking spur on the pin itself may get hung up on the header tab making the whole process more difficult. Re-inserting the pin requires only enough force to get the locking spur past the retainer tab so it clicks into position.<br />
<br />
== Methods and procedures ==<br />
<br />
So how do you determine which wire is which? Here's a process for you.<br />
<br />
'''Note on endstops''': some Reprap firmwares (such as [[Marlin]]) will be looking for the endstops to be hooked up while testing the motor wiring as noted above. In this case you may see your motor move smoothly in one direction, but not at all in the other (as it thinks the endstop is triggered). If your firmware allows you to disable endstops you should do so for testing motor wiring, or alternatively you can connect the motor to the Extruder stepper motor connector to check that it moves smoothly in each direction.<br />
<br />
==== "pair" wires on 4 wire motors ====<br />
<br />
This is about finding the two pairs of wires which are connected to each of the two coils.<br />
<br />
; Method with an ohm-meter<br />
<br />
: Simply measure pairs of wires for their resistance. If the resistance is a few ohms ( < 100&nbsp;&Omega;) only, you've found a pair. The other two wires should make up the other pair.<br />
<br />
; Methods without an ohm-meter<br />
<br />
: First, try turning the motor with your fingers, and notice how hard it is. Then, stick wires together in pairs. If the motor turns noticeable harder, you've found a pair.<br />
<br />
: Another method is to use an LED, hold any two wires to the ends of a LED and turn the motor (twiddle in both directions), the LED will light if the wires are a pair, swap wires until you light the LED.<br />
<br />
; Try-and-error method<br />
<br />
: ''(Reproduced from [http://www.stepperworld.com/Tutorials/pgBipolarTutorial.htm this tutorial] by kind permission of Rustle Laidman at StepperWorld.com.)''<br />
<br />
: Connect the 4 coil wires to the controller in any pattern. If it doesn't work at first, you only need try these 2 swaps:<br />
<br />
{| class="wikitable"<br />
|- style="background-color:#f0f0f0;"<br />
! Name !! A !! B !! C !! D<br />
|-<br />
| Arbitrary first wiring order || 1 || 2 || 4 || 8<br />
|-<br />
| Switch end pair || 1 || 2 || 8 || 4<br />
|-<br />
| Switch middle pair || 1 || 8 || 2 || 4<br />
|}<br />
<br />
: You're finished when the motor turns smoothly in either direction. If the motor turns in the opposite direction from desired, reverse the wires so that ABCD would become ABDC (swap one coil) or DCBA (turn the entire plug around).<br />
<br />
: This procedure doesn't always work in two steps (e.g, if your setup needs "1" matched with "4"). Swapping the 2nd with the 4th, then the 2nd with the 3rd would be more certain.<br />
<br />
==== "pair" wires on 6 wire motors ====<br />
<br />
On six-wire motors you'll find two groups of three wires in which all three wires are electrically connected to each other. These wires are connected to the same coil, one in the center of the coil, two at their ends. Accordingly, two of the possible pairings have a lower resistance, one pair has a higher one. Take the pair with the higher resistance and ignore the third wire.<br />
<br />
The no-ohm-meter method can work here, too. Expect not two, but three stages of turning resistance. You want the two pairs which give the highest turning resistance.<br />
<br />
After you found out which two of the six wires to ignore (one in each group), you can proceed as if you had four-wire motors.<br />
<br />
==== match coils for 8 wire steppers ====<br />
<br />
If you have a 8 wire stepper, you'll have 4 coils. You need to determine which pairs of coils are the "same". There are two "pairs" which are essentially the same. You want to hook these two pairs up in series so that you essentially have only two coils, each twice the length. You also need to hook them up so that the two coils "add" to each other - polarity matters.<br />
<br />
The simplest way will be to find the datasheet. While other types of steppers make it straightforward to identify the correct coils, it'll probably be easier and faster to read the datasheet for 8-wire motors.<br />
<br />
If you can't find the datasheet, all is not lost. Pick two coils at random, plug it in and see if it works. If it turns, you've got two coils that aren't the halves of the same coil. You can then "add" the other coils one at a time, trying different configurations and polarities until you've identified not only which two coils are which, but which way they need to be hooked up. Put some thought into it, it's straightforward, but somewhat involved. Since we don't care which direction the stepper turns, we can eliminate a lot of possibilities and just concern ourselves with the simple question "does it turn?". <br />
<br />
==== Plug it into the stepper driver ====<br />
<br />
To get the stepper just moving, polarity of each coil doesn't matter, nor does it matter which coil is which. So make sure each pair of wires for a coil are together on one side of the plug (or the other side for the other coil), and plug it in.<br />
<br />
==== Motor moving the wrong direction ====<br />
<br />
To get the motor moving in the right direction, is actually does matter which coil is which and what the polarity of the coils are. However, if they're wrong, the motor just turns the wrong way, it's easy to fix that by swapping wires. Pick ''one'' the following to reverse the stepper's direction:<br />
<br />
# Switching the polarity of either (one) coil, like changing ABCD to BACD ''or'' ABCD to ABDC.<br />
# Swapping the coils, like changing ABCD to CDAB.<br />
# Stepper direction can also be reversed in the firmware.<br />
# Plugging the plug in backwards (in case your electronics' plugs allow that). This swaps the coils, and reverses both coil A and coil B. Thus the effect is to change the direction 3 times, which gives a net effect the same as changing the direction once. Only few electronics allow that, because you have to figure the right way not once, but each time you connect the stepper.<br />
<br />
== Further reading ==<br />
<br />
* [[StepperMotor]] has a list of stepper motors that are known to work, a list of stepper motor drivers that are known to work, and some more tips.<br />
* [[NEMA Motor]] describes the NEMA standards for stepping motors -- in particular, what "NEMA 17" means.<br />
<br />
[[Category:General motion control]]<br />
[[Category:Stepper motors]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Stepper_wiring&diff=155047Stepper wiring2015-09-28T20:21:04Z<p>Eltoozero: </p>
<hr />
<div>About all Reprap stepper drivers are ''bipolar'' (as opposed to ''unipolar''), so if you're using the standard drivers, you will need a stepper than can be wired as bipolar.<br />
<br />
For any stepper motor to be wired up properly, we'll need to determine which wires are "pairs" or connected to the ends of each coil. These are usually referred to as coil "A" and coil "B", but which is which doesn't matter as much as you'd think.<br />
<br />
This picture shows how 6-wire steppers are wired:<br />
<br />
[[File:Unipolar-stepper-motor-windings.png]]<br />
<br />
'''Four wire motors''' don't have the common wire. We will use all four wires, and we'll only need to determine which wires make up the two pairs.<br />
<br />
'''Five wire motors''' have these two common wires on each coil connected internally and exposed as only one wire. This configuration won't work for the standard reprap electronics. Short of opening the stepper an re-wiring it internally, you have to get another motor. The [[BrickRap]] is using five wire motors driven by a Pollullu. <br />
<br />
'''Six wire motors''' are wired as shown. We won't be using the two common wires, but otherwise it's identical to the four wire version.<br />
<br />
'''Eight wire motors''' have an independent wire on each end of those four coils. You connect the inner endings of the coils to each other to make a six-wire motor, then you ignore them to look at a four-wire motor. Wiring is tricky, see below.<br />
<br />
== Connectors, Crimping & Re-Pinning ==<br />
<br />
A common connector used on Stepper Motors is the JST-PH Series, specifically the JST-PH6 (JST style, PH Series, 6 positions), Digikey part# 455-1162-ND.<br />
Pins for these connectors are available at suppliers like DigiKey, and the correct part # for common 24-28 AWG wire is 455-2148-1-ND, see the associated products for other gauges.<br />
<br />
For crimping it is not advised to do it by hand with pliers, or to buy the manufacturer's $1,500 tool, instead you can easily use a non-ratcheting tool such as the Sargent Tools 1026CT, which is $30, or the Waldom/GC Electronics W-HT-1921 which is $20 from DigiKey.<br />
<br />
Re-pinning the connector is possible and somewhat easily accomplished by '''delicately''' bending the plastic retainer tab for the individual pin on the header while gently tugging the wire away from the connector body. Do not tug on the wire before lifting the retaining tab as the locking spur on the pin itself may get hung up on the header tab making the whole process more difficult. Re-inserting the pin requires only enough force to get the locking spur past the retainer tab so it clicks into position.<br />
<br />
== Methods and procedures ==<br />
<br />
So how do you determine which wire is which? Here's a process for you.<br />
<br />
'''Note on endstops''': some Reprap firmwares (such as [[Marlin]]) will be looking for the endstops to be hooked up while testing the motor wiring as noted above. In this case you may see your motor move smoothly in one direction, but not at all in the other (as it thinks the endstop is triggered). If your firmware allows you to disable endstops you should do so for testing motor wiring, or alternatively you can connect the motor to the Extruder stepper motor connector to check that it moves smoothly in each direction.<br />
<br />
==== "pair" wires on 4 wire motors ====<br />
<br />
This is about finding the two pairs of wires which are connected to each of the two coils.<br />
<br />
; Method with an ohm-meter<br />
<br />
: Simply measure pairs of wires for their resistance. If the resistance is a few ohms ( < 100&nbsp;&Omega;) only, you've found a pair. The other two wires should make up the other pair.<br />
<br />
; Methods without an ohm-meter<br />
<br />
: First, try turning the motor with your fingers, and notice how hard it is. Then, stick wires together in pairs. If the motor turns noticeable harder, you've found a pair.<br />
<br />
: Another method is to use an LED, hold any two wires to the ends of a LED and turn the motor (twiddle in both directions), the LED will light if the wires are a pair, swap wires until you light the LED.<br />
<br />
; Try-and-error method<br />
<br />
: ''(Reproduced from [http://www.stepperworld.com/Tutorials/pgBipolarTutorial.htm this tutorial] by kind permission of Rustle Laidman at StepperWorld.com.)''<br />
<br />
: Connect the 4 coil wires to the controller in any pattern. If it doesn't work at first, you only need try these 2 swaps:<br />
<br />
{| class="wikitable"<br />
|- style="background-color:#f0f0f0;"<br />
! Name !! A !! B !! C !! D<br />
|-<br />
| Arbitrary first wiring order || 1 || 2 || 4 || 8<br />
|-<br />
| Switch end pair || 1 || 2 || 8 || 4<br />
|-<br />
| Switch middle pair || 1 || 8 || 2 || 4<br />
|}<br />
<br />
: You're finished when the motor turns smoothly in either direction. If the motor turns in the opposite direction from desired, reverse the wires so that ABCD would become ABDC (swap one coil) or DCBA (turn the entire plug around).<br />
<br />
: This procedure doesn't always work in two steps (e.g, if your setup needs "1" matched with "4"). Swapping the 2nd with the 4th, then the 2nd with the 3rd would be more certain.<br />
<br />
==== "pair" wires on 6 wire motors ====<br />
<br />
On six-wire motors you'll find two groups of three wires in which all three wires are electrically connected to each other. These wires are connected to the same coil, one in the center of the coil, two at their ends. Accordingly, two of the possible pairings have a lower resistance, one pair has a higher one. Take the pair with the higher resistance and ignore the third wire.<br />
<br />
The no-ohm-meter method can work here, too. Expect not two, but three stages of turning resistance. You want the two pairs which give the highest turning resistance.<br />
<br />
After you found out which two of the six wires to ignore (one in each group), you can proceed as if you had four-wire motors.<br />
<br />
==== match coils for 8 wire steppers ====<br />
<br />
If you have a 8 wire stepper, you'll have 4 coils. You need to determine which pairs of coils are the "same". There are two "pairs" which are essentially the same. You want to hook these two pairs up in series so that you essentially have only two coils, each twice the length. You also need to hook them up so that the two coils "add" to each other - polarity matters.<br />
<br />
The simplest way will be to find the datasheet. While other types of steppers make it straightforward to identify the correct coils, it'll probably be easier and faster to read the datasheet for 8-wire motors.<br />
<br />
If you can't find the datasheet, all is not lost. Pick two coils at random, plug it in and see if it works. If it turns, you've got two coils that aren't the halves of the same coil. You can then "add" the other coils one at a time, trying different configurations and polarities until you've identified not only which two coils are which, but which way they need to be hooked up. Put some thought into it, it's straightforward, but somewhat involved. Since we don't care which direction the stepper turns, we can eliminate a lot of possibilities and just concern ourselves with the simple question "does it turn?". <br />
<br />
==== Plug it into the stepper driver ====<br />
<br />
To get the stepper just moving, polarity of each coil doesn't matter, nor does it matter which coil is which. So make sure each pair of wires for a coil are together on one side of the plug (or the other side for the other coil), and plug it in.<br />
<br />
==== Motor moving the wrong direction ====<br />
<br />
To get the motor moving in the right direction, is actually does matter which coil is which and what the polarity of the coils are. However, if they're wrong, the motor just turns the wrong way, it's easy to fix that by swapping wires. Pick ''one'' the following to reverse the stepper's direction:<br />
<br />
# Switching the polarity of either (one) coil, like changing ABCD to BACD ''or'' ABCD to ABDC.<br />
# Swapping the coils, like changing ABCD to CDAB.<br />
# Stepper direction can also be reversed in the firmware.<br />
# Plugging the plug in backwards (in case your electronics' plugs allow that). This swaps the coils, and reverses both coil A and coil B. Thus the effect is to change the direction 3 times, which gives a net effect the same as changing the direction once. Only few electronics allow that, because you have to figure the right way not once, but each time you connect the stepper.<br />
<br />
== Further reading ==<br />
<br />
* [[StepperMotor]] has a list of stepper motors that are known to work, a list of stepper motor drivers that are known to work, and some more tips.<br />
* [[NEMA Motor]] describes the NEMA standards for stepping motors -- in particular, what "NEMA 17" means.<br />
<br />
[[Category:General motion control]]<br />
[[Category:Stepper motors]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Vertical_X_Axis_Standard&diff=154517Vertical X Axis Standard2015-09-19T06:38:38Z<p>Eltoozero: </p>
<hr />
<div>This is the spot for documentation of the standard configuration for vertical <br />
X axis assemblies. The original discussion about why we want such a thing is [http://forums.reprap.org/read.php?2,95828 here]. (TLDR; It's that big to fit the extruder motor between the X Smooth Rods) If you are a designer of an extruder, X carriage, X axis assembly, or whole bot that works with this standard, consider yourself and editor of this page.<br />
<br />
If you are simply looking for an optimized X-Carraige and the separation of your Z Axis Rods is 30mm and you are using a Bowden setup that doesn't require an extruder motor on your x-carraige you can probably use:<br />
<br />
* RepRapPro Mendel3 X-Carraige (M5 Threaded, 8mm Smooth Rod)<br />
* Prusa i3 X-Carraige (M8 Threaded, 8mm Smooth Rod)<br />
* Prusa i3 Rework X-Carraige (M8 Threaded, 8mm Smooth Rod)<br />
<br />
!! There is a contest going on for those wishing to port existing designs or design new parts that fit the standard!! - Contest over as of Dec 2011<br />
[[Vertical_X_Axis_Standard_Contest]]<br />
<br />
== Benefits ==<br />
<br />
Benefits of a vertical X axis assembly on Mendel style bots include<br />
<br />
1. A vertical x-axis should make head changes and hotend designs easier because the head can slide out unobstructed.<br />
<br />
2. Should use less plastic (print faster) than a horizontal X axis assembly.<br />
<br />
3. Should be stiffer than horizontal X axis configurations given the same amount of plastic. <br />
<br />
4. Naturally lends itself to integrated X carriage/extruder designs as they are now both in the same plane. <br />
<br />
5. ? :)<br />
<br />
<br />
<br />
== The Standard ==<br />
<br />
The currently agreed upon standard is to space the two X smooth rods 70 mm center to center and the Z smooth and threaded rod 30 mm center to center. A diagram below explains the basic constraints. The Z rod spacing is identical to the Prusa and Mendel, so it is likely that X axis assemblies that conform to this standard could be used as replacements in those bots as well. <br />
<br />
[[File:Vertical_X-Axis_standards.jpg|800px]]<br />
<br />
<br />
== Current standard-compliant projects with Vertical X Axis ==<br />
<br />
Feel free to add your project here if you have a design that is or will soon be compliant.<br />
<br />
*[[X-carriage-struder]] An X axis and integrated carriage/extruder design. To be compatible with Prusa, Mendel, and Orca.<br />
*[[Test_Tube_Mendel]] A minimalist version of the Prusa that eliminates printed vertices using fender washers.<br />
*[[Action68%27s_vertical_x_axis_reprap]] A currently conceptual bot with a vertical X axis<br />
*[http://www.thingiverse.com/thing:11535 PCB Mill mount for Vertical X axis by droftarts]<br />
*[[Vertical_x_for_Prusa_by_North90ty]] A complete and very easy to build design for a vertical x-axis<br />
*[http://www.thingiverse.com/thing:15132 Vert-X-Belt-Truder] Early concept of a vertical x-carriage with belt-driven extruder (no stepper motor on the carriage).<br />
*[[3DPrintMi]] Open frame style Reprap<br />
*[http://www.thingiverse.com/thing:210915 Prism Vertical X axis]<br />
*[[Rusty-Vertical-X]] Another Vertical X carriage, GPL, Circa Oct 2012 [http://www.thingiverse.com/thing:12434 Thingiverse Link]<br />
<br />
== Other projects with Vertical X Axis ==<br />
<br />
The following projects are not necessarily compliant with this standard. They may choose to work with the standard or not as they see fit. <br />
<br />
*[[Mixtape_mendel]] A Prusa style bot designed to be fully parametric.<br />
*[[1X2]] A Prusa style bot made from standardized blocks of wood. Easily built with hand tools.<br />
*[[RepRapPro_Tricolour]] A Prusa Mendel variant. Design was updated circa March 2013 to include a vertical X axis. Uses 40mm X rod spacing.<br />
*[[EMAKER_Huxley]] A smaller bot, sort of a mixture of the original Huxley, and the Prusa.<br />
*[http://reprap.org/wiki/Gen_X Gen X Skb-Kiparis remix] Based on Mendel. With original idea of vertical x axis and vertical extruder combined with x carriage.<br />
*[[Doboz]]<br />
*[[Wallace]] ~ Parametric: X spacing is set in the scad file by the variable 'x_rod_spacing', default 30. Z spacing is set by a combination of yz_motor_distance, motor_casing, and the rod size, default of (yz_motor_distance+motor_casing)/2+rod_size for a NEMA14/6mm setup is (25+38)/2+6=37.5 <br />
*[[SibRap]] Russian printer, have 55 mm vertical distance.<br />
<br />
[[Category:RepRap machines]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Test_Tube_Mendel&diff=154516Test Tube Mendel2015-09-19T06:22:25Z<p>Eltoozero: /* Design Log */</p>
<hr />
<div>{{Development<br />
|name = Test Tube Mendel<br />
|status = experimental<br />
|image = TestTubeMendel.jpg<br />
|description = Test Tube Mendel is a vinyl tubing vertex based [[Mendel]].<br />
|license = [Creative Commons attribution share alike]<br />
|author = Bryanandaimee<br />
|reprap = Mendel<br />
|categories = [[:Category:Mendel Variations|Mendel Variations]][[Category:Mendel Variations]], [[:Category:Cartesian-XZ-head|XZ-head]] [[Category:Cartesian-XZ-head]] <br />
|cadModel = [http://www.thingiverse.com/thing:9117 Test Tube Mendel]<br />
<br />
<br />
}}<br />
The Test Tube Mendel design is a minimal printed parts Mendel designed for rapid and cheap duplication. It is built around the [http://www.thingiverse.com/thing:8313 vinyl-washer vertex] proposed by Mrkim on thingiverse. <br />
<br />
== Goals ==<br />
<br />
1. Dramatically reduce printed parts <br />
<br />
2. Reduce total build cost<br />
<br />
3. Push the boundaries of simplification<br />
<br />
4. Have a good time<br />
<br />
== Print time savings vs. Prusa ==<br />
Times are skeinforge estimates and not exact times. My settings that gave these times were 25% fill and hex fill pattern. I'll fill in times as I go.<br />
<br />
<table border="1"><br />
<tr><br />
<th>Part</th><br />
<th>Prusa</th><br />
<th>Test Tube</th><br />
</tr><br />
<tr><br />
<td>Vertices</td><br />
<td>6 h</td><br />
<td>0 h</td><br />
</tr><br />
<tr><br />
<td>Y motor mount</td><br />
<td>0.5 h</td><br />
<td>0 h</td><br />
</tr><br />
<tr><br />
<td>Z motor mounts</td><br />
<td>2 h</td><br />
<td>1 h</td><br />
</tr><br />
<tr><br />
<td>2x Pulley</td><br />
<td>0.25 h</td><br />
<td>same</td><br />
</tr><br />
<tr><br />
<td>3x endstop holders</td><br />
<td>0.5 h</td><br />
<td>same</td><br />
</tr><br />
<tr><br />
<td>Z motor couplings</td><br />
<td>?</td><br />
<td>same</td><br />
</tr><br />
<tr><br />
<td>X end idler</td><br />
<td>1.5 h</td><br />
<td>1 h</td><br />
</tr><br />
<tr><br />
<td>X end motor</td><br />
<td>1.75 h</td><br />
<td>unk</td><br />
</tr><br />
<tr><br />
<td>X carriage</td><br />
<td>1 h</td><br />
<td>same</td><br />
</tr><br />
<tr><br />
<td>8x bar clamp</td><br />
<td>1 h</td><br />
<td>same</td><br />
</tr><br />
<tr><br />
<td>12x pla bushing</td><br />
<td>0.5 h</td><br />
<td>same</td><br />
</tr><br />
<tr><br />
<td>4x belt clamp</td><br />
<td>0.25 h</td><br />
<td>same</td><br />
</tr><br />
</table><br />
<br />
== Design Log ==<br />
<br />
6-2-2011: The [http://www.thingiverse.com/thing:8313 vinyl washer vertex] (Link broken, idea copied [[1X2_Silvercat|here]]) posted on thingiverse recently inspired me to work on a Mendel derivative using that idea that would have a much lower print/replication time. So far I have only built a frame to play with, and I hope to be able to reuse some of the Prusa printed parts. <br />
I consider this project still a reprap (rather than a repstrap) though others may disagree. I think the use of another vitamin (vinyl tubing) is justified by the dramatic savings in cost and [[doubling time | time to print a duplicate]].<br />
<br />
<br />
<br />
The initial frame seems to be adequate in stiffness but will likely need an electronics mounting board attached to the frame to add lateral stiffness. I have decided that a large hose clamp will be my Y motor mount. I tried using nuts and washers to clamp the motor, but they just slid off. The hose clamp is cheap and it provides a much stronger mount than the printed part while simultaneously reducing printed part count. For those that already have a printer the cost savings might be minimal, but if you have to buy printed parts, the dollar spent on the hose clamp is more than made up by the current cost of printed parts.<br />
[[File:TestTubeMendel.jpg|300px|thumb|left|Test Tube Mendel Frame]]<br />
[[File:TTM_Z_motormount1.jpg|300px|thumb|center|Z Motor Mount]]<br />
<br />
[[File:TTM_Z_Motormount2.jpg|300px|thumb|right|Z Motor Mount with Motor]]<br />
<br />
<br />
<br />
6-7-2011: Got a rough draft version of the Z motor mounts. Files are [http://www.thingiverse.com/thing:9117 on thingiverse] for now as I don't have a github account nor do I know the first thing about openscad. I am using a 1/4 inch cross bar a strap of some sort (twist tie, zip tie ...) and some small printed parts for the z motor mount. I am probably sacrificing some build height doing it this way, but that was a design compromise I had to deal with. All the threaded rod for the frame are the same length. My frame is currently built using 15 inch lengths. That is a very wasteful length, but it should end up with a similar build volume to the other Mendels out there. Since the frame is made from a single length, it should be easy to scale up or down. I think a 12 inch and an 18 inch version would be naturals. Both would make better use of commonly available lengths (usually 3 ft at Lowes/Home Depot). <br />
<br />
X motor mount and idler are next. Might take me a while. I'm thinking of something similar to Prusa's but backwards and possibly upside down since my smooth rod is inside the threaded rod rather than vice versa as on the Prusa. <br />
<br />
<br />
6-11-2011: Mrkim has posted his solution for a Z motor mount. I like it. Here it is. http://www.thingiverse.com/thing:9180. And it seems that the code name for Mrkims vinyl vertex reprap is Silvercat ([[1X2 Silvercat]]). http://mrkimrobotics.com/?page_id=5049. Can't wait to see what he does with it.<br />
<br />
6-20-2011: Got the X end idler done. It is a three piece design, the main body and a couple of clamping plates. Files are on thingiverse.<br />
The smooth rod spacing is the same as Prusa in order to allow reuse of the X carriage and all the available extruder designs. So those print times will be identical. The pulley is just a small piece of threaded rod clamped into the idler body and the bearing is built up like in the Prusa and secured with a nut. You can't tighten the nut down too much or it will just pull the threaded rod out of the clamp, so just tighten till there's not play and then put some lock-tight on it or something.<br />
<br />
[[File:TTM_XIdler.jpg|300px|thumb|left|X idler front view]]<br />
[[File:TTM_XIdler2.jpg|300px|thumb|center|X idler back view]]<br />
<br />
<br />
8-3-11: Finally got some steppers for the bot. Now I won't have to keep swapping them off my Prusa build. The other end of the X and Z assembly is about done, so someday soon I'll post that stuff. Got to study for boards though so not too much to happen till the end of the month.<br />
<br />
9-10-2011: The X motor design is basically done. I'll post files and pics soon, but I think I'll soon redesign for vertical X axis arrangement to comply with the [[Vertical_X_Axis_Standard]].<br />
<br />
3-7-2012: Been working on Gen7T for a while. This is not dead, but no real update for now.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=File:7805ZPROBE.png&diff=154036File:7805ZPROBE.png2015-09-07T08:43:27Z<p>Eltoozero: Eltoozero uploaded a new version of &quot;File:7805ZPROBE.png&quot;: Reverted to version as of 08:40, 7 September 2015</p>
<hr />
<div>How to use an inline 7805 VREG to lower the output of a 12V sensor (in this case an inductive z-probe) to the 5V inputs on a RAMPS.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=File:7805ZPROBE.png&diff=154035File:7805ZPROBE.png2015-09-07T08:43:07Z<p>Eltoozero: Eltoozero uploaded a new version of &quot;File:7805ZPROBE.png&quot;: Cropped?</p>
<hr />
<div>How to use an inline 7805 VREG to lower the output of a 12V sensor (in this case an inductive z-probe) to the 5V inputs on a RAMPS.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=File:7805ZPROBE.png&diff=154034File:7805ZPROBE.png2015-09-07T08:40:05Z<p>Eltoozero: Eltoozero uploaded a new version of &quot;File:7805ZPROBE.png&quot;: Cropped.</p>
<hr />
<div>How to use an inline 7805 VREG to lower the output of a 12V sensor (in this case an inductive z-probe) to the 5V inputs on a RAMPS.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Z_probe&diff=154033Z probe2015-09-07T08:39:36Z<p>Eltoozero: </p>
<hr />
<div>One strategy to compensate for an un-level bed is to make multiple measurements of the bed using a probe and to use those measurements to calculate a dynamic offset of the z-distance to be employed during the print.<br />
<br />
'''Caution:''' Using this feature will make your z-motors run nearly continuously, how this affects the lifetime of the motors running or single stepper driver is up for debate.<br />
<br />
=== Inductive probing: ===<br />
<br />
A very popular model of inductive probe is the LJ12A3-4-Z/BX (blue tip), this probe is normally closed so your firmware configuration should treat this as an "inverted" endstop.<br />
<br />
LJ12A3-4-Z/B'''Y''' (brown tip) also available and is normally open.<br />
<br />
Additionally, this probe is rated to run at 6-36V and output the same, which is not safe to directly connect to the 5V inputs on the RAMPS board.<br />
<br />
[[File:7805ZPROBE.png|right|600px]] To adapt this probe to the 5V input you can utilize a voltage divider (wasteful), or a 7805 voltage regulator tied inline to the output of the probe. <br />
<br />
Please Note: If while printing you notice your z-motors oscillate more than a half turn or so as your head travels back and forth across the bed you should probably stop the print and eyeball the nozzle height across the bed, you may need to twiddle one of the z-axis lead screws a turn or so to bring the distance closer. Having a "mostly" level bed definitely doesn't hurt the process, the less the hardware has to compensate the better.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Z_probe&diff=154032Z probe2015-09-07T08:36:34Z<p>Eltoozero: Created page with "One strategy to compensate for an un-level bed is to make multiple measurements of the bed using a probe and to use those measurements to calculate a dynamic offset of the z-d..."</p>
<hr />
<div>One strategy to compensate for an un-level bed is to make multiple measurements of the bed using a probe and to use those measurements to calculate a dynamic offset of the z-distance to be employed during the print.<br />
<br />
'''Caution:''' Using this feature will make your z-motors run nearly continuously, how this affects the lifetime of the motors running or single stepper driver is up for debate.<br />
<br />
=== Inductive probing: ===<br />
<br />
A very popular model of inductive probe is the LJ12A3-4-Z/BX (blue tip), this probe is normally closed so your firmware configuration should treat this as an "inverted" endstop.<br />
<br />
LJ12A3-4-Z/B'''Y''' (brown tip) also available and is normally open.<br />
<br />
Additionally, this probe is rated to run at 6-36V and output the same, which is not safe to directly connect to the 5V inputs on the RAMPS board.<br />
<br />
To adapt this probe to the 5V input you can utilize a voltage divider (wasteful), or a 7805 voltage regulator tied inline to the output of the probe. [[File:7805ZPROBE.png]]<br />
<br />
Please Note: If while printing you notice your z-motors oscillate more than a half turn or so as your head travels back and forth across the bed you should probably stop the print and eyeball the nozzle height across the bed, you may need to twiddle one of the z-axis lead screws a turn or so to bring the distance closer. Having a "mostly" level bed definitely doesn't hurt the process, the less the hardware has to compensate the better.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=File:7805ZPROBE.png&diff=154031File:7805ZPROBE.png2015-09-07T08:28:16Z<p>Eltoozero: How to use an inline 7805 VREG to lower the output of a 12V sensor (in this case an inductive z-probe) to the 5V inputs on a RAMPS.</p>
<hr />
<div>How to use an inline 7805 VREG to lower the output of a 12V sensor (in this case an inductive z-probe) to the 5V inputs on a RAMPS.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Bolt_Depot&diff=153835Bolt Depot2015-09-02T20:33:34Z<p>Eltoozero: </p>
<hr />
<div>[[Category:Suppliers]]<br />
[[Category:Fastener Suppliers]]<br />
East Coast US based supplier specializing in fasteners and only fasteners.<br />
<br />
[http://www.boltdepot.com Website link]<br />
<br />
Notably their navigation is terrible and their search is for part numbers only and not item searches.<br />
<br />
You can save and retrieve carts for separate BOMs (though they do not currently have an easy way to share BOMs with other users).<br />
<br />
You can add multiple items to the cart from the same "category" by using the not so obvious "Add All Entered" button in the upper right of the category page.<br />
<br />
For RepRap purposes you'll probably want to skip past the first left navigation bar and get straight to the [http://www.boltdepot.com/Metric_machine_screws.aspx '''metric machine screws'''] area.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Triffid_Hunter%27s_Calibration_Guide&diff=153711Triffid Hunter's Calibration Guide2015-09-01T04:12:34Z<p>Eltoozero: </p>
<hr />
<div>{{Languages}}<br />
<br />
==Prerequisites==<br />
# A tool to precisely measure 100mm. A vernier caliper is ideal.<br />
# A tool to precisely measure something 0.5mm wide. A micrometer is ideal, but a vernier caliper will do.<br />
# Know your stepper motors' '''full steps per revolution''' value. steps = 360 / angle, so 1.8&deg; = 200 steps, 0.9&deg; = 400 steps, etc.<br />
# Know your '''stepper drivers' microsteps''' setting. Most Pololus are set to 16x. GEN3 driver 2.3 is fixed to 2 (half step). Some boards have 32x.<br />
# Know the number of '''teeth on your pulleys'''. Standard printed pulleys have 8 teeth. Most machined pulleys have 10 or 12 teeth since 8 tooth is technically too small for T5 belt<br />
# Know your '''belt pitch'''! XL and T5 belts /look/ the same, but the difference is important!<br />
# Know the number of '''teeth on your extruder gears''', or at least the gear ratio.<br />
# Remove all sources of backlash. Your parts won't be usable as calibration pieces if you have lash!<br />
# Open the [http://calculator.josefprusa.cz/ Online RepRap Calculator] to find XY and E steps, layer heights, and acceleration.<br />
<br />
==XY steps==<br />
<br />
[[File:Teacup Configtool Belt Calculator.png | 300px | thumb | [[Teacup Firmware]]'s Configtool comes with a steps/mm calculator. Values from there are usable for other firmwares, too.]]<br />
<br />
Assuming you're using belts and pulleys, the XY steps-per-mm can be accurately calculated using your motor, pulley, and belt characteristics, and once set they shouldn't need to be calibrated further. But there's no harm in making sure! '''If you've calculated this value correctly but your objects come out the wrong size by a noticeable amount, your belts may be damaged or something else is awry!'''<br />
<br />
The basic formula is:<br />
<br />
<math>steps/mm = \frac{motor\ steps\ per\ rev * driver\ microstep}{belt\ pitch * pulley\ number\ of\ teeth}</math><br />
<br />
Some common examples:<br />
<pre><br />
// NEMA 17 motor with T2 belt and 20-tooth pulley:<br />
(200 * 16) / (2 * 20) = 80.0<br />
<br />
// NEMA 17 motor with T5 belt and 8-tooth pulley:<br />
(200 * 16) / (5 * 8) = 80.0<br />
<br />
// NEMA 17 motor with XL belt and 8-tooth pulley:<br />
(200 * 16) / (5.08 * 8) = 78.74<br />
</pre><br />
<br />
==Z steps==<br />
Most RepRap printers use a pair of threaded rods for the Z axis. So to calculate how far the Z axis moves for each revolution of the motor, first you need to know how much rotation is being transmitted to the Z rods, and then use the "thread pitch" of the rod (distance-per-revolution) to determine the vertical motion.<br />
<br />
The basic formula to calculate motion on a rotating rod is:<br />
<br />
steps_per_mm = (motor_steps_per_rev * driver_microstep) / thread_pitch <br />
<br />
Some common examples:<br />
<pre><br />
// NEMA 17 with standard pitch M5 threaded rod:<br />
(200 * 16) / 0.8 = 4000<br />
<br />
// NEMA 17 with standard pitch M8 threaded rod:<br />
(200 * 16) / 1.25 = 2560<br />
<br />
// NEMA 17 with SAE 5/16" threaded rod. It has 18 threads per inch (25.4mm / 18):<br />
(200 * 16) / (25.4 / 18) = 2267.7165355<br />
</pre><br />
<br />
Some printers connect the Z motor to the Z rods with a belt and pulleys. As long as the pulleys have the same diameter the above formula will work. But if the pulleys differ you'll need to include this ratio in the final result. For example, if the motor pulley was half the size of the rod pulley, you would need to multiply the final result by 2.<br />
<br />
==E steps==<br />
There are an increasingly wide variety of motors and extruder setups to choose from. "Wade" extruders use a NEMA motor to drive a large reduction gear that turns a "hobbed bolt." Direct-drive extruders typically use a motor with a planetary gearbox to turn a drive gear, such as the popular MK7. Bowden setups can use either method to push the filament through a tube to the hot end. There are others, such as worm drives, but we won't get into those here.<br />
<br />
===Calculate===<br />
For a typical Wade extruder, the hobbed bolt will be made from an M8 bolt, and its "effective diameter" will be around 7mm. The direct-drive MK7 gear is specified as having an effective diameter of 10.56mm. These are just starting points to get close to the correct value, and then you'll measure and calibrate to get the exact value later.<br />
<br />
The standard formula is:<br />
e_steps_per_mm = (motor_steps_per_rev * driver_microstep) * (big_gear_teeth / small_gear_teeth) / (hob_effective_diameter * pi)<br />
<br />
Some typical examples:<br />
<pre><br />
// Classic Wade with a 39:11 gear ratio<br />
(200 * 16) * (39 / 11) / (7 * 3.14159) = 515.91048<br />
<br />
// Gregstruder with a 51:11 gear ratio<br />
(200 * 16) * (51 / 11) / (7 * 3.14159) = 674.65217<br />
<br />
// Gregstruder with a 43:10 gear ratio<br />
(200 * 16) * (43 / 10) / (7 * 3.14159) = 625.70681<br />
<br />
// MK7 Direct Drive with 2engineers 50:1 planetary gear motor<br />
(48 * 16) * (50 / 1) / (10.56 * 3.14159) = 1157.49147<br />
</pre><br />
<br />
===Measure===<br />
Required tools: vernier caliper with depth gauge, or similar tool that can precisely measure 100mm. Your hob effective diameter is unlikely to be exactly 7mm.<br />
<br />
# Remove the hot-end from extruder so you don't waste filament.<br />
# Feed in some filament.<br />
# Using the extruder body as a reference point, mark the filament at 120mm.<br />
# Tell the printer to feed 100mm of filament.<br />
# Measure the distance from the extruder body to the mark you made. It will be over 20mm if it moved too little, under if it moved too far.<br />
# <pre>new_e_steps = old_e_steps * (100 / distance_actually_moved) … or, old_e_steps * (100 / (120 - distance_to_mark))</pre><br />
# Set this value in your firmware. You may need to re-flash your board. Sprinter/Marlin supports M92 E''nnn'' to set this value temporarily.<br />
# Repeat from Step 3 until you get between 96-104mm. Then continue with this guide. You'll dial it in perfectly later on.<br />
# '''Don't flash firmware yet.''' There's a further refinement to this value below. ''Why?'' The back-pressure from the hot-end alters how much plastic each hob revolution pushes, and you'll probably end up tightening your idler more which reduces the hob effective diameter.<br />
# Re-attach hot end.<br />
<br />
==Z height==<br />
At Z=0, you should be able to have a single piece of paper between your nozzle and the bed, and move it with a little "grabbing" but not quite enough to bend the paper when you push it. This is a simple, quick and effective test to use when levelling your bed. This small gap almost perfectly compensates for thermal expansion, which causes your hot-end to actually get longer as it heats up!<br />
<br />
Rather than tuning your endstop endlessly, you could simply make a macro that homes Z using the endstop then sends G92 Z-nnn where -nnn is the negative position of your endstop. Your endstop must of course be below Z=0 for this to work. (Not too much, or you may damage the nozzle and/or print-bed!) Ideally in this setup your endstop would be set so that the (cold) nozzle just touches the bed, and then you'd send G92 Z=-0.1 (or your measured thermal expansion). Note that most slicing software adds a HOME command followed by G92 Z0 to the starting G-Code, so you will also need to tune your slicing settings to make sure your G-Code homes to Z-nnn. There are now many adjustable Z-endstops available for download, and these can be real time-savers.<br />
<br />
When your Z=0 point is set correctly, your bottom layer will be slightly fatter than layers on top, but not extremely so. Most slicing software is set up by default to extrude a little extra material in the first layer, and you can tune this to get the perfect extrusion for your first layer, as well. (See below.)<br />
<br />
Bed adhesion is strongly related to the Z=0 point. If you're not getting enough adhesion, print slower with a lower Z=0 point so the first layer is squished more. If you're getting too much adhesion, raise the Z=0 point a little so the first layer isn't quite so squished.<br />
<br />
# Find the appropriate Z=0 point.<br />
# Send G92 Z0.<br />
# Prepare printer for printing- warm up bed, load filament, etc.<br />
<br />
==Slicer settings==<br />
===Layer height, Extrusion width===<br />
These are simple to visualise. When your extruder draws a line of plastic, that line has a height and width. You get to choose these values.<br />
<br />
Best results are obtained when layer height < 80% of nozzle diameter, and extrusion width >= nozzle diameter.<br />
<br />
Eg; with an 0.35 nozzle, your '''maximum''' layer height is 0.35*0.8= '''0.28mm''' and your extrusion width should be 0.4mm or greater.<br />
with an 0.5mm nozzle, your layer height can be up to 0.4mm, and an 0.25mm nozzle will give you 0.2mm max layer height.<br />
<br />
'''You can use a lower layer height or larger extrusion width if you wish, it will work fine'''. The slicing software automatically calculates the appropriate volume to extrude based on the settings you choose. '''There is no hard lower limit on layer height''' - it is limited by your ability to keep flow consistent at very low flowrates. Some reprappers have printed layers as small as 5 micron - 0.005mm!<br />
<br />
Personally I go for layer height of 0.2mm, and extrusion width of 0.5mm regardless of which nozzle I'm using.<br />
<br />
Slic3r automatically chooses an extrusion width for you based on your nozzle diameter. If you're determined to choose, you can use the ''extrusion width'' advanced setting. It is frequently advantageous to choose as models may have walls of a particular width, and by choosing you can ensure they are entirely filled with perimeter with no gap in the middle and no infill.<br />
<br />
==Nozzle Temperature==<br />
Each type of plastic, and each colourant for each type of plastic alters the ideal printing temperature. E.g., I can print opaque PLA at 165°C with fantastic results, but my translucent PLA prefers 180°C!<br />
<br />
Every machine will have different numbers due to differences in thermistor, and how close to barrel temperature your thermistor is actually sensing.<br />
<br />
Here's how I find my optimum temperature for each roll of filament that I have:<br />
<br />
# Choose a fairly simple model that's large enough that you can clearly see the infill while it's printing<br />
# Make sure your hobbed bolt's teeth are clean of debris such as chunks of plastic<br />
# Make sure your idler is tight! really tight! "it hurts my fingers to pull on it and I still can't move it" tight! A too-loose idler gives ''exactly the same symptoms'' as too low temperature.<br />
# Start printing<br />
# Lower temperature by 5° every 2-3 layers<br />
# When infill starts being a row of dots instead of a line, increase temperature by 10°.<br />
# Keep monitoring print, increase by 5° if your infill goes dotty again If you find that your prints are weak along the layer lines or even delaminate mid-print, you may need to go higher again. With ABS, wrapping your printer in a towel helps a LOT by keeping out draughts and breezes- but beware any PLA parts caught within!<br />
# Store or remember that temperature for that type of filament<br />
<br />
==Bed Temperature==<br />
<br />
Bed adhesion is critically important for quality prints. With the right amount of bed adhesion, your parts will:<br />
# stick to the bed<br />
# not curl or warp<br />
# not exhibit 'hourglass' warping, and<br />
# detach by themselves when the bed is cool.<br />
<br />
This procedure helps attain 1 through 3 by finding the correct bed surface temperature. 4 is obtained by experimenting with various bed coatings such as PVA wood glue (best for PLA), [http://forums.reprap.org/read.php?262,189335 UHU Glue] (for nylon), automotive window tint, hairspray, [http://forums.reprap.org/read.php?4,121996 ABS juice], [http://forums.reprap.org/read.php?4,156005 sugar water] (ABS), etc.<br />
<br />
# Pick a starting temperature. a little too high is better than too low for this test. Suggestions: 110°C for ABS, 65°C for PLA.<br />
# Start a print. If your first layer gets poor adhesion, increase by 3-5° and start again.<br />
# At layer 2, send M104 S0 so your nozzle heater turns off. '''LEAVE THE BED HEATER ALONE'''.<br />
# At layer 3, pause the print and move the nozzle away from it. '''LEAVE THE BED HEATER ALONE'''.<br />
# Prepare/consume a <favourite beverage> while you wait for bed surface temperature to reach thermal equilibrium. This should take 10 minutes at most, generally 5 minutes is plenty.<br />
# Remove the print from your bed. If it is soft or stretchy, your bed temperature is too high. Reduce by 5° and start again. It should behave almost the same as when it is cold.<br />
# When your bed temperature is correct, your part will have hardened while you consumed <favourite beverage> and if you set your bed temperature 5° higher it will remain soft.<br />
<br />
You should generally print your first layer with the bed about 10° hotter than the regular layers' temperature, to ensure that the plastic is very sticky and gets a good grip.<br />
<br />
For reference, the SURFACE temperature of your bed (NOT the temperature measured by your sensor) should be around 105°C for ABS, and around 57°C for PLA.<br />
<br />
Your thermistor '''WILL''' sense a higher temperature than the surface – a gradient of several degrees forms across your glass. '''DO NOT''' muck with thermistor tables or move your thermistor to the surface. You '''WANT''' it close to the heater so it can respond quickly and give a short feedback loop. Just find ''whatever number'' gets the surface to the right temperature, and ''stick with it''!<br />
<br />
After performing this procedure, if your prints warp off the bed mid-print at ends or corners, try adding a brim (Slic3r/Cura setting) and experimenting with various bed coatings. PVA wood glue diluted very thinly in water is excellent for PLA, and certain brands of hairspray are reportedly excellent with ABS.<br />
<br />
==E Steps Fine Tuning==<br />
<br />
Now, with everything very close to ideal values, we can finally dial E steps in that final little bit!<br />
<br />
# Find an object with flat tops on a number of levels, such as [http://www.thingiverse.com/thing:24238 this cube stack test] (scale this object by 250% after loading in Slic3r)<br />
# Slice at 95% rectilinear infill. Use the lowest layer height you're comfortable with - the lower the layer height used for this test, the finer your resulting E steps calibration will be. I use 0.2mm for first run, and if I'm feeling ambitious I'll repeat this process at 0.1mm.<br />
# Print.<br />
# Ignore the first 5-6 layers because they're too sensitive to the exact height of the first layer. If it's ''obviously'' over-filling or under-filling, alter E steps or Z=0 point and restart the print.<br />
# Observe infill. If you '''can't''' see ''tiny'' little gaps between the lines, '''reduce''' E steps by 0.5% every 2 layers until you can see tiny gaps.<br />
# Observe solid top layers. If you '''can''' see tiny gaps, '''increase''' E steps by 0.5% every 2 layers until there's no gaps in the top.<br />
# Send the new E steps to your printer with M92 E''nnn'' ''without even pausing the print'' - you will see the result in a couple of layers when the change is this small.<br />
# Goto 5 until the infill has tiny gaps '''AND''' the solid top layers do not.<br />
# '''Now, your E steps value is extremely fine-tuned! Save this value in your firmware's configuration and flash to make permanent.'''<br />
<br />
==Finish==<br />
<br />
'' '''Now''' '' print your favourite calibration piece (e.g., [http://www.thingiverse.com/thing:9804 ultimate calibration]) and see how it measures!<br />
<br />
== Final Polish: Bed Center==<br />
<br />
If you find that your prints are not winding up in the center of the bed you may need to configure a "homing offset" to correct the origin point (0,0) which should be in the lower left of your build area.<br />
<br />
If after homing your bed with a G28 command your nozzle winds up on the lower left of the printable build area, you should not need any additional tweaking as long as you're able to utilize your entire build-area, if not that may indicate your X_MAX_POS/Y_MAX_POS are set incorrectly.<br />
<br />
If however your nozzle homes off the bed you'll need to compensate with a negative value for the X_MIN_POS/Y_MIN_POS indicating the distance from "home position" to the bed area.<br />
<br />
Example: My X-Axis has a total travel of > 245mm but my bed is only 200mm wide, my X_MIN_POS is set to -45 so that after 45mm of travel it will end up at 0 on the extreme left side and after 245mm it will be the extreme right.<br />
<br />
Also see: [[Configuring Marlin Bed Dimensions]]<br />
<br />
==Optional: Switch to volumetric E units==<br />
'''''Note:''' as of Feb 1, 2014, Marlin supports volumetric E units natively, without this modification. Just send an M200 D<millimeters> to set filament diameter before your print, and the Marlin settings below are unnecessary. You still need to do step 3 (change the filament diameter in your slicer to scale the output to cubic millimeters).''<br />
<br />
It seems silly to me to have to reskein if you change filament diameter (i.e., when switching colours – or printers!). Follow these instructions if you want to use mm^3 units for E instead of mm.<br />
<br />
# Record the filament diameter setting you've been using in your slicer.<br />
# Calculate (filament_diameter / 2) ^ 2 * PI. For filament_diameter = 3.0mm, this is almost exactly 7. For 1.75mm filament, it's almost exactly 2.4.<br />
# Change your filament diameter in your slicer to 2*sqrt(1 / pi) = 1.128379<br />
# Divide your E_steps by the number from Step 2.<br />
# Multiply all your E-related speeds and accelerations (esp. maximums in firmware config!), and retract distance by the value from Step 2.<br />
# Repeat E steps calibration above. Your first print should be extremely close.<br />
<br />
Now you can reuse the same gcode over and over again, and simply alter E steps with M92 when you change filament, or use the same gcode on another printer.<br />
<br />
===Rationale===<br />
We currently have 3 tunables affecting one measurable - extrusion multiplier, filament diameter and E steps all affect the amount of plastic extruded.<br />
<br />
Filament diameter does not change significantly - it should not change mid-print, and only changes by a small amount when switching from one roll of filament to another.<br />
<br />
It should be possible to set two of these tunables to fixed values, and alter only the 3rd when necessary.<br />
<br />
It is sensible to choose the tunable which is easiest to alter - this is E steps which can be altered at any time (even mid-print) by sending M92 E''nnn''.<br />
<br />
The slicer calculates the volume of filament to extrude for each line segment. Then, it takes this volume and divides it by (filament_diameter / 2) ^ 2 * PI to find the distance of filament to extrude.<br />
<br />
SO if we alter our filament diameter such that (filament_diameter / 2)^2 * PI == 1.0, then the E words in our gcode will be in units of mm^3.<br />
<br />
Since our new unit is 7x bigger (area of a 3mm diameter circle is ~7mm^2, so 1mm(length) becomes 7mm^3(volume), for 1.75mm filament the factor is 2.4x), we have to adjust our retraction distance, and E steps and acceleration to suit the new units.<br />
<br />
See [http://wooden-mendel.blogspot.com/2011/09/volumetric-stage-two.html my blog post] for more info.<br />
<br />
[[Category:Calibration| ]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Configuring_Marlin_Bed_Dimensions&diff=153709Configuring Marlin Bed Dimensions2015-09-01T03:49:28Z<p>Eltoozero: </p>
<hr />
<div>Writing this as an amateur RepRapper who initially struggled with getting prints on the center of the bed.<br />
<br />
There are at least 3 different ways to *accurately* get your bed dimensions configured so that your prints wind up centered on the build-plate, all solutions require at least *some* agreement between the Slicer and the Marlin Configuration.<br />
<br />
== Method 1 ==<br />
Configure proper bed offsets in Firmware, configure slicer with actual bed printable area. (Most correct)<br />
<br />
// This is the bed area set to print area including a negative offset for homing origin.<br />
// Does not require M206 and indeed required M206 to be clear.<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS -45<br />
#define Y_MAX_POS 170<br />
#define Y_MIN_POS -20<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
Slicer has correct bed *area* configured as 200,170 (I lose some Y travel because of my binder-clips)<br />
<br />
== Method 2 ==<br />
Configure correct bed *area* in firmware, compensate with M206 EEPROM. (Mostly correct)<br />
<br />
// This is the bed area set to actual print area, relying on M206 to set the offset from homing origin.<br />
// Set this way, you MUST set M206 to your desired negative X,Y offset from homing origin.<br />
// Example: M206 X-45 Y-30<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS 0<br />
#define Y_MAX_POS 175<br />
#define Y_MIN_POS 0<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
In this configuration you issue an M206 x-45 Y-30, then save it to EEPROM with M500.<br />
You can later retrieve this value with M503, but I don't like that the value isn't a "hard coded fact" in the firmware configuration.h.<br />
<br />
== Method 3 ==<br />
Configure correct bed *area* in firmware, compensate with origin offset in Slicer. (Less correct)<br />
<br />
Same Configuration.h as Method 2, however the slicer bed shape is configured with a Bed Size of 200,170 and an Origin of -45,-35.<br />
<br />
I don't like this solution as the printer itself doesn't "know" where it's own printable area is, and relies on the slicer to sort things out.<br />
<br />
[[Category:Marlin]]<br />
[[Category:Calibration]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Calibration&diff=153708Calibration2015-09-01T03:48:11Z<p>Eltoozero: </p>
<hr />
<div>{{languages}}<br />
{{merge|RepRapSoftwareTweakingManual}}<br />
<br />
'''ANNOUNCEMENT:''' If you search for the latest up-to-date guide please take a look at [[Triffid_Hunter%27s_Calibration_Guide|Triffid's Guide]].<br />
<br />
'''Calibration''' is the collection of mechanical "tweaking" processes needed to get exact, quality prints. While your [[RepRap machine]] may be working as far as the [[electronics]] are concerned, calibration is necessary to have well printed parts.<br />
<br />
Without calibration, prints may not be the correct dimensions, they may not stick to the build surface, and a variety of other not-so-wanted effects can occur. A RepRap can be calibrated to be as accurate as the mechanics allow.<br />
<br />
Once you have finished the physical build of your RepRap printer, calibration is the next big hurdle. Trying to print before calibration will likely result in a messy "blob" smeared over the [[printer bed]].<br />
<br />
The following set of objects and notes are taken (and edited) from Coasterman who posted them to [[Thingiverse]]. They have been moved to the RepRap wiki so that they could more easily be edited and contributed to by the broader community. <br />
<br />
Though the specific recommendation made in this article are based on [[Skeinforge]] (or [[sfact]]), this information should be nearly equivalent for most other software. Regardless of the software used, the techniques described and the set of calibration objects are invaluable.<br />
<br />
Note that calibration is an ongoing process that needs to be performed throughout the life of the printer. There are almost always adjustments and tweaks that can be done to improve print quality.<br />
<br />
= PAY ATTENTION TO THIS =<br />
Whilst calibration is a somewhat iterative process; the order of calibration laid out below is quite important. <br />
<br />
It is '''PARTICULARLY IMPORTANT''' that the calibration of the motors is done first as '''poorly calibrated motors''' can '''destroy a [[stepper motor driver]] (e.g. [[Pololu stepper driver board|Pololu]]s)''' and potentially the motors!<br />
<br />
=Prerequisites=<br />
<br />
Before attempting calibration, a few things are necessary:<br />
* A stable build process should be established. Your machine should be completely built and all of the nuts and bolts tightened down.<br />
* The machine should be on a steady, flat, level surface.<br />
* Calipers, a level, and any necessary wrenches/screwdrivers to adjust the machine should be handy.<br />
<br />
<br />
=Calibration processes=<br />
== Motherboard ==<br />
Whilst not technically a calibration issue, if you don't set the firmware's motherboard setting correctly then calibration simply won't work.<br />
<br />
Basically [[List of Firmware|each firmware]] supports a number of [[List of electronics|different motherboards]]. As such, one of the first things you need to do is correctly specify the correct motherboard.<br />
<br />
For [[Marlin]] edit Configuration.h and find the line:<br />
<br />
#define MOTHERBOARD XX<br />
<br />
Change the XX to the number which corresponds to your printer's motherboard.<br />
<br />
== Motor Calibration ==<br />
<br />
Objective: set the current for the [[stepper motor]]s to the correct level.<br />
<br />
Your motors should be quiet when running and can occasionally make musical sounds, particularly when making circles. If they are making a fair amount of noise then you have a problem. <br />
<br />
Calibration Object: None<br />
<br />
NOTE: incorrect current settings can damage your stepper motor driver and/or your motors.<br />
<br />
=== Symptoms ===<br />
<br />
'''Motor make significant noise.'''<br />
<br />
This generally means you have too much current to the motor.<br />
<br />
'''Motor vibrates without turning.'''<br />
<br />
This generally means that you have insufficient current to the motor. You could also have a problem with a part sticking which stops the motor from being able to drive the axis.<br />
It might also be possible to be way off in your steps/mm (e.g. a typo in your value in the config file): when steps/mm is double the correct value your motor might vibrate on the spot.<br />
<br />
'''Axis movement pauses momentarily and then resumes.'''<br />
<br />
You may have too much current going to the motor which is causing the stepper motor driver to over-heat. Reduce the current. This can also be caused by firmware but check your motors first. Another possible cause is the set screw on the gear is not tight enough.<br />
<br />
===Instructions===<br />
Each [[Pololu stepper driver board|Pololu]] has a trimpot located next to the heatsink. The trimpot controls the current that is sent to each motor. Turning the trimpot counter-clockwise reduces the current to the motor, turning it clockwise increases the current to the motor.<br />
<br />
Start by adjusting the trimpot down until your motor vibrates on the spot rather than turning cleanly. Now turn the trimpot in a clockwise direction in small increments (1 eighth of a turn) until the motors just start running. Then give the trim port a final turn of about 1 eighth of a turn and your should be good to go.<br />
<br />
== Thermistor ==<br />
Like your motherboard, most firmware support a variety of [[thermistor]]s. You need to ensure that the firmware is set to match your thermistor. If it doesn't, then your temperature readings won't match the real world.<br />
<br />
For marlin the settings are in Configuration.h under 'Thermal Settings'.<br />
<br />
#define TEMP_SENSOR_0 5<br />
#define TEMP_SENSOR_1 0<br />
#define TEMP_SENSOR_2 0<br />
#define TEMP_SENSOR_BED 2<br />
<br />
<br />
TEMP_SENSOR_0 is normally your hot end and TEMP_SENSOR_BED is normally your [[Heated bed|bed]]. Set both according to the table of supported thermistors.<br />
<br />
== End Stop ==<br />
Objective: to correctly set the [[endstop]]s on each axis.<br />
<br />
The results of this step should see each axis correctly home and not run into the opposite end of each axis.<br />
<br />
Signs of having mis-calibrated endstops: the bed or extruder physically crash into either end of their axis.<br />
<br />
Importance: <br />
<br>An head (extruder) crash can damage the extruder, bed, cogs or motors.<br />
<br />
Calibration Object: none<br />
<br />
=== Instructions ===<br />
Each axis of your printer has a 'home' position and a maximum feed length. If the firmware attempts to drive the extruder or bed beyond either of the two end points physical damage to your printer is possible.<br />
<br />
Most printers have a single 'physical' end stop on each axis whilst some may have a physical end stop at each end of an axis. <br />
<br />
End stops are typically a micro switch which is triggered when the carriage or bed touch the end stop. <br />
<br />
Soft Endstop<br />
Printers with only a single 'physical' end stop will rely on the firmware implementing a 'soft' end stop. A soft end stop is always at the opposite end of an axis to the physical endstop. Together the physical and soft endstops 'frame' the axis and define the total travel of the axis.<br />
<br />
With a software Endstop each time you turn on your printer you MUST perform a 'home' operation. The home operations effectively lets the firmware know where the physical endstops are. Once the firmware has confirmed the location of the physical endstops it is able to calculate the location of the soft endstops as a simple travel distance in millimetres.<br />
<br />
A soft endstop is therefore simply a measurement entered into the firmware that tells the firmware how many millimetres of travel the axis has from the physical end stop before physically crashing into the opposite end of the axis.<br />
<br />
==== Hard Endstops ====<br />
<br />
Work with each axis in turn.<br />
<br />
Start with the x end stop. <br />
Position in the Extruder so that it is in the middle of the carriage and well clear of the bed.<br />
<br />
Most printer software will let you move each of the axis in small increments in both directions.<br />
<br />
Connect your printer software so that you can move the xaxis. Ideally you need to be able to have the software move the axis about 10 mm.<br />
<br />
Start by testing that your endstop is working.<br />
<br />
Manually close x axis endstop (e.g. with your finger :D ).<br />
<br />
With the carriage centred instruct the software to move the axis 10 mm towards the physical endstop.<br />
<br />
Now instruct the software to move the axis 10 mm away from the physical endstop.<br />
<br />
If the carriage moves in neither direction then you may need to invert your axis 'enabled' state. <br />
<br />
But make certain the power is on first ;)<br />
<br />
Normally an axis is enabled when the endstop is 'Active Low' (end stop switch is open). In your case it appears that this needs to be reversed.<br />
<br />
When using Marlin firmware change X_ENABLE_ON from 0 to 1.<br />
<br />
After reflashing the firmware, peform the above test again to ensure the endstop is working.<br />
<br />
Recentre the carriage.<br />
<br />
With the endstop closed instruct the software to move the axis 10 mm 'towards' from the physical end stop.<br />
<br />
It should refuse to move.<br />
<br />
If the end stop moves then whilst holding the endstop closed instruct the axis to move 10 mm 'away' from the physical endstop. If it refuses to move then you need to 'invert' the 'x' direction for the endstop.<br />
<br />
If you are using Marlin this requires both the INVERT_X_DIR and the X_HOME_DIR to be reversed to false and 1 respectively.<br />
<br />
Once you have reflashed the firmware with the above settings peform the test again to ensure that the axis refuses to move 'towards' the endstop when it is manually closed.<br />
<br />
The next action is to find the limit of the x axis in the direction of the physical endstop. The limit is defined as the most extreme position the x axis can be in without impacting the side of the printer. <br />
<br />
Move the x axis slowly towards the physical endstop. As you approach the end stop reduce the number of mm you move each time. <br />
<br />
Check the carriage before each move to ensure that the next move isn't going to cause the carriage to impact. Once you have the carriage in the most extreme position move the endstop into contact with the carriage so that the carriage triggers the end stop.<br />
<br />
Move the carriage away from the end stop and adjust the end stop a little further in towards the centre of the axis to give yourself a little more buffer between the carriage stopping and a possible impact.<br />
<br />
Finally you need to do a test 'home' for the axis.<br />
<br />
Have you hand near the power switch incase the 'homing' operation moves the axis in the wrong direction.<br />
<br />
Start by moving the carriage so that it is 10 mm clear of the physical end stop.<br />
<br />
Instruct the printer software to 'home' the single axis. DO NOT tell the software home ALL axis.<br />
<br />
The carriage should move towards the endstop, back away from the end stop a couple of mm and then move towards the endstop and on contact stop. <br />
<br />
If the carriage moves in the wrong direction or fails to stop when it contacts the endstop immediately cut power to the printer. Now repeat the above process again to correct the problem!<br />
<br />
You have no completed configuration of the x axis physical end stop.<br />
<br />
Repeat this process for each physical end stop.<br />
<br />
You should now do a test 'home' of ALL axis. <br />
<br />
==== Software endstop ====<br />
<br />
Configuring the software end stop is a simple matter of determining how far the axis can travel away from the physical end stop before it impacts the other side of the printer.<br />
<br />
Start by homing the axis. Now move the carriage in 10 mm increments towards the far side of the printer. Count the number of movements. As the carriage approaches the far side of the printer, you may want to reduce the travel of each movement. Once you are within about 5mm of the far side of the printer, add up the total distance traveled. This is the location of the software end stop for that axis. Repeat for the other two axes.<br />
<br />
Now update your firmware with the location of the software end stops. For Marlin firmware you need to se the X_MAX_POS, Y_MAX_POS and Z_MAX_POS with each of the above settings.<br />
<br />
Once you have reflashed your firmware. Home the printer on each axis and then with your finger on the power cut off switch send the carriage in the direction of the soft end point, reducing the distance of each move as you approach the soft end stop's logical location. Ensure that the carriage stops moving when it hits the soft and stop (and not the printer side).<br />
<br />
Do this for each axis in turn. Your end stops are now calibrated.<br />
<br />
==== Build Area ====<br />
<br />
Setting your bed size incorrectly will lead to your prints being off-center on the bed, or in the worst case "cropped".<br />
<br />
If after configuring your hard/soft endstops and performing a G28 (home all axis) your nozzle is "homed" at the lower left of the build-plate, you do not need to make any adjustments.<br />
<br />
However, if after G28 homing your nozzle winds up off the bed (probably below and to the left), you will need to tell the firmware how far away the true origin (0,0) is by setting the X_MIN_POS and Y_MIN_POS to a negative value equivalent to the distances from home to the start of the actual build-area in the respective directions.<br />
<br />
Example: My heavily modified RepRapPro Mendel has a 200mmx200mm build area but homes it's nozzle 30mm below the plate and 45mm to the left, by setting my Y_MIN_POS to -30 and X_MIN_POS to -45 the printer knows it can travel 245mm from home to right edge of my bed, but the actual bed is only under the nozzle after 45mm of X travel.<br />
<br />
More detail available on the [[Configuring Marlin Bed Dimensions]] page.<br />
<br />
== Bed Leveling ==<br />
Objective: To level the print bed so that your objects will adhere to the surface. The result of this step should make the extruder nozzle the exact same height above the bed across the entire bed surface.<br />
<br />
Signs of having an unlevel bed: Plastic will adhere to part of the bed but not others. The extruder nozzle might "dig" into parts of the bed, pulling up or deforming the bed surface.<br />
<br />
Importance: The first layer of the print is the foundation of all subsequent layers. A bad first layer could mean the part might peel off of the print bed during the print, "blobs" of plastic may form, causing problems in following layers, and a variety of other things.<br />
<br />
Calibration Object: [http://www.thingiverse.com/thing:13053 bedleveling.stl]<br />
<br />
===Instructions===<br />
''Step 1 - Establish a corner height:''<br />
* Move the nozzle to a corner of the bed and measure its height at this point.<br />
* Move the nozzle down close to the bed.<br />
* Use a thick piece of paper or plastic as a shim and slide it under the nozzle. You should feel a slight drag from the extruder on the paper as you pull the paper through. If not, move your nozzle up or down slightly until it does.<br />
<br />
''Step 2 - Getting the second corner:''<br />
* Move the Y axis (the bed should move) to the second corner.<br />
* Using the same shim, determine if the bed is too close or too far away from the nozzle at that point.<br />
* Adjust the screws that hold up the bed along that edge so that the height at the corner matches your shim.<br />
* Move back to the first corner and check the height with the shim again. It should match, if not, repeat step 1 and step 2 until it does.<br />
<br />
''Step 3 - Getting the third and fourth corners:''<br />
* There are two ways to adjust this - tweaking the jack screws that hold up your X axis rails and adjusting the bed itself.<br />
** Jack screw method:<br />
*** Move the Y axis to the third corner and check it with the shim. If it is too high or too low, turn off the motors and slightly rotate one of the jack screws until the nozzle height matches the shim.<br />
*** If this method is used, you MUST return to the second corner and move the nozzle up/down to the shim, and then repeat this method until both sides line up with the shim.<br />
** Nut and bolt method:<br />
*** Move the Y axis to the third corner and check it with the shim. If it is too high or too low, adjust the bed screws along that edge until they line up.<br />
*** Check the height with the second corner and repeat this method until the corners line up<br />
<br />
Once the bed is level print the [http://www.thingiverse.com/thing:13053 Bed Leveling Calibration test object] and ensure that each square is even, smooth and consistent.<br />
<br />
Other methods do exist. Reference [[Leveling the Print Bed]] for more information. You may want to download the original [[scad]] file so that you can change the dimensions to match your print bed.<br />
<br />
== Bed surface preparation ==<br />
Objective: correct preparation of the bed to ensure that objects adhere to it.<br />
<br />
Additional troubleshooting info can be found in the [[Print_Troubleshooting_Pictorial_Guide#Bed_Adherence|Bed Adherence section of the Print Troubleshooting Pictorial Guide]].<br />
<br />
===Instructions===<br />
An incorrectly prepared bed can result in poor adhesion of the plastic to the bed as well as a 'bubbling' effect.<br />
<br />
Even a little bit of finger print grease on some surfaces is enough to ruin a print.<br />
<br />
Bed preparation will depend on what material your bed is made out of, what you intend on covering it with, as well as what material you expect to be printing:<br />
<br />
==== Glass ====<br />
Clean the glass with a non-abrasive common household window cleaner using a lint free cloth. Spare no effort in ensuring that the glass is spotless. <br />
Alternative recommended cleaners include:<br />
* acetone/cheap nail polish remover,<br />
* isopropyl alcohol.<br />
<br />
With a heated bed and ABS you will probably want something to help the print stick to the bed. Options include:<br />
* [http://forums.reprap.org/read.php?4,156005 Sugar water] (Sugar dissolved in Water, approx. 1:10 by weight) -> bed temp approx. 95,<br />
* [http://forums.reprap.org/read.php?4,121996 ABS juice] (ABS dissolved in acetone, e.g. 10mm length of 3mm filament (0.07g) dissolved in 10ml acetone) -> bed temp approx. 90,<br />
* Kapton tape (as below).<br />
<br />
==== Tapes ====<br />
When applying any type of tape to print on, it is important to make sure the print surface is still smooth when you are done. Attempt to lay down tape edge-to-edge, with no overlap. If applying multiple layers, it can be beneficial for the layers to alternate directions, so that direction-specific defects do not build up as you add layers.<br />
<br />
===== Blue Tape =====<br />
For those printing with [[PLA]] filament, [[BlueTape|blue tape]] has been found to adhere well when using 3M's 'Scotch-Blue Painters Tape for Multi-Surfaces #2090'. This tape may be found in two inch rolls, or three inch rolls. The PLA will adhere to multiple layers, so it is advised to place down at least three layers of tape, before printing on a surface, to prevent damage to the print bed.<br />
<br />
===== Kapton Tape =====<br />
[[Kapton]] tape is a heat resistant tape which is commonly used to cover a variety of material types used in beds. The kapton tape provides good adherence for a variety of plastics. It is important to avoid bubbles while applying the tape. The "wet method" is particularly helpful as explained in this [http://www.youtube.com/watch?v=yVTWXGqNB2I video].<br />
<br />
==== Other Materials ====<br />
<br />
===== Buildtak =====<br />
<br />
A semi-permanent adhesive-backed plastic sheet that is installed on the build platform. Does not require prep (e.g. hairspray). Works with ABS and PLA. Not clear what the lifetime is, but it is advertised as longer than tapes. [http://www.buildtak.com/ Buildtak]<br />
<br />
''TODO'': need details on other materials.<br />
<br />
== Extrusion ==<br />
Objective: to ensure the hot end temperature is set correctly so that material is extruded cleanly<br />
<br />
Calibration Object: None<br />
<br />
=== Extruder steps ===<br />
<br />
Objective: to adjust the extruder steps per unit<br />
<br />
To set the extruder steps per distance of filament, (the 3mm or 1.75mm filament, NOT the material that comes out of the hot end) send M92 E<new value>. You can check the current value by sending "M503". Your host software is part of the [[CAM Toolchains|CAM toolchain]] that you use to send G-Code to control the printer.<br />
<br />
If you received filament driver as a whole unit the first estimate is calculated, however the error margin is possibly too great to leave it as it is. Importantly, write the initial value for M92 down, then raise the hot end and extrude, then measure the length extruded.<br />
<br />
Then the value '''(wanted_length/measured_length)*old_M92''' is a better value. You might want to do it some more times until it doesn't change much.<br />
<br />
==== Calibration for printing ====<br />
<br />
We also want to calibrate based on how it actually prints, basically for this a [http://www.thingiverse.com/thing:119306 calibration Object] is used and the value is increased/decreased, this can be done both by using M92 E again, or setting extrusion multipliers in slicer software.<br />
<br />
Basically you do this until it looks good, increasing if it looks like too little, decreasing if too much. Pictures are in the [[Print_Troubleshooting_Pictorial_Guide#Material_Feed|Print Troubleshooting Pictorial Guide]].<br />
<br />
Note that this calibration is affected by the xyz calibration, if the part is made larger than intended, it takes more filament to make it, so that calibration should be correct. ''However'' calculations from gear ratios should already give values very close to the correct ones.<br />
<br />
=== PLA ===<br />
<br />
== Layer height ==<br />
Objective: to correct the layer height settings to reflect your printer's actual layer height.<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:17273 0.5mm-thin-wall.stl]<br />
<br />
When your extruder draws a line of plastic, that line has a height and width. You get to choose these values.<br />
<br />
Best results are obtained when layer height < 80% of nozzle diameter, and extrusion width >= nozzle diameter.<br />
<br />
Eg; with an 0.35 nozzle, your '''maximum''' layer height is 0.35*0.8= '''0.28mm''' and your extrusion width should be 0.4mm or greater.<br />
with an 0.5mm nozzle, your layer height can be up to 0.4mm, and an 0.25mm nozzle will give you 0.2mm max layer height.<br />
<br />
'''You can use a lower layer height or larger extrusion width if you wish, it will work fine'''. The slicing software automatically calculates the appropriate volume to extrude based on the settings you choose. '''There is no hard lower limit on layer height''' - it is limited by your ability to keep flow consistent at very low flowrates. Some reprappers have printed layers as small as 5 micron - 0.005mm!<br />
<br />
[[User:Triffid hunter|Triffid Hunter]] (whose [[Triffid Hunter's Calibration Guide|guide]] this text was stolen from :D ) recommends layer height of 0.2mm, and extrusion width of 0.5mm regardless of which nozzle he's using.<br />
<br />
[[Slic3r]] automatically chooses an extrusion width for you based on your nozzle diameter. If you're determined to choose, you can use the ''extrusion width'' advanced setting. It is frequently advantageous to choose as models may have walls of a particular width, and by choosing you can ensure they are entirely filled with perimeter with no gap in the middle and no infill.<br />
<br />
=== Instructions ===<br />
Print the 0.5mm thin wall cube and make sure that the layers adhere well but the nozzle does NOT drag through while printing. <br />
<br />
Adjust the layer height in .01 increments until you get a nice print. In [[Pronterface]]/[[Skeinforge]] settings, this can be found under Craft > Carve.<br />
<br />
Depending on other factors you may find it hard to get all four walls to print nicely. For the first pass if you can get just one wall looking good then move on to the next test.<br />
<br />
== Infill ==<br />
Objective: to correct the infill setting.<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:17274 20mm-box.stl]<br />
<br />
=== Instructions ===<br />
Set infill solidity to 1.0 for this, using linear infill. In Pronterface/Skeinforge settings, this can be found under Craft > Fill.<br />
<br />
Print the cube and analyze the top. If there is NOT ENOUGH plastic (a concave top), reduce the Infill Width over Thickness by .05 increments. If there is TOO MUCH plastic (convex top), turn that parameter up by .05 increments. In Pronterface/Skeinforge settings, this can be found either in Craft > Inset in some versions, or Craft > Fill in other versions.<br />
<br />
Once you're feeling close, start bumping it around in smaller increments. <br />
<br />
You may also need to adjust your feed rate.<br />
<br />
Adjust the feed rate by increments of 2 or so until you feel close. If it looks really disgusting and blobby, go by increments of 0.5mm. Then go by smaller and smaller increments until you've nailed it. Although you probably just want to decrease Infill Width over Thickness instead of decreasing Feedrate because lowering feedrate will degrade the resolution.<br />
<br />
== Temperature control ==<br />
Objective: to set the hot end temperature correct for your preferred plastic.<br />
<br />
Note: you will find that different types of plastic have vastly different temperatures for both your hotend and your bed. What you might not expect is that different colours for the same material can also required different printing temperatures.<br />
<br />
As the tower has quite a small 'top' surface area you may need to cool this object as you print. If your printer doesn't have a built in fan you can use any room fan as a substitute.<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:17276 50mm-tower.stl]<br />
<br />
Something to be aware of is that there are multiple reasons an extruder can skip during a manual extrude. Take care of those problems first by setting the temp to the high end of the expected range (e.g. 235-240 for ABS) and making sure the extruder doesn't skip during a manual extrude.<br />
<br />
=== Instructions ===<br />
Set the 'Infill solidity' to 1.0. In Pronterface/Skeinforge settings, this can be found under Craft > Fill.<br />
<br />
If the plastic comes out as a drip instead of a cylindrical filament, the temperature is too high. -- http://wiki.ultimaker.com/Troubleshooting#Plastic_comes_out_of_extruder_head_in_a_flowing_state<br />
<br />
Start by doing a simple extruder test to determine what the range of temperatures are that you can extrude at.<br />
Reduce the temperature in 5 degree increments until the extruder starts skipping when you do a manual extrude. Turn the extruder up 5 degrees and note this as your minimum extruder temperature.<br />
<br />
Print this block. <br />
<br />
If it looks like a blob, turn down all the temps by 5 degrees until you get something good. Chances are you won't need to do this more than 5 degrees. <br />
<br />
Note: Be careful as going too low can result in the plastic setting making it hard for the motors to drive the plastic, possibly causing wear or damage.<br />
<br />
TODO: list temperature ranges for common plastics.<br />
<br />
==== Recommendations ====<br />
'''PLA'''<br />
<br />
Hotend: 185&nbsp;°C<br />
<br />
Bed: 60&nbsp;°C<br />
<br />
'''ABS'''<br />
<br />
Hotend: 230&nbsp;°C<br />
<br />
Bed: 110&nbsp;°C<br />
<br />
== Perimeter Width ==<br />
Objective: correct the perimeter width over thickness. In newer versions Edge Width over Height.<br />
<br />
When using [[Slic3r]], this is automatically calculated from the layer height. Adventurous sorts can modify this setting through Print Settings->Advanced->Extrusion Width->Perimeters. Slic3r accepts a fixed value (use the layer height and do the math to get Edge Width over Height), or a fixed % of the layer height (which is better, as this would be the exact multiple you would need anyway)<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:481395 Perimeter_Width.stl]<br />
<br />
=== Instructions ===<br />
This test prints two objects which are designed to fit together.<br />
<br />
Try to insert the smaller block into the larger block. Try inserting it differently a few times, and check your belt tensions. <br />
<br />
TODO: Need notes on calibration of belt tensions<br />
<br />
<br />
If you can get it in a few mm, good. If you can get it in all the way, awesome. The fit should be snug. If it is loose and can jitter around inside, decrease the perimeter width over thickness, also called Edge Width over Height. In Pronterface/Skeinforge, "Edge Width over Height" can be found in Craft > Carve in the Slicing Settings. If you CANNOT get it in AT ALL, and you are sure there are no whiskers blocking it, INCREASE perimeter width over thickness or Edge Width over Height. The latter is more likely.<br />
<br />
== Bridging ==<br />
Objective: to maximize your printers ability to bridge gaps (i.e. print in thin air).<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:17279 20mm-hollow-box.stl]<br />
<br />
=== Instructions ===<br />
Print the calibration object and if the top droops in, increase the BRIDGE FEEDRATE MULTIPLIER in Speed by increments of .1 until the top stops drooping.<br />
<br />
In Slic3r, this setting is called "Bridge flow ratio", under Print Settings > Advanced > Flow. If the bridge droops, try increasing or decreasing this in increments of .1.<br />
<br />
== Print Precision ==<br />
Objective: improve print precision<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:17278 precision-block.stl]<br />
<br />
=== Instructions ===<br />
<br />
Then there is the precision block. No real huge calibration parameter here. Just play with this and see how well it does on the overhangs and shapes.<br />
<br />
TODO: We need to add some recommendations on how to improve this or find more direct methods of calibrating specific aspects of the print. <br />
<br />
== Overhang ==<br />
Objective: fix overhang problems<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:17348 overhang-test.stl]<br />
<br />
<br />
=== Instructions ===<br />
Then there is a simple overhang test. Print and observe the overhangs. This is up to you to figure how to improve the overhangs.<br />
<br />
TODO: We need to add some recommendations on how to improve this or find more direct methods of calibrating specific aspects of the print.<br />
<br />
gregor: i get better results when i add a fan to cool the overhang down<br />
<br />
this was my test object: [http://www.thingiverse.com/thing:58218]<br />
<br />
== Oozebane ==<br />
Objective: stop material oozing out of the nozzle during 'non-printing' moves.<br />
<br />
Many extruders will emit (ooze) plastic even when the extruder motor is not turning. To overcome this your slicing software needs to 'retract' the print medium during head movement when not printing. The retraction creates negative pressure within the hot end heating chamber which effectively sucks the print medium back up through the nozzle, stopping it from oozing.<br />
<br />
==== Calibration Object: [http://www.thingiverse.com/download:17661 oozebane-test.stl] ====<br />
<br />
The calibration object prints two towers about 30 mm apart. The head must move between each of the towers at each layer. If your printer is not set correctly then you will see many fine filaments (or strings) between the two towers. You can eliminate these filaments by eliminating ooze.<br />
<br />
==== Calibration Object 2 (Variable sized towers for testing ooze): [http://www.thingiverse.com/download:20868 variable_size_ooze_test_nobase.stl] ====<br />
<br />
This is a simple model to help tune reversal parameters for a stepper extruder (using much less filament before actually testing the ooziness). <br />
It consists of a number of towers with different thicknesses, with different spacing between each tower. <br />
A well-tuned bot should be able to produce even the smallest towers.<br />
<br />
<br />
Symptoms<br />
<br />
=== Instructions ===<br />
<br />
This is to try to control ooze and calibrate it to be useful. <br />
<br />
Start by setting the Early Shutdown distance to 0 and Slowdown Startup Steps to 1. <br />
<br />
Print the piece and measure the length of stringers where the extruder shut off and the line is thick before becoming a thin whisker. Take that length and put it into early shutdown distance. <br />
<br />
Play with Early Startup Distance Constant until the place where the extruder arrives at the other tower is nice and smooth, so that there isn't any empty space where plastic should be, but there isn't excess plastic extruded.<br />
<br />
References:<br />
*[[Sfact#Q:____What_happened_to_the_old_retraction_settings.3F__What_the_hell_is_oozerate.3F]]<br />
<br />
<br />
Since [http://www.soliforum.com/topic/2841/slic3r-0910b-out-features-wipe-and-vase-options/ Slic3r 0.9.10b] there is a [https://github.com/alexrj/Slic3r/issues/186 wipe before retract] option (under Printer Settings => Extruder)<br />
which seems to make the most difference. Other options to consider: reduce temperature, increase travel speed, retracting more, retract slower, z-lift before travel or lowering extrusion ratios.<br />
<br />
== Overhangs ==<br />
Objective: eliminate droop from overhangs.<br />
<br />
Calibration Object: [http://www.thingiverse.com/download:19658 BridgeTestPart.stl]<br />
<br />
=== Instructions ===<br />
If the calibration object droops, you likely need to decrease "Bridge Flowrate over Operating Flowrate." Or increase "Bridge Feedrate over Operating Feedrate."<br />
<br />
== X & Y scaling and steps/mm calculations==<br />
<br />
''The following information concerning steps/mm adjustments is outdated. It has since been agreed that steps/mm should be set to the exact calculated values since printing with non-ideal steps/mm results in an accurate test piece, but makes the dimensions on every other part even more inaccurate.''<br />
<br />
Scaling goes into the STEPS_PER_MM of the firmware, track offset goes into the G-code compiler (Skeinforge etc.).<br />
<br />
==='''tl;dr'''===<br />
<br />
The most simple way to get reasonably accurate parts is to simply ignore the track offset or to set it to some guessed value, then adjust scaling of the axes, only:<br />
<br />
: <math>\frac {\mbox {current steps per mm} \cdot \mbox {expected distance movement}} \mbox{actual measured distance}</math><br />
<br />
E.g.:<br />
(41.8*100)/94.94=~44.02780703602275121129 <br />
Then repeat: <br />
(44.0278*100)/99.95=~44.04982491245622811406 <br />
Until you get your desired steps per mm.<br />
<br />
* Useful G-code-commands to use with [[Printrun|Pronterface]]/[[Repetier-Host]] or whatever eases your RepRap replication.<br />
(''Do note that there is a setting in configuration.h that enable these EEPROM functions.'')<br />
<br />
M501 (show current settings (steps per mm etc)<br />
M92 X44.04982491245622811406 (change steps per mm to your calculated value, useful for any axis; X,Y,Z and E for Extruder)<br />
M500 (save your new settings)<br />
<br />
* In Teacup firmware you multiply these values by 1000, to get steps per meter, and put the value left of the decimal into config.h's STEPS_PER_M_X, STEPS_PER_M_Y, ... . Then, re-upload the firmware.<br />
<br />
===Track Offset===<br />
<br />
OK, here we get a bit stuck. While the theory section below nicely shows how to calculate the optimum track offset, Skeinforge has no configuration option to adjust this value.<br />
<br />
: An excerpt from a chat between Greg Frost and Traumflug, on 2011/22/06 (typos corrected):<br />
<br />
: [14:30] <GregFrost_> I calibrated the extruded length and then set feed=flow and pw/t and iw/t to 1.5 and immediately got nice looking prints. However, and here is the kicker, the objects are all slightly too big because my single wall box has an actual w/t of 2.1<br />
: [14:31] <GregFrost_> I can fix this with p flow but then i get thin perimeters and they don't always bond well to each other (but objects are the right size).<br />
: [14:31] <GregFrost_> I would like normal flow on the perim but a wider w/t but if i do that it adjusts all of the flows up and I get far too much plastic.<br />
: [14:32] <GregFrost_> what I really need is a way to change the distance inside the object that the perimeter is traced without changing the flow rates.<br />
: [14:37] <Traumflug> To be honest, I never used Skeinforge, this adjustable track offset is an assumption.<br />
: [14:38] <GregFrost_> Traumflug: it would be a good setting, i agree.<br />
: [14:38] <GregFrost_> Traumflug: I think the only way to achieve a track offset is to adjust the perimeter w/t ratio.<br />
: [14:38] <Traumflug> So, Skeinforge doesn't compensate for track width?<br />
: [14:38] <GregFrost_> Traumflug: it does. but it uses the perimeter width/t and infill w.t settings<br />
: [14:39] <GregFrost_> Traumflug: then it uses the layer height<br />
: [14:39] <GregFrost_> Traumflug: and using those it works out the track offset.<br />
: [14:39] <Traumflug> ok, good to know. <br />
: [14:39] <GregFrost_> Traumflug: but the kicker is, changing perimeter w/t also adjusts the flow rate<br />
: [14:40] <GregFrost_> Traumflug: so theoretically when you choose a new w/t, it puts out enuf plastic to fill the width.<br />
: [14:40] <Traumflug> Yes, theoretically<br />
: [14:41] <GregFrost_> Traumflug: but on the perimeter if you use the same volumetric flow as the infill, it bulges past the desired width because there is no containing line.<br />
: [14:42] <GregFrost_> but the one setting that allows you to compensate for that adjusts the flow on all other lines (both infill and perimeters)<br />
: [14:42] <Traumflug> IMHO, changing the plastic flow to compensate for size errors isn't a good way.<br />
: [14:43] <GregFrost_> Traumflug: I agree completely.<br />
: [14:43] <Traumflug> Each time you change the flow, a lot of minor parameters change as well, so a prediction is very difficult.<br />
: [14:43] <GregFrost_> I want to change the track offset.<br />
<br />
=Theory and Maths=<br />
<br />
By [[User:Traumflug | Markus "Traumflug" Hitter]].<br />
<br />
==X and Y Axis==<br />
<br />
Both horizontal axes can be calibrated with two values: track offset and overall scaling. To find out how this is done, let's have a look at a part specially designed to find out those values:<br />
<br />
[[File:RepRap Calibration Frame Drawing.png | center | 600px]]<br />
<br />
It's a frame, similar to the one you use to put pictures up onto the wall. The essential part here is, it has long and short distances to measure on the same part. We need to measure both, to distinguish between track offset and scaling.<br />
<br />
To the right of the drawing, a few tracks laid down by the extruder are sketched in. It shows how the track offset lets the extruder move closer to the inside of the part, so the outer side of the track just ends where the part should end as well.<br />
<br />
All the sizes are overlaid by scaling, which is sort of a "gear ratio" between measurement units and stepper motor steps.<br />
<br />
===Calibration Object===<br />
<br />
====[[OpenSCAD]]====<br />
<nowiki>// X-Y Calibration object<br />
// See http://reprap.org/wiki/Calibration#Theory_and_Maths<br />
<br />
difference() {<br />
cube([100,100,3], true);<br />
cube([80,80,3.1], true);<br />
}</nowiki><br />
<br />
====[[STL]] file====<br />
<br />
[[File:XYCalibration.stl]]<br />
<br />
===Basic Equation===<br />
<br />
With that knowledge, we can sum up what the extruder moves to get the size T = 10&nbsp;mm exactly 10&nbsp;mm wide:<br />
<br />
:<math>\begin{align}<br />
\mbox{movement} = ( \mbox{intended size} - 2 * \mbox{track offset} ) * \mbox{scaling} \\<br />
\end{align}</math><br />
<br />
This holds true for measurements of any size, i.e. also for the 100&nbsp;mm size of our calibration frame:<br />
<br />
:<math>\begin{align}<br />
M_{10} & = ( 10\,\mbox{mm} - 2 * TF ) * S \\<br />
M_{100} & = ( 100\,\mbox{mm} - 2 * TF ) * S \\<br />
\end{align}</math><br />
<br />
You see? Two unknowns and two equations, so the set is solvable.<br />
<br />
===Extending to Erroneous Movements===<br />
<br />
Now, the whole point of this writing is, the extruder movement doesn't match what we need to get accurately sized parts. So we have not only a movement, but also a movement error.<br />
<br />
The reason for the movement error is, according to the basic equation, erroneous track offset and/or erroneous scaling.<br />
<br />
Get these two into the basic equation, result to the left, reason to the right:<br />
<br />
:<math>\begin{align}<br />
& \mbox{movement} * \mbox{movement error} = \\<br />
& ( \mbox{intended size} - 2 * \mbox{track offset} * \mbox{track offset error} * \mbox{scaling} * \mbox{scaling error} \\<br />
\end{align}</math><br />
<br />
Again, this holds true for both our measurements:<br />
<br />
:<math>\begin{align}<br />
M_{10} * E_{M10} & = ( 10\,\mbox{mm} - 2 * TF * E_{TF} ) * S * E_S \\<br />
M_{100} * E_{M100} & = ( 100\,\mbox{mm} - 2 * TF * E_{TF} ) * S * E_S \\<br />
\end{align}</math><br />
<br />
<br />
''... to be continued ... about a formula to get scaling and track offset from measuring these 10 mm and 100 mm ...''<br />
<br />
==Z Axis==<br />
<br />
On the Z axis, there is no track offset compensation, so calibration is reduced to scaling of part height. Build any part of 50&nbsp;mm height, let it cool down, measure it. Then adjust your STEPS_PER_MM in your firmware's config.h to reduce the difference between intended and received part.<br />
<br />
As most RepRaps use a threaded rod on the Z axis, the theoretical value, which can be generated from [http://calculator.josefprusa.cz/ the online calculator], should match reality pretty close. However, there's also material shrink as the plastics is printed at a higher temperature than room temperature.<br />
<br />
=Further reading=<br />
* [[Printing quality]].<br />
* Delta Printer Calibration http://minow.blogspot.co.at/index.html#4918805519571907051<br />
* [[Configuring and calibrating a delta printer using the dc42 fork of RepRapFirmware]]<br />
<br />
=References=<br />
<br />
* [http://hydraraptor.blogspot.com/2011/02/polyholes.html nopheads blog on undersized holes] and how to make then accurate.<br />
<br />
<br />
=Old Version of this Page=<br />
<br />
''put here as the new part is still incomplete'' --[[User:Traumflug|Traumflug]] 22:55, 21 June 2011 (UTC)<br />
<br />
''Is this part of [[commissioning]]?''<br />
''Is this part of [[Builders/Config/Config Axes]]?''<br />
<br />
To calibrate, you will need the following: a [http://www.reprap.org/bin/view/Main/MakeYourOwnRepRap Rep(st)rap], a [http://en.wikipedia.org/wiki/Caliper#Digital_caliper slide caliper], and printing material (ABS, PLA, HDPE, etc).<br />
<br />
You will also need [http://www.thingiverse.com/thing:477 this] object file to print out.<br />
<br />
#Setup and load your printing material.<br />
#Print the calibration object.<br />
#Allow the object to cool.<br />
#Use the slide caliper to measure each edge and the diagonals.<br />
#Make a note of each measurement and this will allow you to determine where a problem is IF there is a problem.<br />
<br />
With the above measurements, you should be able to determine any alignment issues. The sides should measure within 0.5mm of 40mm.<br />
<br />
if it is off consistently, then it is probably a firmware issue. <br />
<br />
Most inconsistent discrepancies are a sign of [[backlash]] (i.e. slop or play in your mechanical system). Make sure the grub screws on the pulleys are tight; make sure the belts are tensioned so that when you turn the stepper by hand, it immediately produces a movement in the axis; make sure all the bearings turn smoothly, and that the carriages only move along their intended axis. with all of that double checked, try printing your test piece again, and pay very close attention while it is printing. If your stepper motors make strange noises occasionally, it might be that they are skipping steps because they don't have enough torque. Try turning up the trim pot for that axis.<br />
<br />
If all this fails, the best place to go to figure out how to fix your issue, once you've identified it, is either to ask someone in the [http://forums.reprap.org/list.php?4 forums], or on [irc://chat.freenode.net/#reprap IRC], if you prefer. Then come back here and make this page better, or complain to the forum users.<br />
<br />
Once you get a simple cube printed adequately, you might consider trying a more difficult object such as the [[bearing clip 01]] for more fine-tuning.<br />
<br />
[[Category:Calibration| ]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Bolt_Depot&diff=153707Bolt Depot2015-09-01T03:18:56Z<p>Eltoozero: </p>
<hr />
<div>[[Category:Suppliers]]<br />
[[Category:Fastener Suppliers]]<br />
East Coast US based supplier specializing in fasteners and only fasteners.<br />
<br />
[http://www.boltdepot.com Website link]<br />
<br />
Notably their navigation is terrible and their search is for part numbers only and not item searches.<br />
<br />
You can save and retrieve carts for separate BOMs (though they do not currently have an easy way to share BOMs with other users).<br />
<br />
You can add multiple items to the cart from the same "category" by using the not so obvious "Add All Entered" button in the upper right of the category page.<br />
<br />
For RepRap purposes you'll probably want to skip past the first left navigation bar and get straight to the '''metric machine screws''' area.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Fasteners&diff=153706Fasteners2015-09-01T03:17:51Z<p>Eltoozero: Created page with "A '''fastener''' is any screw, nut, bolt, or washer used in the mechanical assembly of a RepRap. Category:Suppliers_by_Part == See Also == * Linear bearings * Ball ..."</p>
<hr />
<div>A '''fastener''' is any screw, nut, bolt, or washer used in the mechanical assembly of a RepRap.<br />
[[Category:Suppliers_by_Part]]<br />
<br />
== See Also ==<br />
* [[Linear bearing]]s<br />
* [[Ball bearing]]s<br />
* [[Bushing]]s</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Bolt_Depot&diff=153705Bolt Depot2015-09-01T03:16:23Z<p>Eltoozero: Created page with "East Coast US based supplier specializing in fasteners and only fasteners. [http://www.boltdepot.com Website link] Notably their navigation is terrible and their search is f..."</p>
<hr />
<div>East Coast US based supplier specializing in fasteners and only fasteners.<br />
<br />
[http://www.boltdepot.com Website link]<br />
<br />
Notably their navigation is terrible and their search is for part numbers only and not item searches.<br />
<br />
You can save and retrieve carts for separate BOMs (though they do not currently have an easy way to share BOMs with other users).<br />
<br />
You can add multiple items to the cart from the same "category" by using the not so obvious "Add All Entered" button in the upper right of the category page.<br />
<br />
For RepRap purposes you'll probably want to skip past the first left navigation bar and get straight to the '''metric machine screws''' area.<br />
<br />
[[Category:Fastener Suppliers]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=USA_Suppliers&diff=153704USA Suppliers2015-09-01T02:59:55Z<p>Eltoozero: /* Fasteners */</p>
<hr />
<div>==Special==<br />
<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://ohioplasticsandsafetyproducts.com/ Ohio Plastics] '''Made''' in Ohio<br />
* [http://www.reprapit.com RepRap-It ] Located in Montreal, Toronto, New York<br />
* [http://www.frys.com Frys]<br />
* [http://www.harborfreight.com Harbor Freight]<br />
* [http://www.orvac.com Orvac Electronics]<br />
* [http://www.marvac.com Marvac Electronics]<br />
* [http://www.fordelectronics.com Ford Electronics]<br />
<br />
==Belts and Pulleys==<br />
<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://www.reprapit.com RepRapIt]<br />
* [http://www.mcmaster.com McMaster-Carr]<br />
* [http://www.NorcalReprap.com NorcalReprap]<br />
<br />
==Electronics==<br />
<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://www.reprapit.com RepRap-It ] Located in Montreal, Toronto, New York<br />
* [http://www.ultimachine.com Ultimachine]<br />
* [http://www.NorcalReprap.com NorcalReprap]<br />
* http://www.digikey.com/<br />
<br />
==Mechanical Parts==<br />
<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://www.thehomedepot.com The Home Depot]<br />
* [http://www.lowes.com Lowes Hardware]<br />
* [http://www.mcmaster.com McMaster-Carr]<br />
<br />
==Non-Feedstock Plastics==<br />
<br />
*[http://www.iplasticsupply.com Industrial Plastic Supply, Inc.]<br />
<br />
===Steel===<br />
<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://www.thehomedepot.com The Home Depot]<br />
* [http://www.lowes.com Lowes Hardware] <br />
* [http://www.mcmaster.com/ McMaster-Carr]<br />
<br />
===Fasteners===<br />
<br />
* [http://www.thehomedepot.com The Home Depot]<br />
* [http://www.lowes.com Lowes Hardware]<br />
* [http://www.mcmaster.com/ McMaster-Carr]<br />
* [http://www.boltdepot.com Bolt Depot]<br />
<br />
===Bearings===<br />
<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://www.mcmaster.com/ McMaster-Carr]<br />
* [http://www.playitagainsportsplacentia.com Play it Gain Sports]<br />
<br />
===Motors===<br />
<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://www.reprapit.com RepRapIt] We Ship to the U.S. And with the Currency, You Save<br />
* [http://www.mcmaster.com/ McMaster-Carr]<br />
<br />
==Feedstock/Filament==<br />
* [http://fairwagon.com Fairwagon.com] Located in Blaine, Washington.<br />
* [http://shop.folgertechnologies.com Folger Technologies, LLC] Located in New Hampshire<br />
* [http://www.reprapit.com RepRapIt] We Ship to the U.S. And with the Currency, You Save<br />
* [http://www.ultimachine.com Ultimachine]<br />
<br />
==Computer Parts==<br />
<br />
* [http://www.frys.com Frys]<br />
<br />
==Working Notes==<br />
This page is based on the [Canadian Suppliers] page.<br />
<br />
<br />
[[Category:Suppliers by Region]]<br />
[[category: US RUG]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=The_incomplete_RepRap_Prusa_Mendel_beginner%27s_guide&diff=153703The incomplete RepRap Prusa Mendel beginner's guide2015-09-01T00:02:55Z<p>Eltoozero: /* Firmware */</p>
<hr />
<div>'''The incomplete RepRap Prusa Mendel beginner's guide''' is an attempt to gather in one document all the information about RepRap [[Prusa Mendel]], that is available on the Internet.<br />
<br />
The reason for doing it, is that it is sometimes more <br />
practical to have some basic information gathered in one place, than trying to get fast and accurate answers in IRC or anywere else on the Internet, for issues that a newbie cannot even understand and express. <br />
<br />
Mostly this work is a ‘copy&paste’ of sites' critical info, links with useful material, and some of my experience.<br />
<br />
This guide was firstly authored at OCTOBER 2011 and is updating since then. <br />
<br />
Although it is focused on the Mendel [http://reprap.org/wiki/File:Assembled-prusa-mendel.jpg Prusa] model, I hope it may be useful for builders of other models.<br />
<br />
'''This guide can also be used as a portal to other links such as Thinginverse, Richard Horne's blog, Slicer-Cura-Craftware etc, Marlin-Sprinter, Repetier etc.....'''<br />
<br />
Under no circumstances can this document be considered complete.<br />
<br />
By COS_ (Konstantinos Tziampazis). You can download this document (v2)[http://www.scribd.com/doc/171879190/The-Incomplete-Reprap-Beginner-s-Guide-V2 here]<br />
<br />
<br />
<br />
='''CHAPTER 1''', ''INTRODUCTION''=<br />
<br />
==What is 3D printing?==<br />
<br />
''…“3D printing is a form of additive manufacturing technology where a three dimensional object is created by laying down successive layers of material. 3D printers are generally faster, more affordable and easier to use than other additive manufacturing technologies. 3D printers offer product developers the ability to print parts and assemblies made of several materials with different mechanical and physical properties in a single build process. Advanced 3D printing technologies yield models that can serve as product prototypes.”<br>…“A large number of competing technologies are available to do 3D printing. Their main differences are found in the way layers are built to create parts. Some methods use melting or softening material to produce the layers, e.g. selective laser sintering ([[Wikipedia:SLS|SLS]]) and fused deposition modeling ([[Wikipedia:FDM|FDM]]), while others lay liquid materials that are cured with different technologies. In the case of lamination systems, thin layers are cut to shape and joined together.”<br>…“Industrial 3D printers are made by companies such as Objet Geometries, Stratasys, 3DSystems and Z-corp. The average price of such a printer is €10,000 or more.”''<br><br />
(- Wikipedia; [[Wikipedia:3D_printing|3D printing]])<br><br />
<br />
RepRap Mendel prusa is an FDM (Fused Deposition Modeling) 3D printer. Here are some videos on how FDM works:<br />
<br />
*[http://www.youtube.com/watch?v=cFcWFB0FlLo How FDM Machine Works].<br />
*[http://www.youtube.com/watch?v=JVp92Nx7XMw How FDM Works].<br />
*[https://www.youtube.com/watch?v=B3D56IpACME OhmEye's introduction] on RepRap and FDM.<br />
You can find many more on [https://www.youtube.com/results?search_query=fdm+3d+printer youtube].<br />
<br />
Videos of some commercial 3d printers:<br />
<br />
*[http://www.youtube.com/watch?v=ZbRlDBScDz4 Objet260 connex]<br><br />
*[http://www.youtube.com/watch?v=7QP73uTJApw Zcorp 3D Printer 650]<br><br />
*[http://www.youtube.com/watch?v=itRcInOwbyM Stratasys]<br><br />
<br />
==What is RepRap?==<br />
<br />
“RepRap is a free desktop 3D printer capable of printing plastic objects. Since many parts of RepRap are made from plastic and RepRap can print those parts, RepRap is a self-replicating machine - one that anyone can build given the time and materials. It also means that - if you've got a RepRap - you can print lots of useful stuff, and you can print another RepRap for a friend... <br />
…RepRap is about making self-replicating machines, and making them freely available for the benefit of everyone……RepRap was the first of the low-cost 3D printers, and the RepRap Project started the open-source 3D printer revolution. It is described in the video on the right.” ([[Main_Page]])<br />
<br />
… “RepRap is short for Replicating Rapid-prototyper. It is the practical self-copying 3D printer introduced in the video on the left - a self-replicating machine. This 3D printer builds the parts up in layers of plastic. This technology already exists, but the cheapest commercial machine would cost you about €30,000 and isn't even designed so that it can make itself. So what the RepRap team are doing is to develop and to give away the designs for a much cheaper machine with the novel capability of being able to self-copy (material costs are about €350). That way it's accessible to small communities in the developing world as well as individuals in the developed world. Following the principles of the Free Software Movement, we are distributing the RepRap machine at no cost to everyone under an open source license (the GNU General Public Licence). So, if you have a RepRap machine, you can use it to make another and give that one to a friend... <br />
…'''The RepRap project became widely known after large press coverage in March 2005, though the idea goes back to a paper on the web written by Adrian Bowyer on 2 February 2004.'''” ([[About]])<br />
<br />
'''Adrian Bowyer explains his 3D printer RepRap:'''<br />
*http://www.youtube.com/watch?v=Px-g1NMvLug<br />
<br />
<br />
There are various RepRap models such as:<br />
*[http://reprap.org/wiki/Darwin Darwin] (the father, where it all begun)<br />
*[http://reprap.org/wiki/Mendel Mendel] (by Ed Sells, the successor) '''AND''' [http://reprap.org/wiki/RepRapPro_Mendel RepRapPro Mendel] introduces Prusa's 2 z motors and uses bowden extruder, resulting to a new model. This work is done by Adrian Bowyer and his team.<br />
*[http://reprap.org/wiki/Huxley Huxley] (by ErikDeBruijn, the smaller) '''AND''' [http://reprap.org/wiki/RepRapPro_Huxley RepRapPro Huxley] is a recent improvement of Huxley, by introducing Prusa's 2 z motors and using bowden extruder, resulting to a new model. This work is done by Adrian Bowyer and his team.<br />
*[http://reprap.org/wiki/Prusa Prusa] (by Josef Prusa http://josefprusa.cz/pages/english, the faster&easier to build&print Mendel)<br />
*Prusa [http://reprap.org/wiki/Prusa_Mendel_Assembly_%28iteration_2%29 V2] (by Josef Prusa, newer, better, with new RP parts, and many old but optimised)<br />
*[[Tantillus]] (by Sublime, the fully printable portable RepRap!)<br />
*[http://reprap.org/wiki/Prusa_i3 Prusa i3]. The i3 incorporates lessons learned from the previous two Prusa designs, as well as other popular modern RepRap designs.<br />
*Makergear Prusa (By Rick Pollack, a commercial sold prusa kit with some RP parts modded for best performance http://www.makergear.com/ )<br />
*[http://reprap.org/wiki/Category:Wilson Wilson] ( Prusa with frame made of 2020 aluminium extrusions, initial design by mjrice)<br />
*[http://reprap.org/wiki/Wallace Wallace](by whosawhatsis, is loosely based on the Printrbot, but is a complete redesign in [OpenSCAD] to be more robust)<br />
*Prusa [http://reprap.org/wiki/Prusa_Air_2 Air 2] (by Mecano, some transparent plastic gives prusa an extra air)<br />
*[http://reprap.org/wiki/Rostock Rostock] (by Johann, is a delta robot 3D printer with build volume 8x8x16 inches or 200x200x400 mm. Although its design does not resembles at all like a RepRap, it is a DIY 3D printer that uses RP printed pieces like RepRap).<br />
*[http://reprap.org/wiki/FoldaRap FoldaRap] (by Emmanuel, the foldable-portable RepRap!)<br />
*[http://www.reprap.org/wiki/RepRap_Morgan Morgan] (by Quentin Harley the [http://kprize.wordpress.com/what-is-the-k-prize/ Uplift Prize Winner!]).<br />
*[http://reprap.org/wiki/Simpson Simpson] (by Nicholas Seward, is characterized by a delta infrastructure with only simple revolute joints, pretty neat to see it print!)<br />
*[http://reprap.org/wiki/R_360 R-360] (by Replicator Warehouse, is the first polar printer with rotating bed!)<br />
<br />
<br />
'''Below, you will find Mendel-like or mendel clones that are sold in kits commercially, and have slight build differences than the original mendel:'''<br />
These models are the product of developement of respective ventors<br />
<br />
*Rapman (Darwin-like from 3D systems http://cubify.com/en/Products/Legacy )<br />
*Orca v0.2(mendel-like from mendel parts http://www.mendel-parts.com/ )<br />
*Insert here if I miss any model<br />
<br />
NOTE: you must have in mind that choosing a mendel-like model, may be hard to find specific parts when these will/may brake. <br />
<br />
The [http://reprap.org/wiki/RepRap_Family_Tree RepRap Family Tree] shows the development and variations of the RepRap project, and [https://docs.google.com/spreadsheet/ccc?key=0AjUVHHt1oCYfdGFodkNWUnNqQ0I1OTk2SGNxNlM1b2c#gid=0 RepRap Family DB] is a spreadsheet which lists the developments as they occur.<br />
<br />
==Ok, I want one==<br />
<br />
Well done! Before you make up your mind you need to make some research on the subject. After all you are a newbie …..( since you are reading this).<br />
<br />
Before reading further, you must understand that RepRap is an open source project that is under development, and requires some technical skills (from soldering to crafting). If you are excited with 3D printing only and NOT with building, I suggest you buy a pre-assembled, commercially sold machine and don’t bother reading the rest of the document concerning building and fine-tuning. <br />
<br />
Remember …“it's generally suggested not to buy a full kit because you will have a hard time finding someone to repair the machine once it does break. All 3d printers eventually break."<br />
<br />
Below you will find commercial sold 3D desktop printers, ready to print:<br />
*Cube http://cubify.com/cube/<br />
*M(aka Mosaic) http://www.makergear.com/products/m-series-3d-printers<br />
*Replicator http://www.makerbot.com/<br />
*Ultimaker https://www.ultimaker.com/<br />
*UP! http://pp3dp.com/<br />
These printers have significant design, FW&host s/w and build, differences than the original RepRap concept, <br />
however they are suitable for those who want to enter 3D printing just for printing. All the above printers,<br />
consist of build components that cannot be replicated using the printer itself, which is a major aspect that <br />
differentiates RepRap printers from the others. These printers are not RepRap.<br />
<br />
For assembled-ready machines please read chapter 2.<br />
<br />
If you are reading this, then I assume you have decided to enter the rabbit hole..<br />
This means that you not only are interested to have 3D prints but you also like the voyage of making your own RepRap. In order to succeed in this voyage, '''you need to make only 3 stops'''...<br />
<br />
'''1st stop'''<br />
Is the website of reprap.org. Here, you will find almost anything, although some info may be obsolete, other may be up-to-date.<br />
<br />
http://reprap.org/wiki/Main_Page<br />
<br />
I suggest you read A LOT. You can use the glossary to familiarize yourself with new terms (http://reprap.org/wiki/Glossary), select one of the ‘how to build’ pages (http://reprap.org/wiki/RepRap_Options) just to get the taste of what awaits you….<br />
Also there is a search engine within the website that you will find very useful, since the tons of info cannot be easily found through page browsing. For example, type in the search field: object, extruder, etc. I found it quite useful as a dictionary for unknown technical words (i.e. heated bed, squished frog, stepper driver, etc.)<br />
<br />
All the necessary information about building can be found here:<br />
http://reprap.org/wiki/Prusa_Mendel_Assembly<br />
<br />
<br />
'''2nd stop'''<br />
is irc://irc.freenode.net/#RepRap (for chatzilla) or<br />
http://webchat.freenode.net/?channels=reprap a simple browser-based chat interface.<br />
<br />
Those with IRC clients, simply select the freenode server, then the #reprap channel.<br />
<br />
In IRC you will get help right away, by very experienced users. Just introduce yourself and ask your question. In IRC, information is up-to-date, although sometimes you may find difficult to explain exactly what is the issue that you are experiencing. This can happen because of language barrier and lack of technical experience. But don’t worry, almost everybody is willing to help.<br />
<br />
'''3rd stop'''<br />
Is the RepRap forum at http://forums.reprap.org/<br />
Here, your question may have been already answered. Check this thoroughly.<br />
<br />
='''CHAPTER 2''', ''ACQUIRING''=<br />
<br />
=='''RepRap options'''==<br />
You have 3 options:<br />
#buy a fully assembled Mendel<br />
#buy one complete Mendel (or Mendel-like) kit<br />
#build one (buy all the parts from different dealers)<br />
<br />
'''Category 1''' usually applies to models of category 2 but the models are sold already assembled. However, I wouldn’t recommend it since they are delicate and heavy for shipping:<br />
<br />
check the http://reprap.org/wiki/Prusa_Buyers_Guide.<br />
More information you can find in the IRC channel.<br />
<br />
'''Category 2''' is the playfield for the average amateur who does not know much about electronics, crafting, soldering, engineering, programming, or does not have easy access to all the parts needed to build a machine. It is for those who have fun building plastic kit models, or for those who have some experience with tools such as screwdrivers, multimeters, dremel, solders, etc. It is for the majority (like me) who want to build a printer fast and easy.<br />
<br />
The recipe is easy: the kit comes in a big and heavy box, you spend some time building it (lot of fun for model kit builders), you spend some time calibrating it, you spend the rest of your time printing and sharing our knowledge in #reprap.<br />
<br />
check the http://reprap.org/wiki/Prusa_Buyers_Guide.<br />
<br />
More information you can find in the IRC channel.<br />
<br />
'''Category 3''' is for the more experienced builders (ex-builders of category 2). Machines build that way cost considerably lower, about 50% less than category 2, but there is always the risk of finding parts with lower quality (like smooth rods that must be straight and very smooth). Nevertheless you have the overall quality control over each part, so you make your choices.<br />
<br />
A RepRap consists of several different types of parts:<br />
<br />
# [[Wikipedia:Rapid Prototyping|Rapid Prototyped]] or "RP" parts (RepRaped parts that are used to mount the rods that make the frame, mount motors and x-y carriages). These are printed from another RepRap.<br />
# Mechanical parts. Are the [[smooth rod]]s (to slide the carriages) and [[threaded rod]]s (to make the frame), nuts, washers, [[belts]], [[bearings]], springs, etc.<br />
# Electronics parts. The controllers of the motors. All these are connected to a main “controller” that reads the gcode from the computer and translates to motor moves. Today, the most popular electronics are Arduino with pololu shield (called [[RAMPS]] ), or Arduino with [[Sanguinololu]] shield.<br />
# Electrical parts. Like cables, [[power supply]], [[stepper motors]], [[endstops]], etc.<br />
# Hot-end parts. This is the most tricky part to find/make. More info at: [[HotEnd]]<br />
# The printer firmware. [[Sprinter]] by Kliment is the suggested FW for Ramps machines. It uploads to Arduino via the Arduino control software<br />
# The software. This includes: '''A)''' the HOST software that connects the PC with the printer ([[repsnapper]], or preferably Kliment’s [[pronterface]]), and''' B)''' the application to convert the solid model into a series of [[gcode]] instructions that your printer understands ([[slic3r]] by Sound or skeinforge/SFACT-by Action68) <br />
<br />
Spacexula, is trying to make a Step-by-Step cost-related [https://titanpad.com/ep/pad/view/ro.BvXxwqf78$M/rev.1245 guide]<br />
<br />
Since most of us cannot make our own hotend, here are some of the most well known suppliers:<br />
<br />
* [[Aluhotend]]<br />
* [[E3D]]<br />
* [[J-head]]<br />
* [[Budaschnozzle]]<br />
* [http://www.micron3dp.com Micron3DP]<br />
* [http://www.makergear.com/products/extruders MakerGear]<br />
<br />
<br />
Here is a detailed [[Hot_End_Comparison]]. In this list not all HotEnds are included (ie Prusa's Hotend is missing).<br />
<br />
Check out this [http://www.youtube.com/watch?v=Hs6voDBFwH8&feature=related video comparison] of the ParCan Hot end and the Reifsnyderb [[J-Head]] hot end by Rotorit. <br />
<br />
Also check the [http://unlab.ca/2013/03/28/sourcing-guide-for-building-a-reprap-3d-printer/#/vanilla/discussion/embed/?vanilla_discussion_id=0 Sourcing Guide for building a RepRap 3D printer].<br />
<br />
If you wonder how the hotend can fail, check [http://www.youtube.com/watch?v=Z6v09KdebMo this video]<br />
<br />
<br />
'''SUMMARISING'''<br />
<br />
To make a RepRap print an object you need to:<br />
#build the hardware<br />
#build the electronics ([[:Category:Electronics]]; [[RAMPS]], [[Sanguinololu]], etc.)<br />
#wire the motors, fans, endstops, thermistors, hotend to electronics<br />
#upload firmware to electronics<br />
#load Host to PC and connect printer <br />
#use a slicer program on PC(skeinforge/sfact , slic3r) to slice an stl file (the object you want to print)and generate gcode<br />
#load to your Host the generated gcode from the slicing program<br />
#execute the 'print' command on Host<br />
<br />
=='''RepRapers toolkit'''==<br />
<br />
As a RepRaper you need a decent toolkit. No matter what option you choose. Even when you buy a fully assembled kit you need this for maintainance and (re)calibration. Having this ready saves you from frustration later.<br />
This page summarizes what you need: [[Required_Tools|Required Tools]]<br />
<br />
=='''Filament'''==<br />
Finally, you need some plastic filament.<br />
For a list of companies(''with reviews!'') see the: [[Printing_Material_Suppliers|Printing material suppliers]] page.<br><br />
'''Please review your supplier''' as this will help others avoiding the bad ones and supporting the good ones!!<br />
<br />
='''CHAPTER 3''', ''BUILDING''=<br />
<br />
Assuming that you have all the needed parts, it is time to start building….<br />
The BOM (bill of materials) is a list of all the necessary parts that you will need to build a prusa. This can be found in the prusa visual build manual mentioned below. <br />
<br />
==Manuals - Guides==<br />
<br />
===Step By Step Instructions===<br />
<br />
<br />
<br />
*[https://reprapbook.appspot.com/ The RepRap book]. This is your first stop. A very comprehensive guide on building your own RepRap.<br />
<br />
* The [[Prusa Build Manual]]. <br />
<br />
*[http://78.47.92.212/i3_documentation_pics/singlepage.html The prusa i3 build manual]<br />
<br />
* Prusa i3 Build Manual from [https://www.dropbox.com/sh/692k86o2p6qvwsx/AACHs9mrI4rLbfxkdESXwr1sa/ Charlie's 3D Technologies].<br />
<br />
* [http://www.trustfm.net/hardware/3DPrinter.php Building a Prusa i3 from scratch], a VERY detailed 160+ pages guide, by trustfm<br />
<br />
* [[Prusa Mendel]] wiki guide.<br />
<br />
* Prusa Mendel Build Manual from [http://www.nextdayreprap.co.uk/prusa-mendel-build-manual/ nextdayreprap].<br />
<br />
*[http://www.nathandumont.com/node/247 How not to build a RepRap] points out the problems and mistakes while building one.<br />
<br />
*[http://garyhodgson.com/reprap/prusa-mendel-visual-instructions/ garyhodgson.com, Visual Instructions]<br />
<br />
*Optionally, if you are making the WADE’s extruder, you will need [http://garyhodgson.com/reprap/wades-geared-extruder-visual-instructions/ this manual]<br />
<br />
*[http://www.builda3dprinter.eu/where_to_begin/ Kossel mini build instruction] For step by step instructions to construct a Kossel Mini<br />
<br />
* [[Mendel Build Manual|Sells Mendel build manual]] in the RepRap wiki.<br />
<br />
'''Below, there is a series of instructions for Makergear Prusas. They are prusas with some parts modified for better. Makergear is also known for its good quality of hotends'''<br />
<br />
# [http://www.makergear.com/pages/stepper-plastruder-instructions stepper plastruder instructions]<br />
# [http://www.makergear.com/pages/ceramic-heater-core-instructions ceramic heater core instructions]<br />
# [http://www.makergear.com/pages/superpack-instructions superpack instructions]<br />
<br />
'''After you have finished building, you need to calibrate the printer'''. <br />
<br />
Here is [[Triffid Hunter's Calibration Guide]].<br />
<br />
Also, you need to read the Wiki [[Calibration]] guide.<br />
<br />
<br />
'''The Rostock corner'''<br />
<br />
*[http://billdrostock3d.blogspot.com.au/ Building a Rostock], a step by step Blog, by Billy D.<br />
<br />
*[http://www.robertshady.com/content/beginners-guide-rostock-max-3d-printer-seemecnccom Beginners guide to the Rostock MAX 3D Printer from SeeMeCNC.com]<br />
<br />
*[http://letsmakerobots.com/node/35050 Rostock Build Blog.]<br />
<br />
*[http://www.geneb.org/rostock-max/Rostock-MAX-Assembly-Guide.pdf Rostock-MAX-Assembly-Guide.pdf]<br />
<br />
*[http://richrap.blogspot.gr/2013/04/rostock-delta-3d-printer-build.html from Richrap]<br />
<br />
==Video Guides==<br />
<br />
The main source for video guides is (of course) You Tube.<br />
There are many people who share their experience by publishing videos. Below is just a little sample of what you can find.<br />
<br />
'''Building'''<br />
<br />
*Here are the videos of spacexula on a [http://www.youtube.com/user/RepRapLogPhase#p/u/45/hFaZ7wO_rGI step-by-step building of a Prusa]<br />
<br />
*There is another tutorial on [http://www.youtube.com/watch?v=SZv-Dw0Ulig building of a Prusa] by loveamy11<br />
<br />
*The [http://www.youtube.com/watch?v=KxFS19Fal-w Sells Mendel tutorial]<br />
<br />
*The RepRap assembly in [http://www.youtube.com/playlist?list=PLA7DE3F3AED272E4E 12 videos] by filear <br />
<br />
*The [[RepRapResco]] ([http://www.resco-research.com R.eS.Co. research]'s Prusa i2 cocktail) assembly tutorial series [https://www.youtube.com/playlist?list=PL737lTso5cUwSX3tbNDuqjYDoGi5DCuee&feature=view_all Youtube playlist]<br />
<br />
*How to build a RepRap [https://www.youtube.com/watch?v=ibBR7qQ7tVY#t=11 Prusa i3], by engineglue<br />
<br />
*[https://www.youtube.com/user/additiveware/videos RepRap Prusa i3 Assembly Guide], Additiveware International<br />
<br />
<br />
'''Preparing the printing surface'''<br />
<br />
*[https://www.youtube.com/watch?v=WiLJGFwHaU8 How To Use Blue Tape for RepRap PLA Filament], by Printer Best<br />
<br />
*[https://www.youtube.com/watch?v=pV2Fs3iiqUQ How To Apply Kapton Tape To RepRap Heated Bed Glass Plates], by Printer Best<br />
<br />
<br />
'''Soldering-Electronics'''<br />
<br />
*[https://www.youtube.com/watch?v=d-U_FwDP0kw Dangers with ramps 1.4 wiring for beginners], by GamersHeaven74<br />
<br />
*[https://www.youtube.com/watch?v=MCCtX5yXQjQ How to wire your Ramps 1.4 3D printer board Avoid some easy mistakes], by peterthinks<br />
<br />
*[https://www.youtube.com/watch?v=f1bWvVSJvaY How to Prepare a PC Power Supply for your Reprap 3D Printer], by SDCarnivorousPlants<br />
<br />
*[https://www.youtube.com/watch?v=JSNngyl1ONM Setting up ATX power supply for the 3D printer], by Marty Rice<br />
<br />
*[https://www.youtube.com/watch?v=27lcqgOBb2c How To Hook Up A 12 Volt Power Supply To RepRap RAMPS 1 4 Controller]<br />
<br />
*Improve your soldering skills [http://www.youtube.com/watch?v=BxeDkcAa4Fs (youtube) 1] [http://www.youtube.com/watch?v=3NN7UGWYmBY 2] [http://www.youtube.com/watch?v=I_NU2ruzyc4 3]<br />
<br />
*How to crimp without crimp gun [http://www.youtube.com/watch?v=KEm2PuHBt4Y (youtube) 1] <br />
<br />
*How to crimp with crimp gun [http://www.youtube.com/watch?v=MHLz1Mck_Kg (youtube) 1]<br />
<br />
*[http://www.youtube.com/watch?feature=player_detailpage&v=mnxct8o9WrY#t=349s Soldering Sanguinololu.]<br />
<br />
*[http://www.youtube.com/watch?v=wx7bMF4mYls&list=PLA7DE3F3AED272E4E&index=8 soldering RAMPS]<br />
<br />
*[http://www.youtube.com/watch?v=RSjygEf5dFQ SD RAMPS assembly] by Kliment<br />
<br />
*Note that some RepRap controllers like [[Generation 7 Electronics]] require no power supply preparations at all, you simply plug them in.<br />
<br />
<br />
'''Hotend building'''<br />
<br />
*Here is a series of [http://www.youtube.com/user/kwixson#p/u/8/OgvX7L2bGCw video tutorials on assembling a makergear hotend].Some steps are common for any hotend.<br />
<br />
*Here is a series of [http://www.youtube.com/watch?v=sR9l5O69MCM video tutorials on assembling a mendel-parts hotend V9].<br />
<br />
*If you are experienced, you can make your own hotend. Wildseyed decribes how, in a [http://www.youtube.com/watch?v=EsRoYJ2CWNk series of tutorials]<br />
<br />
*Another video on [http://www.youtube.com/watch?v=EujOBjxyLWs Making a Hot End]<br />
<br />
<br />
'''Software/firmware'''<br />
<br />
*If you choose to use sprinter for firmware, you need to see the tutorial for [http://www.youtube.com/watch?v=oe3HJzL1vQI sprinter by spacexula]<br />
<br />
*[http://www.youtube.com/watch?v=CAo89CrMtPo&feature=mfu_in_order&list=UL Installing Pronterface and SFact in Windows], by spacexula<br />
<br />
*[http://www.youtube.com/watch?v=zyo_JNO4Ccg&feature=related Installing Pronterface] by JamesHardiman01 <br />
<br />
*[https://www.youtube.com/watch?v=PunmzTbY594 basics of Marlin firmware.]<br />
<br />
*[https://www.youtube.com/watch?v=w_Wb0i0-Qvo RepRap 101: Setting your 3D printer's extrusion] series, by ZennmasterM<br />
<br />
*[https://www.youtube.com/watch?v=2RbcMvhatjU 3D printing guides - Firmware basics] and more, by Thomas Sanladerer<br />
<br />
<br />
'''Calibration'''<br />
<br />
*When it is time to calibrate, you have to see spacexula's [http://www.youtube.com/user/RepRapLogPhase#p/a/u/0/wAL9d7FgInk x,y & z calibration tutorial]<br />
<br />
<br />
'''Guides, Tips, Tests and more'''<br />
<br />
[https://www.youtube.com/user/ThomasSanladerer/playlists Thomas Sanladerer] has done a remarkable work on the 3D printing insights. Its a great work, that will benefit both, amateurs and experienced Reprapers.<br />
<br />
<br />
'''The Rostock corner'''<br />
<br />
*[http://www.youtube.com/watch?v=EbBbbgnwkho Building a Rostock from start to finish], a lengthy video documentary Of Building A rostock delta 3D printer, by ~Russ.<br />
<br />
*[https://www.youtube.com/watch?v=SMsd_g6oBic Let's Build: RepRap Rostock 3D Drucker / Printer ], by vinmicgra<br />
<br />
*[https://www.youtube.com/watch?v=nte5zo6DlgE Rostock Max v2 Build] series, by kitecraft<br />
<br />
==Electronics==<br />
<br />
Modern RepRaps (as of 2011) can choose from a pretty wide range of comparable electronics to control RepRap motors, sensors, etc... They all have the same basic feature set, run the same firmwares and differ in optional stuff like support for second extruders, only. I also would suggest to look into [http://reprap.org/wiki/Alternative_Electronics | Alternative Electronics]. <br />
<br />
* Most widely used: [[Ramps]]<br />
<br />
*Here is a step-by-step guide of [http://printthat.wordpress.com/2011/02/11/reprap-ramps-build/ RAMPS v1.2 Build] continued [http://printthat.wordpress.com/2011/05/30/reprap-ramps-build-continued/ here]<br />
<br />
* A single sided solution for do-it-yourselfers and modders: [[Generation 7 Electronics]]<br />
<br />
* Compact all-in-one board, all screw connectors, cheap: [[Melzi]]<br />
<br />
* Compact and affordable: [[Sanguinololu]]<br />
<br />
* RAMBo (RepRap Arduino-compatible Mother Board) : [[RAMBo]]<br />
<br />
* Powerful (32 bits) and simpler to configure: [[Smoothieboard]]<br />
<br />
* [https://0xfb.com/shop.html 4pi], a beautiful little 3d printer controller board by Kliment. 4pi needs its own firmware at [https://github.com/kliment/4pi-firmware github]. <br />
<br />
* [http://reprap.org/wiki/PCPowerSupply PCPowerSupply], if you have chosen to use it to power your RepRap electronics.<br />
<br />
* [[List_of_electronics]]: A more complete list of RepRap electronics<br />
<br />
'''Note:''' When you ask ''kthx'' or someone for the cable color order for motors connection on electronics, you usually get 4 colors in particular order. It is presumed that you hold the electronics board at the right orientation, that is the orientation that allows you to read the letters or words that are printed on the board - not read the letters upsidedown!<br />
<br />
Here are the main on-line electronic components distributors<br />
<br />
# [http://www.digikey.com/ Digi-Key]<br />
# [http://www.farnell.com/ Farnell]<br />
# [http://www.mouser.com/ Mouser]<br />
# [http://www.rs-components.com/index.html RS]<br />
<br />
For stepper motors try [http://www.kysanelectronics.com/ here] and [http://www.wantmotor.com/ here]<br />
<br />
For Arduino [http://arduino.cc/hu/Main/Buy here]<br />
<br />
==Arduino==<br />
<br />
All RepRap electronics are compatible to Arduino or are even stacked onto an original Arduino (RAMPS), making a sandwich. As such, the Arduino software and toolchain can be used to set them up.<br />
<br />
Arduino drivers, control application, and install instructions (you need those to connect electronics with your computer and upload the firmware)<br />
[http://arduino.cc/en/Main/Software Download page]<br />
<br />
Installation: [http://arduino.cc/en/Guide/HomePage Step-by-step instructions] for setting up the Arduino software and connecting it to an Arduino Uno, Mega2560, Duemilanove, Mega, or Diecimila.<br />
<br />
==Software==<br />
<br />
You need: <br />
#The HOST software (Pronterface, Repsnapper, RepRap, Repetier Host)<br />
#The application to convert an object file into Gcode (Skeinforge/SFACT, Slic3r, RepRap, Repsnapper)<br />
#Additional software (to create 3d objects for printing and then adjusting them on printing plate.<br />
Note: for printing one object only, it is automatically set to center of print surface)<br />
<br />
Here, is a [[CAM Toolchains|Comparison of RepRap Toolchains]] (a toolchain consists of all the software elements needed to create printed 3d models from CAD models to firmware)<br />
<br />
<br />
'''Host&slice Software'''<br />
-------------------<br />
<br />
'''Repsnapper''' application, the host+slicer, [https://github.com/timschmidt/repsnapper/blob/master/doc/manual.asciidoc manual and code] for all available OSes<br />
<br />
'''RepRap host software''' [https://github.com/reprap/release latest release] , the original host+slicer by Adrian Bowyer's team. For installation instructions see:<br />
*http://reprap.org/wiki/Installing_RepRap_on_your_computer<br />
and for user instructions see:<br />
*http://reprap.org/wiki/Mendel_User_Manual:_Host_Software <br />
<br />
'''ReplicatorG''' [http://replicat.org/download Host+gcode application] and [http://wiki.ultimaker.com/ReplicatorG_User_Manual manual]<br />
<br />
<br />
'''Host Software'''<br />
-------------------<br />
<br />
'''Pronterface'''<br><br />
*[https://github.com/kliment/Printrun Pronterface host software] that needs python to run, please read the instalation instructions carefully.<br />
*[http://www.youtube.com/watch?v=CAo89CrMtPo Video tutorial on sfact & printrun from spacexula].<br />
*[http://koti.kapsi.fi/~kliment/printrun/ pronterface compiled version] (my favourite) for Windows & Mac. Here, also you will find complied experimental version for win.<br />
*[[Pronterface|Pronterface information from the RepRap wiki]]<br />
<br />
'''Repetier-Host''' <br><br />
is a simple to use host software, which is optimized to work with Repetier-Firmware. Other working firmware is Sprinter, Teacup, Marlin and all compatible firmwares around. There is also a slicing option. For slicing you can use the built-in Slic3r slicer or use the well-known Skeinforge. Main features are:<br />
# Visual 3D preview of G-Code. You can even change the code and see the difference.<br />
# Syntax highlighting and code explanation. <br />
# STL composer - place, rotate and scale your STL files on your printbed and store or slice it. <br />
[http://reprap.org/wiki/Repetier-Host Repetier-Host] can be downloaded [http://www.repetier.com/download/ here].<br />
<br />
<br />
'''Octoprint'''<br><br />
[http://octoprint.org/ OctoPrint] differs from existing host solutions in that its major focus is to provide a web interface that allows controlling the printer remotely from anywhere on the network or even the internet while offering the same responsiveness and feedback options available on native host applications like the ones listed above.<br />
<br />
<br />
'''Slicing Applications'''<br />
--------------------------<br />
<br />
'''Skeinforge''' [http://fabmetheus.crsndoo.com/index.php gcode application] and [http://fabmetheus.crsndoo.com/wiki/index.php/Skeinforge manual]. Windows self-extracting [http://koti.kapsi.fi/~kliment/sfwin/ here].[http://fabmetheus.blogspot.com/ Enrique's blog] contains all the announcement and troubleshooting info about new versions of SF. Here is the [http://makerblock.com/profilemaker/ ProfileMaker] by Makerblock an online app to make SF profiles for you, powered by the formula in Dave Durant's [http://www.thingiverse.com/thing:5310 Profileinator].<br />
<br />
I have found these links on how to configure the skeinforge properly.<br />
<br />
[http://wiki.makerbot.com/configuring-skeinforge] <br />
[http://davedurant.wordpress.com/2010/10/18/configuring-skeinforge-the-4-or-5-big-settings/]<br />
[http://davedurant.wordpress.com/2010/10/17/configuring-skeinforge-some-basic-terms/]<br />
[http://davedurant.wordpress.com/2010/11/01/skeinforge-movin-on-up-to-a-recent-version/]<br />
[http://www.makerbot.com/blog/2010/11/01/configuring-skeinforge-basic-settings-with-david-durant/]<br />
[http://www.makerbot.com/blog/2010/11/04/configuring-skeinforge-configuring-the-latest-version-of-skeinforge-with-david-durant/]<br />
[http://www.renosis.net/Skeinforge-41-guide.html]<br />
[http://wiki.ultimaker.com/Adjusting_your_Skeinforge_profiles]<br />
[http://www.mendel-parts.com/new_forum/phpBB3/viewtopic.php?f=37&t=256]<br />
[http://www.txoof.com/2012/04/makerbot-getting-better-adhesion.html]<br />
[http://www.mendel-parts.com/new_forum/phpBB3/viewtopic.php?f=37&t=256&sid=6836ae4f5b42207533cb2d338a9c6051]<br />
[http://www.mendel-parts.com/new_forum/phpBB3/viewtopic.php?f=37&t=159]<br />
<br />
'''Slic3r''' [http://slic3r.org/ a promising gcode application] by Sound, with the [https://github.com/alexrj/Slic3r/blob/master/README.markdown read me] file. [http://richrap.blogspot.com/2012/01/slic3r-is-nicer-part-1-settings-and.html Here], is a very comprehensive guide on slic3r settings. Also, a '''''Useful documentation for getting started and using Slic3r''''' can be found [https://github.com/alexrj/Slic3r/wiki/Documentation here]. There is a manual in pdf.<br />
<br />
'''SFACT''' as mentioned previously, is an optimised version of SF with many parameters already preset-ed for you. Download it [https://github.com/ahmetcemturan/SFACT here]. Also, there is a [http://titanpad.com/XTUJXiNHmd SFACT FAQ] and SFACT in [http://reprap.org/wiki/Sfact WIKI].<br />
<br />
'''Cura''' is a project which aims to be an single software solution for 3D printing. While it is developed to be used with the Ultimaker 3D printer, it can be used with other RapRap based designs. Cura contains some of the Skeinforge engine, so it makes it somehow more mature and evolved than the other slicers. When slic3r cannot do my job, Cura will do it with the best printing quality. Just to be fair here, I did a comparison print using this [http://www.thingiverse.com/thing:113451 dice]; I sliced it with Cura, Slic3r and Craftware using same parameters everywere. Cura was the best by far (not mentioning FASTEST of all 3). You can do a similar test to verify it. [https://www.ultimaker.com/pages/our-software Get it here].There is also a manual in pdf.<br />
<br />
'''KISSlicer'''[http://kisslicer.com/ (Keep It Simple Slicer)] is a new slicing programm that comes in two versions: free for single head, and PRO (not free) with multiple head and model support.Thre is a quick start quide, but no manual in English, just in German :-(<br />
<br />
'''CraftWare''' is a brand new slicer, closed source at the moment, that initially is intended to be used with CraftBot, a 3D printer from Hungary. The software is very well written, it looks like Cura, but it does more...<br />
<br />
You can even define support by hand, just like Meshmixer (!). It is fully parametric to suit your printer, since you can define nozzle, filament, print area, etc., and slices FAST! One could say that it combines CURA, SLIC3R and SCEINFORGE together! Get it [http://craftunique.com/craftware# here]. No manual exists yet.<br />
<br />
<br />
'''Additional software'''<br />
-------------------------<br />
<br />
[http://artofillusion.org/downloads '''Art of illusion'''] , the software that helps you to design your objects.<br />
<br />
'''[[OpenSCAD]]''', which is more focused on the design of non-artistic objects.<br />
<br />
[http://www.blender.org/download/get-blender/ '''Blender'''] can be used to arrange many objects in one print batch, like the platter found in pronterface. Also you can use it to rotate objects on the plate to meet your needs. A quick guide can be found [http://reprap.org/wiki/Using_Blender_for_making_print-sheets here].<br />
<br />
[http://www.123dapp.com/sandbox '''Meshmixer'''], by Autodesk 123D is a free tool for working with mesh models (like the ones you use for 3D printing). It is an excellent creative tool, great for mashing together existing meshes and also for preparing files (such as scans) for printing or fabrication.<br />
<br />
[http://meshlab.sourceforge.net/ '''MeshLab'''] is an open source, portable, and extensible system for the processing and editing of unstructured 3D triangular meshes.<br />
<br />
[http://www.netfabb.com/ '''Netfabb Studio''']. A tool for repairing and manipulations of STL files. Netfabb Studio is free, but not open source. The "PRO" version (not free) comes with a professional slicer and many more.<br />
<br />
'''3D object printing workflow:'''<br />
<br />
*'''First, there is the NEED for a 3D object.''' <br> You need an object, and you need it now.<br />
*'''Find or create object in digital form:''' <br> <br />
You can FIND it in [http://www.thingiverse.com/ Thingiverse], [http://www.3dhacker.com/ 3Dhacker], or anywhere else there are *stl or *obj files for download (free or not). <br> <br />
You can CREATE it using a [http://www.123dapp.com/design#designDownloadDetails Autodest 123D design], [http://www.sketchup.com/ Sketchup], [http://www.blender.org/ Blender], [http://www.solidworks.com/ Solidworks], [http://www.openscad.org/ Openscad] or any other 3d mesh software. <br> <br />
You can also create/replicate an object, if you already have a parent object, by 3D scanning or using its photos from various angles. <br><br />
You can use 3D scanners such as [http://store.makerbot.com/digitizer.html MakerBot Digitizer], [http://www.kickstarter.com/projects/45699157/fuel3d-a-handheld-3d-scanner-for-less-than-1000 Fuel 3D] (kickstarter funded), [http://www.david-3d.com/ David-3D], or go to more professional systems (above $1000). <br> <br />
You can also use software that convert photos of various object angles to 3D mesh. You can use [http://www.123dapp.com/catch Autodesk 3D catch], [http://www.strata.com/products/strata_3d_cx_suite/strata_foto_3d_cx/ Strata 3D CX] <br><br />
*'''Repair / verify / manipulate mesh.''' <br><br />
Once you have your digital model/object ready, you may need to verify visually its' mesh, or repair it.<br />
To edit / visually verify, you can use the 3d mesh design software mentioned above, or the [http://blog.123dapp.com/2013/09/introducing-autodesk-meshmixer-awesome-3d-remixes-at-your-fingertips Autodesk's meshmixer]. Here, you can identify object's printing orientation and you can rotate it to its final print position. <br><br />
It is common when you export meshes to stl or obj format, that your slicer will identify problems. To repair a mesh you need [http://www.netfabb.com/ Netfabb].<br><br />
*'''Slice it!''' <br><br />
Now, it is time to slice it. Use the slicer's parameters wisely. Always consult someone at #reprap. Always RTFM (if there is one).<br />
*'''Host the Gcode'''<br><br />
Load host software, turn on printer, connect printer to host, load gcode file to host.<br />
Turn on hotends, fans, heaters, and whatever you use for printing. Verify object preview of host to what you expect.<br />
*'''Print it!'''<br />
Watch the object while it is being creating.<br />
<br />
<br />
Here is a page on [http://reprap.org/wiki/Useful_Software_Packages Useful_Software_Packages] with more description details and more links.<br />
<br />
==Firmware==<br />
<br />
'''Current recommended firmwares for 8-bit Arduino-based electronics are Marlin and Repetier.'''<br />
<br />
*[https://github.com/kliment/Sprinter Sprinter firmware] by Kliment and Caru, download it, unzip it, load it to arduino connection software, and then upload it. Remember to specify what Arduino you have, from the ‘tools’ menu. Please consult spacexula's video guide mentioned earlier.<br />
<br />
*[https://github.com/triffid/Teacup_Firmware Teacup firmware], by Triffid_hunter, Traumflug, jakepoz, "...claimed to be faster than Sprinter, more elaborate configuration options Teacup is a decent alternative for Sprinter."(https://reprapbook.appspot.com/#d0e982)<br />
<br />
*[https://github.com/MarlinFirmware/Marlin Marlin firmware] by EvdZ, is a mashup between Sprinter, grbl and many original parts. It is available for all hardware types (read the README.md file). Marlin is configurable the same way as Sprinter. So, if you have already sprinter on your electronics you can paste most of your settings to Marlin. Main improvement over sprinter is the look-ahead function. The changes that need to do in marlin are about the same those given earlier for sprinter. Read the config.h carefully and make appropriate changes.<br />
** Below, you will find some useful guides on configuring your Marlin firmware:<br />
*** [http://daid.eu/~daid/marlin_build/ The Marlin builder]<br />
*** [https://github.com/jmil/Marlin/zipball/RAMPS_v1.3-1.4_1/16thStepping Marlin files for RAMPS 1.3-1.4 16stepping motors]<br />
<br />
*[https://github.com/ScribbleJ/sjfw Sjfw]is another firware by Scribblej, instruction can be found [http://reprap.org/wiki/Sjfw here].<br />
<br />
*[https://github.com/repetier/Repetier-Firmware Repetier-Firmware], by Repetier, forked from Sprinter. [https://github.com/repetier/Repetier-Firmware/wiki Documentation here.]<br />
<br />
Here, is a [http://reprap.org/wiki/Firmware List of all Firmwares] available, with more descriptions.<br />
<br />
'''Note:''' before uploading your FW to arduino, you must make some changes in order to make it work properly. Just load appropriate *name*.h file on a text editor, or use Arduino's editor and make appropriate changes as suggested below:<br />
* Changes in "cofiguration.h" (these changes are compatible with sprinter. In Marlin, expressions may be slight differ but can be easily located. I have not tested other FWs)<br />
** set your motherboard (i.e.for RAMPS #define MOTHERBOARD 33)<br />
** set thermistors (i.e.for 100k #define THERMISTORHEATER 1 #define THERMISTORBED 1 )<br />
** Set your microsteps. See [[Triffid Hunter's Calibration Guide]]<br />
*** For mendel with wade extruder: "float axis_steps_per_unit[] = {80, 80, 3200/1.25,700};"<br />
** verify resistors at endstops (i.e.#define ENDSTOPPULLUPS). also verify endstop flag (true or false depends on NC or NO connection, more for this chapter 4&5)<br />
** changes in "pins.h" (ONLY FOR RAMPS OWNERS, for sprinter & marlin)<br />
** Set your RAMPS motherboard version. Uncomment one of the following lines for RAMPS v1.3 or v1.0: "//#define RAMPS_V_1_3" or "// #define RAMPS_V_1_0)". Comment both for v1.2 or v1.1.<br />
** Set your [[Configuring_Marlin_Bed_Dimensions|bed dimensions]] to configure end-stop offsets and get prints correctly centered in the build area.<br />
<br />
==Miscellaneous==<br />
<br />
===== WWW =====<br />
<br />
:[https://secure.flickr.com/ Flickr account]. You need one in order to show your prints and printing problems <br />
<br />
:[http://www.thingiverse.com/ Thingiverse], is the repository for 3d objects ready to print. You need it to download test pieces for your machine calibration. Also your main source for objects to print. This site is property of MakerBot industries.<br />
<br />
:[http://www.dropbox.com Dropbox]. Share your files<br />
<br />
:[http://pastebin.com/ Pastebin.com], you need this to paste your problematic gcode instead of inserting it to the IRC RepRap channel<br />
<br />
:[http://reprapmagazine.com/ The RepRap magazine]<br />
<br />
:[http://www.3dhacker.com/index.php 3dhacker] is a free site dedicated to 3D printing. Members can showcase 3D printers, extruders, upgrades, 3D model designs, software, and even run a blog. In their site, they explain: "The beginnings for 3dhacker.com occurred when we had trouble sourcing parts for a Rostock Delta build, involving 8+ websites. This was a lot of effort and we thought "if many people are doing the same, a single source of 3D printing stuff categorized for the world might be needed." "<br />
<br />
:[http://www.instructables.com/group/3DCreationSystems/ Instructables] has gone 3D printing!<br />
<br />
There is a lot of discussion about Thingiverse alternatives; Many people are very unsatisfied about recent Thiniverse's change of 'terms', and are looking for a [http://www.moreofit.com/similar-to/www.thingiverse.com/Top_10_Sites_Like_Thingiverse/ new place] to publish their creations .<br />
Below you will find many new Thingiverse alternative sites. Some of them are not free. The list gets bigger day-by-day.<br />
The sites are listed in random order.<br />
<br />
[https://cubehero.com/ Cubehero]<br />
<br />
[https://www.youmagine.com/ YouMagine]<br />
<br />
[http://www.bld3r.com/ Bld3r]<br />
<br />
[http://grabcad.com/ GrabCAD]<br />
<br />
[http://www.yeggi.com/ Yeggi]<br />
<br />
[http://www.fabster.com/ Fabster]<br />
<br />
[https://www.ponoko.com/ Ponoko]<br />
<br />
[https://openalia.wordpress.com/tag/githubiverse/ Githubiverse]<br />
<br />
[http://3dburrito.com/ 3dburrito]<br />
<br />
[https://thepiratebay.se/browse_list.php?c=605 Pirate Bay Physibles]<br />
<br />
[http://www.shapeways.com/shops/masterworks Shapeways]<br />
<br />
[http://3dlt.com/ 3dlt]<br />
<br />
[http://thingamaprint.com/ thing-a-ma-print]<br />
<br />
[http://www.myminifactory.com/ My mini factory]<br />
<br />
[https://www.layerbylayer.com/ Layer by Layer]<br />
<br />
[http://www.grain3d.com/ Grain3d]<br />
<br />
[http://www.cuboyo.com/ Cuboyo]<br />
<br />
[http://www.create-this.co.uk/ Create this]<br />
<br />
[https://www.azavy.com/ Azavy]<br />
<br />
[http://www.turbosquid.com/ Turbosquid]<br />
<br />
[http://www.cgtrader.com/ CGtrader]<br />
<br />
[http://repables.com/ Repables]<br />
<br />
===== Articles =====<br />
<br />
:[http://www.mendelmax.com/?wiki=choosing-filament Choosing Filament]<br />
:A nice article on [http://bothacker.com/2010/06/22/keep-it-cool/ cooling fans] mounted on extruders<br />
:In case you have made your own DIY filament maker you will need to [http://www.protomold.co.uk/Design_Tips/UnitedKingdom/2011/2011-04_designtips/default.htm add color to your pellets]....<br />
:[http://www.protoparadigm.com/blog/2011/11/filament-tolerances-and-print-quality/ Filament Tolerances and Print Quality]<br />
:[http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0049365 Low-Cost Conductive Composite Material for 3D Printing]<br />
<br />
===== Communications =====<br />
<br />
: See [[Community portal#Getting involved]].<br />
<br />
===== Blogs =====<br />
<br />
: There were simply too many bloggers, so somebody set up an [http://pipes.yahoo.com/pipesadrian_reprap_pipe/reprap aggregation pipe of all RepRap blogs].<br />
<br />
:[http://richrap.blogspot.com/ Richard's blog] on developments.<br />
<br />
:More in-depth info about your mendel at the [http://hydraraptor.blogspot.com/ hydraraptor blog]<br />
<br />
===== Research & Development =====<br />
<br />
:[http://www.youtube.com/watch?v=dfNByi-rrO4 Conductive Silver Ink from a Ballpoint Pen], is an idea that can be used to printed cirquits<br />
<br />
:[http://www.instructables.com/id/Build-a-Laser-3D-Printer-Stereolithography-at-Ho/ Build a Laser 3D Printer - Stereolithography at Home], an alternative to conventional 3D FDM printing.<br />
<br />
:[http://blog.makezine.com/2011/04/03/homebrew-liquid-resin-3d-printer-gets-resolution-boost/ MAKE | Homebrew Liquid Resin 3D Printer], a resin-based 3D priting using a DLP projector instead of a laser... <br />
<br />
:[http://www.buildlog.net/blog/2010/07/3d-printing-with-a-video-projector/ 3D Printing with a Video Projector]. Fllow the links.<br />
<br />
:[http://hci.rwth-aachen.de/fabscan DIY 3D scanner]. Complete documentation + assemblying instructions. Because a RepRapper needs a 3D Repscanner...<br />
<br />
:[http://filabot.com/ Filabot], the desktop extruding system, capable of grinding various types of plastics, to make spools of plastic filament for 3D printers. Also check the open source files [http://www.thingiverse.com/thing:24583 here]<br />
<br />
:[http://www.thingiverse.com/thing:145500 LYMAN FILAMENT EXTRUDER v3], is a machine that extrudes filament from pellets for use in a 3D Printer. It can extrude 1.75mm and 3mm filament with easy nozzle exchange and sends it directly to a spooler. The videos show that this machine actually works!! it is DIY too!!<br />
<br />
:[http://grabcad.com/library/mini-shredder--1 Mini shredder], for all the bad prints to be recycled, by using this cute-awsome-little-powerful shredder.Then, use the filament extruder to produce recycled filament for your printer. No scrap prints any more!<br />
<br />
:[http://www.latimes.com/news/science/sciencenow/la-sci-sn-new-technique-makes-blood-vessels-from-sugar-using-3d-printer-20120702,0,156169.story utilizing RepRap to make 3D sugar templates for making vascular tissues for research in regenerative medicine]<br />
<br />
:[http://www.thingiverse.com/thing:28965 Ceramic 3D Printing Extruder] <br />
<br />
:[http://hackedgadgets.com/2011/10/24/diy-pick-and-place-machine-called-the-redfrog/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+HackedGadgets+%28Hacked+Gadgets%29 DIY Pick and Place Machine called the redFrog]. Just think that this machine could be a RepRap or a Rostock... ;-)<br />
<br />
:[http://www.youtube.com/watch?v=ql3pXn8-sHA 3D Printing of Liquid Metals at Room Temperature]. This method allows you to creat wires, construct models, anything a RepRap board needs!<br />
<br />
:[http://nothinglabs.blogspot.gr/2013/09/filament-roundup-3d-printing-in-all.html Alternative Filaments for your 3D Printer]. Rich Olson tests many types of filament, other than the usual PLA. The results are quite interesting. All his prints are done without HBP.<br />
<br />
:[http://richrap.blogspot.gr/2014/12/no-more-filament-quest-for-universal.html?m=1 Universal Pellet Extruder for 3D Printing] is a quest of Richard Horne to revolutionize 3D printing by printing directly from plastic pellets rather than from plastic filament. I have to say... "he's almost there....."<br />
<br />
===== ATDNFAE (AnythingThatDoesNotFitAnywereElse) =====<br />
<br />
:If you choose to power your printer using an ATX power supply, like those that use the PCs, you will need to go to [http://lichyetan.blogspot.com/2009/03/how-to-jump-start-atx-power-supply-unit.html "How to jumpstart atx psu"]. The wiki page explains more about [[Power Supply]] psus.<br />
<br />
:[http://calculator.josefprusa.cz/ Josef Prusa’s calculator]. You need this in order to insert correctly your microsteps in firmware.<br />
<br />
:Create a folder in your hard disk named RepRap or whatever you like, in order to keep there everything related to RepRap; from software to tutorial videos and docs for future reference. Subfolders named software, objects, videotutorials, manuals, irclogs, etc. to keep everything organised.<br />
<br />
:'''The Essential Calibration Set''' is what you need after building. It is advisable to regularly print some after major or minor changes to hardware or software. Also advisable when you have printing problems. Get it [http://www.thingiverse.com/thing:5573 here]<br />
<br />
:[http://reprap.org/wiki/Videos Mendel videos of the wiki]. Scroll down on printing tips by Adrian Bowyer<br />
<br />
:[https://github.com/prusajr/PrusaMendel The complete parts set] in one zip file.All the stls or scad files you need for sae or metric prusas.<br />
<br />
:'''Prusa V2 files'''. <br />
:Check the [http://blog.reprap.org/2011/11/prusa-iteration-2.html blog], [http://garyhodgson.com/prusadiff/ the RP differences] and download the [https://github.com/prusajr/PrusaMendel files].<br />
<br />
:If you want to see the future in RepRap printing, [http://ultimachine.com/content/printing-circuit-boards-mendel Printing circuit boards on Mendel] is a good start...<br />
<br />
:RepRap [http://titanpad.com/4MdGMrV192 live FAQ]<br />
<br />
:Material Safety Data Sheet for PLA [http://www.ampolymer.com/MSDS/PLA.pdf]or [http://www.minifibers.com/MSDS/MSDS_PLA.pdf] and ABS [http://www.plasticsmadesimple.com/DataSheets/ABS_MSDS_GP.pdf] or [http://www.cityplastics.com.au/pdf/abs%20msds.pdf]<br />
<br />
:[http://www.zhihang.biz/news/Plastic-Extrusion-Problems-and-Solutions-21.html Plastic Extrusion Problems and Solutions]<br />
<br />
:You may want to scan objects for printing... check [http://www.my3dscanner.com/ this] site. You can make a 3d scanner on your own!<br />
<br />
='''CHAPTER 4''', ''TIPS''=<br />
<br />
After getting enough info on what you are about to do, it is time to actual start building...<br />
I will try to describe the steps I followed to build and finally do my first print. <br />
<br />
==Building tips==<br />
<br />
* I recommend you should first read the '''RepRap book''' to familiarise yourself. Then, read the visual guide while watching the video guides of spacexula. In this way you will understand fully the visual guide. I found some supplemental build details [http://reprap.org/wiki/Mendel_frame here] [http://reprap.org/wiki/Mendel_assembly_notes and here].<br />
'''Note''': Don't be afraid of mistakes! Excluding exceptional cases, RepRap is VERY FORGIVING if you make any mistake. Bolts and screws make any joint temporary, so a mistaken placed part can easily be fixed. The same applies to soldering: always have the desolder with you...<br />
<br />
Exceptional cases in my point of view can be considered:<br />
#Heatcore overheating due to faulty/disconnected thermistor<br />
#Liquid or loose bolt&nut drop on electronics (you need to find some cover after finishing everything)>The same applies for loose cables near electronics<br />
#Connecting/disconnecting motors or any other cable from electronics without turning it off first<br />
#RP part break due to overtightening (like rod clamps), but this can be replaced with another.<br />
#Motor overheating due to poor cooling or if there is an obstacle on one of the carriages path, forcing it to stop while the motor is trying to move it<br />
Of course, if such a mistake happen, the broken/burned part can always easily be replaced.<br />
So the bottom line is that even you make the worst mistake, it will cost you some extra money & time..<br />
<br />
*'''Machine orientation'''<br />
decide what is your front side for the machine.Original design assumes that '''Front''' is the side that y motor is mount.Before building further, understand the positions of the y,x motors and the corresponding positions of x,y endstops.<br />
<br />
*'''The jig'''<br />
Make sure you have a jig."Use spacer bars to calibrate common distances. A good arrangement for the y-axis jig is to tape a longer bar over the top of the spacer bar (see pic) to achieve a perpendicular alignment. The top bar only has to be longer by ~10 mm at each end. This arrangement is not necessary for the other two frame jigs. Another good method is to use threaded rod with nuts at the right distance. If you twist the nuts in opposite directions you will lock them."(http://reprap.org/wiki/Mendel_assembly_notes).<br />
'''Note''':when tightening your frame you want that the jig can be inserted easily into the measured gap.This means that you must not apply force to insert or extract it. <br />
<br />
*'''Measure, tighten, measure again'''<br />
<br />
This is self-explanatory, but sometimes underappreciated. Your machine must not be loose, but not overtight either...<br />
<br />
*'''Inserting the x-y carriages'''<br />
When inserting the x-y carriages you need to pay attention to the following:<br />
#first assemble but not tighten.<br />
#make sure the carriage move freely.Try to give it a push, it should move little more before it stops.You must not apply much force to move it.If you do, then you need to realign your smooth rods and bushings.<br />
#move y carriage to the far end (away from you). Tighten the 2 bar clamps of that side.<br />
#repeat step 2.The carriage must behave the same.<br />
#move y carriage to your side. Tighten the 2 bar clamps of that side. <br />
#repeat step 2.The carriage must behave the same.<br />
#Repeat all the procedure again for x carriage.<br />
<br />
<br />
*'''Tightening the x,y motor belts'''<br />
When tightening the x,y motor belts, you need to make sure that it is optimum tight.This means that the belt is virbating like a tightened string when hit lightly.<br />
Note: DO NOT OVERTIGHT.In order to assure this, just observe how the y motor's shaft is moving off center when applying force on the the belt that is attached on the pulley.Very important is that the pulley is vertical to the belt and not off-center due to tension.You can understand this by moving the y carriage manual;if you notice that the belt is trying to move out of the pulley's teeth or it is traveling along the idler's width, then you must either:<br />
#realign the idlers (one or both of them)<br />
#realign belt clamps<br />
#realign motor <br />
#release or apply tension to the belt<br />
<br />
The same goes for the x carriage.<br />
I call optimum belt tighness when you rotate a little the pulley by hand and you see that the carriage moves as well.If there is a chance that you turn the pulley but the carriage does not follow right away -watch cerfully if there is a small raise of the belt at the teeth of the pulley while doing this- then you have to tighten the belt.Also when you press the belt vertically with your finger, you need to feel some resistance from it.<br />
<br />
*'''Cable wiring'''<br />
Before make any wiring, decide where your '''electronics''' will be, how the motor and endstop cables will run along vertices, how heatbed cables will allow the y carriage move freely, without obstructing its move.You need to know your electric/electronic arrangement in order to calculate the right cable length.<br />
<br />
*'''Y carriage holes'''<br />
Before assembling the y carriage on rods, you need to make the holes that the screws of the print bed will mount.Also you need to make corresponding holes on the print bed. Moreover you need to make holes for the heatbed (if you choose to use one). Lastly, you need to take measurings in order to make the glass or aluminum print surface (if you choose to have one)<br />
<br />
*'''Endstops'''<br />
They usually have three pins under the names: NO, NC, and C. Sprinter firmware assumes that you have connected the NC and C cables to "S" and "-" accordingly. If you haven't done so, then either you change the firmware (inside the FW code, you will find what to change in what since there is detailed explanation), or change the wiring of the endstop side. (NC or NO go to "S" C go to "-")<br />
<br />
*'''Preliminary Tests'''<br />
After assembling the x and y carriages, before mounting the e-motor with heatcore, it is wise to make some motor tests. You will need to have all motors and endstops wired to electronics (preferable mount also the thermistors), upload the firmware to electronics, do all the firmware adjustments mentioned in previous chapter, load the host, connect the printer to host and finally give some "move" instructions, "home" instructions, "extrude" instructions.<br />
'''IMPORTANT''':Before turning the machine on, have the x,y,z axis centered. <br />
This means that your carriages are in the middle of their paths, not at the ends.<br />
Also be ready to turn the OFF switch if something is going wrong.<br />
You don't have to have filament or have mount the heat core. Observe if the carriage moves at the correct direction. Correct direction is moving away from the endstop when you give a "+ X 10" instruction.If it does not move or if it does move but when you have pressed the endstop, consult previous bullet point or troubleshooting guide. Check all the axis same way:"+X 10". Then give the "home: instruction to home the carriages.If all 3 axis home ok, then it is time to check extremities. Just tell it to move to +200 for the x,y carriages (of course it is at home first). Then try to extreme z axis.Give repetitively the +z 10 command to reach 10 cm in hight.Be careful not to hit any part at vertices while raising x carriage, also be aware of the x carriage timing belt....If everything is ok, perform a '''''virtual print'''''. Simply load a file to skeinforge or what ever you have for slicing, slice it, load it to host and press the print button. During print, you will notice the x carriage move, the z axis move, the y carriage move.Also you will notice the e-motor rotate as well.If you don't notice any strange noises, or whatever suspicious, you continue mounting remaining parts.<br />
<br />
'''Note''':for virtual prints you must not have connected the heatbed and heatcore power cables..<br />
<br />
*'''How to insert/extract filament'''<br />
'''Inserting'''<br />
#Loose the filament idler springs.<br />
#Insert filament by hand gently, until it cannot move more.<br />
#Set heatcore at extracting temp, that is 185&nbsp;°C for PLA and 230&nbsp;°C for ABS.<br />
#When temperature is reached, push gently by hand filament down until it oozes from the nozzle.<br />
#Tighten idler springs.<br />
#Test extrude from host program.<br />
<br />
'''Extracting'''<br />
#Loose the filament idler springs.<br />
#Set heatcore at 150&nbsp;°C for ABS, 130&nbsp;°C for PLA.<br />
#When temperature is reached, pull up the filament with your hand.<br />
#Turn off heatcore immediately<br />
<br />
*'''Alternative to printed parts (RP)'''<br />
#''z axis couplers''. After some printing you may have problems with z axis RP couplers; they loose their grip on the thread rod causing loosing steps.Usually people replace these if they see that the problem is persistent. I have found [http://www.ebay.co.uk/sch/i.html?_nkw=Stepper+Motor+Coupler+5+x+8&_sacat=0&_odkw=Stepper+Motor+Coupler+5+x+8&_osacat=0&_from=R40 these couplers] but you may also search and find more of these types. <br />
<br />
There are also some RP new coupler designs for prusa such as <br />
http://www.thingiverse.com/thing:7678<br />
http://www.thingiverse.com/thing:7757<br />
http://www.thingiverse.com/thing:8223<br />
http://www.thingiverse.com/thing:9622<br />
http://www.thingiverse.com/thing:10906<br />
http://www.thingiverse.com/thing:11187<br />
http://www.thingiverse.com/thing:12582<br />
<br />
#''bushings''. It is known that the original prusa plastic bushings wear off after some use. The trend now is LM8UU linear bearings. There are many RepRap shops that sell them now. However just type 'lm8uu' on the eBay search bar to see what will come out. NOTE: LM8UU linear bearings require the smooth rods to be made from rolled steel. Anything softer than rolled steel will get damaged by the linear bearings and might also damage the linear bearings. Remember, that these bearings require PR parts that are modified to grip these bearings. All the modified parts can be found in Thingiverse.<br />
<br />
*'''Mounting Glass and the Heated Buid Platform''' <br />
Check [http://www.youtube.com/watch?v=1-hhhejksMA&feature=related this] video<br />
<br />
==Calibrating - Fine tuning tips==<br />
<br />
*'''X&Y carriges Endstops calibration'''<br />
Supposely you have mounted the heatbed or the print surface in general, you need to adjust exactly your endstops in order not to print outside this area.The print surface of your prusa or mendel is 20x20 cm. <br />
<br />
#Move y carriage to home.<br />
#Move x carriage to far left, then right and make sure that the nozzle has equal distance from each edge.<br />
#Then move y carriage to +200.<br />
#repeat step 2<br />
<br />
*'''Fine tuning exact distance between nozzle-surface''' <br />
When you set the nozzle to a certain distance from the print surface when homing the z axis, you must be sure that this distance will be the same for all the print surface, wherever the nozzle will be, when z=0.<br />
#Move y carriage to +100.<br />
#Move x carriage to +100.<br />
#Home z axis.<br />
#Set z endstop to required nozzle-surface distance.<br />
#Move x carriage to far left.Home y cariage <br />
#If the distance is not what you have set, then readjust it by screwing/unscrewing the adjacent screw that holds teh print surface (the one that has the springs under the print surface)<br />
#Move x carriage far right.<br />
#Repeat step 6.<br />
#Move y carriage +200.<br />
#Move x carriage far left.<br />
#Repeat step 6.<br />
#Move x carriage far right.<br />
<br />
Verify settings with steps 1,2,3.After this, try print [http://www.thingiverse.com/thing:13053 this] to verify your settings.<br />
Nozzle must have same distance from surfac<e everywhere. In order to define the right nozzle-surface distance, see troubleshooting guide, printing.<br />
<br />
*'''Fine tuning Z endstop'''<br />
There is a possibility to loose z endstop exact location..<br />
Just move nozzle to center of surface (x,y =100) and calibrate z endstop.<br />
<br />
==Printing tips==<br />
<br />
=== PLA ===<br />
*'''Printing on painter's tape'''<br />
When in doubt, use good old reliable painter's tape. It is extremely forgiving and PLA seems to stick to almost any kind of painters tape you can find. It sticks with a cold bed or hot bed. It doesn't matter. Peeling parts off painter's tape from a hot bed can get ugly though. You may have to scrape the tape off the part.<br />
<br />
*'''Printing on bare glass'''<br />
Printing to bare glass is the best way to go if you can get it to work. I get good results with the bed at 65&nbsp;°C and a very clean piece of plain old window glass. Here's a list of tips:<br />
# For cleaning the glass, just use isopropyl alcohol to wipe away fingerprints, etc. <br />
# You absolutely *must* have just the right distance between the tip of the nozzle and the bed. Too low and PLA doesn't extrude, too high and the PLA just curls right off the glass. <br />
# To get absolutely flat pieces, ''make sure all 4 corners of the glass are clamped with bulldog clips''. A slight pocket of air under the glass will cause the part to curl.<br />
# Wait for the part to cool down to room temperature and the part will practically fall off the glass<br />
# Use 2 pieces of glass and swap between them if you can't wait for parts to cool in between prints<br />
<br />
=== ABS ===<br />
<br />
*'''Printing on Kapton or PET tape'''<br />
Kapton/PET tape is probably the the most common way of printing ABS. It provides good adhesion and keeps parts from warping.<br />
:*'''Rough print surface'''<br />
:After some use, your kapton may become rough due to peeling.It is not time to replace it, at least not yet. Try in skeinforge/sfact the raft plug in, setting ''1 interface and 1 base layers''. Leave rest of values untouched. It prints 2 intercrossed layers before printing the part, helps smoothen all surface problems (including slight inclination), allowing your piece to have a nice first layer. But you may experience some trouble removing it from piece, or for ABS, need to have high bed temperature since first layer is not touching the bed anymore.<br />
<br />
*'''Printing with acetone slurry'''<br />
You can also print ABS onto glass/acrylic if you cover it with a diluted mixture of ABS and acetone.<br />
<br />
*'''Hair spray on Heatbed?'''<br />
Yes, many people have tried hair spray on heatbed and say it works like a charm!<br />
<br />
Mainly, it is used when kapton tape shows lack of capability to adhere first layer. But if used on new kapton, they say it makes it live longer. It is said that it can hold up 1 week. Sprayed surface can be cleaned by acetone, alcohol, etc. It also reduces the necessary bed temperature by 10&nbsp;°C or more...<br />
<br />
Instructions of use:<br />
<br />
# !!SPRAY ON A ROOM TEMPERATURE HEATBED!! Some prefer to use a glass for print surface, since it can be removed and spray it in open area.<br />
# Protect adjacent printer parts from spray (smooth rods, etc.) by using a carton or something.<br />
# Wait for spray to fix itself.<br />
# Use it. You can also turn on you heatbed to print ABS.<br />
<br />
=== Printing in general ===<br />
<br />
<br />
*'''Printed parts detaching tools'''<br />
<br />
In my experience detaching ABS from Kapton or painter's tape from PLA may prove a little bit hard. A set of blades like [http://www.cornwallmodelboats.co.uk/acatalog/mantua_hobby_knife_set.html these] can be very useful for detaching and cleaning the part.<br />
<br />
*'''3D printing cost'''<br />
<br />
I made a [[File:3D_print_cost_calculator.zip]] to calculate the total cost of the final printed part. It includes everything that can be considered as cost. The given energy consumption values are taken after reviewing several Web pages on this matter. <br />
All values are pushed a little bit higher to cover even the most energy consuming RepRap (four fans, motors always on, etc.).<br />
The calculator only covers the printer cost part. It does not cover the PC cost part, the energy that the PC will consume to keep sending all the g code (if you don't use an SD card and let the printer work as stand-alone). Also, it does not cover the time and energy that your computer (and you) will use to create, edit, slice, review, repair and prepare the piece for print.<br />
<br />
*'''Real-time measuring of filament width while printing'''<br />
<br />
Are you tired of inserting wrong filament width to your slicer?. Are you disappointed of the tolerances (above + - 0.3 mm) of the newly produced filament by your new DIY filament extruder? There's a [http://www.thingiverse.com/thing:454584 width filament sensor].<br />
<br />
*'''Improving Heated bed adhesion'''<br />
- To improve ABS adhesion on heated bed, some abs filament is dilluted in acetone.[https://www.youtube.com/watch?v=9JOjUa3vcu0 Here], [https://www.youtube.com/watch?v=n-g3TN48gvw here] and [https://www.youtube.com/watch?v=ZKGu-PNjvNg here] you can see how.<br />
Other solutions on this matter, is to apply [https://www.youtube.com/watch?v=rrkSq4dvmcA solvent cement]<br />
<br />
- To improve PLA adhesion on heated bed, mix some PVA glue with water.[https://www.youtube.com/watch?v=9JOjUa3vcu0 Ohmeye], can show you how.<br />
<br />
- Use [http://reprap.org/wiki/PEI ,PEI]<br />
<br />
<br />
*'''How to put PET/KAPTON tape on on a heated bed'''<br />
Check [https://www.youtube.com/watch?v=NtQqq3wSIBk this]<br />
<br />
<br />
*'''Rotating objects in [openscad]'''<br />
The following is an extract from a dialogue I had with Triffid_Hunter in #reprap<br />
<br />
"openscad: rotate([0, 0, 0]) import_stl("blah.stl");<br />
<br />
<Triffid_Hunter>COS_: the 3 numbers for rotate are rotation about the X, Y and Z axes in degrees.change by 90 to test output. The stl must be in opencscad folder. Then select design->reload&compile. Then if satisfied, select compli&render then export as *.stl file."<br />
<br />
<br />
*'''Rotating objects in Blender'''<br />
#open blender<br />
#file->import stl (load the stl you want to rotate)<br />
#right click on object, press "r", then the axis to rotate(x,y,or z)<br />
#type the angle to rotate (90, 180, etc.) object will rotate instantly <br />
#press enter when satisfied<br />
#file->exprot stl, save object<br />
<br />
'''Note''': be careful that the object must touch the grid (z axis=0) otherwise object will not start print at layer 0 but higher..<br />
<br />
<br />
*'''How to change ABS to PLA and vice-versa'''<br />
<br />
Let's say you print with ABS.<br />
<br />
#Set temperature to 230&nbsp;°C<br />
#Unscrew idler and remove ABS filament (see "insert/remove filament)<br />
#Insert PLA<br />
#Temperature is 230&nbsp;°C<br />
#Gently push filament until it oozes<br />
#Set temperature to PLA extrude temperature (185&nbsp;°C)<br />
#Screw idler and test extrusion<br />
<br />
<br />
Let's say you print with PLA.<br />
<br />
#Set temperature to 185&nbsp;°C<br />
#Unscrew idler and remove PLA filament (see "insert/remove filament)<br />
#Insert ABS<br />
#Temperature is 185&nbsp;°C<br />
#Gently push filament until it oozes<br />
#Set temperature to ABS extrude temperature (230&nbsp;°C)<br />
#Screw idler and test extrusion<br />
<br />
<br />
*'''Can I fix broken plastic parts?'''<br />
<br />
Of course!<br />
<br />
'''Pla'''<br />
<br />
-see http://www.thingiverse.com/thing:23606<br />
<br />
-also you can use epoxy. I wouldn't recommend cyancrylic due to decolorisation<br />
<br />
'''Abs'''<br />
<br />
-Use acetone. It is strong without any plastic discoloration and it is durable. I used it to fix my broken extruder idler part.<br />
<br />
*'''Printing Parameters Database'''<br />
<br />
The table below describes printing parameters of different materials for printing. The suggested print surface settings, are those that combine easy of use, low cost and durability. These parameters were taken mainly form Nophead's and Richrap's blogs. Also, an extensive search throughout my #reprap logs helped as well. <br />
<br />
{| border="1" align="center" style="text-align:center;"<br />
|'''Print material'''<br />
|'''Extrude Temp'''<br />
|'''Print surface settings'''<br />
|-<br />
|ABS<br />
|210&nbsp;°C ~ 240&nbsp;°C<br />
|Kapton or PET tape on flat surface (glass) at 110&nbsp;°C <br />
|-<br />
|PLA<br />
|165&nbsp;°C ~ 200&nbsp;°C<br />
|Kapton tape or Blue tape on flat surface (glass) OR Hairspray on glass OR lightly sanded glass at 60&nbsp;°C <br />
|-<br />
|PMMA (plexiglas)<br />
|180&nbsp;°C<br />
|Plexiglas surface at 50&nbsp;°C~100&nbsp;°C OR Kapton tape on flat surface (glass) at 110&nbsp;°C ~ 130&nbsp;°C<br />
|-<br />
|Nylon<br />
|190&nbsp;°C ~ 265&nbsp;°C<br />
|Tufnol (temperature not specified) or cardboard at 120&nbsp;°C<br />
|-<br />
|Chocolate, ceramic, sugar paste, silicone, flux paste, and clay (you need the [http://richrap.blogspot.gr/search?updated-max=2012-06-01T14:34:00%2B01:00&max-results=7&start=15&by-date=false Universal paste extruder])<br />
|Ambient in general, for chocolate 30~33&nbsp;°C<br />
|Flat surface (glass) in ambient temp. For ceramic, use aluminum foil on flat surface (glass).<br />
|-<br />
|HDPE<br />
|200&nbsp;°C ~ 240&nbsp;°C<br />
|PP (polypropylene) print surface <br />
|-<br />
|PCL<br />
|120&nbsp;°C ~ 150&nbsp;°C<br />
|(temp&surface not verified)<br />
|-<br />
|Polyurethane<br />
|215&nbsp;°C<br />
|110&nbsp;°C(surface not verified)<br />
|-<br />
|Print material<br />
|Extrude Temp<br />
|Print surface settings<br />
|-<br />
|}<br />
<br />
='''CHAPTER 5''', ''TROUBLESHOOTING GUIDE''=<br />
<br />
==Building==<br />
<br />
'''MOVING AXIS'''<br />
<br />
*'''Carriage moves only to one direction, but moves reversed only when I keep press the endstop'''<br />
<br />
Verify your endstop wiring. Cables should be at NC and C. The "NC" goes to "S" on RAMPS and the "C" goes to "-".<br />
<br />
OR<br />
<br />
Change the logic of the firmware.Sprinter&Marlin allow this.I have not tried any other FW. If anyone has, please write it here.<br />
<br />
Sprinter&Marlin firmware, configuration.h<br />
//If your axes are only moving in one direction, make sure the endstops are connected properly.<br />
//If your axes move in one direction ONLY when the endstops are triggered, set [XYZ]_ENDSTOP_INVERT to true here:<br />
const bool X_ENDSTOP_INVERT = '''true''';<br />
const bool Y_ENDSTOP_INVERT = '''true''';<br />
const bool Z_ENDSTOP_INVERT = '''true''';<br />
<br />
<br />
*'''I am getting a reading off my thermistors, but ALL of my axises will not move at all. '''(http://titanpad.com/qJEQDJxQs6, the live RepRap FAQ guide). Confirm that you did attach the 12V leg of your power supply to the electronics. If you attached 5V by accident none of the Axises will work <br />
<br />
*'''In which direction should the Axis move?''' (http://titanpad.com/4MdGMrV192 , the live RepRap FAQ guide) <br />
<br />
Z goes up when going positive, down when going negative<br />
X goes left when going negative and right when going positive<br />
Y goes forward when going positive and back on the negative<br />
You can reverse stepper direction by flipping the stepper plug, or changing settings in firmware. ALWAYS REMOVE POWER BEFORE UNPLUGGING A STEPPER <br />
<br />
*'''One axis will not move at all, what is wrong?'''(http://titanpad.com/qJEQDJxQs6 , the live RepRap FAQ guide)<br />
<br />
If only one axis will not move<br />
-1st swap the stepper motor to a different driver, If the problem is likely that you do not have proper electrical connection to the motor, insure that both coils are connected AABB A connected to A B connected to B electrically<br />
-If the problem stays on the axis it's an issue with the board, if your electronics have removeable stepper controllers move the stepper controller to an axis that works. If the problem moves then you either have a stepper that is turned all the way down, or a dead stepper controller<br />
-If the problem STILL does not move you might have an issue with your electronics themselves, turn your board over and make sure that the sockets for the stepper controlers and the related capacitors/reistors for the axis are all properly soldered. Any questions with a joint just touch up the solder.<br />
<br />
'''Heatbed'''<br />
<br />
*'''I cannot apply my 70mm Kapton on glass surface without bubbles! The tape is too large and I cannot control it'''<br />
<br />
Have you tried the ''wet method?'' Check this [http://www.youtube.com/watch?v=A6y8St1q2LM video]<br />
<br />
==Electronics==<br />
<br />
; What order do the wires in my stepper motors get connected to my Stepper Driver?<br />
: See [[stepper wiring]].<br />
<br />
* '''Using the Sanguinololu 1.1 my motors will not release.'''(http://titanpad.com/qJEQDJxQs6, the live RepRap FAQ guide)<br />
<br />
The Sanguinololu does not take the M84 motor release command, you have to modifiy the board to get that functionality.<br />
<br />
==Electrical==<br />
<br />
'''MOTORS'''<br />
<br />
*'''When I send a move command to an axis the motor makes a buzz sound without moving.'''<br />
<br />
<br />
You need to adjust the trimpot. It can be found on the stepper driver, it is the little round thing that looks like a screwhead. Rotating the tripot gives more power to motor. Be careful, too much power can lead to motor burn, Therefore make small adjustemnts and interate the process.<br />
<br />
1. Power off your electronics <br />
<br />
2. Turn the screw a little bit clockwise <br />
<br />
3. Turn on Power<br />
<br />
4. Test<br />
<br />
5. Repeat<br />
<br />
This rotation can be done without turning off the electronics however touching anything with your screwdriver might damage your electronics while they are on.<br />
<br />
*'''My motor is behaving strangely. It makes a grinding noise whenever I tell it to step 10mm and adjusting the pot doesn't fix it. The wiring seems to be fine as well. In addition, it will sometimes move, but then reverse direction a bit. This is also happening with my extruder, it will move in one direction then back off'''(http://titanpad.com/qJEQDJxQs6 , the live RepRap FAQ guide)<br />
<br />
Your connector to your motor is very likely lose, swap the axis and the behavior should follow the motor. recrimp or replace the motor connector. If the problem is on the motor side of the conneciton you might have to replace the motor if you can't take it apart.<br />
<br />
*'''One of my motors just stops turning partway through an otherwise perfect print.'''(http://titanpad.com/4MdGMrV192 , the live RepRap FAQ guide) <br />
<br />
Most likely, the motor is overheating, and losing torque. You need to turn down (counter-clockwise) the adjustment pot for the motor.<br />
<br />
*'''I can't get my motor into the sweet spot between enough current and too much. If I turn it down enough to stop from overheating, I get skipped steps.'''(http://titanpad.com/4MdGMrV192 , the live RepRap FAQ guide) <br />
<br />
Add a fan, heat-sink or both to the motor driver.<br />
<br />
*'''I need more info about stepper motors, i.e. wiring, motor types, etc...'''<br />
<br />
Check the wiki http://reprap.org/wiki/Stepper_Motors<br />
also you can check http://www.sapiensman.com/step_motor/<br />
<br />
==Firmware==<br />
<br />
* '''My printer cannot communicate with Host'''<br />
<br />
There are several things to see:<br />
#Check USB cable, both ends<br />
#Check host speed setting to mach that of your FW<br />
#Check COM port<br />
#Sometimes high speed is not tolerable by Os&computer<br />
#FW speed setting:<br />
<br />
marlin for baudrate 250000:<br />
// This determines the communication speed of the printer<br />
#define BAUDRATE 250000<br />
//#define BAUDRATE 115200<br />
//#define BAUDRATE 230400<br />
*'''Note''': Marlin requires pyserial version 2.6 on linux bots to get to 250000 ( Marlin FAQ, at http://titanpad.com/zKInCaYQb0)<br />
<br />
sprinter for baudrate 115200<br />
// This determines the communication speed of the printer<br />
#define BAUDRATE 115200<br />
<br />
* '''X,Y,Z carriages go beyond limit (200mm for X,Y and 100mm for Z)'''<br />
<br />
check FW setting:<br />
<br />
marlin prusa settings<br />
#define min_software_endstops false //If true, axis won't move to coordinates less than zero.<br />
#define max_software_endstops true //If true, axis won't move to coordinates greater than the defined lengths below.<br />
#define X_MAX_LENGTH 200<br />
#define Y_MAX_LENGTH 200<br />
#define Z_MAX_LENGTH 100<br />
<br />
sprinter prusa settings<br />
const bool min_software_endstops = false; //If true, axis won't move to coordinates less than zero.<br />
const bool max_software_endstops = true; //If true, axis won't move to coordinates greater than the defined lengths below.<br />
const int X_MAX_LENGTH = 200;<br />
const int Y_MAX_LENGTH = 200;<br />
const int Z_MAX_LENGTH = 100;<br />
<br />
*'''My print suddenly gets shifted over by Xmm, partway through the print.'''<br />
<br />
There is a good chance that your acceleration is too high than your hardware can manage. You have to reduce acceleration through firmware:<br />
<br />
Marlin firmware (original value is 3000.Try 1000 or 1500):<br />
#define DEFAULT_ACCELERATION '''1500''' // X, Y, Z and E max acceleration in mm/s^2 for printing moves <br />
<br />
Sprinter firmware (these valus normally work):<br />
float max_start_speed_units_per_second[] = {25.0,25.0,0.2,10.0};<br />
long max_acceleration_units_per_sq_second[] = {1000,1000,50,10000}; // X, Y, Z and E max acceleration in mm/s^2 for printing moves <br />
long max_travel_acceleration_units_per_sq_second[] = {500,500,50,500}; // X, Y, Z max acceleration in mm/s^2 for travel moves<br />
#endif<br />
<br />
* '''I have just changed FW from Sprinter to Marlin (or vice versa) but although I transferred all parameters, my prints are $#|tty'''<br />
<br />
Yes, it happens all the time... Have you checked this parameter?(found in Sprinter at Configuration.h or Marlin at Configuration_adv.h)<br />
<br />
#define MAX_STEP_FREQUENCY 30000 // Max step frequency I have this value for Prusa<br />
<br />
* '''My MakerGear metric Prusa, Ramps 1.3, 1 MG hotend, 16 step drivers, Nema 17 geared extruder, 100 thermistor, heated bed, FW settings'''<br />
<br />
These are my FW settings for my metric Prusa. I only include the parameters that I changed from original file along with important ones. These parameters apply to Marlin and Sprinter found in Configuration.h and Configuration_adv.h(Marlin only)<br />
"OR" APPLIES TO MARLIN EXPRESSION OF SAME PARAMETER<br />
<br />
#define MOTHERBOARD 33<br />
#define THERMISTORHEATER 1 OR #define TEMP_SENSOR_0 1 <br />
#define THERMISTORBED 1 OR #define TEMP_SENSOR_BED 1<br />
#define BAUDRATE 250000<br />
#define _AXIS_STEP_PER_UNIT {160,160,6400/1.25,1474}; //MG metric prusa, MG hotend, MG stepper extruder<br />
#define ENDSTOPPULLUPS<br />
const bool X_ENDSTOP_INVERT = true; OR const bool X_ENDSTOPS_INVERTING = true;<br />
const bool Y_ENDSTOP_INVERT = true; OR const bool Y_ENDSTOPS_INVERTING = true; <br />
const bool Z_ENDSTOP_INVERT = true; OR const bool Z_ENDSTOPS_INVERTING = true; <br />
const bool DISABLE_Z = true; OR #define DISABLE_Z true <br />
const int X_MAX_LENGTH = 200; OR #define X_MAX_POS 200<br />
const int Y_MAX_LENGTH = 200; OR #define Y_MAX_POS 200 <br />
const int Z_MAX_LENGTH = 100; OR #define Z_MAX_POS 100<br />
#define _MAX_FEEDRATE {400, 400, 2, 45} // (mm/sec) <br />
#define _HOMING_FEEDRATE {1500,1500,120} // (mm/min) !!<br />
#define _AXIS_RELATIVE_MODES {false, false, false, false}<br />
#define MAX_STEP_FREQUENCY 30000 // Max step frequency<br />
#define _ACCELERATION 1000 // Axis Normal acceleration mm/s^2<br />
#define _RETRACT_ACCELERATION 2000 // Extruder Normal acceleration mm/s^2<br />
#define _MAX_ACCELERATION_UNITS_PER_SQ_SECOND {5000,5000,50,5000} <br />
#define MINIMUM_PLANNER_SPEED 2.0 // (mm/sec)<br />
//#define ENDSTOPS_ONLY_FOR_HOMING<br />
<br />
Marlin PID settings for MG hotend<br />
// Makergear<br />
#define DEFAULT_Kp 40.0 <br />
#define DEFAULT_Ki 0.55 <br />
#define DEFAULT_Kd 35<br />
<br />
==Software==<br />
<br />
'''TO BE CONTINUED....'''<br />
<br />
==Printing==<br />
<br />
*'''[[Print_Troubleshooting_Pictorial_Guide]]'''. It is suggested to read this VERY comprehensive guide, before reading further.<br />
<br />
<br />
*'''What is the right distance between nozzle and surface?'''<br />
<br />
My experience points that it should be equal or less the 2/3 of your print layer.Measuring this distance is easy with a feeler gauge;just set distance using the z endstop and measure the gap in betwen by inserting the feeler gauge thin steel blade.If it gets through roughly, it is ok, but if it gets through very easily, you need to reduce the gap and measure again. Be carefull while measuring, the feeler gauge blade must fit in the gap without having to push the print surface down in a manner to compress the 4 surface support springs. Some prefere to set it to zero, meaning that when 'home' nozzle touches the surface. It also can be adjusted by the slicing software you use (i.e. you can insert a gcommand to raise/lower your nozzle a bit in your start gcode). Please refer to respective software settings, to learn how to do it through software.<br />
<br />
NOTE: The central idea around setting minimum distance, is to achieve optimum first layer adherence. This can be controlled by 3 factors: Nozzle travel speed, filament extrusion speed, distance between nozzle-bed. Playing with all 3 parameters you can achieve desired results. Best result can be considered the ablility to have object adherence on bed without flattening too much the first layer. <br />
<br />
*'''My print suddenly gets shifted over by Xmm, partway through the print.'''(http://titanpad.com/4MdGMrV192 , the live RepRap FAQ guide)<br />
<br />
This could be caused by a number of problems. The most likley is you need to adjust the current for your stepper motor - find the adjustment pot for the motor, and carefully turn it up (clockwise) a tiny bit. If you still lose steps, turn it up a bit more. It could also be do to your belt tension being too low (and too high of tension can lead to current probelms as above). Belt or bearing binding is another common cause of these problems. Make sure your axes all move smoothly, if you feel any sticky spots that could be the cause... Check also the '''firmware troubleshooting'''.<br />
<br />
'''Note:'''if you have such a problem on x carriage, after several hours of printing with the heatbed on, then you must know that the heat from the heatbed affects the belt tension.If your belt is somewhat loose, then the heat decrease the tension a lot.Usually you miss steps when carriage acelerates to move to next print point. Check also the screw of the pulley; after some time it looses the grip of the motor shaft.<br />
<br />
*'''Why does my extruder skips steps whenever I am trying to print?'''(http://titanpad.com/NKIQnvwEtd , the live RepRap FAQ guide)<br />
Issues to check<br />
<br />
-Is your stepper controller getting hot? If it overheats you will get skips durring extrusion<br />
<br />
-If using a geared stepper, does the 2 gears mesh exactly the same across the full rotation of your larger gear? If you have a part that has higher resistance you gear might not be perfectly round / have a defect. Try to use a hand file to clean up the gear meshing, or move the stepper motor gear further from the driven gear to allow more room for the defects.<br />
<br />
-Is your thermal barrier getting hot? If your thermal barrier gets to hot it can cause increased resistance to motion by your cold end. You might need to put a fan on your thermal barrier.<br />
<br />
-Your nozzle might have trash in it. If all else fails remove your hot end and clean out all the plastic. Most hot ends this can be done with a blow torch, but some are too fragile for this and you must use a long acetone dip.<br />
<br />
*'''My prints will not stick to the HBP (Heated Build Plate).'''(http://titanpad.com/4MdGMrV192 , the live RepRap FAQ guide)<br />
<br />
Many things can cause a print not to stick, check these things:<br />
<br />
-Is your HBP hot enough? 70&nbsp;°C for PLA 110-120&nbsp;°C for ABS<br />
<br />
-Have you got skin oil or lube from the axises on the plate? It will cause prints not to stick (you can clean them with alcohol, acetone, or ammonia (Windex, tested on glass) )<br />
<br />
-Are you pressing the 1st layer into the HBP enough? The extrusion should take on a slightly flat appearance without actually squishing it (you should not see the nozzle dragging thought he middle of the print.<br />
<br />
-Are you printing the 1st layer slow enough? All materials like the travel speed to be 15-20mm/s for the 1st layer.<br />
<br />
*'''It seems that there is something blocking my nozzle hole. Filament comes out with difficulty from the extruder, no matter if I raise core temperature. How do I clean the nozzle hole? ?'''<br />
<br />
Relax!<br />
<br />
Probably there is something stuck inside your nozzle hole, maybe dirt or dust that came along with filament (do you use a sponge right before filament enters the extruder?). This is called clog. I had the same problem and I had to replace hole hotend, just because I didnt know the following tip. If you type "clog?" at the #reprap IRC channel, you will get a similar answer but with lower tempereatures. My procedure (given below) is tested and it works for me...<br />
<br />
'''PLA'''<br />
#Turn on the RepRap, and set core temperature to 150&nbsp;°C<br />
#Release extruder idler springs<br />
#Try to push the filament down to see if it extrudes a bit manualy. This will compress the filament inside peek<br />
#Turn off core, and watch core temperature<br />
#At 90~100&nbsp;°C remove the filament from the extruder using some steady force. The unmolten filament should come out along with the molten filament from inside the bronze barrel. This filament looks like a gum. Keep removing this, until all of it is out. This should clean the inside nozzle hole.<br />
#Insert a new filament.<br />
#Wipe the filament that is between the entruder and filament coil with a damp cloth with alcohol (general, in modifications that need to remove filament, don't let the filament on the floor or on dirty surfaces)<br />
#Set the extrude temperature and test extrude.<br />
#Repeat if it didn't work, but try to remove the filament at a lower temperature, such as 80 or 60&nbsp;°C.<br />
#Replace nozzle if it didn't work<br />
<br />
<br />
'''ABS'''<br />
Follow the procedure described for PLA, but having an initial temperature (step 1) at 190 and filament extraction temperature (step 5) at 150&nbsp;°C.<br />
<br />
='''CHAPTER 6''', ''LEARNING MORE''=<br />
<br />
I assume that now, you have your machine calibrated, you have printed those calibration cubes and objects, and you stay up late at night watching the printer creating your objects..<br />
<br />
I also assume that you already have some questions...<br />
<br />
* [[PLA]] or [[ABS]]?<br />
* [[Slic3r]] or [[Skeinforge]] or [[SFACT]] or ?<br />
* [[Marlin]] or [[Sprinter]] or ?<br />
* [[FreeCAD]] and/or [[OpenSCAD]] and/or [[TinkerCAD]] ?<br />
* Extruding my own filament?<br />
* Making my OWN bioplastic?<br />
* Can a RepRap make its own electronic board? Can it be a CNC machine?<br />
<br />
Here, I will try to share my experience, after having tried some of the above.....<br />
<br />
<br />
'''PLA VS ABS'''<br />
<br />
My first prints were made by ABS. I have chosen ABS because of its higher resistance in time, temperature and loads. These qualities make it a good material to make RP parts. Virtually, it can be used to any working application (from toy to complex machine and mechanism). However, printing with ABS is Tricky for the newbie...<br />
Later I tried PLA, and I can surely tell you that PLA is the material that you must begin printing with.<br />
You can also check [http://www.protoparadigm.com/blog/2013/01/the-difference-between-abs-and-pla-for-3d-printing/, The Difference Between ABS and PLA for 3D Printing], a very comprehensive article by Luke Chilson.<br />
<br />
Below there is a comparison table with these 2 materials<br />
<br />
{| border="1" align="center" style="text-align:center;"<br />
|'''Description'''<br />
|'''ABS'''<br />
|'''PLA'''<br />
|-<br />
|Hotend print temperature<br />
|215~230&nbsp;°C (danger to burn it if the temperature control goes wrong)<br />
|165~200&nbsp;°C<br />
|-<br />
|Need of Heated bed<br />
|YES, 110&nbsp;°C<br />
|NO, if print on Blue tape<br />
|-<br />
|Print surface preparation<br />
|I use Kapton or PET on glass surface, clean with acetone<br />
|I use Blue tape on glass surface, clean with alcohol <br />
|-<br />
|Warping<br />
|Very delicate on large surfaces and thin & tall walls<br />
|No problem, you might need some heatbed temperature for large surfaces for first 10 layers<br />
|-<br />
|Odor - fumes<br />
|Some may find it annoying, it is said that fumes may be toxic. Always print in a well-ventilated area.<br />
|No smell or fumes at these temperatures, over temperature may produce some nice smell<br />
|-<br />
|Application<br />
|Flexible, good for mechanisms, RP parts, lives long, not suitable for food use<br />
|Brittle, good for toys (due to food use), suitable for food use, artistic objects<br />
|-<br />
|Colorisation<br />
|White ABS can change color if you apply a color marker before hotend entry<br />
|No<br />
|-<br />
|Price<br />
|Cheaper than PLA<br />
|More expensive than ABS<br />
|-<br />
|Biodegradability<br />
|No<br />
|Yes<br />
|-<br />
|Hygroscopicity<br />
|Little<br />
|Enough (can make big bubbles on prints if it absorbs too much moisture)<br />
|-<br />
|Overall<br />
|Heatbed at 110&nbsp;°C for some hours means raised electricity bills. It also means danger to finger burn. It also means you need to WAIT until the set temperature is reached. ABS adheres to kapton very strong, so when you try to unstuck your print from Kapton, in 9 out of 10 times you destroy Kapton substrate because you use knives or similar sharp edged tools.<br />
|No heated bed, no trouble. No raised hotend temp, no danger. No fumes, no cancer. If you suspect too much moisture in your PLA, put it into the (preheated) oven at 50&nbsp;°C for 30 minutes :-)<br />
|-<br />
|}<br />
<br />
<br />
'''Slic3r or Skeinforge or SFACT or ?'''<br />
<br />
Before making up your mind I suggest you to try every one of them in order to have a personal view of their abilities and disabilities.<br />
<br />
''Skeinforge'' is the oldest of the other 2 and therefore, it carries much experience in it. However, it is too complicated for a beginner who just want to slice the calibration cube....<br />
<br />
''SFACT'' is the answer to the difficult user interface of Skeinforge. It simplifies many slicing parameters and explains in brief what parameters are important and how to handle them. Of course, SFACT is -let's say- a more user-friendly version of Skeinforge.<br />
<br />
As of Skeinforge 50, flow rates are calculated automatically making the user interface easier, and closer to the automation of SFACT.<br />
<br />
''Slic3r'' is nicer as some people say. Slic3r is the new trend in slicing (as of July 2012). It is much, much faster in slicing than Skeinforge/SFACT, it has few parameter to play with, but it cannot reach Skeinforge's depth. However, it evolves day-by-day and if you consider that a year ago Slic3r was in the realms of un-existence, one can expect it will be the best slicing prg. in the future. There is a comparison of this sclicer between other, in RepRap magazine, issue#1. <br />
<br />
I also tried ''Cura''. It seems to me that cura is Skeinforge (some parameters as well as print quality remind me of Skeinforge) with an excellent user interface plus a 3D object layout. There is a comparison of this slicer between other, in RepRap magazine, issue#1. <br />
<br />
I also have used '''RepRap host software''', '''Repsnapper'''. These are Host&slicer together. It is interesting to see your parts in 3D as they will be printed on table (good to see if your parts need to be rotated), but their integrated slicing programs don't seem to have the publicity of slic3r for example. I have used them as host and never used them for slicing. <br />
<br />
''KISSlicer'' is a new slicer that -according to some forums- gives more priority to quality over speed. There is a comparison of this slicer between other, in RepRap magazine, issue#1.<br />
<br />
Please check [http://solidoodletips.wordpress.com/2012/12/04/slicer-torture-test/ this link] for a comparison between slic3r,cura,SF and kisslicer <br><br />
<br />
<br />
'''Marlin or Sprinter or ?'''<br />
<br />
Because seeing is believing, in [http://www.wigwag.com/devblog/3d-printing-update-switching-firmware-from-sprinter-to-marlin-more/ this] and [http://techpaladin.com/2011/11/21/getting-all-the-pieces-to-fit-together/ this] article, [http://www.flickr.com/photos/13659531@N03/6392044395/in/photostream/ this]and [http://www.flickr.com/photos/sparr0/6553539843/ this] photo you can see the difference.<br />
<br />
However, Sprinter is easier to setup since the parameters to play with are straightforward.<br />
Marlin, on the other side is more complicated to setup. It is not uncommon for people to change from Sprinter to Marlin, that have problems in prints just because they miss to setup correctly Marlin. <br />
It happened to me, and it took me two afternoons to figure out that I was missing a parameter in one of the last lines of config.adv in Marlin.....<br />
<br />
This happens because Marlin's original setup is for Ultimaker. For example, Marlin's print area setup is not 200x200x100 as it is supposed to be for RepRaps. <br />
<br />
Summarising, first you need to start with Sprinter, then, when you see that you are comfortable with playing firmware's parameters, you can switch to Marlin.<br />
<br />
I haven't tested any other Firmware, and I would be glad if someone else has, and would like to show pictures of other comparisons as well. <br><br />
<br />
<br />
<br />
'''Extruding my own filament'''<br />
<br />
Yes, it is true, but under certain circumstances. If you choose to get into this, you also have to learn some things about plastics extrusion, as well as you have some technical skills to make one (at the moment filament extruders are DIY). Don't forget that home extruding is at preliminary stages, so if you are a newbie I suggest you to wait some time, until home extruding concept settles well.<br />
<br />
Homemade filament is possible if you have a filament extruder. Filament extruders are available ready to buy but also they are available as open source hardware, so you can make a DIY machine. The most documented, tested, and awarded machine (in my point of view) is [http://www.thingiverse.com/thing:380987 Lyman's filament extruder IV]. It is checked, tested and works fine. [http://www.thingiverse.com/thing:212894 I also made one] for myself! If you [http://www.thingiverse.com/search/page:2?q=filament%20extruder check thinginverse] for filament extruders you will find some machines that work.<br />
<br />
Filament extruders that you can buy (almost all of them are funded from kickstarters):<br />
<br />
* [http://www.kickstarter.com/projects/833191773/filastruder-a-robust-inexpensive-filament-extruder Filastruder]<br />
*[[Filabot]] [http://www.filabot.com/ Filabot]<br />
* [http://www.kickstarter.com/projects/1574214560/desktop-plastic-extrusion-system-for-everyone Filafab]<br />
* [http://www.kickstarter.com/projects/1622873957/the-fastest-filament-extrusion-bot-makes-abs-pla-i Extrusion Bot]<br />
* [http://www.kickstarter.com/projects/1096453211/strudittle-a-tiny-fast-precise-low-cost-filament-e?ref=live STRUdittle]<br />
* [https://www.kickstarter.com/projects/omnidynamics/strooder-first-truly-consumer-3d-printing-filament?ref=discovery, Stroooder]<br />
<br />
Here is a [http://www.ebay.com/sch/i.html?_trksid=p2047675.m570.l1313.TR0.TRC0.X+Filament+Extruder&_nkw=+Filament+Extruder&_sacat=0&_from=R40 filament extruder from ebay] <br />
<br />
More can be found in [[filament production]].<br />
<br />
<br />
'''!IMPORTANT!'''<br />
<br />
There are two types of ABS. Injection and Extrusion type.<br />
In RepRap filament extruding, the '''Extrusion type''' is needed. The main difference between 'extrusion' and 'injection' ABS type, is the 'MELT FLOW' physical property. As you read each product's data sheet, you will see that this value is not constant from brand to brand, and defines how liquid the plastic will be, when it exits the nozzle. I have observed that there are some 'injection' labeled ABS that have low 'melt flow' property and behave as extruded ABS.<br />
The bottom line is, that the ABS that suits your needs is the one with "melt flow" up to 1 g/10 min (@Load 5.00 kg,<br />
Temperature 200&nbsp;°C, acc ISO 1133).<br />
However, only experimentation will tell you what ABS is good for you. <br />
Recently, I happened to get access to my company's plastics tests labs and performed some MFI tests on ABS from REPRAPSOURCE.<br />
<br />
The results are:<br />
<br />
MFI ABS Blue<br />
<br />
2.6&nbsp;g/10&nbsp;min, 5&nbsp;kg 230&nbsp;°C<br />
<br />
or<br />
<br />
0.45&nbsp;g/10&nbsp;min, 5&nbsp;kg 200&nbsp;°C<br />
<br />
Concerning PLA, I recently measured the following:<br />
<br />
MFI PLA<br />
<br />
16.86&nbsp;g/10&nbsp;min, 5&nbsp;kg 190&nbsp;°C -RED COLOR<br />
<br />
28.12&nbsp;g/10&nbsp;min, 5&nbsp;kg 190&nbsp;°C -WHITE COLOR<br />
<br />
In conclusion if you want to have a filament that is guaranteed to work, then you have to find ABS an PLA at these MFI values.<br />
<br />
<br />
'''All the above info was obtained after along discussions with plastic industry specialists, so you can rely on with certainty.'''<br />
<br />
<br />
Here, you will find some ABS brands and their properties for extrusion ABS, produced by major manufacturers.<br />
* [http://www.matweb.com/search/QuickText.aspx?SearchText=Cycolac Cyolac by SABIC]<br />
* [http://www.matweb.com/search/DataSheet.aspx?MatGUID=3a8c3da52c084ada8b411570b2f7610e Terluran by BASF]<br />
* [http://www.matweb.com/search/datasheet.aspx?matguid=a9e0187378a14447b05333fc520b5b32 Lustran by INEOS]<br><br />
<br />
<br />
'''Making my OWN bioplastic'''<br />
<br />
Yes, it is true... if you run out of PLA in a middle of a print, you can just pause your computer, and make your bioplastic in 20 minutes. Just watch how to [http://www.youtube.com/watch?v=LskPNBvbuqM Make your own bioplastic]. Then, you just use your filament extruder to make your new filament and you're ready to resume printing....(!)<br />
<br />
<br />
'''Making Pcb, turning RepRap to a CNC machine'''<br />
<br />
Self replicating a RepRap consists of making the electronic parts as well. There is some serious progress towards to pcb creating. Also one can turn a RepRap to a CNC machine, since the principles of castesian positioning are the same. <br />
<br />
-[http://reprap.org/wiki/PCB_Milling PCB Milling]<br />
<br />
-[http://reprap.org/wiki/Automated_Circuitry_Making Automated Circuitry Making]<br />
<br />
-[http://reprap.org/wiki/Milling_and_Drilling_Head Milling and Drilling Head]<br />
<br />
='''CHAPTER 7''', ''THINGS TO WATCH OUT''=<br />
<br />
Ok, now you are printing fine, and of course, you are happy.<br />
<br />
Here are some things you should pay attention to, in order not to have bad dreams<br />
<br />
*SPARE PARTS<br />
*MAINTENANCE <br />
*EXPERIMENTING<br />
<br />
<br />
=='''Spare Parts'''==<br />
<br />
RepRap is the only 3D printer that can make spare parts for itself. I suggest you print all parts of your printer, just in case.<br />
Howerver, there are parts that WILL need to be replaced because of a break or fatigue or melting.<br />
<br />
These are (in my point of view)<br />
<br />
* X carriage<br />
* all extruder parts<br />
* bar clamps<br />
* RP pulleys<br />
* X,Y idler in case you have a RP part instead of washer & bearing<br />
* A4988 Pololu stepper driver (in case you have RAMPS)<br />
<br />
=='''Maintenance'''==<br />
<br />
As a machine, RepRap needs oil and care.<br />
<br />
* Wipe with a duster and then with a damp cloth the print surface<br />
* Use duster to every part of machine<br />
* Try to enclose RAMPS or any other controller you have, in a box or something. Electronics are delicate to dust<br />
* Fasten bolts & nuts on monthly basis (if you use the machine almost daily)<br />
* Keep smooth rods clean and lubricated. Lubrication type can be given in IRC. Users with bronze bearings, LM#UUs and round type bearings (608 xx) don't need lubricant.<br />
* Check wirings and x carriage for melting indications (monthly).<br />
<br />
=='''Experimenting'''==<br />
<br />
It's almost impossible to be a RepRapper and not be tempted to try/experiment with new firmware or try a new-modded RP part.<br />
<br />
Before doing anything that you might regret in the future, be sure of:<br />
<br />
# You know what are you doing<br />
# You have extensive backup of your firmware before attempting any change<br />
# You have a list of calibration values (easier as a start for re-calibration after modification)<br />
# You have enough spare parts to build crucial parts of you printer in case they melt/brake. <br />
# Always ask for enough information in #reprap BEFORE attempting anything stupid. Maybe someone has already done it and have some experience to give you.<br />
<br />
My experience on experimenting was that I should have a whole new hotend before attempting to go to PID temperature control. My first attempt ended with 307&nbsp;°C on my hotend... I had to wait some time for a new peek from Makergear, since the old was completely destroyed. Now I have two complete sets just in case...<br />
<br />
== Further reading ==<br />
<br />
* [[PrusaBuildNotesBraino]] is a similar build guide.<br />
* [[SeeMeCNC-H1 Build Notes]] is a similar build guide.<br />
* [[Alternative Build Documentation]] attempts to be a "generic" build guide that lists the known options at each step.<br />
<br />
[[Category:Prusa Mendel| ]]<br />
[[Category:Tutorials]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=End_GCode_routines&diff=153614End GCode routines2015-08-28T04:52:50Z<p>Eltoozero: /* Intro */</p>
<hr />
<div>=== Intro ===<br />
End GCode is appended to the end of a print job to perform useful functions such as cooling the hot-end and bed, "presenting" the completed part, and shutting down the motor/heater power supply (where supported by hardware/firmware).<br />
<br />
==== Home X Axis ====<br />
G28 X0 ; home X axis to get head out of the way.<br />
<br />
==== Cooldown the hot-end and bed ready for next print ====<br />
M104 S120; Set Hot-end to 120C<br />
M140 S40; Set bed to 40C<br />
<br />
==== Shutdown the hot-end and bed completely ==== <br />
M104 S0; Set Hot-end to 0C (off)<br />
M140 S0; Set bed to 0C (off)<br />
<br />
==== Presenting the part ====<br />
G1 X0 Y180 F9000; Feed the bed forward making removal easy.<br />
<br />
==== Stopping the motors ====<br />
Cut the steppers so you can manually move X/Y around to make part removal easier, remember to have a G28 in your [Start GCode Routine] for a good home before the next print.<br />
<br />
M84; Stop the Stepper Motors<br />
<br />
==== Shutdown power supply ====<br />
M80; Power down main power supply<br />
<br />
=== Custom End GCode ===<br />
Here's my End GCode with comments for Marlin 1.0.2:<br />
<br />
M104 S0 ;extruder heater off<br />
M140 S0 ;heated bed heater off (if you have it)<br />
G91 ;relative positioning<br />
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure<br />
G1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more<br />
G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way<br />
G1 Y150 F5000 ;move completed part out<br />
M84 ;steppers off<br />
G90 ;absolute positioning</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=End_GCode_routines&diff=153613End GCode routines2015-08-28T04:50:16Z<p>Eltoozero: Created page with "=== Intro === End GCode is appended to the end of a print job to perform useful functions such as cooling the hot-end and bed, ==== Home X Axis ==== G28 X0 ; home X axis to..."</p>
<hr />
<div>=== Intro ===<br />
End GCode is appended to the end of a print job to perform useful functions such as cooling the hot-end and bed, <br />
<br />
==== Home X Axis ====<br />
G28 X0 ; home X axis to get head out of the way.<br />
<br />
==== Cooldown the hot-end and bed ready for next print ====<br />
M104 S120; Set Hot-end to 120C<br />
M140 S40; Set bed to 40C<br />
<br />
==== Shutdown the hot-end and bed completely ==== <br />
M104 S0; Set Hot-end to 0C (off)<br />
M140 S0; Set bed to 0C (off)<br />
<br />
==== Presenting the part ====<br />
G1 X0 Y180 F9000; Feed the bed forward making removal easy.<br />
<br />
==== Stopping the motors ====<br />
Cut the steppers so you can manually move X/Y around to make part removal easier, remember to have a G28 in your [Start GCode Routine] for a good home before the next print.<br />
<br />
M84; Stop the Stepper Motors<br />
<br />
==== Shutdown power supply ====<br />
M80; Power down main power supply<br />
<br />
=== Custom End GCode ===<br />
Here's my End GCode with comments for Marlin 1.0.2:<br />
<br />
M104 S0 ;extruder heater off<br />
M140 S0 ;heated bed heater off (if you have it)<br />
G91 ;relative positioning<br />
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure<br />
G1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more<br />
G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way<br />
G1 Y150 F5000 ;move completed part out<br />
M84 ;steppers off<br />
G90 ;absolute positioning</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Start_GCode_routines&diff=153612Start GCode routines2015-08-28T04:25:36Z<p>Eltoozero: Created page with "=== Intro === Slicers such as Slic3r and Cura can append user supplied GCode scripts/routines to the beginning of a print job to perform many useful functions. === Z-Probe ==..."</p>
<hr />
<div>=== Intro ===<br />
Slicers such as Slic3r and Cura can append user supplied GCode scripts/routines to the beginning of a print job to perform many useful functions.<br />
<br />
=== Z-Probe ===<br />
If you employ a z-probe of the inductive, optical, or mechanical type this is where you'll need to add your G29 command to command the firmware to perform the bed probing routine (only works immediately after G28).<br />
<br />
==== Z-Probe Example ====<br />
G28; Home all axis<br />
G29; Probe bed before print<br />
<br />
=== Cura 15.06 ===<br />
Cura 15.06 removed the ability to manually add start/end GCode in the GUI, but you can still do it by editing the machine specific .json file for your printer which includes separate lines for start/end gcode concatenated onto a single line with line breaks "\n" between statements.<br />
<br />
Cura 15.06 default start GCode for the prusa_i3.json as of August 2015 (breaks added for readability, in situ it's one-line (but maybe it doesn't have to be?))<br />
<br />
"machine_start_gcode": {<br />
"default": "G21 ;metric values\nG90 ;absolute positioning\nM82 ;set extruder to absolute mode\nM107 ;start with the fan off\nG28 X0 Y0 <br />
;move X/Y to min endstops\nG28 Z0 ;move Z to min endstops\nG1 Z15.0 F9000 ;move the platform down 15mm\nG92 E0 <br />
;zero the extruded length\nG1 F200 E3 ;extrude 3mm of feed stock\nG92 E0 ;zero the extruded length again\nG1 F9000\n<br />
;Put printing message on LCD screen\nM117 Printing..."<br />
<br />
Reformatted to human readable form below by grep replacing \\n for \n:<br />
<br />
G21 ;metric values<br />
G90 ;absolute positioning<br />
M82 ;set extruder to absolute mode<br />
M107 ;start with the fan off<br />
G28 X0 Y0 ;move X/Y to min endstops<br />
G28 Z0 ;move Z to min endstops<br />
G1 Z15.0 F9000 ;move the platform down 15mm<br />
G92 E0 ;zero the extruded length<br />
G1 F200 E3 ;extrude 3mm of feed stock<br />
G92 E0 ;zero the extruded length again<br />
G1 F9000 ; Put printing message on LCD screen<br />
M 117 Printing...<br />
<br />
=== Custom Start GCode ===<br />
Here's my custom start-gcode with comments to perform the following actions (Marlin 1.0.2 Firmware):<br />
* Enable AutoTemp<br />
* Home X/Y/Z Axis<br />
* Probe Bed (requires Z-Probe)<br />
* Attempt Nozzle Wipe (for ooze free startup)<br />
<br />
G21 ;metric values<br />
G90 ;absolute positioning<br />
M82 ;set extruder to absolute mode<br />
M107 ;start with the fan off<br />
M109 S180 B210 F1;activate auto temp min 180 max 210 scaling factor 1 (for PLA)<br />
G28; Home Axis<br />
G29; Z-Probe the bed (requires Z-Probe!)<br />
G1 Z5.0 F9000 ;move the head 5mm up for CYA clearance<br />
G92 E0 ;zero the extruded length<br />
M117 Cleaning...;Put Cleaning message on screen<br />
G1 X100 Y0 F4000 ; move half way along the front edge<br />
G1 Z1 ; move nozzle close to bed<br />
M109 S200 ; heat nozzle to 200 degC and wait until reached<br />
G4 P10000 ; wait 10 seconds for nozzle length to stabilize<br />
G1 E10 ; extrude 10 mm of filament<br />
G1 z15 F12000 E5 ; move 15 mm up, fast, while extruding 5mm<br />
G92 E0 ; reset extruder<br />
M117 Printing...;Put printing message on LCD screen</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=G-code&diff=153611G-code2015-08-28T03:38:58Z<p>Eltoozero: </p>
<hr />
<div>{{Languages}}<br />
<br />
This page tries to describe the flavour of '''G-codes''' that the RepRap firmwares use and how they work. The main target is additive fabrication using [[FFF]] processes. Codes for print head movements follow the [http://www.nist.gov/manuscript-publication-search.cfm?pub_id=823374 NIST RS274NGC G-code standard], so RepRap firmwares are quite usable for CNC milling and similar applications, too. See also on [https://en.wikipedia.org/wiki/G-code Wikipedia's G-code article].<br />
<br />
There are a few different ways to prepare GCode for a printer. One is to use a slicer like [[Slic3r]], [[Skeinforge]] or [[Cura]]. These programs take a CAD model, slice it into layers, and output the GCode required for each layer. Slicers are the easiest way to go from a 3D model to a printed part, but the user sacrifices some flexibility when using them. Another option for GCode generation is to use a lower level library like [[mecode]]. Libraries like mecode give you precise control over the tool path, and thus are useful if you have a complex print that is not suitable for naive slicing. The final option is to just write the GCode yourself. This may be the best choice if you just need to run a few test lines while calibrating your printer.<br />
<br />
As many different firmwares exist and their developers tend to implement new features without discussing strategies or looking what others did before them, a lot of different sub-flavours for the 3D-Printer specific codes developed over the years. But this is the master page for RepRap. Nowhere in here should the same code be used for two different things; there are always more numbers to use... The rule is: add your new code here, then implement it.<br />
<br />
But human nature being what it is, things aren't always done that way, so some multiple uses of the same code exist. The rule is that later appearances by them on this page than the original use of a code are deprecated and should be changed, unless there is a good technical reason (like the general G-Code standard) why a later instance should be prefered. Note that the key date is appearance here, not date of implementation.<br />
<br />
== Introduction ==<br />
<br />
A typical piece of Gcode as sent to a RepRap machine might look like this:<br />
<br />
N3 T0*57<br />
N4 G92 E0*67<br />
N5 G28*22<br />
N6 G1 F1500.0*82<br />
N7 G1 X2.0 Y2.0 F3000.0*85<br />
N8 G1 X3.0 Y3.0*33<br />
<br />
Gcode can also be stored in files on SD cards. A file containing RepRap Gcode usually has the extension '''.g''', '''.gco''' or '''.gcode'''. <br />
Files for BFB/RapMan have the extension '''.bfb'''.<br />
Gcode stored in file or produced by a slicer might look like this:<br />
<br />
G92 E0<br />
G28<br />
G1 F1500<br />
G1 X2.0 Y2.0 F3000<br />
G1 X3.0 Y3.0<br />
<br />
The meaning of all those symbols and numbers (and more) is explained below.<br />
<br />
Slicers will (optionally?) add GCode scripts to the beginning and end of their output file to perform specified actions before and/or after a print such as z-probing the build-area, heating/cooling the bed and hotend, performing ooze free "nozzle wipe" startup routine, switching system power on/off, and even "ejecting" parts. More info on the [[Start GCode routines]] and [[End GCode routines]] pages.<br />
<br />
To find out which specific Gcode(s) are implemented in any given firmware, there are little tables attached to the command descriptions, like this one:<br />
<br />
{{firmware Support | fived={{yes}} | teacup=automatic | sprinter={{no}} | marlin={{partial}} | repetier={{experimental}} | smoothie=depreciated }}<br />
<br />
Here means:<br />
; {{m|yes}}<br />
: The Gcode is fully supported by the firmware.<br />
; {{m|partial}} or {{m|experimental}}<br />
: There is some support for the Gcode. Often it is required to check out the source code branch for the firmware (usually stored in a different branch) or to flip configuration switches on the mainboard.<br />
; automatic<br />
: The firmware handles this Gcode automatically, so there's no need to send the command. An example is power supply on/off Gcode (M80/M81) in the Teacup firmware.<br />
; ???<br />
: It is unknown if the firmware supports this Gcode. You may want to test this yourself before using it in production.<br />
; {{m|no}}<br />
: The firmware does not support this Gcode.<br />
; depreciated<br />
: The firmware depreciated this Gcode. The firmware author(s) should amend the depreciated Gcode on this page with workarounds (if needed) and the last supported firmware version that will accept this Gcode.<br />
<br />
For the technically minded, Gcode line endings are Unix Line Endings ('''\n'''), but will accept Windows Line Endings ('''\r\n'''), so you should not need to worry about converting between the two, but it is best practice to use Unix Line Endings where possible.<br />
<br />
== Fields ==<br />
<br />
A RepRap Gcode is a list of fields that are separated by white spaces or line breaks. A field can be interpreted as a command, parameter, or for any other special purpose. It consists of one letter directly followed by a number, or can be only a stand-alone letter (Flag). The letter gives information about the meaning of the field (see the list below in this section). Numbers can be ''integers'' (128) or ''fractional'' numbers (12.42), depending on context. For example, an X coordinate can take integers ('''X175''') or fractionals ('''X17.62'''), but selecting extruder number 2.76 would make no sense. In this description, the numbers in the fields are represented by '''nnn''' as a placeholder. <br />
<br />
{| class="wikitable"<br />
|-<br />
! Letter<br />
! Meaning<br />
|-<br />
| Gnnn<br />
| Standard GCode command, such as move to a point<br />
|-<br />
| Mnnn<br />
| RepRap-defined command, such as turn on a cooling fan<br />
|-<br />
| Tnnn<br />
| Select tool nnn. In RepRap, tools are extruders<br />
|-<br />
| Snnn<br />
| Command parameter, such as time in seconds; temperatures; voltage to send to a motor<br />
|-<br />
| Pnnn<br />
| Command parameter, such as time in milliseconds; proportional (Kp) in PID Tuning<br />
|-<br />
| Xnnn<br />
| A X coordinate, usually to move to. This can be an Integer or Fractional number.<br />
|-<br />
| Ynnn<br />
| A Y coordinate, usually to move to. This can be an Integer or Fractional number.<br />
|-<br />
| Znnn<br />
| A Z coordinate, usually to move to. This can be an Integer or Fractional number.<br />
|-<br />
| Innn<br />
| Parameter - X-offset in arc move; integral (Ki) in PID Tuning<br />
|-<br />
| Jnnn<br />
| Parameter - Y-offset in arc move<br />
|-<br />
| Dnnn<br />
| Parameter - used for diameter; derivative (Kd) in PID Tuning<br />
|-<br />
| Hnnn<br />
| Parameter - used for heater number in PID Tuning<br />
|-<br />
| Fnnn<br />
| Feedrate in mm per minute. (Speed of print head movement)<br />
|-<br />
| Rnnn<br />
| Parameter - used for temperatures<br />
|-<br />
| Qnnn<br />
| Parameter - not currently used<br />
|-<br />
| Ennn<br />
| Length of extrudate. This is exactly like X, Y and Z, but for the length of filament to extrude. <s>It is common for newer stepper based systems to interpret ...</s> Better: Skeinforge 40 and up interprets this as the absolute length of input filament to consume, rather than the length of the extruded output.<br />
|-<br />
| Nnnn<br />
| Line number. Used to request repeat transmission in the case of communications errors.<br />
|-<br />
| *nnn<br />
| Checksum. Used to check for communications errors.<br />
|-<br />
|}<br />
<br />
== Comments ==<br />
<br />
Gcode comments begin at a semicolon, and end at the end of the line:<br />
<br />
<pre><br />
N3 T0*57 ; This is a comment<br />
N4 G92 E0*67<br />
; So is this<br />
N5 G28*22<br />
</pre><br />
<br />
Comments and white space will be ignored by your RepRap Printer. It's better to strip these out on the host computer before sending the Gcode to your printer, as this saves bandwidth.<br />
<br />
== Special fields ==<br />
<br />
==== N: Line number ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | machinekit={{yes}}| grbl=? }}<br />
<br />
Example: N123<br />
<br />
If present, the line number should be the first field in a line. For G-code stored in files on SD cards the line number is usually omitted.<br />
<br />
If checking is supported, the RepRap firmware expects line numbers to increase by 1 each line, and if that doesn't happen it is flagged as an error. But you can reset the count using M110 (see below).<br />
<br />
Although supported, usage of N in Machinekit is discouraged as it serves no purpose.<br />
<br />
==== *: Checksum ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | grbl=?}}<br />
<br />
Example: *71<br />
<br />
If present, the checksum should be the last field in a line, but before a comment. For G-code stored in files on SD cards the checksum is usually omitted.<br />
<br />
If checking is supported, the RepRap firmware checks the checksum against a locally-computed value and, if they differ, requests a repeat transmission of the line of the given number.<br />
<br />
== Checking ==<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | grbl=? }}<br />
<br />
Example: N123 [...G Code in here...] *71<br />
<br />
The RepRap firmware checks the line number and the checksum.<br />
You can leave both of these out - RepRap will still work, but it won't do checking. You have to have both or neither though.<br />
If only one appears, it produces an error.<br />
<br />
The checksum "cs" for a GCode string "cmd" (including its line number) is computed by exor-ing the bytes in the string up to and not including the * character as follows:<br />
<br />
<pre><br />
int cs = 0;<br />
for(i = 0; cmd[i] != '*' && cmd[i] != NULL; i++)<br />
cs = cs ^ cmd[i];<br />
cs &= 0xff; // Defensive programming...<br />
</pre><br />
<br />
and the value is appended as a decimal integer to the command after the * character.<br />
<br />
== Buffering ==<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} }}<br />
<br />
If buffering is supported, the RepRap firmware stores some commands in a ring buffer internally for execution. This means that there is no (appreciable) delay while a command is acknowledged and the next transmitted. In turn, this means that sequences of line segments can be plotted without a dwell between one and the next. As soon as one of these buffered commands is received it is acknowledged and stored locally. If the local buffer is full, then the acknowledgment is delayed until space for storage in the buffer is available. This is how flow control is achieved.<br />
<br />
Typically, the following moving commands are buffered: G0-G3 and G28-G32. The [[Teacup Firmware]] buffers also some setting commands: G20, G21, G90 and G91. All other G, M or T commands are not buffered. <br />
<br />
When an unbuffered command is received it is stored, but it is not acknowledged to the host until the buffer is exhausted and then the command has been executed. Thus the host will pause at one of these commands until it has been done. Short pauses between these commands and any that might follow them do not affect the performance of the machine.<br />
<br />
== G-commands ==<br />
<br />
==== G0 & G1: Move ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} | makerbot={{yes}} | grbl={{yes}} }}<br />
<br />
* G0 : Rapid linear Move<br />
* G1 : Linear Move<br />
<br />
; Usage<br />
: G0 Xnnn Ynnn Znnn Ennn Fnnn Snnn<br />
: G1 Xnnn Ynnn Znnn Ennn Fnnn Snnn<br />
; Parameters<br />
: ''Not all parameters need to be used, but at least '''one''' has to be used''<br />
: '''Xnnn''' The position to move to on the X axis<br />
: '''Ynnn''' The position to move to on the Y axis<br />
: '''Znnn''' The position to move to on the Z axis<br />
: '''Ennn''' The amount to extrude between the starting point and ending point<br />
: '''Fnnn''' The feedrate per minute of the move between the starting point and ending point (if supplied)<br />
: '''Snnn''' Flag to check if an endstop was hit ''('''S1''' to check, '''S0''' to ignore, '''S2''' see note, default is '''S0''')''<sup>1</sup><br />
; Examples<br />
: G0 X12 ''(move to 12mm on the X axis)''<br />
: G0 F1500 ''(Set the feedrate to 1500mm/minute)''<br />
: G1 X90.6 Y13.8 E22.4 ''(Move to 90.6mm on the X axis and 13.8mm on the Y axis while extruding 22.4mm of material)''<br />
<br />
The RepRap firmware spec treats G0 and G1 as the same command, since it's just as efficient as not doing so.<sup>2</sup><br />
<br />
Most RepRap firmwares do subtle things with feedrates.<br />
<br />
<pre><br />
1. G1 F1500<br />
2. G1 X50 Y25.3 E22.4<br />
</pre><br />
<br />
In the above example, we set the feedrate to 1500mm/minute on line 1, then move to 50mm on the X axis and 25.3mm on the Y axis while extruding 22.4mm of filament between the two points.<br />
<br />
<pre><br />
1. G1 F1500<br />
2. G1 X50 Y25.3 E22.4 F3000<br />
</pre><br />
<br />
However, in the above example, we set a feedrate of 1500 mm/minute on line 1, then do the move described above accelerating to a feedrate of 3000 mm/minute as it does so. The extrusion will accelerate along with the X and Y movement, so everything stays synchronized.<br />
<br />
The RepRap spec treats the feedrate as simply another variable (like X, Y, Z, and E) to be linearly interpolated. This gives complete control over the acceleration and deceleration of the printer head in such a way that ensures that everything moves smoothly together, and the right volume of material is extruded at all points.<sup>3</sup><br />
<br />
To reverse the extruder by a given amount (for example to reduce its internal pressure while it does an in-air movement so that it doesn't dribble) simply use G0 or G1 to send an E value that is less than the currently extruded length.<br />
<br />
=====Notes=====<br />
<sup>1</sup>Some firmwares allow for the RepRap to enable or disable the "sensing" of endstops during a move. Please check with whatever firmware you are using to see if they support the S parameter in this way, as damage may occur if you assume incorrectly. In the dc42 fork of RepRapFirmware, using the S1 or S2 parameter on a delta printer causes the XYZ parameters to refer to the individual tower motor positions instead of the head position, and to enable endstop detection as well if the parameter is S1.<br />
<br />
<sup>2</sup>In the RS274NGC Spec, G0 is ''Rapid Move'', which was used to move between the current point in space and the new point as quickly and efficiently as possible, and G1 is ''Controlled Move'', which was used to move between the current point in space and the new point as precise as possible.<br />
<br />
<sup>3</sup>Some firmwares may not support setting the feedrate inline with a move.<br />
<br />
<sup>4</sup>zpl and dc42 forks of RepRapFirmware implement an additional 'R1' parameter to tell the machine to go back to the coordinates a print was originally paused at.<br />
<br />
Some older machines, CNC or otherwise, used to move faster if they did not move in a straight line. This is also true for some non-Cartesian printers, like delta or polar printers, which move easier and faster in a curve.<br />
<br />
==== G2 & G3: Controlled Arc Move ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}}<sup>1</sup> | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{yes}} | grbl={{yes}} }}<br />
<br />
; Usage<br />
: G2 Xnnn Ynnn Innn Jnnn Ennn Fnnn ''(Clockwise Arc)''<br />
: G3 Xnnn Ynnn Innn Jnnn Ennn Fnnn ''(Counter-Clockwise Arc)''<br />
; Parameters<br />
: '''Xnnn''' The position to move to on the X axis<br />
: '''Ynnn''' The position to move to on the Y axis<br />
: '''Innn''' The point in X space from the current X position to maintain a constant distance from<br />
: '''Jnnn''' The point in Y space from the current Y position to maintain a constant distance from<br />
: '''Ennn''' The amount to extrude between the starting point and ending point<br />
: '''Fnnn''' The feedrate per minute of the move between the starting point and ending point (if supplied)<br />
; Examples<br />
: G2 X90.6 Y13.8 I5 J10 E22.4 ''(Move in a Clockwise arc from the current point to point (X=90.6,Y=13.8), with a center point at (X=current_X+5, Y=current_Y+10), extruding 22.4mm of material between starting and stopping)''<br />
: G3 X90.6 Y13.8 I5 J10 E22.4 ''(Move in a Counter-Clockwise arc from the current point to point (X=90.6,Y=13.8), with a center point at (X=current_X+5, Y=current_Y+10), extruding 22.4mm of material between starting and stopping)''<br />
<br />
===== Notes =====<br />
<sup>1</sup>In Marlin Firmware not implemented for '''DELTA''' and '''SCARA''' printers.<br />
<br />
==== G4: Dwell ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} | makerbot={{yes}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' Time to wait, in milliseconds<br />
: '''Snnn''' Time to wait, in seconds (Only on Marlin and Smoothie)<br />
; Example<br />
: G4 P200<br />
<br />
In this case sit still doing nothing for 200 milliseconds. During delays the state of the machine (for example the temperatures of its extruders) will still be preserved and controlled.<br />
<br />
On Marlin and Smoothie, the "S" parameter will wait for seconds, while the "P" parameter will wait for milliseconds. "G4 S2" and "G4 P2000" are equivalent.<br />
<br />
==== G10: Tool Offset ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Example: G10 P3 X17.8 Y-19.3 Z0.0 R140 S205<br />
<br />
This sets the offset for tool (or in older implementations extrude head) 3 (from the P3) to the X and Y values specified. You can put a non-zero Z value in as well, but this is usually a bad idea unless the tools are loaded and unloaded by some sort of tool changer. When all the tools are in the machine at once they should all be set to the same Z height.<br />
<br />
Remember that any parameter that you don't specify will automatically be set to the last value for that parameter. That usually means that you want explicitly to set Z0.0. <br />
<br />
The R value is the standby temperature in <sup>o</sup>C that will be used for the tool, and the S value is its operating temperature. If you don't want the tool to be at a different temperature when not in use, set both values the same. See the T code (select tool) below. In tools with multiple heaters the temperatures for them all are specified thus: R100.0:90.0:20.0 S185.0:200.0:150.0 .<br />
<br />
The [http://www.nist.gov/customcf/get_pdf.cfm?pub_id=823374 NIST G-code standard] mentions an additional L parameter, which is ignored.<br />
<br />
This command is [[Talk:G-code#M104 .26 M109 Deprecation, G10 Introduction | subject to discussion]].<br />
<br />
Note that Marlin and Smoothie use G10/G11 for executing a retraction/unretraction move. The RepRapPro version of Marlin supports G10 for tool offset.<br />
<br />
Duet-zpl allows tool heaters to be switched off if the absolute negative temperature (-273.15) is passed as active and standby temperature. In this case the current active and standby temperatures are not affected.<br />
<br />
<pre><br />
G10 P1 R-273.15 S-273.15<br />
</pre><br />
<br />
==== G10: Retract ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}}: 0.92 | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' retract length (S1 = long retract, S0 = short retract = default) (Repetier only)<br />
; Example<br />
: G10<br />
<br />
Retracts filament according to settings of M207 (Marlin) or accoridng to the S value (Repetier).<br />
<br />
==== G11: Unretract ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}}: 0.92 | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' retract length (S1 = long retract, S0 = short retract = default) (Repetier only)<br />
; Example<br />
: G11<br />
<br />
Unretracts/recovers filament according to settings of M208 (Marlin) or accoridng to the S value (Repetier).<br />
<br />
==== G17..19: Plane Selection (CNC specific) ====<br />
{{firmware Support | grbl={{yes}} | machinekit={{yes}} }}<br />
These codes set the current plane as follows:<br />
* G17 : XY (default) <br />
* G18 : ZX<br />
* G19 : YZ<br />
<br />
==== G20: Set Units to Inches ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{no}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} | grbl={{yes}} }}<br />
<br />
Example: G20<br />
<br />
Units from now on are in inches.<br />
<br />
==== G21: Set Units to Millimeters ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{no}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} | grbl={{yes}} }}<br />
<br />
Example: G21<br />
<br />
Units from now on are in millimeters. (This is the RepRap default.)<br />
<br />
==== G22 & G23: Firmware controlled Retract/Precharge ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
; Usage<br />
: G22 ; Retract<br />
: G23 ; Unretract/Precharge<br />
<br />
Relying on machine's firmware to execute extrusion retract/precharge move, instead of having slicer generating to E axis G1 movement. The retract/precharge length, velocity is handled by the machine firmware.<br />
<br />
==== G28: Move to Origin (Home) ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} | makerbot={{yes}} |grbl={{yes}} }}<br />
<br />
; Parameters<br />
: ''This command can be used without any additional parameters.''<br />
: '''X''' Flag to go back to the X axis origin<br />
: '''Y''' Flag to go back to the Y axis origin<br />
: '''Z''' Flag to go back to the Z axis origin<br />
; Examples<br />
: G28 ''(Go to origin on all axes)''<br />
: G28 X Z ''(Go to origin only on the X and Z axis)''<br />
<br />
When the RepRap firmware receives this command, it moves all (or the supplied) axis's back to the zero endstops as quickly as it can, then backs off by a millimeter and slowly moves back to the zero endstop activation points to increase position accuracy. This process is also known as "''Homing''".<br />
<br />
If you add coordinates, these coordinates are ignored. For example, <code>G28&nbsp;Z0.00</code> results in the same behaviour as <code>G28&nbsp;Z</code>.<br />
<br />
When Duet-dc42 firmware is used to control a delta printer, any G28 command will home all three towers, regardless of any XYZ letters.<br />
<br />
==== G29: Detailed Z-Probe ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{no}}, see G32 | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Example: G29 <br />
<br />
Probes the bed at 3 or more points. The printer must be homed with G28 before G29.<br />
<br />
==== G29.1: Set Z probe head offset ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Example: G29.1 X30 Y20 Z0.5 <br />
<br />
Set the offset of the Z probe head. The offset will be subtracted from all probe moves.<br />
<br />
==== G29.2: Set Z probe head offset calculated from toolhead position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Example: G29.2 Z0.0 <br />
<br />
Set the offset of the Z probe head. The offset will be subtracted from all probe moves. The calculated value is derived from the distance of the toolhead from the current axis zero point.<br />
<br />
The user would typically place the toolhead at the zero point of the axis and issue the G29.2 command.<br />
<br />
==== G30: Single Z-Probe ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
In its simplest form probes bed at current XY location. <br />
<br />
Some implementations allow more general behaviour: if a Pn field is specified the probed X, Y, and Z values are saved as point n on the bed for calculating the offset plane. Generally n is 0, 1, or 2. If X, or Y, or Z values are specified (e.g. G30 P1 X20 Y50 Z0.3) then those values are used instead of the machine's current coordinates. A silly Z value (less than -9999.0) causes the machine to probe at the current point to get Z, rather than using the given value. If an S field is specified (e.g. G30 P1 Z0.3 S) the bed plane is computed for compensation and stored. The combination of these options allows for the machine to be moved to points using G1 commands, and then probe the bed, or for the user to position the nozzle interactively and use those coordinates. The user can also record those values and place them in a setup GCode file for automatic execution.<br />
<br />
The dc42 variant of RepRapFirmware uses the value of the S parameter to specify what computation to perform. If the value is -1 then the Z offsets of all the points probed are printed, but no calibration is done. If the value is zero or not present, then this specified that the number of factors to be calibrated is the same as the number of points probed. Otherwise, the value indicates the number of factors to be calibrated, which must be no greater than the number of points probed. Currently (as of version 1.04d), the number of factors may be 3, 4 or 5 when doing auto bed compensation on a Cartesian or CoreXY printer, and 3, 4, 6 or 7 when doing auto calibration of a Delta printer.<br />
<br />
RepRapFirmware-dc42 from version 1.09e also supports an optional H parameter. This is a height correction to be added to the trigger height set by the G31 Z parameter. It allows for the Z probe having a trigger height that varies with XY position.<br />
<br />
==== G31: Report Current Probe status ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
When used on its own this reports whether the Z probe is triggered, or gives the Z probe value in some units if the probe generates height values. If combined with a Z and P field (example: G31 P312 Z0.7) this will set the Z height to 0.7mm when the Z-probe value reaches 312 when a G28 Z0 (zero Z axis) command is sent. The machine will then move a further -0.7mm in Z to place itself at Z = 0. This allows non-contact measuring probes to approach but not touch the bed, and for the gap left to be allowed for. If the probe is a touch probe and generates a simple 0/1 off/on signal, then G31 Z0.7 will tell the RepRap machine that it is at a height of 0.7mm when the probe is triggered.<br />
<br />
In Duet-dc42 firmware, separate G31 parameters may be defined for probe types 0, 1/2, and 3 (probe types 1 and 2 share the same set of parameters). To specify which probe you are setting parameters for, send a M558 command to select the probe type before sending the G31 command.<br />
<br />
Duet-dc42 firmware supports additional parameters S (bed temperature in degC at which the specified Z parameter is correct, default is current bed temperature) and C (temperature coefficient of Z parameter in mm/degC, default zero). This is useful for ultrasonic and other probes that are affected by temperature.<br />
<br />
Duet-dc42 firmware versions 1.00b onwards also allow the X and Y offsets of the Z probe relative to the print head (i.e. the position when the empty tool is selected) to be specified, by adding parameters X and Y. This allows you to calculate your M557 probe coordinates based on the geometry of the bed, without having to correct them for Z probe X and Y offset. It also provides more accurate bed compensation.<br />
<br />
==== G32: Probe Z and calculate Z plane ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}}: See G29 | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Probes the bed at 3 or more pre-defined points (see [[G-code#M557:_Set_Z_probe_point|M557]]) and updates transformation matrix for bed leveling compensation. Later versions of RepRapFirmware execute macro file bed.g if present instead of using the [[G-code#M557:_Set_Z_probe_point|M557]] coordinates.<br />
<br />
==== G31: Dock Z Probe sled ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== G32: Undock Z Probe sled ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== G38.x Straight Probe (CNC specific) ====<br />
===== G38.2 probe toward workpiece, stop on contact, signal error if failure =====<br />
{{firmware Support | grbl={{yes}} }}<br />
===== G38.3 probe toward workpiece, stop on contact =====<br />
{{firmware Support | grbl={{yes}} }}<br />
===== G38.4 probe away from workpiece, stop on loss of contact, signal error if failure =====<br />
{{firmware Support | grbl={{yes}} }}<br />
===== G38.5 probe away from workpiece, stop on loss of contact =====<br />
{{firmware Support | grbl={{yes}} }}<br />
<br />
==== G40: Compensation Off (CNC specific) ====<br />
{{firmware Support | grbl={{yes}} | machinekit={{yes}} }}<br />
<br />
G40 turn cutter compensation off. If tool compensation was on the next move must be a linear move and longer than the tool diameter. It is OK to turn compensation off when it is already off.<br />
<br />
==== G54..59: Coordinate System Select (CNC specific) ====<br />
{{firmware Support | grbl={{yes}} | machinekit={{yes}} }}<br />
<br />
See [http://linuxcnc.org/docs/html/gcode/gcode.html#sec:G54-G59_3 linuxcnc.org] for more help<br />
<br />
==== G80: Cancel Canned Cycle (CNC specific) ====<br />
{{firmware Support | grbl={{yes}} }}<br />
<br />
It cancel canned cycle modal motion. <br />
G80 is part of modal group 1, so programming any other G code from modal group 1 will also cancel the canned cycle.<br />
<br />
==== G90: Set to Absolute Positioning ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} | grbl={{yes}} }}<br />
<br />
Example: G90<br />
<br />
All coordinates from now on are absolute relative to the origin of the machine. (This is the RepRap default.)<br />
<br />
==== G91: Set to Relative Positioning ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} | grbl={{yes}} }}<br />
<br />
Example: G91<br />
<br />
All coordinates from now on are relative to the last position.<br />
<br />
===== G91.x: Reset Coordinate System Offsets (CNC specific) =====<br />
{{firmware Support | grbl={{yes}} }}<br />
<br />
* G91.1 - reset axis offsets to zero and set parameters 5211 - 5219 to zero. (X Y Z A B C U V W)<br />
* G91.2 - reset axis offsets to zero.<br />
<br />
==== G92: Set Position ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} | makerbot={{yes}} | grbl={{yes}} }}<br />
<br />
; Parameters<br />
: ''This command can be used without any additional parameters.''<br />
: '''Xnnn''' new X axis position<br />
: '''Ynnn''' new Y axis position<br />
: '''Znnn''' new Z axis position<br />
: '''Ennn''' new extruder position<br />
; Example<br />
: G92 X10 E90<br />
<br />
Allows programming of absolute zero point, by reseting the current position to the values specified. This would set the machine's X coordinate to 10, and the extrude coordinate to 90. No physical motion will occur.<br />
<br />
A G92 without coordinates will reset all axes to zero.<br />
<br />
==== G93: Feed Rate Mode (Inverse Time Mode) (CNC specific) ====<br />
{{firmware Support | grbl={{yes}} }}<br />
G93 is Inverse Time Mode. In inverse time feed rate mode, an F word means the move should be completed in (one divided by the F number) minutes. <br />
For example, if the F number is 2.0, the move should be completed in half a minute.<br />
<br />
When the inverse time feed rate mode is active, an F word must appear on every line which has a G1, G2, or G3 motion, and an F word on a line that does not have G1, G2, or G3 is ignored. Being in inverse time feed rate mode does not affect G0 (rapid move) motions.<br />
<br />
==== G94: Feed Rate Mode (Units per Minute) (CNC specific) ====<br />
{{firmware Support | grbl={{yes}} }}<br />
G94 is Units per Minute Mode. In units per minute feed mode, an F word is interpreted to mean the controlled point should move at a certain number of inches per minute, millimeters per minute, or degrees per minute, depending upon what length units are being used and which axis or axes are moving.<br />
<br />
==== G100: Calibrate floor or rod radius ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.92 | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''X''' Flag to set floor for X axis<br />
: '''Y''' Flag to set floor for Y axis<br />
: '''Z''' Flag to set floor for Z axis<br />
: '''Rnnn''' Radius to add<br />
; Examles<br />
: G100 X Y Z ''(set floor for argument passed in. Number ignored and may be absent.)''<br />
: G100 R5 ''(Add 5 to radius. Adjust to be above floor if necessary)''<br />
: G100 R0 ''(Set radius based on current z measurement. Moves all axes to zero)''<br />
<br />
==== G130: Set digital potentiometer value ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: G130 X10 Y18 Z15 A20 B12<br />
<br />
Set the digital potentiometer value for the given axes. This is used to configure the current applied to each stepper axis. The value is specified as a value from 0-127; the mapping from current to potentimeter value is machine specific.<br />
<br />
==== G131: Remove offset ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.91 | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== G132: Calibrate endstop offsets ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.91 | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== G133: Measure steps to top ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.91 | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== G161: Home axes to minimum ====<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
; Parameters<br />
: '''X''' Flag to home the X axis to its minimum position<br />
: '''Y''' Flag to home the Y axis to its minimum position<br />
: '''Z''' Flag to home the Z axis to its minimum position<br />
: '''Fnnn''' Desired feedrate for this command<br />
; Example<br />
: G161 X Y Z F1800<br />
<br />
Instruct the machine to home the specified axes to their minimum position. Similar to G28, which decides on its own in which direction to search endstops.<br />
<br />
==== G162: Home axes to maximum ====<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
; Parameters<br />
: '''X''' Flag to home the X axis to its maximum position<br />
: '''Y''' Flag to home the Y axis to its maximum position<br />
: '''Z''' Flag to home the Z axis to its maximum position<br />
: '''Fnnn''' Desired feedrate for this command<br />
; Example<br />
: G162 X Y Z F1800<br />
<br />
Instruct the machine to home the specified axes to their maximum position.<br />
<br />
== M-commands ==<br />
<br />
==== M0: Stop or Unconditional stop ====<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} | grbl={{yes}} }}<br />
<br />
; Parameters<br />
: ''This command can be used without any additional parameters.''<br />
: '''Pnnn''' Time to wait, in milliseconds<br />
: '''Snnn''' Time to wait, in seconds (Only on Marlin)<br />
; Example<br />
: M0<br />
<br />
The RepRap machine finishes any moves left in its buffer, then shuts down. All motors and heaters are turned off. It can be started again by pressing the reset button on the master microcontroller. See also M1, M112.<br />
<br />
The Marlin Firmware does wait for user to press a button on the LCD, or a specific time.<br />
"M0 P2000" waits 2000 milliseconds<br />
"M0 S2" waits 2 seconds<br />
<br />
==== M1: Sleep or Conditional stop ====<br />
{{firmware Support | fived={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
; Example<br />
: M1<br />
<br />
The RepRap machine finishes any moves left in its buffer, then shuts down. All motors and heaters are turned off. It can still be sent G and M codes, the first of which will wake it up again. See also M0, M112.<br />
<br />
The Marlin Firmware does the same as M0.<br />
<br />
==== M2: Program End ====<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M2<br />
<br />
Teacup firmware does the same as M84.<br />
<br />
==== M3: Spindle On, Clockwise (CNC specific)====<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M3 S4000<br />
<br />
The spindle is turned on with a speed of 4000 RPM.<br />
<br />
Teacup firmware turn extruder on (same as M101).<br />
<br />
==== M4: Spindle On, Counter-Clockwise (CNC specific) ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M4 S4000<br />
<br />
The spindle is turned on with a speed of 4000 RPM.<br />
<br />
==== M5: Spindle Off (CNC specific) ====<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M5<br />
<br />
The spindle is turned off.<br />
<br />
Teacup firmware turn extruder off (same as M103).<br />
<br />
==== M6: Tool change ====<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M6<br />
<br />
==== M7: Mist Coolant On (CNC specific) ====<br />
{{firmware Support | fived={{no}} | teacup={{yes|use M106}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M7<br />
<br />
Mist coolant is turned on (if available)<br />
<br />
Teacup firmware turn on the fan, and set fan speed (same as M106).<br />
<br />
==== M8: Flood Coolant On (CNC specific) ====<br />
{{firmware Support | fived={{no}} | teacup={{yes|use M106}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M8<br />
<br />
Flood coolant is turned on (if available)<br />
<br />
==== M9: Coolant Off (CNC specific) ====<br />
{{firmware Support | fived={{no}} | teacup={{yes|use M106}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M9<br />
<br />
All coolant systems are turned off.<br />
<br />
==== M10: Vacuum On (CNC specific) ====<br />
{{firmware Support | fived={{no}} | teacup={{yes|use M106}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M10<br />
<br />
Dust collection vacuum system turned on.<br />
<br />
==== M11: Vacuum Off (CNC specific) ====<br />
{{firmware Support | fived={{no}} | teacup={{yes|use M106}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M11<br />
<br />
Dust collection vacuum system turned off.<br />
<br />
==== M17: Enable/Power all stepper motors====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes|1=(automatic)}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M17<br />
<br />
==== M18: Disable all stepper motors====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes|use M2}} | sprinter={{no}} | marlin={{yes|call M84}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M18<br />
<br />
Disables stepper motors and allows axis to move 'freely.'<br />
<br />
RepRapFirmware allows stepper motors to be disabled selectively. For example, M18 X E0:2 will disable the X, extruder 0 and extruder 2 motors.<br />
<br />
==== M20: List SD card ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M20<br />
<br />
All files in the root folder of the SD card are listed to the serial port. One name per line, like:<br />
<br />
ok<br />
SQUARE.G<br />
SQCOM.G<br />
ZCARRI~1.GCO<br />
ZCARRI~2.GCO<br />
ZADJUS~1.GCO<br />
CARRIA~1.GCO<br />
<br />
Note that some firmwares list file names in upper case, but - when sent to the M23 command (below) they must be in lower case. Teacup has no such trouble and accepts both.<br />
<br />
Duet-dc42 firmware returns the (long) filenames in the correct case. If the S2 parameter is present, the file list is returned in JSON format as a single array called "files", and the directory is returned in variable "dir". The optional P parameter specifies the directory to list, defaulting to the /gcodes directory in RepRapFirmware - for other firmware, this is whatever directory printable gcode files are normally stored in.<br />
<br />
==== M21: Initialize SD card ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M21<br />
<br />
The SD card is initialized. If an SD card is loaded when the machine is switched on, this will happen by default. SD card must be initialized for the other SD functions to work.<br />
<br />
==== M22: Release SD card ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M22<br />
<br />
SD card is released, so further (accidental) attempts to read from it are guaranteed to fail. Helpful, but not mandatory before removing the card physically.<br />
<br />
==== M23: Select SD file ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M23 filename.gco<br />
<br />
The file specified as filename.gco (8.3 naming convention is supported) is selected ready for printing.<br />
<br />
Duet-dc42 firmware supports long filenames as well as 8.3 format.<br />
<br />
==== M24: Start/resume SD print ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M24<br />
<br />
The machine prints from the file selected with the M23 command. If the print was previously paused with M25, printing is resumed from that point. To restart a file from the beginning, use M23 to reset it, then M24.<br />
<br />
When this command is used to resume a print that was paused, the dc42 and zpl forks of RepRapFirmware run macro file resume.g if it exists prior to resuming the print.<br />
<br />
==== M25: Pause SD print ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M25<br />
<br />
The machine pauses printing at the current position within the file. To resume printing, use M24.<br />
<br />
Prior to pausing, the dc42 and zpl forks of RepRapFirmware run macro file pause.g if it exists. This allows the head to be moved away from the print, filament to be retracted, etc.<br />
<br />
==== M26: Set SD position ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie=aborts | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M26<br />
<br />
Set SD position in bytes (M26 S12345).<br />
<br />
==== M27: Report SD print status ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M27<br />
<br />
Report SD print status.<br />
<br />
==== M28: Begin write to SD card ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M28 filename.gco<br />
<br />
File specified by filename.gco is created (or overwritten if it exists) on the SD card and all subsequent commands sent to the machine are written to that file.<br />
<br />
==== M29: Stop writing to SD card ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M29 filename.gco<br />
<br />
File opened by M28 command is closed, and all subsequent commands sent to the machine are executed as normal.<br />
<br />
==== M30: Delete a file on the SD card ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} || marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} | grbl={{yes}} }}<br />
<br />
Example: M30 filename.gco <br/><br />
filename.gco is deleted.<br />
<br />
===== M30 in grbl =====<br />
M30 exchange pallet shuttles and end the program. Pressing cycle start will start the program at the beginning of the file.<br />
<br />
==== M31: Output time since last M109 or SD card start to serial ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M31<br />
<br />
The response looks like:<br />
<br />
echo:54 min, 38 sec<br />
<br />
==== M32: Select file and start SD print ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
(Can be used when printing from SD card)<br />
<br />
Example: M32 filename.gco<br />
<br />
tba available in marlin(14/6/2014)<br />
<br />
==== M33: Get the long name for an SD card file or folder ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Get a long filename on the SD card from a short filename. Proposed by Marlin firmware, May 2015.<br />
<br />
==== M34: Set SD file sorting options ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Enable and disable SD card file-sorting, and/or set the folder sorting order. Proposed by Marlin firmware, May 2015.<br />
<br />
==== M36: Return file information ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M36 filename.gco<br />
<br />
Returns information for the specified SD card file in JSON format. A sample response is:<br />
<br />
{"err":0,"size":457574,"height":4.00,"layerHeight":0.25,"filament":[6556.3],"generatedBy":"Slic3r 1.1.7 on 2014-11-09 at 17:11:32"}<br />
<br />
The "err" field is zero if successful, nonzero if the file was not found or an error occurred while processing it. The "size" field should always be present if the operation was successful. The presence or absence of other fields depends on whether the corresponding values could be found by reading the file. The "filament" field is an array of the filament lengths required from each spool. The size is in bytes, all other values are in mm. The fields may appear in any order, and additional fields may be present.<br />
<br />
If the file name parameter is not supplied and a file on the SD card is currently being printed, then information for that file is returned including additional field "fileName". This feature is used by the web interface any by PanelDue, so that if a connection is made when a file is already being printed, the name and other information about that file can be shown.<br />
<br />
==== M37: Simulation mode ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Used to switch between printing mode and simulation mode. Simulation mode allows the electronics to compute an accurate printing time, taking into account the maximum speeds, accelerations etc. that are configured.<br />
<br />
M37 S1 enters simulation mode. All G and M codes will not be acted on, but the time they take to execute will be calculated.<br />
<br />
M37 S0 leaves simulation mode.<br />
<br />
M37 with no S parameter prints the time taken by the simulation, from the time it was first entered using M37 S1, up to the current point (if simulation mode is still active) or the point that the simulation was ended (if simulation mode is no longer active).<br />
<br />
==== M40: Eject ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
If your RepRap machine can eject the parts it has built off the bed, this command executes the eject cycle. This usually involves cooling the bed and then performing a sequence of movements that remove the printed parts from it. The X, Y and Z position of the machine at the end of this cycle are undefined (though they can be found out using the M114 command, q.v.).<br />
<br />
See also M240 and M241 below.<br />
<br />
==== M41: Loop ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M41<br />
<br />
If the RepRap machine was building a file from its own memory such as a local SD card (as opposed to a file being transmitted to it from a host computer) this goes back to the beginning of the file and runs it again. So, for example, if your RepRap is capable of ejecting parts from its build bed then you can set it printing in a loop and it will run and run. Use with caution - the only things that will stop it are:<br />
<br />
# When you press the reset button,<br />
# When the build material runs out (if your RepRap is set up to detect this), and<br />
# When there's an error (such as a heater failure).<br />
<br />
==== M42: Switch I/O pin ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M42 P7 S255<br />
<br />
M42 switches a general purpose I/O pin. Use M42 Px Sy to set pin x to value y, when omitting Px the LEDPIN will be used.<br />
<br />
In Teacup, general purpose devices are handled like a heater, see [[#M104: Set Extruder Temperature | M104]].<br />
<br />
In RepRapFirmware only 1 and 0 are supported for the S field. If the S field is omitted then the state of the pin is read and reported.<br />
<br />
==== M43: Stand by on material exhausted ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M43<br />
<br />
If your RepRap can detect when its material runs out, this decides the behaviour when that happens. The X and Y axes are zeroed (but not Z), and then the machine shuts all motors and heaters off except the heated bed, the temperature of which is maintained. The machine will still respond to G and M code commands in this state.<br />
<br />
==== M48: Measure Z-Probe repeatability ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' number of points <br />
: '''Xnnn''' position on the X axis <br />
: '''Ynnn''' position on the Y axis <br />
: '''Vnnn''' verbosity<br />
: '''E''' engage<br />
: '''Lnnn''' legs of travel<br />
<br />
As with G29, the E flag causes the probe to stow after each probe.<br />
<br />
==== M70: Display message ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}}: See M117 | repetier={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M70 P200 Message <br />
<br />
Instruct the machine to display a message on it's interface LCD. P is the time to display message for.<br />
<br />
==== M72: Play a tone or song ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}}: See M300 | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M72 P2 <br />
<br />
Instruct the machine to play a preset song. Acceptable song IDs are machine specific. P is the ID of the song to play.<br />
<br />
==== M73: Set build percentage ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M73 P50 <br />
<br />
Instruct the machine that the build has progressed to the specified percentage. The machine is expected to display this on it's interface board. If the percentage is exactly 0, then a Build Start Notification is sent. If the percentage is exactly 100, then a Build End notification is sent.<br />
<br />
==== M80: ATX Power On ====<br />
<br />
{{firmware Support | fived={{no}} | teacup=automatic | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M80<br />
<br />
Turns on the ATX power supply from standby mode to fully operational mode. No-op on electronics without standby mode.<br />
<br />
'''Note''': some firmwares, like [[Teacup Firmware | Teacup]], handle power on/off automatically, so this is redundant there. Also, see [http://forums.reprap.org/read.php?219,132664 RAMPS wiring for ATX on/off]<br />
<br />
==== M81: ATX Power Off ====<br />
<br />
{{firmware Support | fived={{no}} | teacup=automatic | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M81<br />
<br />
Turns off the ATX power supply. Counterpart to M80.<br />
<br />
==== M82: Set extruder to absolute mode ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M82<br />
<br />
makes the extruder interpret extrusion as absolute positions.<br />
<br />
This is the default in repetier.<br />
<br />
==== M83: Set extruder to relative mode ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M83<br />
<br />
makes the extruder interpret extrusion values as relative positions.<br />
<br />
==== M84: Stop idle hold ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M84<br />
<br />
Stop the idle hold on all axis and extruder. In some cases the idle hold causes annoying noises, which can be stopped by disabling the hold. Be aware that by disabling idle hold during printing, you will get quality issues. This is recommended only in between or after printjobs.<br />
<br />
On Marlin, Repetier and Duet-zpl, M84 can also be used to configure or disable the idle timeout. For example, "M84 S10" will idle the stepper motors after 10 seconds of inactivity. "M84 S0" will disable idle timeout; steppers will remain powered up regardless of activity.<br />
<br />
==== M85: Set inactivity shutdown timer ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M85 S30<br />
<br />
Set inactivity shutdown timer with parameter S<seconds>. "M85 S0" will disable the inactivity shutdown time (default)<br />
<br />
==== M92: Set axis_steps_per_unit ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M92 X<newsteps> Sprinter and Marlin<br />
<br />
Allows programming of steps per unit of axis till the electronics are reset for the specified axis. Very useful for calibration.<br />
<br />
==== M93: Send axis_steps_per_unit ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin ={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== M98: Call Macro/Subprogram ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M98 Pmymacro.g<br />
<br />
Runs the macro in the file mymacro.g. In conventional G Codes for CNC machines the P parameter normally refers to a line number in the program itself (P2000 would run the Macro starting at line O2000, say). For RepRap, which almost always has some sort of mass storage device inbuilt, it simply refers to the name of a GCode file that is executed by the G98 call. That GCode file does not need to end with an M99 (return) as the end-of-file automatically causes a return. Macro calls cannot usually be nested or be recursive; i.e. you can't call a macro from a macro (though some implementations may allow this).<br />
<br />
RepRapFirmware-dc42 and RepRapFirmware-zpl support nested macros and allow the filename to include a path. The default folder is /sys.<br />
<br />
==== M99: Return from Macro/Subprogram ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M99<br />
<br />
Returns from an M98 call.<br />
<br />
==== M98: Get axis_hysteresis_mm ==== <br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
'''Deprecated - clashes with the G Code standard M98 above''' <br />
<br />
Example: M98 <br />
<br />
Report the current hysteresis values in mm for all of the axis.<br />
<br />
Proposed for Marlin<br />
<br />
==== M99: Set axis_hysteresis_mm ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
'''Deprecated - clashes with the G Code standard M99 above'''<br />
<br />
Example: M99 X<mm> Y<mm> Z<mm> E<mm> <br />
<br />
Allows programming of axis hysteresis. Mechanical pulleys, gears and threads can have hysteresis when they change direction. That is, a certain number of steps occur before movement occurs. You can measure how many mm are lost to hysteresis and set their values with this command. Every time an axis changes direction, these extra mm will be added to compensate for the hysteresis.<br />
<br />
Proposed for Marlin<br />
<br />
==== M101: Turn extruder 1 on (Forward), Undo Retraction ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
in Teacup firmware: <br />
If a DC extruder is present, turn that on. Else, undo filament retraction, which means, make the extruder ready for extrusion. Complement to M103.<br />
<br />
in BFB/RapMan firmware:<br />
Turn extruder on (forward/filament in). <br />
<br />
in other firmwares:<br />
Deprecated. Regarding filament retraction, see M227, M228, M229.<br />
<br />
==== M102: Turn extruder 1 on (Reverse) ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
In BFB/RapMan firmware:<br />
Turn extruder on Reverse (Still to add) <br />
<br />
In other firmwares:<br />
Deprecated.<br />
<br />
==== M103: Turn all extruders off, Extruder Retraction ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
In Teacup firmware: <br />
If a DC extruder is present, turn that off. Else, retract the filament in the hope to prevent nozzle drooling. Complement to M101.<br />
<br />
In BFB/RapMan firmware: <br />
Turn extruder off. <br />
<br />
In other firmwares: <br />
Deprecated. Regarding extruder retraction, see M227, M228, M229.<br />
<br />
==== M104: Set Extruder Temperature ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} | makerbot={{yes}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' Target temperature<br />
; Example<br />
: M104 S190<br />
<br />
Set the temperature of the current extruder to 190<sup>o</sup>C and return control to the host immediately (''i.e.'' before that temperature has been reached by the extruder). Duet-dc42 and other firmware also supports the optional T parameter (as generated by slic3r) to specify which tool the command applies to. See also M109.<br />
<br />
This is deprecated because temperatures should be set using the G10 and T commands (q.v.).<br />
<br />
Deprecation is [[Talk:G-code#M104 .26 M109 Deprecation, G10 Introduction | subject to discussion]]. --[[User:Traumflug|Traumflug]] 11:33, 19 July 2012 (UTC)<br />
<br />
===== M104 in Teacup Firmware =====<br />
<br />
In Teacup Firmware, M104 can be additionally used to handle all devices using a temperature sensor. It supports the additional P parameter, which is a zero-based index into the list of sensors in config.h. For devices without a temp sensor, see [[#M106: Fan On | M106]].<br />
<br />
Example: M104 P1 S100<br />
<br />
Set the temperature of the device attached to the second temperature sensor to 100&nbsp;°C.<br />
<br />
==== M105: Get Extruder Temperature ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M105<br />
<br />
Request the temperature of the current extruder and the build base in degrees Celsius. The temperatures are returned to the host computer. For example, the line sent to the host in response to this command looks like:<br />
ok T:201 B:117<br />
<br />
Expansion/generalization of M105 to be considered using S1 parameter as noted in [[Pronterface I/O Monitor]]<br />
<br />
In Repetier you can add X0 to get raw values as well:<br />
<pre><br />
M105 X0<br />
==> 11:05:48.910 : T:23.61 /0 @:0 T0:23.61 /0 @0:0 RAW0:3922 T1:23.89 /0 @1:0 RAW1:3920<br />
</pre><br />
<br />
===== Duet-dc42 extension =====<br />
<br />
Duet-dc42 firmware returns a JSON-formatted response if parameter S2 or S3 is included. This is used by the touch-screen control panel. Additionally, parameter Rnn may be provided, where nn is the sequence number of the most recent G-code response that the client has already received.<br />
<br />
The response comprises a single JSON object, with no nesting of objects or arrays, followed by newline. It is similar to the object returned by the web interface status request, but some fields are omitted. Here is a sample response when S2 is used:<br />
<br />
{"status":"I","heaters":[25.0,29.0,28.3],"active":[-273.1,0.0,0.0],"standby":[-273.1,0.0,0.0],"hstat":[0,2,1],"pos":[-11.00,0.00,0.00],"extr":[0.0,0.0],"sfactor":100.00,<br />
"efactor":[100.00,100.00],"tool":1,"probe":"535","fanRPM":0,"homed":[0,0,0],"fraction_printed":0.572}<br />
<br />
The meaning of these fields is:<br />
<br />
status: I=idle, P=printing from SD card, S=stopped (i.e. needs a reset), C=running config file, A=paused, D=pausing, R=resuming, B=busy (running a macro)<br />
heaters: current heater temperatures, numbered as per the machine (typically, heater 0 is the bed)<br />
active: active temperatures of the heaters<br />
standby: standby temperatures of the heaters<br />
hstat: status of the heaters, 0=off, 1=standby, 2=active, 3=fault<br />
pos: the X, Y and Z positions of the print head<br />
extr: the positions of the extruders<br />
sfactor: the current speed factor (see M220 command)<br />
efactor: the current extrusion factors (see M221 command)<br />
tool: the selected tool number. Zero typically means no tool selected.<br />
probe: the Z-probe reading<br />
fanRPM: the cooling fan RPM<br />
homed: the homed status of the X, Y and Z axes (or towers on a delta). 0=axis has not been homed so position is not reliable, 1=axis has been homed so position is reliable.<br />
fraction_printed: the fraction of the file currently being printed that has been read and at least partially processed.<br />
message: the message to be displayed on the screen (only present if there is a message to display)<br />
timesLeft: an array of the estimated remaining print times (in seconds) calculated by different methods. These are currently based on the proportion of the file read, the proportion of the total filament consumed, and the proportion of the total layers already printed. Only present if a print from SD card is in progress.<br />
seq: the sequence number of the most recent G-code response or error message. Only present if the R parameter was provided and the current sequence number is greater.<br />
resp: the most recent G-code response or error message. Only present if the R parameter was provided and the current sequence number is greater.<br />
<br />
The response when S3 is used comprises these fields plus some additional ones that do not generally change and therefore do not need to be fetched as often. The extra fields include:<br />
<br />
myName: the name of the printer<br />
geometry: one of "cartesian", "delta", "corexy, "corexz" etc.<br />
<br />
The fields may be in any order in the response. Other implementations may omit fields and/or add additional fields.<br />
<br />
==== M106: Fan On ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' speed<br />
; Example<br />
: M106 S127<br />
<br />
Turn on the cooling fan at half speed.<br />
<br />
Mandatory parameter 'S' declares the PWM value (0-255). M106 S0 turns the fan off. In some implementations the pwm is specified by a real fraction: M106 S0.7.<br />
<br />
===== M106 in Duet Firmware =====<br />
<br />
Duet-dc42 firmware also supports an optional I parameter. If this parameter is present and greater than zero, the cooling fan output is inverted. This makes the cooling fan output suitable for feeding the PWM input of a 4-wire fan via a diode. If the parameter is present and zero or negative, the output is not inverted. If the parameter is not present, the inverted/non-inverted state remains unchanged. The default at power up is not inverted.<br />
<br />
If the 'R' parameter is passed when using Duet-zpl firmware (0.96g+), the last-known fan value will be set. If the 'S' parameter is passed along with 'R', the firmware will not reset the last-known fan value. This may be useful for tool change macro files.<br />
<br />
===== M106 in Teacup Firmware =====<br />
<br />
Additionally to the above, Teacup Firmware uses M106 to control general devices. It supports the additional P parameter, which is an zero-based index into the list of heaters/devices in config.h.<br />
<br />
Example: M106 P2 S255<br />
<br />
Turn on device #3 at full speed/wattage.<br />
<br />
'''Note''': When turning on a temperature sensor equipped heater with M106 and M104 at the same time, temperature control will override the value given in M106 quickly.<br />
<br />
==== M107: Fan Off ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} }}<br />
<br />
Deprecated in Teacup firmware. Use M106 S0 instead.<br />
<br />
==== M108: Set Extruder Speed ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
Sets speed of extruder motor.<br />
(Deprecated in FiveD firmware, see M113)<br />
<br />
==== M109: Set Extruder Temperature and Wait ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{no|not needed}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} | makerbot={{yes}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' minimum target temperature, waits until heating<br />
: '''Rnnn''' maximum target temperature, waits until cooling (Sprinter)<br />
: '''Rnnn''' accurate target temperature, waits until heating and cooling (Marlin)<br />
; Example<br />
: M109 S215<br />
<br />
===== M109 in Teacup =====<br />
<br />
Not needed. To mimic Marlin behaviour, use [[#M104: Set Extruder Temperature | M104]] followed by [[#M116: Wait | M116]].<br />
<br />
===== M109 in Marlin, Sprinter (ATmega port), Duet =====<br />
<br />
Set extruder heater temperature in degrees celsius and wait for this temperature to be achieved.<br />
<br />
Example: M109 S185<br />
<br />
Duet-dc42 firmware also supports the optional T parameter (as generated by slic3r) to specify which tool the command refers to (see below).<br />
<br />
===== M109 in Sprinter (4pi port) =====<br />
<br />
Parameters: '''S''' (optional), set target temperature value. If not specified, waits for the temperature set by [[#M104: Set Extruder Temperature | M104]]. '''R''' (optional), sets target temperature range maximum value.<br />
<br />
Example: M109 S185 R240 //sets extruder temperature to 185 and waits for the temperature to be between 185 - 240.<br />
<br />
If you have multiple extruders, use '''T''' or '''P''' parameter to specify which extruder you want to set/wait.<br />
<br />
Another way to do this is to use [[#G10: Tool Offset | G10]].<br />
<br />
===== M109 in MakerBot =====<br />
<br />
Example: M109 S70 T0<br />
<br />
Sets the target temperature for the current build platform. S is the temperature to set the platform to, in degrees Celsius. T is the platform to heat.<br />
<br />
==== M110: Set Current Line Number ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{no|not needed}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M110 N123<br />
<br />
Set the current line number to 123. Thus the expected next line after this command will be 124.<br />
<br style="clear: both" /><br />
<br />
==== M111: Set Debug Level ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{experimental|Debug}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M111 S6<br />
<br />
Set the level of debugging information transmitted back to the host to level 6. The level is the OR of three bits:<br />
<br />
<Pre><br />
#define DEBUG_ECHO (1<<0)<br />
#define DEBUG_INFO (1<<1)<br />
#define DEBUG_ERRORS (1<<2)<br />
#define DEBUG_DRYRUN (1<<3) // repetier-firmware<br />
#define DEBUG_COMMUNICATION (1<<4) // repetier-firmware<br />
</pre><br />
<br />
Thus 6 means send information and errors, but don't echo commands. (This is the RepRap default.)<br />
<br />
For firmware that supports ethernet and web interfaces M111 S9 will turn web debug information on without changing any other debug settings, and M111 S8 will turn it off. Web debugging usually means that HTTP requests will be echoed to the USB interface, as will the responses.<br />
<br />
==== M112: Emergency Stop ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M112<br />
<br />
Any moves in progress are immediately terminated, then RepRap shuts down. All motors and heaters are turned off. It can be started again by pressing the reset button on the master microcontroller. See also M0 and M1.<br />
<br />
==== M113: Set Extruder PWM ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M113<br />
<br />
Set the PWM for the currently-selected extruder. On its own this command <br />
sets RepRap to use the on-board potentiometer on the extruder controller board to set the PWM for the currently-selected extruder's stepper power. With an S field:<br />
<br />
M113 S0.7<br />
<br />
it causes the PWM to be set to the S value (70% in this instance). M113 S0 turns the extruder off, until an M113 command other than M113 S0 is sent.<br />
<br />
==== M114: Get Current Position ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M114<br />
<br />
This causes the RepRap machine to report its current X, Y, Z and E coordinates to the host.<br />
<br />
For example, the machine returns a string such as:<br />
<br />
<tt>ok C: X:0.00 Y:0.00 Z:0.00 E:0.00</tt><br />
<br />
In Marlin first 3 numbers is the position for the planner. The other positions are the positions from the stepper function. This helps for debugging a previous stepper function bug. <br />
<br />
<tt>X:0.00 Y:0.00 RZ:0.00 LZ:0.00 Count X:0.00 Y:0.00 RZ:41.02 LZ:41.02</tt><br />
<br />
==== M115: Get Firmware Version and Capabilities ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M115<br />
<br />
Request the Firmware Version and Capabilities of the current microcontroller <br />
The details are returned to the host computer as key:value pairs separated by spaces and terminated with a linefeed.<br />
<br />
sample data from firmware:<br />
ok PROTOCOL_VERSION:0.1 FIRMWARE_NAME:FiveD FIRMWARE_URL:http%3A//reprap.org MACHINE_TYPE:Mendel EXTRUDER_COUNT:1<br />
<br />
This M115 code is inconsistently implemented, and should not be relied upon to exist, or output correctly in all cases. An initial implementation was committed to svn for the FiveD Reprap firmware on 11 Oct 2010. Work to more formally define protocol versions is currently (October 2010) being discussed. See [[M115_Keywords]] for one draft set of keywords and their meanings.<br />
<br />
==== M116: Wait ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M116<br />
<br />
Wait for ''all'' temperatures and other slowly-changing variables to arrive at their set values. See also M109.<br />
<br />
Duet-dc42 firmware version 0.78c and later supports an optional P parameter, used to specify a tool number. If this parameter is present, then the system only waits for temperatures associated with that tool to arrive at their set values. This is useful during tool changes, to wait for the new tool to heat up without necessarily waiting for the old one to cool down fully.<br />
<br />
Users of Duet-zpl may specify a list of the heaters to be waited for by specifying an 'H' parameter. Duet-zpl v1.08d+ further supports an additional 'C' parameter to wait for the chamber temperature to be reached.<br />
<br />
==== M117: Get Zero Position ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M117<br />
<br />
This causes the RepRap machine to report the X, Y, Z and E coordinates ''in steps not mm'' to the host that it found when it last hit the zero stops for those axes. That is to say, when you zero X, the <i>x</i> coordinate of the machine when it hits the X endstop is recorded. This value should be 0, of course. But if the machine has drifted (for example by dropping steps) then it won't be. This command allows you to measure and to diagnose such problems. (E is included for completeness. It doesn't normally have an endstop.)<br />
<br />
==== M117: Display Message ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }} <br />
<br />
Example: M117 Hello World<br />
<br />
This causes the given message to be shown in the status line on an attached LCD. The above command will display Hello World.<br />
<br />
==== M118: Negotiate Features ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M118 P42<br />
<br />
This M-code is for future proofing. NO firmware or hostware supports this at the moment. It is used in conjunction with M115's FEATURES keyword.<br />
<br />
See [[Protocol_Feature_Negotiation]] for more info.<br />
<br />
==== M119: Get Endstop Status ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M119<br />
<br />
Returns the current state of the configured X, Y, Z endstops. Takes into account any 'inverted endstop' settings, so one can confirm that the machine is interpreting the endstops correctly.<br />
<br />
==== M120: Push ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Push the state of the RepRap machine onto a stack. Exactly what variables get pushed depends on the implementation (as does the depth of the stack - a typical depth might be 5). A sensible minimum, however, might be <br />
<br />
# Current feedrate, and<br />
# Whether moves (and separately extrusion) are relative or absolute<br />
<br />
==== M121: Pop ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Recover the last state pushed onto the stack.<br />
<br />
==== M120: Enable endstop detection ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== M121: Disable endstop detection ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== M122: Diagnose ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Sending an M122 causes the RepRap to transmit diagnostic information, for eaxmple via a USB serial link.<br />
<br />
==== M123: Tachometer value ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Sending an M123 causes the RepRap to transmit filament tachometer values from all extruders. <br />
<br />
==== M124: Immediate motor stop ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Immediately stops all motors.<br />
<br />
==== M126: Open Valve ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M126 P500<br />
<br />
Open the extruder's valve (if it has one) and wait 500 milliseconds for it to do so.<br />
<br />
===== M126 in MakerBot =====<br />
<br />
Example: M126 T0<br />
<br />
Enables an extra output attached to a specific toolhead (e.g. fan)<br />
<br />
==== M127: Close Valve ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M127 P400<br />
<br />
Close the extruder's valve (if it has one) and wait 400 milliseconds for it to do so.<br />
<br />
===== M127 in MakerBot =====<br />
<br />
Example: M127 T0<br />
<br />
Disables an extra output attached to a specific toolhead (e.g. fan)<br />
<br />
==== M128: Extruder Pressure PWM ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M128 S255<br />
<br />
PWM value to control internal extruder pressure. S255 is full pressure.<br />
<br />
==== M129: Extruder pressure off ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M129 P100<br />
<br />
In addition to setting Extruder pressure to 0, you can turn the pressure off entirely. P400 will wait 100ms to do so.<br />
<br />
==== M130: Set PID P value ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}}: See M301 | repetier={{no}} | smoothie={{no}}: See M301 | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' heater number<br />
: '''Snnn''' proportional (Kp)<br />
; Example<br />
: M130 P0 S8.0 ; Sets heater 0 P factor to 8.0<br />
<br />
Teacup can control multiple heaters with independent PID controls. For the default shown at https://github.com/Traumflug/Teacup_Firmware/blob/master/config.default.h, heater 0 is the extruder (P0), and heater 1 is the bed (P1).<br />
<br />
Teacup's PID proportional units are in pwm/255 counts per quarter C, so to convert from counts/C, you would divide by 4. Conversely, to convert from count/qC to count/C, multiply by 4. In the above example, S=8 represents a Kp=8*4=32 counts/C.<br />
<br />
==== M131: Set PID I value ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}}: See M301 | repetier={{no}} | smoothie={{no}}: See M301 | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' heater number<br />
: '''Snnn''' integral (Ki)<br />
; Example<br />
: M131 P1 S0.5 ; Sets heater 1 I factor to 0.5<br />
<br />
Teacup's PID integral units are in pwm/255 counts per (quarter C*quarter second), so to convert from counts/qCqs, you would divide by 16. Conversely, to convert from count/qCqs to count/Cs, multiply by 16. In the above example, S=0.5 represents a Ki=0.5*16=8 counts/Cs.<br />
<br />
==== M132: Set PID D value ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}}: See M301 | repetier={{no}} | smoothie={{no}}: See M301 | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' heater number<br />
: '''Snnn''' derivative (Kd)<br />
; Example<br />
: M132 P0 S24 ; Sets heater 0 D factor to 24.0<br />
<br />
Teacup's PID derivative units are in pwm/255 counts per (quarter degree per 2 seconds), so to convert from counts/C, you would divide by 4. Conversely, to convert from count/qC to count/C, multiply by 8. In the above example, S=24 represents a Kd=24*8=194 counts/(C/s).<br />
<br />
===== M132 in MakerBot =====<br />
<br />
Example: M132 X Y Z A B<br />
<br />
Loads the axis offset of the current home position from the EEPROM and waits for the buffer to empty.<br />
<br />
==== M133: Set PID I limit value ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' heater number<br />
: '''Snnn''' integral limit (Ki)<br />
; Example<br />
: M133 P1 S264 ; Sets heater 1 I limit value to 264<br />
<br />
Teacup's PID integral limit units are in quarter-C*quarter-seconds, so to convert from C-s, you would multiply by 16. Conversely, to convert from qC*qs to C*s, divide by 16. In the above example, S=264 represents an integral limit of 16.5 C*s.<br />
<br />
===== M133 in MakerBot =====<br />
<br />
Example: M133 T0 P500<br />
<br />
Instruct the machine to wait for the toolhead to reach its target temperature. T is the extruder to wait for. P if present, sets the time limit.<br />
<br />
==== M134: Write PID values to EEPROM ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}}: See M504 | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M134<br />
<br />
===== M134 in MakerBot =====<br />
<br />
Example: M134 T0 P500<br />
<br />
Instruct the machine to wait for the platform to reach its target temperature. T is the platform to wait for. P if present, sets the time limit.<br />
<br />
==== M135: Set PID sample interval ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | makerbot={{yes}} }}<br />
<br />
Example: M135 S300<br />
<br />
Set the PID to measure temperatures and calculate the power to send to the heaters every 300ms.<br />
<br />
===== M135 in MakerBot =====<br />
<br />
Example: M135 T0<br />
<br />
Instructs the machine to change its toolhead. Also updates the State Machine's current tool_index. T is the toolhead for the machine to switch to and the new tool_index for the state machine to use.<br />
<br />
==== M136: Print PID settings to host ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{experimental|Debug}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M136 P1 # print heater 0 PID parameters to host<br />
<br />
==== M140: Set Bed Temperature (Fast) ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' Target temperature<br />
; Example<br />
: M140 S55<br />
<br />
Set the temperature of the build bed to 55<sup>o</sup>C and return control to the host immediately (''i.e.'' before that temperature has been reached by the bed). There is an optional R field that sets the bed standby temperature: M140 S65 R40.<br />
<br />
Duet-zpl allows the bed heater to be switched off if the absolute negative temperature (-273.15) is passed as active temperature. In this case the current active temperature is not affected:<br />
<br />
<pre><br />
M140 S-273.15<br />
</pre><br />
<br />
Duet-zpl 1.09g+ also provides an 'H' parameter to set the hot bed heater number. If no heated bed is present, -1 may be specified to disable it.<br />
<br />
==== M141: Set Chamber Temperature (Fast) ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{yes|1=uses M104}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|zpl, dc42}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Example: M141 S30<br />
<br />
Set the temperature of the chamber to 30<sup>o</sup>C and return control to the host immediately (''i.e.'' before that temperature has been reached by the chamber).<br />
<br />
Duet-zpl 1.08d+ and Duet-dc42 1.09d+ implement M141 and accept an additional 'H' parameter to set the chamber heater number.<br />
<br />
==== M142: Holding Pressure ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M142 S1<br />
<br />
Set the holding pressure of the bed to 1 bar.<br />
<br />
The holding pressure is in bar. For hardware which only has on/off holding, when the holding pressure is zero, turn off holding, when the holding pressure is greater than zero, turn on holding.<br />
<br />
==== M143: Maximum hot-end temperature ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M143 S275<br />
<br />
Set the maximum temperature of the hot-end to 275C<br />
<br />
When temperature of the hot-end exceeds this value, take countermeasures, for instance an emergency stop. This is to prevent hot-end damage.<br />
<br />
==== M144: Stand By Your Bed ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M144<br />
<br />
Switch the bed to its standby temperature. M140 turns it back to its active temperature; no need for any arguments for that use of M140.<br />
<br />
==== M146: Set Chamber Humidity ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Rnnn''' Relative humidity in percent<br />
; Example<br />
: M146 R60<br />
<br />
Set the relative humidity of the chamber to 60% and return control to the host immediately (''i.e.'' before that humidity has been reached by the chamber).<br />
<br />
==== M149: Set temperature units ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''C''' Flag to treat temperature as degrees Celsius<br />
: '''K''' Flag to treat temperature as Kelvin<br />
; Example<br />
: M149 K<br />
<br />
It affects the S or R values in the codes M104, M109, M140, M141, M143, M190 and G10. The default is M149 C.<br />
<br />
==== M150: Set display color ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Rnnn''' red<br />
: '''Unnn''' green<br />
: '''Bnnn''' blue<br />
; Example<br />
: M150 R255 U128 B192<br />
<br />
Set BlinkM Color via I2C. Range for values: 0-255<br />
<br />
==== M160: Number of mixed materials ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M160 S4<br />
<br />
This command has been superseded by the tool definition command M563 (see below).<br />
<br />
Set the number of materials, N, that the current extruder can handle to the number specified. The default is 1.<br />
<br />
When N >= 2, then the E field that controls extrusion requires N values separated by colons ":" after it like this: <br />
<br />
<pre><br />
M160 S4<br />
G1 X90.6 Y13.8 E2.24:2.24:2.24:15.89<br />
G1 X70.6 E0:0:0:42.4<br />
G1 E42.4:0:0:0<br />
</pre><br />
<br />
The second line moves straight to the point (90.6, 13.8) extruding a total of 22.4mm of filament. The mix ratio for the move is 0.1:0.1:0.1:0.7.<br />
<br />
The third line moves back 20mm in X extruding 42.4mm of filament. <br />
<br />
The fourth line has no physical effect.<br />
<br />
==== M163: Set weight of mixed material ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.92 | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' extruder number<br />
: '''Pnnn''' weight<br />
<br />
Set weight for this mixing extruder drive.<br />
<br />
==== M164: Store weights ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.92 | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' virtual extruder number<br />
: '''Pnnn''' store to eeprom (P0 = no, P1 = yes)<br />
<br />
Store weights as virtual extruder S.<br />
<br />
==== M190: Wait for bed temperature to reach target temp ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}}: See M116 | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' minimum target temperature, waits until heating<br />
: '''Rnnn''' accurate target temperature, waits until heating and cooling (Marlin)<br />
; Example<br />
: M190 S60<br />
<br />
This will wait until the bed temperature reaches 60 degrees, printing out the temperature of the hot end and the bed every second.<br />
<br style="clear: both" /><br />
<br />
==== M191: Wait for chamber temperature to reach target temp ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Example: M191 P60 <br />
<br />
Set the temperature of the build chamber to 60 °C and wait for the temperature to be reached.<br />
<br />
==== M200: Set filament diameter ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Without parameters loads default grid, and with specified extension attempts to load the specified grid. If not available will not modify the current grid.<br />
If Z was saved with the grid file, it will load the saved Z with the grid.<br />
<br />
M200 Dm.mmm sets the filament diameter to m.mmm millimeters. It is used with 'volumetric calibration' and G-code generated for an ideal 1.128mm diameter filament, which has a volume of 1mm^3 per millimeter. The intention is to be able to generate filament-independent g-code. (See [[Triffid_Hunter's_Calibration_Guide#Optional:_Switch_to_volumetric_E_units]] and http://wooden-mendel.blogspot.com/2011/09/volumetric-stage-two.html for more information.)<br />
<br />
M200 D0 or M200 D1.128 ; reset E multiplier to 1, since sqrt(1/pi)*2=1.128<br />
<br />
See also [[Gcode#M119:_Get_Endstop_Status]]<br />
<br />
Question: what does a firmware do with filament diameter? Has this an effect on how much an E command moves the extruder motor? --[[User:Traumflug|Traumflug]] 11:34, 14 October 2012 (UTC) Yes, Marlin uses this to set a 'volumetric_multiplier' by which the E-steps of a move are scaled in the planner. [[User:DaveX|DaveX]] ([[User talk:DaveX|talk]]) 16:44, 12 April 2014 (PDT)<br />
Smoothie implements the same thing as Marlin --[[User:Arthurwolf|Arthurwolf]] ([[User talk:Arthurwolf|talk]]) 05:23, 10 November 2014 (PST)<br />
<br />
==== M201: Set max printing acceleration ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M201 X1000 Y1000 Z100 E2000<br />
<br />
Sets the acceleration that axes can do in units/second^2 for print moves. For consistency with the rest of G Code movement this should be in units/(minute^2), but that gives really silly numbers and one can get lost in all the zeros. So for this we use seconds.<br />
<br />
==== M202: Set max travel acceleration ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!<br />
<br />
==== M203: Set maximum feedrate ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M203 X6000 Y6000 Z300 E10000<br />
<br />
Sets the maximum feedrates that your machine can do in mm/min.<br />
<br />
===== M203 Repetier =====<br />
<br />
Set temperture monitor to Sx.<br />
<br />
==== M204: Set default acceleration ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate<br />
<br />
<br />
'''Marlin notes:''' After Mar11-2015, the M204 options have changed in Marlin:<br />
<br />
P = Printing moves<br />
<br />
R = Retract only (no X, Y, Z) moves<br />
<br />
T = Travel (non printing) moves<br />
<br />
<br />
The command "M204 P800 T3000 R9000" set the acceleration for printing movements to 800mm/s^2, for travels to 3000mm/s^2 and for retracts to 9000mm/s^2.<br />
<br />
===== M204 Repetier =====<br />
<br />
M204 X[Kp] Y[Ki] Z[Kd] - <br />
<br />
Set PID parameter. Values are 100*real value.<br />
<br />
==== M205: Advanced settings ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk, E=maximum E jerk<br />
<br />
===== M205 Repetier =====<br />
<br />
Output EEPROM settings.<br />
<br />
==== M206: ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
===== M206 Marlin, Sprinter, Smoothie - Set home offset =====<br />
Example: M206 X10.0 Y10.0 Z-0.4<br />
<br />
The values specified are added to the endstop position when the axes are referenced. The same can be achieved with a G92 right after homing (G28, G161). <br />
<br />
With Marlin firmware, this value can be saved to EEPROM using the M500 command.<br />
<br />
A similar command is G10, aligning these two is [[Talk:G-code#M104 .26 M109 Deprecation, G10 Introduction | subject to discussion]].<br />
<br />
With Marlin 1.0.0 RC2 a negative value for z lifts(!) your printhead.<br />
<br />
===== M206 Repetier - Set eeprom value =====<br />
<br />
M206 T[type] P[pos] [Sint(long] [Xfloat] Set eeprom value<br />
<br />
Example: M206 T3 P39 X19.9<br />
<br />
Set Jerk to 19.9<br />
<br />
==== M207: Calibrate z axis by detecting z max length ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M207<br />
<br />
After placing the tip of the nozzle in the position you expect to be considered Z=0, issue this command to calibrate the Z axis. It will perform a z axis homing routine and calculate the distance traveled in this process. The result is stored in EEPROM as z_max_length. For using this calibration method the machine must be using a Z MAX endstop.<br />
<br />
This procedure is usually more reliable than mechanical adjustments of a Z MIN endstop.<br />
<br />
==== M207: Set retract length ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}}}}<br />
<br />
; Parameters<br />
: '''Snnn''' positive length to retract, in mm<br />
: '''Fnnn''' feedrate, in mm/min<br />
: '''Znnn''' additional zlift/hop<br />
; Example<br />
: M207 S4.0 F2400 Z0.075<br />
<br />
Sets retract length, stays in mm regardless of M200 setting<br />
<br />
==== M208: Set axis max travel ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}}}}<br />
<br />
Example: M208 X250 Y210 Z180<br />
<br />
The values specified set the software limits for axis travel in the positive direction.<br />
<br />
<s>With Marlin firmware, this value can be saved to EEPROM using the M500 command.</s><br />
<br />
With Duet-dc42 firmware, on a Cartesian printer you can also use this command to specify software limits for axis travel in the negative direction, by adding parameter S1. The axis limits you set are also the positions assumed when an endstop is triggered.<br />
<br />
==== M208: Set unretract length ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' positive length surplus to the M207 Snnn, in mm<br />
: '''Fnnn''' feedrate, in mm/sec<br />
<br />
Sets recover=unretract length.<br />
<br />
==== M209: Enable automatic retract ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M209 S1<br />
<br />
This boolean value S 1=true or 0=false enables automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.<br />
<br />
==== M210: Set homing feedrates ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M210 X1000 Y1500<br />
<br />
Set the feedrates used for homing to the values specified in mm per minute.<br />
<br />
==== M211: Disable/Enable software endstops ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
The boolean value S 1=enable or 0=disable controls state of software endstop.<br />
<br />
The boolean value X, Y or Z 1=max endstop or 0=min endstop selects which endstop is controlled.<br />
<br />
Example: M211 X1 Y1 Z1 S0<br />
<br />
Disables X,Y,Z max endstops<br />
<br />
Example: M211 X0 S1<br />
<br />
Enables X min endstop<br />
<br />
Example: M211<br />
<br />
Prints current state of software endstops.<br />
<br />
==== M212: Set Bed Level Sensor Offset ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}}* | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
This G-Code command is known to be available in the newer versions of PrintrBot's branch of Marlin. It may not be available in other firmware.<br />
<br />
Example: M212 Z-0.2<br />
<br />
Set the Z home to 0.2 mm lower than where the sensor says Z home is. This is extremely useful when working with printers with hard-to-move sensors, like the PrintrBot Metal Plus.<br />
<br />
PrintrBot suggests that the user make minor (0.1-0.2) adjustments between attempts and immediately executes M500 & M501 after setting this.<br />
<br />
==== M218: Set Hotend Offset ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Sets hotend offset (in mm): T<extruder_number> X<offset_on_X> Y<offset_on_Y>.<br />
<br />
Example: M218 T1 X50 Y0.5<br />
<br />
==== M220: Set speed factor override percentage ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M220 S80<br />
<br />
S<factor in percent>- set speed factor override percentage<br />
<br />
==== M221: Set extrude factor override percentage ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M221 S70<br />
<br />
S<factor in percent>- set extrude factor override percentage<br />
<br />
==== M220: Turn off AUX V1.0.5 ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
==== M221: Turn on AUX V1.0.5 ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
==== M222: Set speed of fast XY moves ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
==== M223: Set speed of fast Z moves ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
==== M224: Enable extruder during fast moves ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
==== M225: Disable on extruder during fast moves ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{yes}} | machinekit={{no}} }}<br />
<br />
==== M226: Gcode Initiated Pause ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{yes}} | machinekit={{yes}} }}<br />
<br />
Example: M226<br />
<br />
Initiates a pause in the same way as if the pause button is pressed. That is, program execution is stopped and the printer waits for user interaction. This matches the behaviour of M1 in the [http://www.nist.gov/manuscript-publication-search.cfm?pub_id=823374 NIST RS274NGC G-code standard] and M0 in Marlin firmware.<br />
<br />
==== M226: Wait for pin state ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' pin number <br />
: '''Snnn''' pin state<br />
; Example<br />
: M226 P2 S1<br />
<br />
Wait for a pin to be in some state.<br />
<br />
==== M227: Enable Automatic Reverse and Prime ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M227 P1600 S1600<br />
<br />
P and S are steps.<br />
<br />
"Reverse and Prime" means, the extruder filament is retracted some distance when not in use and pushed forward the same amount before going into use again. This shall help to prevent drooling of the extruder nozzle. Teacup firmware implements this with M101/M103.<br />
<br />
==== M228: Disable Automatic Reverse and Prime ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M228<br />
<br />
See also M227.<br />
<br />
==== M229: Enable Automatic Reverse and Prime ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M229 P1.0 S1.0<br />
<br />
P and S are extruder screw rotations. See also M227.<br />
<br />
==== M230: Disable / Enable Wait for Temperature Change ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M230 S1<br />
<br />
S1 Disable wait for temperature change<br />
S0 Enable wait for temperature change<br />
<br />
==== M231: Set OPS parameter ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
M231 S[OPS_MODE] X[Min_Distance] Y[Retract] Z[Backslash] F[ReatrctMove]<br />
<br />
==== M232: Read and reset max. advance values ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== M240: Trigger camera ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M240<br />
<br />
Triggers a camera to take a photograph. (Add to your per-layer GCode.)<br />
<br />
==== M240: Start conveyor belt motor / Echo off ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{experimental|Debug: Echo off}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M240<br />
<br />
The conveyor belt allows to start mass production of a part with a reprap. <br />
<br />
Echoing may be controlled in some firmwares with M111<br />
<br style="clear: both" /><br />
<br />
==== M241: Stop conveyor belt motor / echo on ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{experimental|Debug: Echo on}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M241<br />
<br />
Echoing may be controlled in some firmwares with M111<br />
<br style="clear: both" /><br />
<br />
==== M245: Start cooler ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M245<br />
<br />
used to cool parts/heated-bed down after printing for easy remove of the parts after print<br />
<br />
==== M246: Stop cooler ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M246<br />
<br />
==== M250: Set LCD contrast ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M250 C20<br />
<br />
Sets LCD contrast C<contrast value> (value 0..63), if available.<br />
<br />
==== M251: Measure Z steps from homing stop (Delta printers) ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
M251 S0 - Reset, S1 - Print, S2 - Store to Z length (also EEPROM if enabled)<br />
<br />
(This is a Repetier-Firmware only feature)<br />
<br />
==== M280: Set servo position ==== <br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
(Marlin, Repetier [[Gcode#M340:_Control_the_servos|M340]])<br />
<br />
Set servo position absolute. P: servo index, S: angle or microseconds (Marlin)<br />
<br />
==== M300: Play beep sound ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' frequency in Hz<br />
: '''Pnnn''' duration in milliseconds<br />
; Example<br />
: M300 S300 P1000<br />
<br />
Play beep sound, use to notify important events like the end of printing. [http://www.3dprinting-r2c2.com/?q=content/seasons-greetings See working example on] [[R2C2_RepRap_Electronics|R2C2 electronics]]. Also supported by duet-dc42 firmware via the sounder on the add-on touch screen control panel.<br />
<br />
==== M301: Set PID parameters ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}}: See M13[0-3]) | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware= {{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Hnnn''' heater number (Smoothie uses 'S')<br />
: '''Pnnn''' proportional (Kp)<br />
: '''Innn''' integral (Ki)<br />
: '''Dnnn''' derivative (Kd)<br />
; Examples<br />
: M301 H1 P1 I2 D3 ; Marlin<br />
: M301 H1 P1 I2 D3 T0.2 B20 W127 S0.8 ; RepRapFirmware (v1.09 onwards), Duet-dc42<br />
: M301 S0 P30 I10 D10 ; Smoothie<br />
<br />
Sets Proportional (P), Integral (I) and Derivative (D) values for hot end. See also [[PID Tuning]].<br />
<br />
=====Marlin=====<br />
<br />
Hot end only; see M304 for bed PID. H is the heater number, default 1 (i.e. first extruder heater).<br />
<br />
=====Duet-dc42 and RepRapFirmware (v1.09 onwards)=====<br />
H: Is the heater number, and is compulsory. H0 is the bed, H1 is the first hot end, H2 the second etc.<br /><br />
P: Interprets a negative P term as indicating that bang-bag control should be used instead of PID (not recommended for the hot end, but OK for the bed heater).<br /><br />
I: Integral value<br /><br />
D: Derivative value<br /><br />
T: Is the approximate additional PWM (on a scale of 0 to 255) needed to maintain temperature, per degree C above room temperature. Used to preset the I-accumulator when switching from heater fully on/off to PID.<br /><br />
S: PWM scaling factor, to allow for variation in heater power and supply voltage. Is designed to allow a correction to be made for a change in heater power and/or power supply voltage without having to change all the other parameters. For example, an S factor of 0.8 means that the final output of the PID controller should be scaled to 0.8 times the standard value, which would compensate for a heater that is 25% more powerful than the standard one or a supply voltage that is 12.5% higher than standard.<br /><br />
W: Wind-up. Sets the maximum value of I-term, must be high enough to reach 245C for ABS printing.<br /><br />
B: PID Band. Errors larger than this cause heater to be on or off.<br /><br />
<br />
An example using all of these would be:<br />
: M301 H1 P20 I0.5 D100 T0.4 S1 W180 B30<br />
<br />
=====Smoothie=====<br />
<br />
S0 is 0 for the hotend, and 1 for the bed, other numbers may apply to your configuration, depending on the order in which you declare temperature control modules.<br />
<br />
=====Other implementations=====<br />
<br />
W: Wind-up. Sets the maximum value of I-term, so it does not overwhelm other PID values, and the heater stays on. (Check firmware support - Sprinter, Marlin?) Example: <br />
:M301 W125<br />
<br />
=====Teacup=====<br />
<br />
See M130, M131, M132, M133 for [[Teacup]]'s codes for setting the PID parameters.<br />
<br />
==== M302: Allow cold extrudes ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}}: 0.92 | smoothie={{no}} | reprapfirmware= {{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
This tells the printer to allow movement of the extruder motor, when the hotend is not at printing temperature<br />
<br />
Example: M302<br />
<br />
When using RepRapFirmware, running M302 will only report the current cold extrusion state. To allow or deny cold extrudes/retracts, run either "M302 P1" or "M302 P0".<br />
<br />
==== M303: Run PID tuning ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
[[PID Tuning]] refers to a control algorithm used in some repraps to tune heating behavior for hot ends and heated beds. This command generates Proportional (Kp), Integral (Ki), and Derivative (Kd) values for the hotend or bed (E-1). Send the appropriate code and wait for the output to update the firmware.<br />
<br />
Hot end usage:<br />
M303 S<temperature> C<cycles><br />
Bed usage:<br />
M303 E-1 C<cycles> S<temperature><br />
Example:<br />
M303 C8 S175<br />
Smoothie's syntax, where E0 is the first temperature control module (usually the hot end) and E1 is the second temperature control module (usually the bed):<br />
M303 E0 S190<br />
<br />
==== M304: Set PID parameters - Bed ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}}: See M301 | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Pnnn''' proportional (Kp)<br />
: '''Innn''' integral (Ki)<br />
: '''Dnnn''' derivative (Kd)<br />
; Examples<br />
: M304 P1 I2 D3 ; set kP=3, kI=2, kD=3<br />
: M301 P1 I2 D3 T0.7 H0 B20 W127 ; Duet-dc42 firmware<br />
: M304 ; Report parameters<br />
<br />
Sets Proportional, Integral and Derivative values for bed. Duet-dc42 firmware interprets a negative P term as indicating that bang-bag control should be used instead of PID. In Duet-dc42 firmware, this command is identical to M301 except that the H parameter (heater number) defaults to zero.<br />
<br />
See also [[PID Tuning]].<br />
<br />
===== M304 in RepRapPro version of Marlin: Set thermistor values =====<br />
<br />
In the RepRapPro version of Marlin ( https://github.com/reprappro/Marlin ) M304 is used to set thermistor values (as M305 is in later firmwares). RRP Marlin calculates temperatures on the fly, rather than using a temperature table. M304 Sets the parameters for temperature measurement.<br />
<br />
Example: M304 H1 B4200 R4800 T100000<br />
<br />
This tells the firmware that for heater 1 (H parameter: 0 = heated bed, H = first extruder), the thermistor beta (B parameter) is 4200, the thermistor series resistance (R parameter) is 4.8Kohms, the thermistor 25C resistance (T parameter) is 100Kohms. All parameters other than H are optional. If only the H parameter is given, the currently-used values are displayed. They are also displayed within the response to M503.<br />
<br />
==== M305: Set thermistor and ADC parameters ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Sets the parameters for temperature measurement. Supported by RepRapFirmware from 0.78c, and Duet-dc42 firmware.<br />
<br />
Example: M305 P1 T100000 R1000 B4200<br />
<br />
This tells the firmware that for heater 1 (P parameter: 0 = heated bed, 1 = first extruder) the thermistor 25C resistance (T parameter) is 100Kohms, the thermistor series resistance (R parameter) is 1Kohms, the thermistor beta (B parameter) is 4200. All parameters other than P are optional. If only the P parameter is given, the existing values are displayed.<br />
<br />
Additionally, Duet-dc42 firmware supports an ADC correction functionality and a thermistor selection facility.<br />
<br />
Example: M305 P1 T100000 R1000 B4200 H14 L-11 X2<br />
<br />
Here the ADC high end correction (H parameter) is 14, the ADC low end correction (L parameter) is -11, and thermistor input #2 is used to measure the temperature of heater #1.<br />
<br />
==== M306: set home offset calculated from toolhead position ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | smoothie={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M306 Z0 <br />
<br />
The values specified are added to the calculated end stop position when the axes are referenced. The calculated value is derived from the distance of the toolhead from the current axis zero point.<br />
<br />
The user would typically place the toolhead at the zero point of the axis and issue the M306 command.<br />
<br />
This value can be saved to EEPROM using the M500 command (as M206 value).<br />
<br />
Implemented in Smoothieware<br />
<br />
==== M320: Activate autolevel(Repetier) ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
(Repetier only)<br />
<br />
==== M321: Deactivate autolevel(Repetier) ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
(Repetier only)<br />
<br />
==== M322: Reset autolevel matrix ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M322 S1<br />
<br />
Parameter S1 is mandatory<br />
<br />
(Repetier only)<br />
<br />
==== M340: Control the servos ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
(Repetier only ,Marlin see [[Gcode#M280:_Set_servo_position|M280]])<br />
<br />
M340 P<servoId> S<pulseInUS> / ServoID = 0..3 pulseInUs = 500..2500<br />
<br />
Servos are controlled by a pulse width normally between 500 and 2500 with 1500ms in center position. 0 turns servo off.<br />
<br />
==== M350: Set microstepping mode ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Sets microstepping mode.<br />
<br />
Warning: Steps per unit remains unchanged.<br />
<br />
; Usage<br />
: M350 Snn Xnn Ynn Znn Enn Bnn<br />
; Parameters<br />
: ''Not all parameters need to be used, but at least '''one''' should be used''<br />
: '''Snn''' Set stepping mode for all drivers<br />
: '''Xnn''' Set stepping mode for the X axis<br />
: '''Ynn''' Set stepping mode for the Y axis<br />
: '''Znn''' Set stepping mode for the Z axis<br />
: '''Enn''' Set stepping mode for Extruder 0<br />
: '''Bnn''' Set stepping mode for Extruder 1<br />
; Modes (nn)<br />
: 1 = full step<br />
: 2 = half step<br />
: 4 = quarter step<br />
: 8 = 1/8 step<br />
: 16 = 1/16 step<br />
; Examples<br />
: M350 S16 ''(reset all drivers to the default 1/16 micro-stepping)''<br />
: M350 Z1 ''(set the Z-axis' driver to use full steps)''<br />
: M350 E4 B4 ''(set both extruders to use quarter steps)''<br />
<br />
==== M351: Toggle MS1 MS2 pins directly ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M351<br />
<br />
==== M355: Turn case lights on/off ====<br />
<br />
{{firmware Support | fived={{no}} | teacup=use M106 | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.92.2 | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Examples<br />
: M355 S1 ''; Enable lights''<br />
: M355 S0 ''; Disable lights''<br />
: M355 ''; Report status''<br />
<br />
Every call or change over LCD menu sends a state change for connected hosting software like<br />
<pre><br />
Case lights on<br />
Case lights off<br />
No case lights<br />
</pre><br />
<br />
==== M360: Report firmware configuration ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{yes}}: 0.92.2 | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Target<br />
This command helps hosting software to detect configuration details, which the user would need to enter otherwise.<br />
It should reduce configuration time considerably if supported. <br />
<br />
; Example<br />
: M360<br />
<br />
;Response:<br />
<pre><br />
Config:Baudrate:250000<br />
Config:InputBuffer:127<br />
Config:NumExtruder:2<br />
Config:MixingExtruder:0<br />
Config:HeatedBed:0<br />
Config:SDCard:1<br />
Config:Fan:1<br />
Config:LCD:1<br />
Config:SoftwarePowerSwitch:1<br />
Config:XHomeDir:-1<br />
Config:YHomeDir:-1<br />
Config:ZHomeDir:-1<br />
Config:SupportG10G11:1<br />
Config:SupportLocalFilamentchange:1<br />
Config:CaseLights:0<br />
Config:ZProbe:1<br />
Config:Autolevel:0<br />
Config:EEPROM:1<br />
Config:PrintlineCache:24<br />
Config:JerkXY:30.00<br />
Config:JerkZ:0.30<br />
Config:RetractionLength:3.00<br />
Config:RetractionLongLength:13.00<br />
Config:RetractionSpeed:40.00<br />
Config:RetractionZLift:0.00<br />
Config:RetractionUndoExtraLength:0.00<br />
Config:RetractionUndoExtraLongLength:0.00<br />
Config:RetractionUndoSpeed:0.00<br />
Config:XMin:0.00<br />
Config:YMin:0.00<br />
Config:ZMin:0.00<br />
Config:XMax:250.00<br />
Config:YMax:150.00<br />
Config:ZMax:90.00<br />
Config:XSize:250.00<br />
Config:YSize:150.00<br />
Config:ZSize:90.00<br />
Config:XPrintAccel:250.00<br />
Config:YPrintAccel:250.00<br />
Config:ZPrintAccel:100.00<br />
Config:XTravelAccel:250.00<br />
Config:YTravelAccel:250.00<br />
Config:ZTravelAccel:100.00<br />
Config:PrinterType:Cartesian<br />
Config:MaxBedTemp:120<br />
Config:Extr.1:Jerk:50.00<br />
Config:Extr.1:MaxSpeed:100.00<br />
Config:Extr.1:Acceleration:10000.00<br />
Config:Extr.1:Diameter:0.00<br />
Config:Extr.1:MaxTemp:220<br />
Config:Extr.2:Jerk:50.00<br />
Config:Extr.2:MaxSpeed:100.00<br />
Config:Extr.2:Acceleration:10000.00<br />
Config:Extr.2:Diameter:0.00<br />
Config:Extr.2:MaxTemp:220<br />
</pre><br />
==== SCARA calibration codes (Morgan) ====<br />
<br />
In order to ease calibration of Reprap Morgan, the following M-codes are used to set the machine up<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{partial}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
==== M360: Move to Theta 0 degree position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{experimental}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
The arms move into a position where the Theta steering arm is parallel to the top platform edge. The user then calibrates the position by moving the arms with the jog buttons in software like pronterface until it is perfectly parallel. Using M114 will then display the calibration offset that can then be programmed into the unit using M206 (Home offset) X represents Theta.<br />
<br />
Smoothieware: M360 P0 will take the current position as parallel to the platform edge, and store the offset in the homing trim offset (M666) No further user interaction is needed.<br />
<br />
==== M361: Move to Theta 90 degree position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{experimental}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Theta move to 90 degrees with platform edge. User calibrates by using jog arms to place exactly 90 degrees. Steps per degree can then be read out by using M114, and programmed using M92. X represents Theta. Program Y (Psi) to the same value initially. Remember to repeat M360 after adjusting steps per degree.<br />
<br />
Smoothieware: M360 P0 will accept the current position as 90deg to platform edge. New steps per angle is calculated and entered into memory (M92) No further user interaction is required, except to redo M360.<br />
<br />
==== M362: Move to Psi 0 degree position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{experimental}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Arms move to Psi 0 degree. Check only after other Theta calibrations<br />
<br />
==== M363: Move to Psi 90 degree position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{experimental}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Arms move to Psi 90 degree. Check only after other Theta calibrations<br />
<br />
==== M364: Move to Psi + Theta 90 degree position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{experimental}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Move arms to form a 90 degree angle between the inner and outer Psi arms. Calibrate by moving until angle is exactly 90 degree. Read out with M114, and calibrate value into Home offset M206. Psi is represented by Y.<br />
<br />
Smoothieware: M364 P0 will accept the current position as 90deg between arms. The offset is stored as a trim offset (M666) and no further user interaction is required except to save all changes via M500<br />
<br />
==== M365: SCARA scaling factor ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{experimental}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Adjust X Y and Z scaling by entering the factor. 100% scaling (default) is represented by 1<br />
<br />
==== M370: Morgan manual bed level - clear map ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Clear the map and prepare for calibration<br />
; Usage<br />
: M370<br />
: M370 X<divisions> Y<divisions><br />
<br />
Without parameters is defaults to X5 Y5 (25 calibration points) <br />
When specifying parameters, uneven numbers are recommended.<br />
<br />
==== M371: Move to next calibration position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Move to the next position for calibration. User moves the bed towards the hotend until it just touches<br />
<br />
==== M372: Record calibration value, and move to next position ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
The position of the bed is recorded and the machine moves to the next position. Repeat until all positions programmed<br />
<br />
==== M373: End bed level calibration mode ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
End calibration mode and enable z correction matrix. Does not save current matrix<br />
<br />
==== M374: Save calibration grid ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Saves the calibration grid. (Smoothieware)<br />
; Usage<br />
: M374<br />
: M374 <file extension> Z <br />
<br />
Without parameters safes the grid into the default grid file that gets loaded at boot<br />
Parameter specifies the extension of the grid file - useful for special grid files such as for a special print surface like a removable print plate.<br />
Addition of Z will additionally save the M206 Z homing offset into the grid file<br />
<br />
==== M375: Display matrix / Load Matrix ====<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Display the bed level calibration matrix (Marlin)<br />
Load Grid matrix file (Smoothieware)<br />
; Usage<br />
: M375<br />
: M375 <file extension><br />
<br />
Without parameters loads default grid, and with specified extension attempts to load the specified grid. If not available will not modify the current grid.<br />
If Z was saved with the grid file, it will load the saved Z with the grid.<br />
<br />
==== M380: Activate solenoid ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M380<br />
<br />
Activates solenoid on active extruder.<br />
<br />
==== M381: Disable all solenoids ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M381<br />
<br />
==== M400: Wait for current moves to finish ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Finishes all current moves and and thus clears the buffer. That's identical to <code>G4 P0</code>.<br />
<br />
Example: M400<br />
<br />
==== M401: Lower z-probe ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M401<br />
<br />
Lower z-probe if present.<br />
<br />
==== M402: Raise z-probe ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M402<br />
<br />
Raise z-probe if present.<br />
<br />
==== M404: Filament width and nozzle diameter ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M404 N1.75<br />
<br />
N<dia in mm> <br />
Enter the nominal filament width (3mm, 1.75mm) or will display nominal filament width without parameters.<br />
<br />
While Marlin only accepts the N parameter, Duet-zpl further allows to specify the nozzle diameter (in mm) via the D-parameter. It is used to properly detect the first layer height when a new print is being started.<br />
<br />
Example: M404 N3.0 D1.0<br />
<br />
==== M405: Filament Sensor on ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M405<br />
<br />
Turn on Filament Sensor extrusion control. Optional D<delay in cm> to set delay in centimeters between sensor and extruder.<br />
<br />
==== M406: Filament Sensor off ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M406<br />
<br />
Turn off Filament Sensor extrusion control.<br />
<br />
==== M407: Display filament diameter ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | reprapfirmware={{partial}} }}<br />
<br />
Example: M407<br />
<br />
Displays measured filament diameter. In RepRapFirmware M407 does the same as M404.<br />
<br />
==== M408: Report JSON-style response ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Report a JSON-style response by specifying the desired type using the 'S' parameter. For some purposes it is necessary to pass the sequence number, which is why Duet-zpl and Duet-dc42 accept an additional 'P' parameter to specify it.<br />
<br />
Example: M408 S0<br />
<br />
The following response types are supported:<br />
<br />
* Type 0 is the M105 S2 response, which is like the new-style status response (for the old web interface) but some fields are omitted.<br />
* Type 1 is the M105 S3 response, which is like the M105 S2 response except that static values are also included.<br />
<br />
* Type 2 is the new-style standard JSON response, which is also reported to the new web interface (see Duet Web Control)<br />
* Type 3 is an extended version of type 2 which includes some additional parameters that aren't expected to change very frequently<br />
* Type 4 is an extended version of type 2 which may be used to poll for current printer stats<br />
<br />
* Type 5 reports the current machine configuration<br />
<br />
For a more detailed comparison of type 2 - 5, see [[Proposed_RepRap_Duet_Status_Responses]]<br />
<br />
Currently M408 is only supported by Duet-dc42 and Duet-zpl.<br />
<br />
==== M420: Set RGB Colors as PWM ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Usage: M420 R<Red PWM (0-255)> E<Green PWM (0-255)> B<Blue PWM (0-255)><br />
<br />
Example: M420 R255 E255 B255<br />
<br />
Set the color of your RGB LEDs that are connected to PWM-enabled pins. Note, the Green color is controlled by the E value instead of the G value due to the G code being a primary code that cannot be overridden.<br />
<br />
==== M500: Store parameters in EEPROM ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | reprapfirmware={{partial|dc42, zpl}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M500<br />
<br />
Save current parameters to EEPROM. dc42 and zpl forks of RepRapFirmware allow "S1" to be passed, which forces parameters to be automatically saved to EEPROM when they are changed.<br />
<br />
In [[Redeem]] any parameters set through G/M-codes which is different than what is read from the config files, are stored back to the local config. For instance setting stepper current and microstepping through M906 and M907 followed by M500 will update /etc/redeem/local.cfg.<br />
<br />
==== M501: Read parameters from EEPROM ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | reprapfirmware={{partial|dc42, zpl}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M501<br />
<br />
Set the active parameters to those stored in the EEPROM. This is useful to revert parameters after experimenting with them.<br />
<br />
==== M502: Revert to the default "factory settings." ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | repetier={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M502<br />
<br />
This command resets all tunable parameters to their default values, as set in the firmware. This doesn't reset any parameters stored in the EEPROM, so it must be followed with M501 if you want to do that.<br />
<br />
==== M503: Print settings ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{yes}} | marlin={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M503<br />
<br />
This command asks the firmware to reply with the current print settings stored in EEPROM. The reply output includes the G-Code commands to produce each setting. For example, the Steps Per Unit values are displayed as an M92 command.<br />
<br />
==== M540: Enable/Disable "Stop SD Print on Endstop Hit" ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
; Parameters<br />
: '''Snnn''' state, S1=enable, S0=disable <br />
; Example<br />
: M540 S1<br />
<br />
==== M540: Set MAC address ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M540 P0xBE:0xEF:0xDE:0xAD:0xFE:0xED<br />
<br />
Sets the [http://en.wikipedia.org/wiki/MAC_address MAC address] of the RepRap. This should be done before any other network commands. The MAC address is six one-byte hexadecimal numbers separated by colons. The 0x prefix is optional in later firmware revisions.<br />
<br />
==== M550: Set Name ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M550 PGodzilla<br />
<br />
Sets the name of the RepRap to (in this case) Godzilla. The name can be any string of printable characters except ';', which still means start comment.<br />
<br />
==== M551: Set Password ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M551 Pmy-very-secret-word<br />
<br />
On machines that need a password to activate them, set that password. The code 'P' is not part of the password. Note that as this is sent in clear it does not (nor is it intended to) offer a very high level of security. But on machines that are (say) on a network, it prevents idle messing about by the unauthorised. The password can contain any printable characters except ';', which still means start comment.<br />
<br />
==== M552: Set IP address ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M552 P192.168.1.14<br />
<br />
Sets the IP address of the RepRap machine to (in this case) 192.168.1.14. A restart may be required before the new IP address is used. If no P field is specified, this echoes the existing IP address configured. If S0 is added thus: M552 S0 P192.168.1.14 networking is disabled.<br />
<br />
==== M553: Set Netmask ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M553 P255.255.255.0<br />
<br />
Sets the network mask of the RepRap machine to (in this case) 255.255.255.0. A restart may be required before the new network mask is used. If no P field is specified, this echoes the existing network mask configured.<br />
<br />
==== M554: Set Gateway ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M554 P192.168.1.1<br />
<br />
Sets the Gateway IP address of the RepRap machine to (in this case) 192.168.1.1. A restart may be required before the new gateway IP address is used. If no P field is specified, this echoes the existing Gateway IP address configured.<br />
<br />
==== M555: Set compatibility ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M555 P1<br />
<br />
For firmware that can do it, sets the firmware to a mode where its input and (especially) output behaves exactly like other established firmware. The value of the P argument is:<br />
<br />
{| class="wikitable"<br />
|P value || Firmware <br />
|-<br />
|0 || Native (i.e. whatever the firmware actually is)<br />
|-<br />
| 1 || [[RepRap_Firmware]]<br />
|-<br />
| 2 || [[Marlin]]<br />
|-<br />
| 3 || [[Teacup]]<br />
|-<br />
| 4 || [[Sprinter]]<br />
|-<br />
| 5 || [[Repetier]]<br />
|}<br />
<br />
==== M556: Axis compensation ====<br />
[[File:CalibrationAngle.png|thumb|Imaging denoting how to determine the S parameter for Gcode M556]]<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M556 S100 X0.7 Y-0.2 Z0.6<br />
<br />
Though with care and adjustment a RepRap can be set up with its axes at right-angles to each other within the accuracy of the machine, who wants to bother with care and adjustment when the problem<br />
can be solved by software? This tells software the tangents of the angles between the axes of the machine obtained by printing then measuring a test part. The S parameter (100 here) is the length of a triangle along each axis in mm. The X, Y and Z figures are the number of millimeters of the short side of the triangle that represents how out of true a pair of axes is. The X figure is the error between X and Y, the Y figure is the error between Y and Z, and the Z figure is the error between X and Z. Positive values indicate that the angle between the axis pair is obtuse, negative acute.<br />
<br />
==== M557: Set Z probe point ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M557 P1 X30 Y40.5<br />
<br />
Set the points at which the bed will be probed to compensate for its plane being slightly out of horizontal. The P value is the index of the point (indices start at 0) and the X and Y values are the position to move extruder 0 to to probe the bed. An implementation should allow a minimum of three points (P0, P1 and P2). This just records the point coordinates; it does not actually do the probing. See [[G-code#G32:_Probe_Z_and_calculate_Z_plane|G32]].<br />
<br />
==== M558: Set Z probe type ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M558 P0 X1 Y0 Z1<br />
<br />
A Z probe may be a switch, an IR proximity sensor, or some other device. This selects which to use. P0 indicates that no Z probe is present. P1 gives an unmodulated IR probe, or any other probe type that emulates an unmodulated IR probe (probe output is an analog signal that rises with decreasing nozzle height above the bed). If there is a control signal to the probe, it is driven high when the probe type is P1. P2 specifies a modulated IR probe, where the modulation is commanded directly by the main board firmware using the control signal to the probe. P3 selects an alternative Z probe by driving the control signal to the probe low. P4 selects a switch (on the Duet, this must be connected to the E0 endstop pins).<br />
<br />
The X, Y and Z parameters specify whether each axis uses the Z probe for homing or not. If the parameter is nonzero, the Z probe is used for homing that axis. if the parameter is zero, the endstop switch for that axis is used for homing instead. See also G31 and G32.<br />
<br />
Duet-dc42 and zpl-dc42 firmware support an additional R parameter, which specifies the modulation channel. Channel 0 (the default) uses the standard Z probe modulation pin on the Duet 0.6. Channel 1 selects the alternative Z probe modulation pin on the Duet 0.7.<br />
<br />
Duet-dc42 firmware versions 1.00e onwards supports additional parameter H. This specifies the dive height from which probing is done in response to a G30 command when the P parameter is present, or a G32 command.<br />
<br />
==== M559: Upload configuration file ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M559<br />
<br />
If the RepRap supports it, this uploads a file that is run on re-boot to configure the machine. This file usually is a special G Code file. After sending M559, the file should be sent, ending with an M29 (q.v.).<br />
<br />
==== M560: Upload web page file ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M560<br />
<br />
For RepRaps that have web support and that can be driven by a web browser, this uploads the file that is the control page for the RepRap. After sending M560 the file (usually an HTML file) should be sent, terminated by the string <pre><!-- **EoF** --></pre>. Clearly that string cannot exist in the body of the file, but can be put on the end to facilitate this process. This should not be too serious a restriction...<br />
<br />
<br />
==== M561: Set Identity Transform ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M561<br />
<br />
This cancels any bed-plane fitting as the result of probing (or anything else) and returns the machine to moving in the user's coordinate system.<br />
<br />
==== M562: Reset temperature fault ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M562 P2<br />
<br />
Reset a temperature fault on heater/sensor 2. If the RepRap has switched off and locked a heater because it has detected a fault, this will reset the fault condition and allow you to use the heater again. Obviously to be used with caution. If the fault persists it will lock out again after you have issued this command. P0 is the bed; P1 the first extruder, and so on.<br />
<br />
==== M563: Define or remove a tool ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M563 P3 D0:5:6 H1:3<br />
<br />
Tools are usually (though not necessarily) extruders. The P field specifies the tool number. Tool numbers can have any positive integer value and 0. The D field specifies the drive(s) used by the tool - in this case drives 0, 5 and 6. Drive 0 is the first drive in the machine after the movement drives (usually X, Y and Z). If there is no D field the tool has no drives. The H field specifies the tool's heaters - in this case heaters 1 and 3. Heater 0 is usually the hot bed (if any) so the first extruder heater is usually 1. If there is no H field the tool has no heaters.<br />
<br />
Tools are driven using multiple values in the E field of G1 commands, each controlling the corresponding drive in the D field above, as follows:<br />
<br />
<pre><br />
G1 X90.6 Y13.8 E2.24:2.24:15.89<br />
G1 X70.6 E0:0:42.4<br />
</pre><br />
<br />
The first line moves straight to the point (90.6, 13.8) extruding a total of 2.24mm of filament from both drives 0 and 5 and 15.98mm of filament from drive 6. <br />
<br />
The second line moves back 20mm in X extruding 42.4mm of filament from drive 6.<br />
<br />
Normally an M563 command is immediately followed by a G10 command to set the tool's offsets and temperatures.<br />
<br />
It is permissible for different tools to share some (or all) of their drives and heaters. So, for example, you can define two tools with identical hardware, but that just operate at different temperatures.<br />
<br />
If you use the M563 command with a P value for a tool that has already been defined, that tool is redefined using the new values you provide.<br />
<br />
Duet-dc42 firmware supports an additional form of the M563 command. The command:<br />
<br />
<pre><br />
M563 S1<br />
</pre><br />
<br />
means add 1 (the value of the S parameter) to all tool numbers found in the remainder of the current input stream (e.g. the current file if the command is read from a file on the SD card), or until a new M563 command of this form is executed. The purpose of this is to provide compatibility between the Duet firmware, in which tool numbers typically start at 1, and programs such as slic3r that assume tools are numbered from zero.<br />
<br />
Duet-zpl firmware allows the deletion of existing tools if M563 is called in this way:<br />
<br />
<pre><br />
M563 P1 D-1 H-1<br />
</pre><br />
<br />
==== M564: Limit axes ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M564 S0<br />
<br />
Allow moves outside the print volume, or not. If the S parameter is 0, then you can send G codes to drive the RepRap outside its normal working volume, and it will attempt to do so. User beware... If you set the S parameter to 1 then the RepRap will not think outside the box. The default behaviour is S = 1.<br />
<br />
==== M565: Set Z probe offset ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware= {{no}}: See G31 | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M565 X3 Y4.5 Z-2.37<br />
<br />
Set the offset from the extruder tip to the probe position. The X, Y and Z values are the delta between the extruder and the actual trigger position of the probe. If the probe trigger point is below the extruder (typical) the Z offset will be negative. This just records the point offset; it does not actually do the probing. See G32.<br />
<br />
==== M566: Set allowable instantaneous speed change ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M566 X20 Y20 Z2 E10<br />
<br />
Work around an algorithm limitation of some firmwares, which can't calculate step timings for a standing start. Teacup Firmware and Smoothieware don't have this limitation, so M566 is obsolete there.<br />
<br />
M566 sets the speeds in mm/minute that axes can do from a standing start. If an accelerating algorithm starts a move with a zero velocity on other firmwares and then accelerates from that, it can give problems when the zero initial velocity is used to calculate a timestep between stepper pulses at the beginning: the timestep ends up being infinite... So these systems have initial small velocities to start at. This sets them.<br />
<br />
The dc42 variant of RepRapFirmware doesn't have the limitation, but instead it uses this parameter to determine the maximum allowable speed change of each motor when cornering.<br />
<br />
==== M567: Set tool mix ratios ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M567 P2 E0.1:0.2:0.1:0.6<br />
<br />
The example sets the mix ratio for tool 2 (the P value). When mixing is then turned on (see M568), only single E values need to be sent on a G1 command (any extra E values will be ignored, but are not illegal):<br />
<br />
G1 X20 E1.3<br />
<br />
This will move to X=20 extruding a total length of filament of 1.3mm. The first drive of tool 2 will extrude 0.1*1.3mm, the second 0.2*1.3mm and so on. The ratios don't have to add up to 1.0 - the calculation done is as just described. But it is best if they do.<br />
<br />
See also M568.<br />
<br />
==== M568: Turn off/on tool mix ratios ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M568 P2 S0<br />
<br />
Turn on/off automatic mix ratios for tool 2. If the S parameter is 0 mixing is turned off; if it is non-zero it is turned on.<br />
<br />
After turning off command G1 instructions must send as many E values as the tool has drives:<br />
<br />
G1 X20 E0.2:0.4:0.166:0.3<br />
<br />
The off state is the default.<br />
<br />
==== M569: Set axis direction and enable values ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M569 P0 S1<br />
<br />
Set the control value for the drive specified by P that sends it forwards to the given value in the S field. After sending the example, sending a 1 to X (drive 0) will make it go forwards, sending a 0 will make it go backwards. Obviously to be used with extreme caution...<br />
<br />
Example: M569 P2 R0<br />
<br />
For the dcnewman branch of the RepRapFirmware, set the enable value -- logic level -- for the drive specified by P to the given value in the R field. Allowed R values are 0 or 1. With the above example, drive 2 is enabled by sending an enable value of 0. Sending an enable value of 1 will disable the drive.<br />
<br />
==== M570: Set heater timeout ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M570 S120<br />
<br />
After a heater has been switched on, wait 120 seconds for it to get close to the set temperature. If it takes longer than this, flag a heater fault.<br />
<br />
==== M571: Set output on extrude ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M571 S0.5<br />
<br />
This turns an output on whenever extrusion is being done, and turns it off when the extrusion is finished. The output could control a fan or a stirrer or anything else that needs to work just when extrusion is happening. The S parameter sets the value of the PWM to the output. 0.0 is off; 1.0 is fully on.<br />
<br />
==== M572: Set or report extruder elasticity compensation ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M572 P3 S0.06<br />
<br />
This sets the compensation time in seconds (S parameter) for Bowden extruder elasticity for the specified drive (P parameter). Supported by Duet-dc42 firmware. It has an effect similar to the EXTRUDER_ADVANCE_K factor in Marlin firmware. Normally, compensation should be applied to extruder drives only (drives 3 and higher).<br />
<br />
==== M573: Report heater PWM ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M573 P1<br />
<br />
This gives a running average (usually taken over about five seconds) of the PWM to the heater specified by the P field. If you know the voltage of the supply and the resistance of the heater this allows you to work out the power going to the heater.<br />
<br />
==== M574: Set endstop configuration ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M574 X1 Y2 Z0 S1<br />
<br />
This defines the type of endstop switch or opto sensor that the printer has for each axis: 0 = none, 1 = low end, 2 = high end. The optional S parameter defines whether the endstop input is active high (S1, the default) or low (S0). Intended for use with boards that provide a single endstop input for each axis that may be used for either a high or a low end endstop, such as the Duet. Supported by Duet-dc42 firmware. On delta printers, the XYZ parameters refer to the towers and the endstops should normally all be high end.<br />
<br />
==== M575: Set serial comms parameters ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M575 P1 B57600 S1<br />
<br />
This sets the communications parameters of the serial comms channel specified by the P parameter. P0 specifies the main serial interface (typically a USB port, or serial-over-USB), while P1 specifies an auxiliary serial port (for example, the port used to connect a PanelDue). The B parameter is the required baud rate (this parameter is typically ignored if the port is a true USB port). The S parameter is a bitmap of features. The lowest bit, if set, specifies that only commands that include a valid checksum should be accepted from this comms channel.<br />
<br />
==== M576: Set axis/extruder drive mapping ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|not yet}} | bfb={{no}} | machinekit={{no}} | makerbot={{no}} }}<br />
<br />
Example: M576 X0 Y1 Z2:3 A4 E5:6:7<br />
<br />
This maps each letter to the specified drive number(s). In this example the Z axis configuration consists of two motors that need to be controlled simultaneously. An extra axis 'A' is also defined for cusstom purposes (rotary nozzle, cutter tool etc.) while the remaining axes are mapped to extruder drives.<br />
<br />
==== M577: Wait until endstop is triggered ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|Duet-zpl}} | bfb={{no}} | machinekit={{no}} | makerbot={{no}} }}<br />
<br />
Example: M577 E0 S1<br />
<br />
Wait for an endstop switch to be pressed. The example above will wait until the first extruder endstop is triggered.<br />
<br />
The following trigger types may be used using the 'S' parameter:<br />
<br />
0: Endstop not hit<br />
1: Low endstop hit<br />
2: High endstop hit<br />
3: Near endstop (only Z probe)<br />
<br />
==== M578: Fire inkjet bits ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} | makerbot={{no}} }}<br />
<br />
Example: M578 P3 S5<br />
<br />
This fires inkjet head 3 (the P field) using the bit pattern specified by the S field. The example shown would fire bits 101. If the P parameter is ommitted inkjet 0 is assumed.<br />
<br />
This is a version of the M700 command used by the [[Inkshield]], but unfortunately M700 is already taken so cannot be used for that in the standard.<br />
<br />
==== M600: Set line cross section ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | bfb={{no}} | machinekit={{yes}} }}<br />
<br />
Example: M600 P0.061 <br />
<br />
Sets the cross section for a line to extrude in velocity extrusion mode. When the extruder is enabled and movement is executed the amount of extruded filament will be calculated to match the specified line cross section.<br />
<br />
==== M600: Filament change pause ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M600<br />
<br />
Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal].<br />
<br />
==== M605: Set dual x-carriage movement mode ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M605 S1<br />
<br />
Sets the dual x-carriage movement mode: S<mode> [ X<duplication x-offset> R<duplication temp offset> ].<br />
<br />
M605 S0: Full control mode. The slicer has full control over x-carriage movement<br />
M605 S1: Auto-park mode. The inactive head will auto park/unpark without slicer involvement<br />
M605 S2 [Xnnn] [Rmmm]: Duplication mode. The second extruder will duplicate the first with nnn millimeters x-offset and an optional differential hotend temperature of mmm degrees. E.g., with "M605 S2 X100 R2" the second extruder will duplicate the first with a spacing of 100mm in the x direction and 2 degrees hotter.<br />
<br />
==== M665: Set delta configuration ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M665 L250 R160 S200 (Marlin), M665 L250 R160 B80 H240 X0 Y0 Z0 (RepRapFirmware-dc42)<br />
<br />
Set the delta calibration variables. L = diagonal rod length, R = delta radius. For Marlin: S = segments per second. For RepRapFirmware-dc42: B = safe printing radius, H = nozzle height above bed when homed after allowing for the endstop corrections; X, Y, Z = X, Y and Z tower angular offsets from the ideal (i.e.equilateral triangle) positions, in degrees, measured anti-clockwise looking down on the printer.<br />
<br />
: I don't think it's a good idea to have two different implementations for the same G-code, and I also question the practical value of specifying the print bed radius when defining a delta configuration, since many delta printers use a square or rectangular print bed. So perhaps we should stick to the Marlin-defined command as the definition for this command, and use a different command or set of commands to define print bed shape and size. --[[User:AndrewBCN|AndrewBCN]] ([[User talk:AndrewBCN|talk]]) 23:10, 31 January 2015 (PST)<br />
<br />
: The implementations are not different, they have the same L and R parameters, but each has additional parameters that are not relevant to the other implementation. I'm not against defining a new Gcode to define bed size and shape; however, you can already define the limits of a rectangular print area using M208. Even when a delta printer has a square bed, the printable area is not square. It is usually taken to be circular, although it is in reality more complicated. My purpose in adding the B parameter was to make it easy to define a radius outside which movement will not normally be attempted. I have changed "bed radius" to "safe printing radius" in the text to help clarify this. --[[User:dc42|dc42]]<br />
<br />
==== M666: Set delta endstop adjustment ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example M666 X-0.1 Y+0.2 Z0<br />
<br />
Sets delta endstops adjustments.<br />
<br />
==== M667: Select CoreXY mode ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | reprapfirmware={{partial|dc42}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
M667 S0 selects Cartesian mode (unless the printer is configured as a delta using the M665 command). Forward motion of the X motor moves the head in the +X direction. Similarly for the Y motor and Y axis, and the Z motor and Z axis. This is the default state of the firmware on power up.<br />
<br />
M667 S1 selects CoreXY mode. Forward movement of the X motor moves the head in the +X and +Y directions. Forward movement of the Y motor moves the head in the -X and +Y directions.<br />
<br />
M667 S2 selects CoreXZ mode. Forward movement of the X motor moves the head in the +X and +Z directions. Forward movement of the Z motor moves the head in the -X and +Z directions.<br />
<br />
M667 S3 selects CoreYZ mode. Forward movement of the Y motor moves the head in the +Y and +Z directions. Forward movement of the Z motor moves the head in the -Y and +Z directions.<br />
<br />
==== M700: Level plate ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{partial|bq}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
<sup>1</sup> only in bq-Marlin Firmware<br />
<br />
Example: M700<br />
<br />
Script to adjust the plate level.<br />
<br />
==== M701: Load filament ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{partial|bq}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
<sup>1</sup> only in bq-Marlin Firmware<br />
<br />
Example: M701<br />
<br />
==== M702: Unload filament====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{partial|bq}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
<sup>1</sup> only in bq-Marlin Firmware<br />
<br />
Example: M702<br />
<br />
==== M906: Set motor currents ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie=M907? | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M906 X300 Y500 Z200 E350<br />
<br />
Sets the currents to send to the stepper motors for each axis. The values are in milliamps.<br />
<br />
The dc42 fork of RepRapFirmware supports an additional I parameter. This is the percentage of normal that the motor currents should be reduced to when the printer becomes idle but the motors have not been switched off.<br />
<br />
==== M907: Set digital trimpot motor ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Set digital trimpot motor current using axis codes (X, Y, Z, E, B, S).<br />
<br />
==== M908: Control digital trimpot directly ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}}: 0.92 | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
M908 P<pin> S<current><br />
<br />
==== M909: Set microstepping ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M909 X3 Y5 Z2 E3<br />
<br />
Set the microstepping value for each of the steppers. <br />
In [[Redeem]] this is implemented as 2^value, so <br><br />
M909 X2 sets microstepping on X-axis to 2^2 = 4, <BR><br />
M909 Y3 sets microstepping on Y-axis to 2^3 = 8 etc.<br />
<br />
==== M928: Start SD logging ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M928 filename.g<br />
<br />
Ended by M29.<br />
<br />
==== M998: Request resend of line ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{no}} | repetier={{no}} | smoothie={{no}} | bfb={{no}} | machinekit={{no}} | reprapfirmware={{yes}} }}<br />
<br />
Example: M998 P34<br />
<br />
Request a resend of line 34. In some implementations the input-handling code overwrites the incoming G Code with this when it detects, for example, a checksum error.<br />
Then it leaves it up to the GCode interpreter actually to request the resend.<br />
<br />
==== M999: Restart after being stopped by error ====<br />
<br />
{{firmware Support | fived={{no}} | teacup={{no}} | sprinter={{no}} | marlin={{yes}} | repetier={{no}} | smoothie={{yes}} | reprapfirmware={{yes}} | bfb={{no}} | machinekit={{no}} }}<br />
<br />
Example: M999<br />
<br />
The dc42 fork of RepRapFirmware not only resets the board but also puts the board into firmware upload mode if parameter PERASE is present.<br />
<br />
== Other commands ==<br />
<br />
==== G: List all G-codes ====<br />
<br />
{{firmware Support | }}<br />
<br />
Example: G<br />
<br />
This lists all implemeted G-codes in the firmware with description and sends it back to the host.<br><br />
(Note: this has been implemented in [[Redeem]], and so is only a proposition)<br />
<br />
==== M: List all M-codes ====<br />
<br />
{{firmware Support | }}<br />
<br />
Example: M<br />
<br />
This lists all implemeted M-codes in the firmware with description and sends it back to the host.<br><br />
(Note: this has been implemented in [[Redeem]], and so is only a proposition)<br />
<br />
==== T: Select Tool ====<br />
<br />
{{firmware Support | fived={{yes}} | teacup={{yes}} | sprinter={{no}} | marlin={{yes}} | repetier={{yes}} | smoothie={{yes}} | reprapfirmware={{yes}} }}<br />
<br />
Example: T1<br />
<br />
Select tool (or in older implementations extruder) number 1 to build with. <br />
<br />
The sequence followed is:<br />
<br />
# Set the current tool to its standby temperatures specified by G10 (see above),<br />
# Set the new tool to its operating temperatures specified by G10 and wait for '''all''' temperatures to stabilise,<br />
# Apply any X, Y, Z offset for the new tool specified by G10,<br />
# Use the new tool.<br />
<br />
Selecting a non-existent tool (100, say) just does Step 1. above. That is to say it leaves all tools in their standby state. You can, of course, use the G10 command beforehand to set that standby temperature to anything you like.<br />
<br />
Note that you may wish to move to a parking position ''before'' executing a T command in order to allow the new extruder to reach temperature while not in contact with the print. It is acceptable for the firmware to apply a small offset [by convention (-1mm x tool-number) in Y] to the current position when the above sequence is entered to allow temperature changes to take effect just away from the parking position. Any such offset must, of course, be undone when the procedure finishes.<br />
<br />
If the Z value changes in the offsets and the tool moves up, then the Z move is made before the X and Y moves. If Z moves down, X and Y are done first.<br />
<br />
Some implementations (e.g. RepRapFirmware) allow you to specify tool-change G Code macros. There are normally three specified (any of which can contain no commands if desired) that execute in this order:<br />
<br />
# Actions to do with the old tool before it is released - macro name: '''tfreeN.g''' where N is the tool number;<br />
# (Old tool is released);<br />
# Actions to do with the new tool before it is selected - macro name: '''tpreN.g''' where N is the tool number; <br />
# (New tool is selected); and<br />
# Actions to do with the new tool after it is selected - macro name: '''tpostN.g''' where N is the tool number.<br />
<br />
With such implementations there is no wait for temperature stabilisation. That can be achieved by an M116 in any of the macros, of course. <br />
<br />
After a reset tools will not start heating until they are selected. You can either put them all at their standby temperature by selecting them in turn, or leave them off so they only come on if/when you first use them. The M0, M1 and M112 commands turn them all off. You can, of course, turn them all off with the M1 command, then turn some back on again. Don't forget also to turn on the heated bed (if any) if you use that trick.<br />
<br />
Tool numbering may start at 0 or 1, depending on the implementation. Some implementations (those that use the M563 command to define tools) allow the user to specify tool numbers, so with them you can have tools 17, 99 and 203 if you want. Negative numbers are not allowed.<br />
<br />
== Proposed EEPROM configuration codes ==<br />
<br />
BRIEFLY: each RepRap has a number of physical parameters that should be persistent, but easily configurable, such as extrusion steps/mm, various max values, etc. Those parameters are currently hardcoded in the firmware, so that a user has to modify, recompile and re-flash the firmware for any adjustments. These configs can be stored in MCU's EEPROM and modified via some M-codes. Please see the detailed proposal at [[M-codes for EEPROM config]]. (''This is proposed by --[[User:AlexRa|AlexRa]] on 11-March-2011. There is currently no working implementation of the proposed commands'').<br />
<br />
[[Marlin]] uses codes M500-M503 to manipulate EEPROM values.<br />
<br />
[[Sprinter]] has implemented the following commands to manipulate EEPROM [https://github.com/kliment/Sprinter/commit/4b1b0f1d96d2be2ed3941095f40a5c2d2bbb943d Commit message].<br />
<br />
[[Teacup]] uses codes M130-M136 to set, read, and save some parameters.<br />
<br />
== Replies from the RepRap machine to the host computer ==<br />
<br />
All communication is in printable ASCII characters. Messages sent back<br />
to the host computer are terminated by a newline and look like this:<br />
<br />
'''xx [line number to resend] [T:93.2 B:22.9] [C: X:9.2 Y:125.4 Z:3.7 E:1902.5] [Some debugging or other information may be here]'''<br />
<br />
'''xx''' can be one of:<br />
<br />
'''ok'''<br />
<br />
'''rs'''<br />
<br />
'''<nowiki>!!</nowiki>'''<br />
<br />
'''ok''' means that no error has been detected.<br />
<br />
'''rs''' means resend, and is followed by the line number to resend.<br />
<br />
'''<nowiki>!!</nowiki>''' means that a hardware fault has been detected. The RepRap machine will<br />
shut down immediately after it has sent this message.<br />
<br />
The '''T:''' and '''B:''' values are the temperature of the currently-selected extruder <br />
and the bed respectively, and are only sent in response to M105. If such temperatures don't exist (for example for an extruder that works at room temperature and doesn't have a sensor) then a value below absolute zero (-273<sup>o</sup>C) is returned.<br />
<br />
'''C:''' means that coordinates follow. Those are the '''X: Y:''' etc values. These are only <br />
sent in response to M114 and M117.<br />
<br />
The RepRap machine may also send lines that look like this:<br />
<br />
'''// This is some debugging or other information on a line on its own. It may be sent at any time. '''<br />
<br />
Such lines will always be preceded by '''//'''.<br />
<br />
On the latest version of Pronterface and soon Octoprint a special comment of the form:<br />
<br />
'''// action:command'''<br />
<br />
is allowed to be sent from the firmware, the command can currently be pause, resume or disconnect which will execute those commands on the host.<br />
As this is also a comment other hosts will just ignore these commands.<br />
<br />
The most common response is simply:<br />
<br />
'''ok''' <br />
<br />
When the machine boots up it sends the string<br />
<br />
'''start'''<br />
<br />
once to the host before sending anything else. This should not be replaced or augmented<br />
by version numbers and the like. M115 (see above) requests those.<br />
<br />
All this means that every line sent by RepRap to the host computer except the start line has a two-character prefix (one of '''ok''', '''rs''', '''<nowiki>!!</nowiki>''' or '''//'''). The machine should never send a line without such a prefix.<br />
<br />
<br />
'''Exceptions''': <br />
<br />
1. Marlin 1.0.0 Gen6 Firmware does not follow the two character rule. 'rs' is actually 'Resend' and '!!' is 'Error'.<br />
Example Lines:<br />
* Error: Line Number is not current line + 1. Last Line: 7<br />
* Resend: 8<br />
* Writing to File: print.gco<br />
* Done saving file.<br />
* File opened:print.gco Size:22992<br />
* File selected<br />
<br />
When in the code base did this change take place and what other firmwares are affected?<br />
<br />
2. The dc42 fork of RepRapFirmware responds to some commands with a reply string in JSON format, terminated by a newline. This allows later firmware revisions to include additional information without confusing clients (e.g. PanelDue) that do not expect it, and to make responses self-describing so that the client will not be confused if responses are delayed or lost. The commands affected are:<br />
* M105 S2<br />
* M105 S3<br />
* M20 S2<br />
* M36<br />
* M408<br />
<br />
== Proposal for sending multiple lines of G-code ==<br />
<br />
So far, this is a proposal, open for discussion.<br />
<br />
==== Problem to solve ====<br />
<br />
When using Marlin firmware or emulating Marlin, each line of G-code sent from the host to the controller is answered with an '''ok''' before the next line can be sent without locking communications up. This slows down communication and limits the number of commands that can be sent per second to the printer controller, as the USB stack on the host and the serial interface driver on the Arduino add their own latencies (up to 10&nbsp;milliseconds). This is not a problem for other controller electronics using native USB such as the Duet, because the standard serial-over-USB drivers provide flow control, so the host software can be configured so as not to wait for the '''ok'''.<br />
<br />
For more details on this proposal, some suggested solutions and comments, please see [[GCODE_buffer_multiline_proposal]]<br />
<br />
== Alternatives to G-code ==<br />
: ''Main article: [[Firmware/Alternative#alternatives to G-code]]''<br />
<br />
Several people have suggested using STEP-NC or some other control language;<br />
or perhaps designing a completely new control language.<br />
<br />
[[Category:Firmware]]<br />
[[Category:Software]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Vertical_X_Axis_Standard&diff=153609Vertical X Axis Standard2015-08-28T01:52:13Z<p>Eltoozero: /* Current standard-compliant projects with Vertical X Axis */</p>
<hr />
<div>This is the spot for documentation of the standard configuration for vertical <br />
X axis assemblies. The original discussion about why we want such a thing is [http://forums.reprap.org/read.php?2,95828 here]. If you are a designer of an extruder, X carriage, X axis assembly, or whole bot that works with this standard, consider yourself and editor of this page. <br />
<br />
!! There is a contest going on for those wishing to port existing designs or design new parts that fit the standard!!<br />
[[Vertical_X_Axis_Standard_Contest]]<br />
<br />
== Benefits ==<br />
<br />
Benefits of a vertical X axis assembly on Mendel style bots include<br />
<br />
1. A vertical x-axis should make head changes and hotend designs easier because the head can slide out unobstructed.<br />
<br />
2. Should use less plastic (print faster) than a horizontal X axis assembly.<br />
<br />
3. Should be stiffer than horizontal X axis configurations given the same amount of plastic. <br />
<br />
4. Naturally lends itself to integrated X carriage/extruder designs as they are now both in the same plane. <br />
<br />
5. ? :)<br />
<br />
<br />
<br />
== The Standard ==<br />
<br />
The currently agreed upon standard is to space the two X smooth rods 70 mm center to center and the Z smooth and threaded rod 30 mm center to center. A diagram below explains the basic constraints. The Z rod spacing is identical to the Prusa and Mendel, so it is likely that X axis assemblies that conform to this standard could be used as replacements in those bots as well. <br />
<br />
[[File:Vertical_X-Axis_standards.jpg|800px]]<br />
<br />
<br />
== Current standard-compliant projects with Vertical X Axis ==<br />
<br />
Feel free to add your project here if you have a design that is or will soon be compliant.<br />
<br />
*[[X-carriage-struder]] An X axis and integrated carriage/extruder design. To be compatible with Prusa, Mendel, and Orca.<br />
*[[Test_Tube_Mendel]] A minimalist version of the Prusa that eliminates printed vertices using fender washers.<br />
*[[Action68%27s_vertical_x_axis_reprap]] A currently conceptual bot with a vertical X axis<br />
*[http://www.thingiverse.com/thing:11535 PCB Mill mount for Vertical X axis by droftarts]<br />
*[[Vertical_x_for_Prusa_by_North90ty]] A complete and very easy to build design for a vertical x-axis<br />
*[http://www.thingiverse.com/thing:15132 Vert-X-Belt-Truder] Early concept of a vertical x-carriage with belt-driven extruder (no stepper motor on the carriage).<br />
*[[3DPrintMi]] Open frame style Reprap<br />
*[http://www.thingiverse.com/thing:210915 Prism Vertical X axis]<br />
*[[Rusty-Vertical-X]] Another Vertical X carriage, GPL, Circa Oct 2012 [http://www.thingiverse.com/thing:12434 Thingiverse Link]<br />
<br />
== Other projects with Vertical X Axis ==<br />
<br />
The following projects are not necessarily compliant with this standard. They may choose to work with the standard or not as they see fit. <br />
<br />
*[[Mixtape_mendel]] A Prusa style bot designed to be fully parametric.<br />
*[[1X2]] A Prusa style bot made from standardized blocks of wood. Easily built with hand tools.<br />
*[[RepRapPro_Tricolour]] A Prusa Mendel variant. Design was updated circa March 2013 to include a vertical X axis. Uses 40mm X rod spacing.<br />
*[[EMAKER_Huxley]] A smaller bot, sort of a mixture of the original Huxley, and the Prusa.<br />
*[http://reprap.org/wiki/Gen_X Gen X Skb-Kiparis remix] Based on Mendel. With original idea of vertical x axis and vertical extruder combined with x carriage.<br />
*[[Doboz]]<br />
*[[Wallace]] ~ Parametric: X spacing is set in the scad file by the variable 'x_rod_spacing', default 30. Z spacing is set by a combination of yz_motor_distance, motor_casing, and the rod size, default of (yz_motor_distance+motor_casing)/2+rod_size for a NEMA14/6mm setup is (25+38)/2+6=37.5 <br />
*[[SibRap]] Russian printer, have 55 mm vertical distance.<br />
<br />
[[Category:RepRap machines]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Vertical_X_Axis_Standard&diff=153608Vertical X Axis Standard2015-08-28T01:47:47Z<p>Eltoozero: /* Other projects with Vertical X Axis */</p>
<hr />
<div>This is the spot for documentation of the standard configuration for vertical <br />
X axis assemblies. The original discussion about why we want such a thing is [http://forums.reprap.org/read.php?2,95828 here]. If you are a designer of an extruder, X carriage, X axis assembly, or whole bot that works with this standard, consider yourself and editor of this page. <br />
<br />
!! There is a contest going on for those wishing to port existing designs or design new parts that fit the standard!!<br />
[[Vertical_X_Axis_Standard_Contest]]<br />
<br />
== Benefits ==<br />
<br />
Benefits of a vertical X axis assembly on Mendel style bots include<br />
<br />
1. A vertical x-axis should make head changes and hotend designs easier because the head can slide out unobstructed.<br />
<br />
2. Should use less plastic (print faster) than a horizontal X axis assembly.<br />
<br />
3. Should be stiffer than horizontal X axis configurations given the same amount of plastic. <br />
<br />
4. Naturally lends itself to integrated X carriage/extruder designs as they are now both in the same plane. <br />
<br />
5. ? :)<br />
<br />
<br />
<br />
== The Standard ==<br />
<br />
The currently agreed upon standard is to space the two X smooth rods 70 mm center to center and the Z smooth and threaded rod 30 mm center to center. A diagram below explains the basic constraints. The Z rod spacing is identical to the Prusa and Mendel, so it is likely that X axis assemblies that conform to this standard could be used as replacements in those bots as well. <br />
<br />
[[File:Vertical_X-Axis_standards.jpg|800px]]<br />
<br />
<br />
== Current standard-compliant projects with Vertical X Axis ==<br />
<br />
Feel free to add your project here if you have a design that is or will soon be compliant.<br />
<br />
*[[X-carriage-struder]] An X axis and integrated carriage/extruder design. To be compatible with Prusa, Mendel, and Orca.<br />
*[[Test_Tube_Mendel]] A minimalist version of the Prusa that eliminates printed vertices using fender washers.<br />
*[[Action68%27s_vertical_x_axis_reprap]] A currently conceptual bot with a vertical X axis<br />
*[http://www.thingiverse.com/thing:11535 PCB Mill mount for Vertical X axis by droftarts]<br />
*[[Vertical_x_for_Prusa_by_North90ty]] A complete and very easy to build design for a vertical x-axis<br />
*[http://www.thingiverse.com/thing:15132 Vert-X-Belt-Truder] Early concept of a vertical x-carriage with belt-driven extruder (no stepper motor on the carriage).<br />
*[[3DPrintMi]] Open frame style Reprap<br />
*[http://www.thingiverse.com/thing:210915 Prism Vertical X axis]<br />
== Other projects with Vertical X Axis ==<br />
<br />
The following projects are not necessarily compliant with this standard. They may choose to work with the standard or not as they see fit. <br />
<br />
*[[Mixtape_mendel]] A Prusa style bot designed to be fully parametric.<br />
*[[1X2]] A Prusa style bot made from standardized blocks of wood. Easily built with hand tools.<br />
*[[RepRapPro_Tricolour]] A Prusa Mendel variant. Design was updated circa March 2013 to include a vertical X axis. Uses 40mm X rod spacing.<br />
*[[EMAKER_Huxley]] A smaller bot, sort of a mixture of the original Huxley, and the Prusa.<br />
*[http://reprap.org/wiki/Gen_X Gen X Skb-Kiparis remix] Based on Mendel. With original idea of vertical x axis and vertical extruder combined with x carriage.<br />
*[[Doboz]]<br />
*[[Wallace]] ~ Parametric: X spacing is set in the scad file by the variable 'x_rod_spacing', default 30. Z spacing is set by a combination of yz_motor_distance, motor_casing, and the rod size, default of (yz_motor_distance+motor_casing)/2+rod_size for a NEMA14/6mm setup is (25+38)/2+6=37.5 <br />
*[[SibRap]] Russian printer, have 55 mm vertical distance.<br />
<br />
[[Category:RepRap machines]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Vertical_X_Axis_Standard&diff=153607Vertical X Axis Standard2015-08-28T01:37:09Z<p>Eltoozero: </p>
<hr />
<div>This is the spot for documentation of the standard configuration for vertical <br />
X axis assemblies. The original discussion about why we want such a thing is [http://forums.reprap.org/read.php?2,95828 here]. If you are a designer of an extruder, X carriage, X axis assembly, or whole bot that works with this standard, consider yourself and editor of this page. <br />
<br />
!! There is a contest going on for those wishing to port existing designs or design new parts that fit the standard!!<br />
[[Vertical_X_Axis_Standard_Contest]]<br />
<br />
== Benefits ==<br />
<br />
Benefits of a vertical X axis assembly on Mendel style bots include<br />
<br />
1. A vertical x-axis should make head changes and hotend designs easier because the head can slide out unobstructed.<br />
<br />
2. Should use less plastic (print faster) than a horizontal X axis assembly.<br />
<br />
3. Should be stiffer than horizontal X axis configurations given the same amount of plastic. <br />
<br />
4. Naturally lends itself to integrated X carriage/extruder designs as they are now both in the same plane. <br />
<br />
5. ? :)<br />
<br />
<br />
<br />
== The Standard ==<br />
<br />
The currently agreed upon standard is to space the two X smooth rods 70 mm center to center and the Z smooth and threaded rod 30 mm center to center. A diagram below explains the basic constraints. The Z rod spacing is identical to the Prusa and Mendel, so it is likely that X axis assemblies that conform to this standard could be used as replacements in those bots as well. <br />
<br />
[[File:Vertical_X-Axis_standards.jpg|800px]]<br />
<br />
<br />
== Current standard-compliant projects with Vertical X Axis ==<br />
<br />
Feel free to add your project here if you have a design that is or will soon be compliant.<br />
<br />
*[[X-carriage-struder]] An X axis and integrated carriage/extruder design. To be compatible with Prusa, Mendel, and Orca.<br />
*[[Test_Tube_Mendel]] A minimalist version of the Prusa that eliminates printed vertices using fender washers.<br />
*[[Action68%27s_vertical_x_axis_reprap]] A currently conceptual bot with a vertical X axis<br />
*[http://www.thingiverse.com/thing:11535 PCB Mill mount for Vertical X axis by droftarts]<br />
*[[Vertical_x_for_Prusa_by_North90ty]] A complete and very easy to build design for a vertical x-axis<br />
*[http://www.thingiverse.com/thing:15132 Vert-X-Belt-Truder] Early concept of a vertical x-carriage with belt-driven extruder (no stepper motor on the carriage).<br />
*[[3DPrintMi]] Open frame style Reprap<br />
*[http://www.thingiverse.com/thing:210915 Prism Vertical X axis]<br />
== Other projects with Vertical X Axis ==<br />
<br />
The following projects are not necessarily compliant with this standard. They may choose to work with the standard or not as they see fit. <br />
<br />
*[[Mixtape_mendel]] A Prusa style bot designed to be fully parametric.<br />
*[[1X2]] A Prusa style bot made from standardized blocks of wood. Easily built with hand tools.<br />
*[[RepRapPro_Tricolour]] A Prusa Mendel variant. Design was updated circa March 2013 to include a vertical X axis. Uses 40mm X rod spacing.<br />
*[[EMAKER_Huxley]] A smaller bot, sort of a mixture of the original Huxley, and the Prusa.<br />
*[http://reprap.org/wiki/Gen_X Gen X Skb-Kiparis remix] Based on Mendel. With original idea of vertical x axis and vertical extruder combined with x carriage.<br />
*[[Doboz]]<br />
*[[Wallace]] ~ Parametric: X spacing is set in the scad file by the variable 'x_rod_spacing', default 30. Z spacing is set by a combination of yz_motor_distance, motor_casing, and the rod size, default of (yz_motor_distance+motor_casing)/2+rod_size for a NEMA14/6mm setup is (25+38)/2+6=37.5 <br />
*[[SibRap]] Russian printer, have 55 mm vertical distance.<br />
*[[Rusty-Vertical-X]] Another Vertical X carriage, circa Oct 2011<br />
<br />
[[Category:RepRap machines]]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Configuring_Marlin_Bed_Dimensions&diff=153586Configuring Marlin Bed Dimensions2015-08-26T23:39:57Z<p>Eltoozero: Configure correct bed *area* in firmware, compensate with origin offset in Slicer. (Less correct)</p>
<hr />
<div>Writing this as an ammeteur RepRapper who initially struggled with getting prints on the center of the bed.<br />
<br />
There are at least 3 different ways to *accurately* get your bed dimensions configured so that your prints wind up centered on the build-plate, all solutions require at least *some* agreement between the Slicer and the Marlin Configuration.<br />
<br />
== Method 1 ==<br />
Configure proper bed offsets in Firmware, configure slicer with actual bed printable area. (Most correct)<br />
<br />
// This is the bed area set to print area including a negative offset for homing origin.<br />
// Does not require M206 and indeed required M206 to be clear.<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS -45<br />
#define Y_MAX_POS 170<br />
#define Y_MIN_POS -20<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
Slicer has correct bed *area* configured as 200,170 (I lose some Y travel because of my binder-clips)<br />
<br />
== Method 2 ==<br />
Configure correct bed *area* in firmware, compensate with M206 EEPROM. (Mostly correct)<br />
<br />
// This is the bed area set to actual print area, relying on M206 to set the offset from homing origin.<br />
// Set this way, you MUST set M206 to your desired negative X,Y offset from homing origin.<br />
// Example: M206 X-45 Y-30<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS 0<br />
#define Y_MAX_POS 175<br />
#define Y_MIN_POS 0<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
In this configuration you issue an M206 x-45 Y-30, then save it to EEPROM with M500.<br />
You can later retrieve this value with M503, but I don't like that the value isn't a "hard coded fact" in the firmware configuration.h.<br />
<br />
== Method 3 ==<br />
Configure correct bed *area* in firmware, compensate with origin offset in Slicer. (Less correct)<br />
<br />
Same Configuration.h as Method 2, however the slicer bed shape is configured with a Bed Size of 200,170 and an Origin of -45,-35.<br />
<br />
I don't like this solution as the printer itself doesn't "know" where it's own printable area is, and relies on the slicer to sort things out.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Configuring_Marlin_Bed_Dimensions&diff=153585Configuring Marlin Bed Dimensions2015-08-26T23:37:18Z<p>Eltoozero: Configure correct bed *area* in firmware, compensate offset with M206 and save to EEPROM.</p>
<hr />
<div>Writing this as an ammeteur RepRapper who initially struggled with getting prints on the center of the bed.<br />
<br />
There are at least 3 different ways to *accurately* get your bed dimensions configured so that your prints wind up centered on the build-plate, all solutions require at least *some* agreement between the Slicer and the Marlin Configuration.<br />
<br />
== Method 1 ==<br />
Configure proper bed offsets in Firmware, configure slicer with actual bed printable area. (Most correct)<br />
<br />
// This is the bed area set to print area including a negative offset for homing origin.<br />
// Does not require M206 and indeed required M206 to be clear.<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS -45<br />
#define Y_MAX_POS 170<br />
#define Y_MIN_POS -20<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
Slicer has correct bed *area* configured as 200,170 (I lose some Y travel because of my binder-clips)<br />
<br />
== Method 2 ==<br />
Configure correct bed *area* in firmware, compensate with M206 EEPROM. (Mostly correct)<br />
<br />
// This is the bed area set to actual print area, relying on M206 to set the offset from homing origin.<br />
// Set this way, you MUST set M206 to your desired negative X,Y offset from homing origin.<br />
// Example: M206 X-45 Y-30<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS 0<br />
#define Y_MAX_POS 175<br />
#define Y_MIN_POS 0<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
In this configuration you issue an M206 x-45 Y-30, then save it to EEPROM with M500.<br />
You can later retrieve this value with M503, but I don't like that the value isn't a "hard coded fact" in the firmware configuration.h.<br />
<br />
== Method 3 ==<br />
Configure correct bed *area* in firmware, compensate with origin offset in Slicer. (Less correct)<br />
<br />
Same Configuration.h as Method 2, however the slicer bed shape is configured with a Bed Size of 200,170 and an Origin of -45,-35.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Configuring_Marlin_Bed_Dimensions&diff=153584Configuring Marlin Bed Dimensions2015-08-26T23:36:09Z<p>Eltoozero: /* Method 1 */</p>
<hr />
<div>Writing this as an ammeteur RepRapper who initially struggled with getting prints on the center of the bed.<br />
<br />
There are at least 3 different ways to *accurately* get your bed dimensions configured so that your prints wind up centered on the build-plate, all solutions require at least *some* agreement between the Slicer and the Marlin Configuration.<br />
<br />
== Method 1 ==<br />
Configure proper bed offsets in Firmware, configure slicer with actual bed printable area. (Most correct)<br />
<br />
// This is the bed area set to print area including a negative offset for homing origin.<br />
// Does not require M206 and indeed required M206 to be clear.<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS -45<br />
#define Y_MAX_POS 170<br />
#define Y_MIN_POS -20<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
Slicer has correct bed *area* configured as 200,170 (I lose some Y travel because of my binder-clips)<br />
<br />
== Method 2 ==<br />
Configure correct bed *area* in firmware, compensate with M206 EEPROM. (Mostly correct)<br />
<br />
// This is the bed area set to actual print area, relying on M206 to set the offset from homing origin.<br />
// Set this way, you MUST set M206 to your desired negative X,Y offset from homing origin.<br />
// Example: M206 X-45 Y-30<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS 0<br />
#define Y_MAX_POS 175<br />
#define Y_MIN_POS 0<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
In this configuration you issue an M206 x-45 Y-30, then save it to EEPROM with M500.<br />
You can later retrieve this value with M503, but I don't like that the value isn't a "hard coded fact" in the firmware configuration.h.<br />
<br />
<br />
== Method 3 ==<br />
Configure correct bed *area* in firmware, compensate with origin offset in Slicer. (Less correct)<br />
<br />
Same Configuration.h as Method 2, however the slicer bed shape is configured with a Bed Size of 200,170 and an Origin of -45,-35.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Configuring_Marlin_Bed_Dimensions&diff=153583Configuring Marlin Bed Dimensions2015-08-26T23:23:45Z<p>Eltoozero: Created page with "Writing this as an ammeteur RepRapper who initially struggled with getting prints on the center of the bed. There are at least 3 different ways to *accurately* get your bed d..."</p>
<hr />
<div>Writing this as an ammeteur RepRapper who initially struggled with getting prints on the center of the bed.<br />
<br />
There are at least 3 different ways to *accurately* get your bed dimensions configured so that your prints wind up centered on the build-plate, all solutions require at least *some* agreement between the Slicer and the Marlin Configuration.<br />
<br />
== Method 1 ==<br />
Configure proper bed offsets in Firmware, configure slicer with actual bed printable area. (Most correct)<br />
<br />
// This is the bed area set to print area including a negative offset for homing origin.<br />
// Does not require M206 and indeed required M206 to be clear.<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS -45<br />
#define Y_MAX_POS 170<br />
#define Y_MIN_POS -20<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
Slicer has bed configured as 200,170 (I lose some Y travel because of my binder-clips)<br />
<br />
== Method 2 ==<br />
Configure correct bed *area* in firmware, compensate with M206 EEPROM. (Mostly correct)<br />
<br />
// This is the bed area set to actual print area, relying on M206 to set the offset from homing origin.<br />
// Set this way, you MUST set M206 to your desired negative X,Y offset from homing origin.<br />
// Example: M206 X-45 Y-30<br />
#define X_MAX_POS 200<br />
#define X_MIN_POS 0<br />
#define Y_MAX_POS 175<br />
#define Y_MIN_POS 0<br />
#define Z_MAX_POS 130<br />
#define Z_MIN_POS 0<br />
<br />
In this configuration you issue an M206 x-45 Y-30, then save it to EEPROM with M500.<br />
You can later retrieve this value with M503, but I don't like that the value isn't a "hard coded fact" in the firmware configuration.h.<br />
<br />
<br />
== Method 3 ==<br />
Configure correct bed *area* in firmware, compensate with origin offset in Slicer. (Less correct)<br />
<br />
Same Configuration.h as Method 2, however the slicer bed shape is configured with a Bed Size of 200,170 and an Origin of -45,-35.</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Marlin&diff=153582Marlin2015-08-26T23:09:18Z<p>Eltoozero: /* Configuring and compilation */</p>
<hr />
<div>{{Languages|Marlin}}<br />
<br />
{{Development<br />
<!--Header--><br />
|name = Sprinter<br />
|status = working<br />
<!--Image--><br />
|image=Marlin_Logo.png<br />
<!--General--><br />
|description = a firmware for Arduino compatible setups<br />
|license = GNU GPL v3<br />
|author = EvdZ<br />
|reprap = Sprinter<br />
|categories = Marlin, {{tag|Firmware}}, {{tag|Firmware development}}<br />
|url = [https://github.com/MarlinFirmware/Marlin GitHub]<br />
}}<br />
<br />
[[Category:Marlin| ]]<br />
<br />
''The leading developers of Marlin are currently (January 2015) EvdZ and bkubicek, though many others contribute with their patches. This is a firmware for reprap single-processor electronics setups. It also works on the Ultimaker PCB. It supports printing from SD card+Folders, and look-ahead trajectory planning. This work is licensed under the GNU GPL v3 or (at the user's discretion) any later version. It is based on [[Sprinter]] firmware, which was licensed under GPL v2 or later.''<br />
<br />
Current Version: [https://github.com/MarlinFirmware/Marlin/tags 1.0.2]: <br />
<br />
See [https://github.com/MarlinFirmware/Marlin Marlin] on Github.<br />
<br />
Works on [[RAMPS 1.4]], [[Rumba]], [[Ultimaker]], [[Sanguinololu]], [[Generation_6_Electronics]], and probably other controllers based on AVR 8-bit MCUs. The list is in the file "Boards.h".<br />
<br />
<br />
== Quick Information ==<br />
<br />
This RepRap firmware is a mashup between Sprinter, Grbl and many original parts.<br />
<br />
Derived from [[Sprinter]] and [[Grbl]] by Erik van der Zalm. Sprinter's lead developers are Kliment and caru. Grbl's lead developer is Simen Svale Skogsrud. Sonney Jeon (Chamnit) improved some parts of Grbl. A fork by bkubicek for the Ultimaker was merged, and further development was aided by him. Some features have been added by: Lampmaker, Bradley Feldman, and others...<br />
<br />
'''Features:'''<br />
<br />
* Interrupt based movement with real linear acceleration.<br />
* High steprate.<br />
* Look ahead (Keep the speed high when possible. High cornering speed).<br />
* Interrupt based temperature protection.<br />
* preliminary support for Matthew Roberts advance algorithm For more info see: http://reprap.org/pipermail/reprap-dev/2011-May/003323.html.<br />
* Full endstop support.<br />
* SD Card support.<br />
* SD Card folders (works in Pronterface).<br />
* LCD support (ideally 20x4 or 128x64).<br />
* LCD menu system for autonomous SD card printing, controlled by an click-encoder.<br />
* EEPROM storage of e.g. max-velocity, max-acceleration, and similar variables.<br />
* many small but handy things originating from bkubicek's fork.<br />
* Arc support.<br />
* Temperature oversampling.<br />
* Dynamic Temperature setpointing aka "AutoTemp".<br />
* Support for QTMarlin, a very beta GUI for PID-tuning and velocity-acceleration testing. https://github.com/bkubicek/QTMarlin<br />
* Endstop trigger reporting to the host software.<br />
* Updated sdcardlib.<br />
* Heater power reporting. Useful for PID monitoring.<br />
* CoreXY kinematics (http://www.corexy.com/theory.html).<br />
* Delta kinematics.<br />
* SCARA kinematics.<br />
* Auto bed leveling (actually auto bed compensation) support has been added.<br />
* Firmware binary size between around 50kB and 100kB, depending on options.<br />
<br />
The default baudrate is 250000. Because this baudrate is directly derived from the usual 16MHz clock of the Arduino MCU, it has less jitter and hence errors than the usual 115200 baud, but 250000 baud is less supported by drivers and host-environments.<br />
<br />
<br />
=== Differences from and additions to the already good Sprinter firmware ===<br />
<br />
====Look-ahead====<br />
<br />
Marlin has jerk-type look-ahead. Whithout it, it would brake to a stop and re-accelerate at each corner. Lookahead will only decelerate and accelerate to some non-zero velocity, so that the change in vectorial velocity magnitude is less than the xy_jerk_velocity. This is only possible, if some future moves are already processed, hence the name look-ahead. It leads to less over-deposition of material at corners, especially at flat angles.<br />
<br />
====Arc support====<br />
Slic3r can find curves that, although broken into segments, were meant to describe an arc. Marlin is able to print those arcs. The advantage is that the firmware can choose the resolution, and can perform the arc with nearly constant velocity, resulting in a nice finish. Also, less serial communication is needed.<br />
<br />
====Temperature Oversampling====<br />
To reduce noise and make the PID-differential term more useful, 16 ADC conversion results are averaged.<br />
<br />
====AutoTemp====<br />
If your gcode contains a wide spread of extruder velocities, or you realtime change the building speed, the temperature should be changed accordingly. Usually, higher speed requires higher temperature. This can now be performed by the AutoTemp function. Enable AutoTemp mode with <code>M109 S T F</code> and disable it with <code>M109</code> (without any F value). When active, the maximal extruder stepper rate of all buffered moves is calculated and named "maxerate" [steps/sec]. The desired temperature is then set to t=tempmin+factor*maxerate, constrained between tempmin and tempmax. If the target temperature is set manually or by GCode to a value less then tempmin, it will be kept without change. Ideally, your GCode can be completely free of temperature controls, apart from a <code>M109 S T F</code> in the start.gcode, and a <code>M109 S0</code> in the end.gcode.<br />
<br />
====EEPROM====<br />
If you have established known working PID constants, acceleration, and max-velocity settings for your own machine, you can set them, then store them in the EEPROM. On each boot-up, Marlin will automatically load these values from EEPROM, independent of what your compiled Configuration.h says.<br />
<br />
====LCD Menu====<br />
If your hardware supports it, you can build a LCD-CardReader+Click+encoder combination. This will allow you to adjust temperatures, accelerations, velocities, and flow rates in realtime (while printing). It also provides the ability to select and print files directly from the SD card, preheat the extruder, disable the stepper motors, and do other interesting things. One working hardware configuration is documented here: http://www.thingiverse.com/thing:12663 . If you have at least a 20x4 or 16x2 display, useful data is shown.<br />
<br />
====SD card folders====<br />
If you have an SD card reader attached to your controller, folders are supported to a depth of 10 levels. Listing files in Pronterface shows "/path/subpath/file.g". You can write to files in subfolders by including the path (in lowercase). (Hidden files, backup files, and non-GCode files are not included in file listings.)<br />
<br />
====Endstop trigger reporting====<br />
If an endstop is hit while moving towards the endstop, the location at which the firmware thinks the endstop was triggered is output to the serial port. This is useful because the user gets a warning message. Tools like QTMarlin can use this to find acceptable combinations of velocity+acceleration.<br />
<br />
====Coding paradigm====<br />
Not relevant from the user perspective, but Marlin is split into thematic chunks, and has tried to partially enforce private variables. This is intended to make interactions between modules clearer, and leads to a higher level of encapsulation. We think this will be useful as a preliminary step for porting to other platforms, such as ARM. Lots of RAM (with enabled LCD ~2200 bytes) was saved by storing character strings in Program Memory. In the serial communication, a #define-based level of abstraction was enforced, so transfer of information is clear (usually beginning with "echo:"), an error "error:", or just normal protocol, necessary for backwards compatibility.<br />
<br />
====Interrupt based temperature measurements====<br />
An interrupt is used to manage ADC conversions, and enforce checking for critical temperatures. This leads to less blocking in the heater management routine.<br />
<br />
====Delta compatible====<br />
TODO...<br />
<br />
====[[CoreXY]] compatible====<br />
Can use a [http://corexy.com/theory.html CoreXY] table.<br />
<br />
===Non-standard M-Codes, different to an old version of sprinter:===<br />
<br />
'''Movement:'''<br />
<br />
* G2 - CW ARC<br />
* G3 - CCW ARC<br />
<br />
'''General:'''<br />
<br />
* M17 - Enable/Power all stepper motors. Compatibility to ReplicatorG.<br />
* M18 - Disable all stepper motors; same as M84.Compatibility to ReplicatorG.<br />
* M30 - Print time since last M109 or SD card start to serial<br />
* M42 - Change pin status via gcode<br />
* M80 - Turn on Power Supply<br />
* M81 - Turn off Power Supply<br />
* M114 - Output current position to serial port<br />
* M119 - Output Endstop status to serial port<br />
<br />
'''Movement variables:'''<br />
<br />
* M202 - Set max acceleration in units/s^2 for travel moves (M202 X1000 Y1000) Unused in Marlin!!<br />
* M203 - Set maximum feedrate that your machine can sustain (M203 X200 Y200 Z300 E10000) in mm/sec<br />
* M204 - Set default acceleration: S normal moves T filament only moves (M204 S3000 T7000) im mm/sec^2 also sets minimum segment time in ms (B20000) to prevent buffer underruns and M20 minimum feedrate<br />
* M220 - set build speed mulitplying S:factor in percent ; aka "realtime tuneing in the gcode". So you can slow down if you have islands in one height-range, and speed up otherwise.<br />
* M301 - Set PID parameters P I and D<br />
* M303 - PID autotune, S = target temperature.<br />
* M400 - Finish all buffered moves.<br />
<br />
'''Advance:'''<br />
<br />
* M200 - Set filament diameter for advance<br />
* M205 - advanced settings: minimum travel speed S=while printing T=travel only, B=minimum segment time X= maximum xy jerk, Z=maximum Z jerk<br />
<br />
'''EEPROM:'''<br />
<br />
* M500 - stores paramters in EEPROM<br />
* M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).<br />
* M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.<br />
* M503 - print the current settings (from memory not from eeprom)<br />
<br />
==Configuring and compilation==<br />
<br />
What you need to know before starting:<br />
*What kind of printer you are using. If you are using a Cartesian printer (like the [[Prusa i3]]), you are going to need to calculate the steps/mm for each axis and for the extruder. To figure this out, you can go to http://prusaprinters.org/calculator/ or [[Triffid_Hunter's_Calibration_Guide]]. Write down the values you get for everything.<br />
**You need to know what kind of drive is being used with your printer. If it's a belt, you need to know what kind. If it's a screw, need to know what kind. <br />
**The [[Prusa i3]] uses belts for X and Y, and screws for Z.<br />
* A host software like [[Printrun]] or [[Repetier]] or even [[Octoprint]].<br />
<br />
# Install the arduino software IDE/toolset, version 1.0.5 or 1.0.6 from http://www.arduino.cc/en/Main/Software<br />
# Download the Marlin firmware from https://github.com/MarlinFirmware/Marlin (see the Download Zip button), or use git to clone it (if you know how to use git).<br />
# Extract the firmware to a directory of your choice.<br />
# Start the arduino IDE. Select Tools -> Board -> Arduino Mega 2560 (or whatever your microcontroller is)<br />
# Select the correct serial port in Tools ->Serial Port, usually there is only one option.<br />
# Open Marlin.ino in /path/to/Marlin/Marlin<br />
# Browse to boards.h<br />
## This is a list of motherboard types. You'll need to figure out which one you need and write down the word after #define on that line. <br />
##* Example: If you're using a RAMPS 1.4 with a extruder, fan (optional) and heated bed, then you'd need RAMPS_13_EFB. <br />
# Browse to Configuration.h<br />
## Write down the value given in #define BAUDRATE for later.<br />
## At the line that says #define MOTHERBOARD, replace whatever follows MOTHERBOARD with what you chose earlier.<br />
## Set the #define EXTRUDERS to the number of extruders that you have.<br />
## For the TEMP_SENSOR lines, you have to know what kind of thermistor is used by your hot end and heated bed (if you have one). Set the values for these to ones that match the list directly above the lines. <br />
##* If you have an extruder on E0 and a heated bed, you just need to set TEMP_SENSOR_0 and TEMP_SENSOR_BED. <br />
## Scroll down to MAX_HEATER_TEMP. If you know that your hotend shouldn't go above a certain value (the [[Budaschnozzle]] should not exceed 240C-242C), then change it here. Same for MAX_BED_TEMP.<br />
## Leave the PIDTEMP stuff alone for now, we'll get back to it later.<br />
##Further down the page, look for the Mechanical Settings area.<br />
##* For the INVERT_X_DIR and related lines, set it for Mendel if you are using a [[Mendel]]-type printer. Otherwise, consult the documentation for your printer design.<br />
##** The [[Prusa i3]] is a Mendel printer.<br />
##* For X_HOME_DIR and the similar commands for Y and Z, look where your endstops are. If a endstop is configured to be at the 0 position for that axis, the setting here needs to be -1. Otherwise, it needs to be 1. <br />
##* The X_MIN_POS, X_MAX_POS, and related entries should correspond to the printable area on your bed. The defaults are common, but if you have a bigger/smaller print area, you will need to change this. <br />
##** Please note that 0,0 should be the cartesian "bottom left" of your print-bed, if your axis homes beyond the bed in any direction, you can use a *negative value* for the X_MIN_POS and Y_MIN_POS to compensate. (If your prints never wind up in the center of the bed, this is the culprit). Also See [[Configuring Marlin Bed Dimensions]].<br />
##* Ignore the auto bed leveling area for now. Hopefully you will never need it.<br />
## Time for the Feed rates and Steps/mm! You're almost done.<br />
##* For #define DEFAULT_AXIS_STEPS_PER_UNIT, you will need to use the values you calculated for your different printer axes and extruder (see above). The order is {X, Y, Z, E}<br />
##* For DEFAULT_MAX_FEEDRATE, this is the fastest (in mm/s) the printer is allowed to go.<br />
##** For a Prusa i3, setting the Z axis value to 2 is a good idea.<br />
##* DEFAULT_MAX_ACCELERATION is something else that should be tuned based on how good you built the hardware of your printer.<br />
##* You should probably turn DEFAULT_ACCELERATION to a lower value initially (like 200) and adjust the acceleration later once you get everything calibrated and tuned.<br />
## If you have an LCD or button panel for your printer, uncomment the respective lines for it. Otherwise, save because you are done!<br />
# Click the Upload button.<br />
#* If all goes well, the firmware has uploaded.<br />
<br />
You are now done with your initial configuration of Marlin! It should give you reasonable results, but there's still a lot of setup to do. Head over to [[Triffid_Hunter's_Calibration_Guide]] to continue tweaking your printer.<br />
<br />
If you ever need to change one of these firmware settings, open the Marlin project with the Arduino IDE, make your changes to Configuration.h, and re-upload (make sure your host software isn't connected when you try to upload).<br />
<br />
== Bug reports ==<br />
KNOWN ISSUES: RepG will display: Unknown: marlin x.y.z<br />
<br />
For bug reporting please use the [https://github.com/MarlinFirmware/Marlin/issues Issue tracker on github]</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Talk:Choosing_Belts_and_Pulleys&diff=153532Talk:Choosing Belts and Pulleys2015-08-24T23:32:10Z<p>Eltoozero: </p>
<hr />
<div>From the article: ''Unfortunately, with the exception of the hot end and extruder, the pulleys and belts are '''probably the single most important parts when it comes to improving your print quality''', and the commonly used parts are almost completely wrong for what we do.''<br />
<br />
When there are two more important parts it is obviously not the single most importand boldfaced part. I personally think people with bad print quality can gain alot by spending time on calibration, creating a tighter/more rigid frame and choosing the right plastic supplier.<br />
<br />
The article doesn't show any evidence of converted setups with before/after pictures. about the less noise claim no youtube video's exist with a comparison. For this the right firmware software combination is also an essential part.<br />
<br />
When it comes to improvement of quality from decent to great quality I do think it is an obvious path to choose. [[User:Bitflusher|Bitflusher]] 12:00, 7 March 2012 (UTC)<br />
<br />
Would it be worthwhile to update this article given the current status quo (Aug 2015) seems to be toward GT2 and MXL? --[[User:Eltoozero|Eltoozero]] ([[User talk:Eltoozero|talk]]) 16:32, 24 August 2015 (PDT)</div>Eltoozerohttps://reprap.org/mediawiki/index.php?title=Choosing_Belts_and_Pulleys&diff=153531Choosing Belts and Pulleys2015-08-24T23:28:48Z<p>Eltoozero: /* What's wrong with the status quo? */</p>
<hr />
<div>=Choosing Belts and Pulleys=<br />
Traditionally RepRaps have been assembled using printed pulleys and T5 or XL belts. From an ideological standpoint, that makes sense, we should minimize the vitamin count wherever possible. Unfortunately, with the exception of the hot end and extruder, the pulleys and belts are probably the single most important parts when it comes to improving your print quality [citation needed], and the commonly used parts are almost completely wrong for what we do.<br />
<br />
==What's wrong with the status quo?==<br />
There are a number of problems.<br />
<br />
Depending on how well tuned your printer is, the quality of your printed pulleys will range from good to atrocious. Even the best quality pulleys will not be up to the quality of commercial pulleys. <br />
<br />
More importantly, the type of belts we use are all wrong. The T in T2.5 and T5 stands for Timing. It is designed to synchronize rotating shafts. It is not designed for linear motion, so it does not account for backlash in a reversing pulley. XL is also designed as a timing belt, but is a SAE standard, not metric. __The two are not compatible!__ If you have XL belts and pulleys that were printed for T5 belts, they may seem to fit but you will never be able to get decent prints.<br />
<br />
'''Actually there are [http://forums.reprap.org/read.php?4,128202,128243#msg-128243 doubts] about claim that T5 / T2.5 is causing backlash.''' (It is worth noting that despite nophead's stated doubts about GT2 vs T5/T2.5, in June 2015 nophead updated the Mendel90 github to utilize GT2 belts and pulleys by default).<br />
<br />
==How do we fix the problem?==<br />
To get the best print quality, we want to use a pulley and belt that are designed for linear motion. The GT2 series of belts are designed specifically for that purpose. They use a rounded tooth profile that guarantees that the belt tooth fits smoothly and accurately in the pulley groove, so when you reverse the pulley direction, there is no room for the belt to move in the groove. You should see an almost immediate increase in print consistency, especially around small holes and details.<br />
<br />
==How do I choose a pulley and a belt?==<br />
Generally speaking, for best performance you want at least 6 teeth in contact with the pulley at any given time. That minimizes the chance of the belt slipping, and helps reduce backlash even further. In practice that means you want a minimum of a 12 tooth pulley, and I usually try to get at least 18 teeth.<br />
<br />
Beyond that minimum, fewer teeth are generally better than more teeth, since a smaller pulley gives both more torque and more resolution. You get more torque because the longer your "arm", the less torque you have (Imagine the load is mounted on an arm the length of the radius of the pulley, the shorter that arm, the easier it is to lift the load), and you get higher resolution, since you have a fixed number of steps per revolution, and a smaller pulley moves a shorter linear distance per step.<br />
<br />
I recommend GT2, 2mm pitch, but you can also use GT3 3mm pitch. A finer pitch is preferable for the type of movement we do, and the belts are cheaper, but if you find the 2mm belts or pulleys are out of stock, you can go to 3mm pitch without any significant downsides. If you do choose 3mm pitch pulleys, be sure to get 3mm pitch belts as well.<br />
<br />
==Where do I get them?==<br />
There are several sources for kinds of timing belts and timing pulleys. See the [[Belts and Pulleys]] and [[GT2 Timing Belt]] page for Belt and Pulley.<br />
<br />
==References==<br />
* [http://us.misumi-ec.com/pdf/fa/PDFViewer.html?catalog=metric2010&page=1095 Misumi's pulley introduction]<br />
* SDP's [http://www.sdp-si.com/D265/HTML/D265T003.html Handbook of Timing Belts and Pulleys]<br />
<br />
[[Category:General motion control]]</div>Eltoozero