(Created page with "{{777}} Category:777 Users 2019 This page details the process to adapt, install, and use the [http://marlinfw.org/ Marlin Firmware] on an AthenaII delta-style 3D pri...")
 
(Added Octoprint Install instructions)
Line 6: Line 6:


This mod was first completed by [[User:TheJLo|TheJLo]] ([[User talk:TheJLo|talk]]) 05:13, 21 November 2019 (UTC).  
This mod was first completed by [[User:TheJLo|TheJLo]] ([[User talk:TheJLo|talk]]) 05:13, 21 November 2019 (UTC).  
If you have suggestions for these instructions or if anything is unclear, please discuss this in the [[Talk:Marlin on AthenaII]] or message [[User:TheJLo]].


<font color = red> <b> WARNING: This mod is difficult and can damage your printer if done incorrectly. Please read the warnings section and this entire document before starting this mod. </b> </font>
<font color = red> <b> WARNING: This mod is difficult and can damage your printer if done incorrectly. Please read the warnings section and this entire document before starting this mod. </b> </font>
Line 35: Line 37:
When running Marlin, the system will be fairly similar to that of the AthenaII when running Franklin. The board will be the physical control unit of the printer. On the ATmega1284P (The microprocessor on the AthenaII), a configured setup of Marlin will be installed. Marlin will expect commands to come in from the Rx/Tx0 UART on the ATmega1284P. These commands will come in the form of GCode from the controlling software. The controlling software will be installed on the Orange Pi which provides a front-end interface to the AthenaII Board. For this project, Octoprint will be used as the controlling software because it closely resembles how Franklin works and can be accessed remotely. A visual diagram of the system this shown below.  
When running Marlin, the system will be fairly similar to that of the AthenaII when running Franklin. The board will be the physical control unit of the printer. On the ATmega1284P (The microprocessor on the AthenaII), a configured setup of Marlin will be installed. Marlin will expect commands to come in from the Rx/Tx0 UART on the ATmega1284P. These commands will come in the form of GCode from the controlling software. The controlling software will be installed on the Orange Pi which provides a front-end interface to the AthenaII Board. For this project, Octoprint will be used as the controlling software because it closely resembles how Franklin works and can be accessed remotely. A visual diagram of the system this shown below.  
<br />
<br />
[[Image:AthenaMarlinDia.png|thumb|center|Fig. 2 System overview diagram for AthenaII with Marlin]]
[[Image:AthenaMarlinDia.png|center|Fig. 2 System overview diagram for AthenaII with Marlin]]
 
=== Marlin ===
Marlin is a firmware based off of Repetier. It is written in Arduino and is designed to operate with AVR chips. The newer version is also being designed to support ARM processors. Marlin is a reactive firmware meaning that it only completes actions based on requests from the controlling software or in response to changes in state on the electronics. Marlin expects to receive commands through a UART Serial line which is present on all AVRs which are Arduino-compatible. Marlin utilizes a system, appropriately called FastIO, to create direct references to the pins it uses on the AVR. This is a very robust and powerful system but has an important draw back.
 
<font color=maroon> Marlin can only run at pre-specified frequencies, ideally 16 MHz, for AVR microprocessors. </font>
 
