├── CAD ├── ControllerBase.stl ├── FootBackLeft.stl ├── FootBackRight.stl ├── FootFrontLeft.stl ├── FootFrontRight.stl ├── FountainBack.stl ├── FountainBase.stl ├── FountainFront.stl ├── FrontLeft_Bottom.stl ├── FrontLeft_Top.stl ├── FrontRight_Bottom.stl ├── FrontRight_Top.stl ├── GenericPenHolder.stl ├── LCDPanelFaceplate.stl ├── MotorLeft_Bottom.stl ├── MotorLeft_Top.stl ├── MotorRight_Bottom.stl ├── MotorRight_Top.stl ├── PenLiftBase.stl ├── PigmaMicronHolder.stl ├── PlotDevice.f3z ├── Spring.stl ├── Stabilo88Holder.stl ├── XCarriageBlock.stl ├── YRailLeft_Bottom.stl ├── YRailLeft_Top.stl ├── YRailRight_Bottom.stl ├── YRailRight_Top.stl ├── x2_FrontPulleyStandoff.stl ├── x4_Tensioner.stl └── x5_ControllerClip.stl ├── LICENSE ├── README.md ├── firmware.bin └── img └── full_machine.jpg /CAD/ControllerBase.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/ControllerBase.stl -------------------------------------------------------------------------------- /CAD/FootBackLeft.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FootBackLeft.stl -------------------------------------------------------------------------------- /CAD/FootBackRight.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FootBackRight.stl -------------------------------------------------------------------------------- /CAD/FootFrontLeft.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FootFrontLeft.stl -------------------------------------------------------------------------------- /CAD/FootFrontRight.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FootFrontRight.stl -------------------------------------------------------------------------------- /CAD/FountainBack.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FountainBack.stl -------------------------------------------------------------------------------- /CAD/FountainBase.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FountainBase.stl -------------------------------------------------------------------------------- /CAD/FountainFront.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FountainFront.stl -------------------------------------------------------------------------------- /CAD/FrontLeft_Bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FrontLeft_Bottom.stl -------------------------------------------------------------------------------- /CAD/FrontLeft_Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FrontLeft_Top.stl -------------------------------------------------------------------------------- /CAD/FrontRight_Bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FrontRight_Bottom.stl -------------------------------------------------------------------------------- /CAD/FrontRight_Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/FrontRight_Top.stl -------------------------------------------------------------------------------- /CAD/GenericPenHolder.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/GenericPenHolder.stl -------------------------------------------------------------------------------- /CAD/LCDPanelFaceplate.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/LCDPanelFaceplate.stl -------------------------------------------------------------------------------- /CAD/MotorLeft_Bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/MotorLeft_Bottom.stl -------------------------------------------------------------------------------- /CAD/MotorLeft_Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/MotorLeft_Top.stl -------------------------------------------------------------------------------- /CAD/MotorRight_Bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/MotorRight_Bottom.stl -------------------------------------------------------------------------------- /CAD/MotorRight_Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/MotorRight_Top.stl -------------------------------------------------------------------------------- /CAD/PenLiftBase.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/PenLiftBase.stl -------------------------------------------------------------------------------- /CAD/PigmaMicronHolder.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/PigmaMicronHolder.stl -------------------------------------------------------------------------------- /CAD/PlotDevice.f3z: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/PlotDevice.f3z -------------------------------------------------------------------------------- /CAD/Spring.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/Spring.stl -------------------------------------------------------------------------------- /CAD/Stabilo88Holder.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/Stabilo88Holder.stl -------------------------------------------------------------------------------- /CAD/XCarriageBlock.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/XCarriageBlock.stl -------------------------------------------------------------------------------- /CAD/YRailLeft_Bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/YRailLeft_Bottom.stl -------------------------------------------------------------------------------- /CAD/YRailLeft_Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/YRailLeft_Top.stl -------------------------------------------------------------------------------- /CAD/YRailRight_Bottom.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/YRailRight_Bottom.stl -------------------------------------------------------------------------------- /CAD/YRailRight_Top.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/YRailRight_Top.stl -------------------------------------------------------------------------------- /CAD/x2_FrontPulleyStandoff.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/x2_FrontPulleyStandoff.stl -------------------------------------------------------------------------------- /CAD/x4_Tensioner.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/x4_Tensioner.stl -------------------------------------------------------------------------------- /CAD/x5_ControllerClip.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/CAD/x5_ControllerClip.stl -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CERN Open Hardware License v1.2 2 | 3 | Preamble 4 | 5 | Through this CERN Open Hardware License ("CERN OHL") version 1.2, CERN 6 | wishes to provide a tool to foster collaboration and sharing among 7 | hardware designers. The CERN OHL is copyright CERN. Anyone is welcome 8 | to use the CERN OHL, in unmodified form only, for the distribution of 9 | their own Open Hardware designs. Any other right is reserved. Release 10 | of hardware designs under the CERN OHL does not constitute an 11 | endorsement of the licensor or its designs nor does it imply any 12 | involvement by CERN in the development of such designs. 13 | 14 | 1. Definitions 15 | 16 | In this License, the following terms have the following meanings: 17 | 18 | “License” means this CERN OHL. 19 | 20 | “Documentation” means schematic diagrams, designs, circuit or circuit 21 | board layouts, mechanical drawings, flow charts and descriptive text, 22 | and other explanatory material that is explicitly stated as being made 23 | available under the conditions of this License. The Documentation may 24 | be in any medium, including but not limited to computer files and 25 | representations on paper, film, or any other media. 26 | 27 | “Documentation Location” means a location where the Licensor has 28 | placed Documentation, and which he believes will be publicly 29 | accessible for at least three years from the first communication to 30 | the public or distribution of Documentation. 31 | 32 | “Product” means either an entire, or any part of a, device built using 33 | the Documentation or the modified Documentation. 34 | 35 | “Licensee” means any natural or legal person exercising rights under 36 | this License. 37 | 38 | “Licensor” means any natural or legal person that creates or modifies 39 | Documentation and subsequently communicates to the public and/ or 40 | distributes the resulting Documentation under the terms and conditions 41 | of this License. 42 | 43 | A Licensee may at the same time be a Licensor, and vice versa. 44 | 45 | Use of the masculine gender includes the feminine and neuter genders 46 | and is employed solely to facilitate reading. 47 | 48 | 2. Applicability 49 | 50 | 2.1. This License governs the use, copying, modification, 51 | communication to the public and distribution of the Documentation, and 52 | the manufacture and distribution of Products. By exercising any right 53 | granted under this License, the Licensee irrevocably accepts these 54 | terms and conditions. 55 | 56 | 2.2. This License is granted by the Licensor directly to the Licensee, 57 | and shall apply worldwide and without limitation in time. The Licensee 58 | may assign his license rights or grant sub-licenses. 59 | 60 | 2.3. This License does not extend to software, firmware, or code 61 | loaded into programmable devices which may be used in conjunction with 62 | the Documentation, the modified Documentation or with Products, unless 63 | such software, firmware, or code is explicitly expressed to be subject 64 | to this License. The use of such software, firmware, or code is 65 | otherwise subject to the applicable license terms and conditions. 66 | 67 | 3. Copying, modification, communication to the public and distribution 68 | of the Documentation 69 | 70 | 3.1. The Licensee shall keep intact all copyright and trademarks 71 | notices, all notices referring to Documentation Location, and all 72 | notices that refer to this License and to the disclaimer of warranties 73 | that are included in the Documentation. He shall include a copy 74 | thereof in every copy of the Documentation or, as the case may be, 75 | modified Documentation, that he communicates to the public or 76 | distributes. 77 | 78 | 3.2. The Licensee may copy, communicate to the public and distribute 79 | verbatim copies of the Documentation, in any medium, subject to the 80 | requirements specified in section 3.1. 81 | 82 | 3.3. The Licensee may modify the Documentation or any portion thereof 83 | provided that upon modification of the Documentation, the Licensee 84 | shall make the modified Documentation available from a Documentation 85 | Location such that it can be easily located by an original Licensor 86 | once the Licensee communicates to the public or distributes the 87 | modified Documentation under section 3.4, and, where required by 88 | section 4.1, by a recipient of a Product. However, the Licensor shall 89 | not assert his rights under the foregoing proviso unless or until a 90 | Product is distributed. 91 | 92 | 3.4. The Licensee may communicate to the public and distribute the 93 | modified Documentation (thereby in addition to being a Licensee also 94 | becoming a Licensor), always provided that he shall: 95 | 96 | a) comply with section 3.1; 97 | 98 | b) cause the modified Documentation to carry prominent notices stating 99 | that the Licensee has modified the Documentation, with the date and 100 | description of the modifications; 101 | 102 | c) cause the modified Documentation to carry a new Documentation 103 | Location notice if the original Documentation provided for one; 104 | 105 | d) make available the modified Documentation at the same level of 106 | abstraction as that of the Documentation, in the preferred format for 107 | making modifications to it (e.g. the native format of the CAD tool as 108 | applicable), and in the event that format is proprietary, in a format 109 | viewable with a tool licensed under an OSI-approved license if the 110 | proprietary tool can create it; and 111 | 112 | e) license the modified Documentation under the terms and conditions 113 | of this License or, where applicable, a later version of this License 114 | as may be issued by CERN. 115 | 116 | 3.5. The License includes a non-exclusive license to those patents or 117 | registered designs that are held by, under the control of, or 118 | sub-licensable by the Licensor, to the extent necessary to make use of 119 | the rights granted under this License. The scope of this section 3.5 120 | shall be strictly limited to the parts of the Documentation or 121 | modified Documentation created by the Licensor. 122 | 123 | 4. Manufacture and distribution of Products 124 | 125 | 4.1. The Licensee may manufacture or distribute Products always 126 | provided that, where such manufacture or distribution requires a 127 | license under this License the Licensee provides to each recipient of 128 | such Products an easy means of accessing a copy of the Documentation 129 | or modified Documentation, as applicable, as set out in section 3. 130 | 131 | 4.2. The Licensee is invited to inform any Licensor who has indicated 132 | his wish to receive this information about the type, quantity and 133 | dates of production of Products the Licensee has (had) manufactured 134 | 135 | 5. Warranty and liability 136 | 137 | 5.1. DISCLAIMER – The Documentation and any modified Documentation are 138 | provided "as is" and any express or implied warranties, including, but 139 | not limited to, implied warranties of merchantability, of satisfactory 140 | quality, non-infringement of third party rights, and fitness for a 141 | particular purpose or use are disclaimed in respect of the 142 | Documentation, the modified Documentation or any Product. The Licensor 143 | makes no representation that the Documentation, modified 144 | Documentation, or any Product, does or will not infringe any patent, 145 | copyright, trade secret or other proprietary right. The entire risk as 146 | to the use, quality, and performance of a Product shall be with the 147 | Licensee and not the Licensor. This disclaimer of warranty is an 148 | essential part of this License and a condition for the grant of any 149 | rights granted under this License. The Licensee warrants that it does 150 | not act in a consumer capacity. 151 | 152 | 5.2. LIMITATION OF LIABILITY – The Licensor shall have no liability 153 | for direct, indirect, special, incidental, consequential, exemplary, 154 | punitive or other damages of any character including, without 155 | limitation, procurement of substitute goods or services, loss of use, 156 | data or profits, or business interruption, however caused and on any 157 | theory of contract, warranty, tort (including negligence), product 158 | liability or otherwise, arising in any way in relation to the 159 | Documentation, modified Documentation and/or the use, manufacture or 160 | distribution of a Product, even if advised of the possibility of such 161 | damages, and the Licensee shall hold the Licensor(s) free and harmless 162 | from any liability, costs, damages, fees and expenses, including 163 | claims by third parties, in relation to such use. 164 | 165 | 6. General 166 | 167 | 6.1. Except for the rights explicitly granted hereunder, this License 168 | does not imply or represent any transfer or assignment of intellectual 169 | property rights to the Licensee. 170 | 171 | 6.2. The Licensee shall not use or make reference to any of the names 172 | (including acronyms and abbreviations), images, or logos under which 173 | the Licensor is known, save in so far as required to comply with 174 | section 3. Any such permitted use or reference shall be factual and 175 | shall in no event suggest any kind of endorsement by the Licensor or 176 | its personnel of the modified Documentation or any Product, or any 177 | kind of implication by the Licensor or its personnel in the 178 | preparation of the modified Documentation or Product. 179 | 180 | 6.3. CERN may publish updated versions of this License which retain 181 | the same general provisions as this version, but differ in detail so 182 | far this is required and reasonable. New versions will be published 183 | with a unique version number. 184 | 185 | 6.4. This License shall terminate with immediate effect, upon written 186 | notice and without involvement of a court if the Licensee fails to 187 | comply with any of its terms and conditions, or if the Licensee 188 | initiates legal action against Licensor in relation to this 189 | License. Section 5 shall continue to apply. 190 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PlotDevice 2 | Super compact and simple CoreXY Plotter 3 | 4 | ![PlotDevice](img/full_machine.jpg) 5 | 6 | The PlotDevice is designed to be as simple and cheap as possible without sacrificing quality and speed. While it can be setup with any controller that supports the CoreXY configuration, I have designed it with Marlin and TMC drivers in mind. This allows it to use sensorless homing and therefore making wiring a breeze. The motors are all stationary and you only need to run 3 wires for the servo to the tool head. 7 | 8 | The core design calls for 500mm linear rods which results in a roughly 410mm x 350mm working area (depending on tool used). However, you could easily use any length rod to increase or shrink the overall machine size. 9 | 10 | The total cost for the specified configuration should be around $300. 11 | 12 | ## 3D Printed Components 13 | 14 | All the necessary CAD models can be found in the [CAD](/CAD) folder and are already oriented correctly for printing. This includes the full [Fusion 360 Design](/CAD/PlotDevice.f3z) 15 | 16 | For the items listed as `xN_PartName.stl` note that you must print `N` copies of that item. 17 | 18 | ### Print Settings 19 | 20 | **PLEASE NOTE:** All components have been designed specifically with the given print settings in mind. There are features of the models that depend on these settings and may not print correctly if not followed. 21 | 22 | All components should be printed in PLA with the following settings: 23 | 24 | - 0.4mm nozzle diameter 25 | - 0.2mm layer height 26 | - 3 shells / 3 top & bottom lasers 27 | - 25% Grid Infill 28 | - Top & Bottom layers Rectilinear Infill 29 | - NO SUPPORT. None of the components will require any support. 30 | 31 | Any other settings would depend on your particular filament and printer capability but I recommend using high quality filament with consistent diameter. I are partial to Printed Solid, Atomic or Prusa brands. 32 | 33 | Final word on quality and accuracy: The PlotDevice is designed with relatively tight tolerances so your prints need to be as accurate as possible. If you are unsure, I recommend printing this [calibration cube](https://www.thingiverse.com/thing:1586206) with the filament you want to use first as a test, with the above settings. If any dimension deviates from 20mm by more than 0.1mm, you should spend some time dialing in your extrusion settings for that filament until it is within 0.1mm tolerance. 34 | 35 | ## Bill of Materials 36 | 37 | See the table below for the required components. Please note the following notes: 38 | 39 | - The 10mm rods can be basically any length in order to achieve the desired working area. With 500 mm rods the working area will be roughly 410mm on X and 350mm on Y. Simply add or subtract from the 500mm length to change the working area by that size. Note however that the rods **must** be in matched sets. 40 | - The Y axis is only 2 rods. 41 | - The X axis requires 4 rods of the same length. 2 for the actual X axis gantry and 2 for the front and back of the frame. 42 | - Limit switches are optional if you use a controller that supports sensorless homing. 43 | - The specified controller will work with the provided Marlin firmware (see link in next section) but for another controller you will need to sort out the configuration yourself. 44 | - 12V or 24V doesn't really matter, but 24V will generally be more responsive. 45 | - Yes, I've specified a Hiwin linear rail for the pen lift. This is very much solving a problem with money and the one place I deviated from the basic ethos of the machine. With shipping expect it to cost $25-30 but I promise it's worth it. Note: ZYLTech will also custom cut MGN9 rails but they will be slightly more expensive than shipping it from RobotDigg in China. 46 | - All nut and bolt counts are approximate and depend on what options you choose. It is highly recommend to purchase more than specified below by at least 15%. 47 | 48 | | Item | Qty | Vendor | Notes | 49 | | --- | --- | --- | --- | 50 | | M3x25 | 40 | [Albany County Fasters](https://www.albanycountyfasteners.com/Socket-Head-Cap-Screw-3MM-A2-Stainless-Steel-p/5040000.htm) | | 51 | | M3x10 | 34 | [Albany County Fasters](https://www.albanycountyfasteners.com/Socket-Head-Cap-Screw-3MM-A2-Stainless-Steel-p/5040000.htm) | | 52 | | M3x5 | 8 | [Albany County Fasters](https://www.albanycountyfasteners.com/Socket-Head-Cap-Screw-3MM-A2-Stainless-Steel-p/5040000.htm) | | 53 | | M3 Nut | 82 | [Albany County Fasters](https://www.albanycountyfasteners.com/Socket-Head-Cap-Screw-3MM-A2-Stainless-Steel-p/5040000.htm) | | 54 | | M2x10 | 2 | [Albany County Fasters](https://www.albanycountyfasteners.com/Socket-Head-Cap-Screw-2MM-A2-Stainless-Steel-p/5020000.htm) | 6 if using physical endstops | 55 | | M5x55 (low profile) | 6 | [Open Builds](https://openbuildspartstore.com/low-profile-screws-m5-10-pack/) | Be sure to choose the 55mm option | 56 | | Idler Pulley Kit | 8 | [Open Builds](https://openbuildspartstore.com/smooth-idler-pulley-kit/) | Technically only need the pulley body, 2x 625 bearings, lock nut, and washer from this kit. Could be purchased separately | 57 | | GT2 Timing Belt | 10 | [ZYLTech](http://www.zyltech.com/fiber-glass-reinforced-2gt-gt2-timing-belt-custom-length-price-per-meter/) | Two ~3m lengths needed. But best to have extra - but a full continuous 10m | 58 | | GT2 20T Pulley | 2 | [ZYLTech](http://www.zyltech.com/2gt-gt2-6mm-wide-20t-pulley-5mm-6-35mm-or-8mm-bore/) | MUST GET 5mm BORE VERSION!!! | 59 | | LM10UU Bearing | 4 | [ZYLTech](http://www.zyltech.com/lm10luu-linear-bearing-10mm-long/) | This is the long (55mm) version! | 60 | | 10mm x 500mm Shaft | 6 | [ZYLTech](http://www.zyltech.com/10mm-chrome-plated-hardened-rod-shaft-pre-cut-lengths-300mm-1000mm/) | Be sure to select the 500mm option. | 61 | | Micro Limit Switch | 2 | [ZYLTech](http://www.zyltech.com/micro-switch-with-1-meter-wire-2a-125vac/) | **Optional if using sensorless homing | 62 | | MGN9 75mm Rail | 1 | [RobotDigg](https://www.robotdigg.com/product/671/HIWIN-Origin-Miniature-Guideway-Narrow-Linear-Rail) | Be sure to select the **MGN9-1C-75** option | 63 | | 9g Micro Servo | 1 | Various | | 64 | | Nema 17 Stepper | 2 | [OMC](https://www.omc-stepperonline.com/index.php?route=product/isearch&search=17HS13-1334S) | Anything Bipolar around 30oz-in and shorter than 45mm should work. With 22+ mm 5mm bore shaft | 65 | | SKR Mini E3 v2.0 | 1 | [Various](https://www.amazon.com/gp/product/B0882QGFZR/) | v2.0 makes sensorless homing easier | 66 | | SKR Mini LCD | 1 | [Various](https://www.amazon.com/gp/product/B07NZ9SD26/) | **Optional | 67 | | 12 or 24V @5A+ PSU | 1 | [Various](https://www.amazon.com/gp/product/B07PWZQ4MB/) | | 68 | | SeroLaser | 1 | [Maniacal Labs](https://github.com/ManiacalLabs/ServoLaser) | Contact me if you want one | 69 | 70 | 71 | ## Controller 72 | 73 | As noted above, any controller and firmware that supports CoreXY should work but sensorless homing would greatly simplify the design so I decided to try it out. Granted, Marlin is generally not a great option for non-3D printer applications but with a few tweaks it's possible to make it work well. 74 | 75 | I've created a branch of the latest (as of v2.0.6) Marlin that has been configured for this machine and has the core code slightly modified to handle this application better: 76 | 77 | - Added hard coded pen down / up delays to prevent movement starting before the pen is fully down or up. 78 | - Removed Z homing so that a bare `G28` will not fail 79 | - Configured the BLTouch output pins to work with the ServoLaser 80 | - Configured to support M9 to suppress a warning from LightBurn generated gcode which always outputs M9 for Marlin. 81 | 82 | You can find this updated code [here](https://github.com/adammhaile/Marlin/tree/PlotDevice) as well as a pre-compiled [firmware.bin in this repo](/firmware.bin). 83 | 84 | With this configuration you can control the pen via the marlin "Laser" commands `M3` and `M5`. It's also configured so that anything other than a laser value of 0 will fully deploy the pen, so that: 85 | 86 | ``` 87 | M3 S255 ; pen down 88 | M3 S10 ; also pen down 89 | M3 S0 ; pen up 90 | M5 ; pen up 91 | ``` 92 | 93 | Please note that this also all depends on using the [ServoLaser](https://github.com/ManiacalLabs/ServoLaser). This simple device merely reads the "laser" control signal (configured to output on the BLTouch deploy signal (`PA1`) pin) and converts that to a servo control signal. It provides automatic signal filtering so that you avoid fluttering as well as a built in trimpot that allows you to adjust the range and direction of motion. 94 | 95 | The ServoLaser was originally intended to be sold by [Maniacal Labs](https://maniacallabs.com) but we decided to shut down the business before that happened. I do, however, have a couple dozen ServoLaser boards if anyone wants one. Just contact me via adammhaile [at] gmail [dot] com, and I can work out sending you one. Also, the device is not complicated and it would be relatively cheap to have the PCBs fabricated and buy the components - assuming you have the ability to flash the firmware on the ATTiny. 96 | 97 | There's probably a way to make Marlin directly output servo signals, triggered by and `M` code but the intent of the ServoLaser was to avoid the need for doing something like that. 98 | 99 | ## Tool Holders 100 | 101 | In the [Fusion 360 Design](/CAD/PlotDevice.f3z), under the `PenLift` component you will find several different pen holder options: 102 | 103 | - `GenericPenHolder` - Designed to hold any pen up to 16mm in diameter. 104 | - `PigmaMicronHolder` - Designed for genuine Pigma Micron felt tip "pens". They are amazing and highly recommend since you get get as small as 0.15mm tip diameter. This holder will hold them with a high degree of repeatability (for swapping colors). Knock-off Micron pens will likely not fit. 105 | - `Stabilo88Holder` - Should work with the Stabilo 88 or similar. 106 | - `FountainPen` - Mutli-part to hold a fountain pen (or similar) at an angle. Ensure your pen placement and angle will not cause it to crash into the frame! 107 | 108 | All of these holders can be installed with two M3x5 screws (there are 4 holes but 2 on opposite corners works fine) into the MGN rail block. Just ensure it sits between the servo arm and the printed "spring" that's mounted to the pen lift face plate. This "spring" is simply to provide a little down pressure on the pen block, ensuring it doesn't bind in the up position. To that effect, each holder also has a open cavity on the right side - this is for two US nickels as extra weight. This both prevents rail binding as well as provides extra writing pressure on the pen. 109 | 110 | But the sky is the limit here. You can use any of these as a starting point to design your own pen holder for *your* pen of choice. 111 | 112 | ## Build Notes 113 | 114 | There will be no step-by-step guide provided. It would likely take me longer to assemble that than it did to design the machine in the first place. My recommendation is to download and load the provided Fusion 360 design and use that as a basic guide of what goes where. But please read through the following notes before beginning: 115 | 116 | - All of the rods are held in place by compression from the 3D printed blocks they fit into and you need to make sure you get a tight fit. It the top (in terms of print orientation) is not perfectly flat and smooth you should smooth them out by running that face in a figure-eight pattern over some sand paper on a flat surface. Make sure you can place adjoinging printed parts against each other with no noticable gaps between them. 117 | - Start by securing the 2 bearings in the X axis carriage then insert one rod into each of the bearings. Set aside. 118 | - Place a bearing on each of the Y axis rods 119 | - Pre-insert nuts into the `YRail` bottom parts and keep in place with some tape, if need be 120 | - Set each of the `YRail` bottom parts on a flat surface and place the Y bearings in the recess, and then seat the X axis rods into the 2 slots. 121 | - Place the top of the `YRail` components and secure everything with the M25 bolts. Make sure that the X axis rails are fully seated and square. 122 | - At this point you can place the bottom section of the `Front` and `Motor` components on your builds surface and lay down the Y axis rods and front/back frame rods in the recesses. 123 | - Note that the front of the X carriage is the size where the bolts holding the bearings are recessed and there are mount holes for the pen mechanism. 124 | - **BEFORE** putting the top of the `Front` components on, be sure to insert the four M5 lock nuts (flat side up) in each of the recesses. These should have come with the OpenBuilds Idler Pulley Kit. 125 | - Before tightening the bolts fully on each corner, move the tool head around a bit and make sure everything runs smoothly and that it doesn't bind and any of the axis limits. 126 | - Once the frame is built you can assembly the idler pulleys and secure them in place with the M5x55mm bolts. The pulleys on the `YRail` will also require an M5 lock nut. 127 | - For the pulleys on the front corners, be sure that you get the correct placement with the standoffs in the correct placement. Refer to the design. 128 | - When tightening the pulley bolts be sure not to overtighten. You want them just tight enough so that they can spin freely. This is why you must use lock nuts. 129 | - Be **very** careful to study the belt pattern in the design before running the belts. Note that the black colored side of each belt in the design represents the side with teeth. 130 | - For the 500mm rod design you will need over 2m of belt for each of the two runs. But I suggest having about 2.5m for each and cutting off the excess when done 131 | - The `Tensioner` component is used both for tensioning and holding the other end of the belt. Start by inserting one end of the belt through the carriage block belt slow **without** a hole next to it, pull it through then slide the belt into the tensioner body. Make sure that the tensioner is inserted into the block with the belt slot open side up and the portion that holds the bolt facing inward. 132 | - Run the belt around the pulleys and then pull the other end of the belt back through the block and through the belt slot with a hole on the same level as where the belt started. 133 | - Pull the belt tight to get an idea of how much belt you need, and then pull it back out a little and insert the belt into a tensioner with a nut inserted. The pull the tensioner and belt back into the block and pass an M3x25mm bolt through the hole on the other side until it engages with the nut. You can then turn the bolt to tension the belt. 134 | - Once this is done with both belts you want to make sure they are roughly the same level of tension. This is not easy so take your time. You made need to fully loosen and reseat the tensioner forward or back on the belt then tighten again. 135 | - To ensure that the belts are of the right tension you can generally tell if the X axis is square to the frame and the belts provide a bit of resistance when pushing on them with one finger. 136 | - You may need to tighten one side then the other until the axis is square *and* the belts are tight enough. During the process move around the tool head manually and make sure that everything still freely moves. 137 | - Hooking up the motors can be a little finicky since there's no specific X or Y motor. Make sure that both motors are wired in the same wire order. Once connected if the tool head moves in the wrong direction or on the wrong axis you make need to either swap the motor connectors or rotate them 180 degrees in the same place. What will be right honestly depends entirely on the motors used. 138 | - Depending on the length of the arms provided with your servo you may need to sand down the tip a little to make sure it doesn't bind up against the pen holder. -------------------------------------------------------------------------------- /firmware.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/firmware.bin -------------------------------------------------------------------------------- /img/full_machine.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/adammhaile/PlotDevice/20c3dd56a7beccf768e820e9928c713463de7c4e/img/full_machine.jpg --------------------------------------------------------------------------------