This FastIO system also needs to be told what pins go where on the AthenaII board. This is done with a "pins_ATHENA_II.h" file and a couple changes to the files pertaining to board definition. Marlin is also configured and calibrated using the files "configuration.h" and "configuration_adv.h". A basic Marlin setup with the necessary changes is available here: [https://github.com/TheJLo/AthenaII_Marlin.git github]. More information about Marlin can be found on their home site here: [http://marlinfw.org/ Marlin].


=== Required Hardware changes ===
=== Required Hardware changes ===
In order
Taking note of the required frequency for Marlin, there is a problem with the AthenaII. The AthenaII boards are initially setup to run the ATmega1284P microprocessor at 12 MHz which is incompatible with Marlin.
 
<font color=maroon>1. This necessitates that the AthenaII boards oscillator crystal is upgraded from a 12 MHz to a 16 MHz. </font>
 
This is simply a swap of the crystal oscillator and its associated loading capacitors. However, another problem crops up from this change. The ATmega1284P is powered using a 3.3V in the default setup but when being run at 16 MHz will become unstable and cannot operate effectively.
 
<font color=maroon>2. This necessitates that the ATmega1284P be powered by 5V. </font>
 
Luckily, there is already a 5V regulator on the AthenaII and we just need to cut out the 3.3V regulator and connect a wire from the 5V regulator. But again, there is another issue on the hardware that needs to be dealt with. Now that the ATmega1284P is being run at 5V, all of its logic signals will be output at 5V. The Orange Pi can only safely accept up to 3.3V logic from the ATmega1284P.
 
<font color=maroon>3. This means we need to step down all data coming from the ATmega1284P to 3.3V logic. </font>
 
This can be done with a voltage divider and only needs to be applied to two pins: Tx0 and MISO on the ATmega1284P.
 
These are the required changes to the hardware to make our AthenaII boards Marlin compatible. This is the part that makes this modification difficult. All of these changes need to happen on the board with the layout given.
 
=== Required Software changes ===
Although Franklin uses a web-server front-end to talk to the printer, I am not sure if it is compatible with Marlin. Since getting Marlin up and running alone was difficult, I decided to use a proven controller which behaves similarly to Franklin's web server. This controller is [https://octoprint.org/ Octoprint] which is another web-server based front-end which can be used to control Marlin based printers. Installing and setting up Octoprint is fairly easy when following this [http://richardn.ca/2018/12/12/installing-octoprint-on-armbian-orangepi-etc-from-source-2/ tutorial]. It might even work to control Franklin's firmware (someone should try that!) Using Octoprint, you can still control your printer remotely using the IP address and just adding port 5000 to the end of it.
 
Other than Octoprint, you will need some way to access your Orange Pi remotely, such as through PuTTy or SSH. We will also be using SCP (or PuTTy's equivalent) to transfer files to the Orange Pi. Finally, we will be using AVRdude to upload our programs to the ATmega1284P. AVRdude is used by Franklin as well so that does not need to be installed onto the Orange Pi. The Arduino IDE will be used to compile Marlin. You will want to install the latest version of the Arduino IDE onto your personal computer.
 
= Instructions =
The rest of this page will be devoted to the detailed instructions of how to complete this mod step by step. If you feel confident that you understand what you are doing and what the risks involved are, continue as you see fit. If you have any doubts, I do not recommend continuing. I ([[User:TheJLo]]) can answer questions, suggestions, clear confusion, etc. in the [[Talk:Marlin on AthenaII]]. These instructions will assume you are using a Linux system as a personal computer for some sections. Windows and MacOS should be similar with some locations changed.


== Hardware changes ==
== Installing Octoprint ==
We will start with the simplest part of this process, installing Octoprint. This can be done while your printer is still assembled. These instructions utilize this [http://richardn.ca/2018/12/12/installing-octoprint-on-armbian-orangepi-etc-from-source-2/ tutorial] which is fairly clear and easy to understand.
=== Tools ===
*PuTTy/SSH
*Connection to the Orange Pi
=== Steps ===
#Connect to your printer via SSH (or PuTTy) (default User: debian, default Password: reprap)
#If you have not done so already, change the password with the following command. Follow the given prompts.<blockquote><code>passwd</code></blockquote>
#Follow this tutorial for the rest of setup: [http://richardn.ca/2018/12/12/installing-octoprint-on-armbian-orangepi-etc-from-source-2/ tutorial]
#After setting up you should be able to load up Octoprint and add a printer with the following specs:
#*Print Bed
#**Form Factor: Circular
#**Origin: Center
#**Diameter: 210mm
#**Height: 210mm
#*Axes
#**X: 3000mm/s
#**Y: 3000mm/s
#**Z: 3000mm/s
#**E: 300mm/s
#Once Marlin is installed, the Orange Pi will be connecting with the following settings:
#*Serial Port: /dev/ttyS1 (Should be same for all Orange Pi Zeros. May not be for other computers.)
#*Baudrate: 250000

Revision as of 06:43, 21 November 2019

This page details the process to adapt, install, and use the Marlin Firmware on an AthenaII delta-style 3D printer. The Marlin Firmware is a very popular and well supported open-source firmware used in a variety of commercial, reprap, and hobbyist printers. Marlin is written in C++ (Arduino Flavor) and utilizes a number of special features to maximize efficiency while minimizing program size. The Athena II is a delta-style 3D printer developed and Michigan Technological University and, by default, runs the Franklin firmware and controller package. This page will describe the necessary steps required to adapt your Athena II for use with Marlin with Octoprint as the controller.

This mod was first completed by TheJLo (talk) 05:13, 21 November 2019 (UTC).

If you have suggestions for these instructions or if anything is unclear, please discuss this in the Talk:Marlin on AthenaII or message User:TheJLo.

WARNING: This mod is difficult and can damage your printer if done incorrectly. Please read the warnings section and this entire document before starting this mod.

Fig. 1 Completed Modification on and AthenaII Board. Notice the wire-to-trace and THT Components to Pads.


Warnings

This mod requires changes to the hardware, firmware and software of the Athena II. To do this on the original Athena II boards is risky and mistakes can break the board. It is recommended that you are comfortable with the following topics and skills before continuing.

  • Soldering & De-Soldering
  • Reading PCB Files
  • Determining where a trace goes on a PCB
  • Cutting Traces on a PCB
  • Soldering wires to a PCB
  • Usage of a Digital Multimeter
  • Familiarity with electronics
  • Familiarity with electrical communication
  • Basic Linux

You are entirely responsible for your Athena II if you attempt this mod. If you are not comfortable with any of these topics, this mod may not be for you.

Getting Familiar

Because we will be changing the hardware on the Athena II, it is recommended to get familiar with the Athena II board and how it works. Linked is a page which gives a brief overview of the original Athena II setup:AthenaII Basic System

The following will describe how the system is setup to run Marlin. Take note of the changes in hardware required. The first thing covered will be the high-level setup we will be using.

System View

When running Marlin, the system will be fairly similar to that of the AthenaII when running Franklin. The board will be the physical control unit of the printer. On the ATmega1284P (The microprocessor on the AthenaII), a configured setup of Marlin will be installed. Marlin will expect commands to come in from the Rx/Tx0 UART on the ATmega1284P. These commands will come in the form of GCode from the controlling software. The controlling software will be installed on the Orange Pi which provides a front-end interface to the AthenaII Board. For this project, Octoprint will be used as the controlling software because it closely resembles how Franklin works and can be accessed remotely. A visual diagram of the system this shown below.

Fig. 2 System overview diagram for AthenaII with Marlin
Fig. 2 System overview diagram for AthenaII with Marlin

Marlin

Marlin is a firmware based off of Repetier. It is written in Arduino and is designed to operate with AVR chips. The newer version is also being designed to support ARM processors. Marlin is a reactive firmware meaning that it only completes actions based on requests from the controlling software or in response to changes in state on the electronics. Marlin expects to receive commands through a UART Serial line which is present on all AVRs which are Arduino-compatible. Marlin utilizes a system, appropriately called FastIO, to create direct references to the pins it uses on the AVR. This is a very robust and powerful system but has an important draw back.

Marlin can only run at pre-specified frequencies, ideally 16 MHz, for AVR microprocessors.

This FastIO system also needs to be told what pins go where on the AthenaII board. This is done with a "pins_ATHENA_II.h" file and a couple changes to the files pertaining to board definition. Marlin is also configured and calibrated using the files "configuration.h" and "configuration_adv.h". A basic Marlin setup with the necessary changes is available here: github. More information about Marlin can be found on their home site here: Marlin.

Required Hardware changes

Taking note of the required frequency for Marlin, there is a problem with the AthenaII. The AthenaII boards are initially setup to run the ATmega1284P microprocessor at 12 MHz which is incompatible with Marlin.

1. This necessitates that the AthenaII boards oscillator crystal is upgraded from a 12 MHz to a 16 MHz. 

This is simply a swap of the crystal oscillator and its associated loading capacitors. However, another problem crops up from this change. The ATmega1284P is powered using a 3.3V in the default setup but when being run at 16 MHz will become unstable and cannot operate effectively.

2. This necessitates that the ATmega1284P be powered by 5V. 

Luckily, there is already a 5V regulator on the AthenaII and we just need to cut out the 3.3V regulator and connect a wire from the 5V regulator. But again, there is another issue on the hardware that needs to be dealt with. Now that the ATmega1284P is being run at 5V, all of its logic signals will be output at 5V. The Orange Pi can only safely accept up to 3.3V logic from the ATmega1284P.

3. This means we need to step down all data coming from the ATmega1284P to 3.3V logic.  

This can be done with a voltage divider and only needs to be applied to two pins: Tx0 and MISO on the ATmega1284P.

These are the required changes to the hardware to make our AthenaII boards Marlin compatible. This is the part that makes this modification difficult. All of these changes need to happen on the board with the layout given.

Required Software changes

Although Franklin uses a web-server front-end to talk to the printer, I am not sure if it is compatible with Marlin. Since getting Marlin up and running alone was difficult, I decided to use a proven controller which behaves similarly to Franklin's web server. This controller is Octoprint which is another web-server based front-end which can be used to control Marlin based printers. Installing and setting up Octoprint is fairly easy when following this tutorial. It might even work to control Franklin's firmware (someone should try that!) Using Octoprint, you can still control your printer remotely using the IP address and just adding port 5000 to the end of it.

Other than Octoprint, you will need some way to access your Orange Pi remotely, such as through PuTTy or SSH. We will also be using SCP (or PuTTy's equivalent) to transfer files to the Orange Pi. Finally, we will be using AVRdude to upload our programs to the ATmega1284P. AVRdude is used by Franklin as well so that does not need to be installed onto the Orange Pi. The Arduino IDE will be used to compile Marlin. You will want to install the latest version of the Arduino IDE onto your personal computer.

Instructions

The rest of this page will be devoted to the detailed instructions of how to complete this mod step by step. If you feel confident that you understand what you are doing and what the risks involved are, continue as you see fit. If you have any doubts, I do not recommend continuing. I (User:TheJLo) can answer questions, suggestions, clear confusion, etc. in the Talk:Marlin on AthenaII. These instructions will assume you are using a Linux system as a personal computer for some sections. Windows and MacOS should be similar with some locations changed.

Installing Octoprint

We will start with the simplest part of this process, installing Octoprint. This can be done while your printer is still assembled. These instructions utilize this tutorial which is fairly clear and easy to understand.

Tools

  • PuTTy/SSH
  • Connection to the Orange Pi

Steps

  1. Connect to your printer via SSH (or PuTTy) (default User: debian, default Password: reprap)
  2. If you have not done so already, change the password with the following command. Follow the given prompts.

    passwd

  3. Follow this tutorial for the rest of setup: tutorial
  4. After setting up you should be able to load up Octoprint and add a printer with the following specs:
    • Print Bed
      • Form Factor: Circular
      • Origin: Center
      • Diameter: 210mm
      • Height: 210mm
    • Axes
      • X: 3000mm/s
      • Y: 3000mm/s
      • Z: 3000mm/s
      • E: 300mm/s
  5. Once Marlin is installed, the Orange Pi will be connecting with the following settings:
    • Serial Port: /dev/ttyS1 (Should be same for all Orange Pi Zeros. May not be for other computers.)
    • Baudrate: 250000
Cookies help us deliver our services. By using our services, you agree to our use of cookies.