Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    Using HangPrinter geometry for Wall Plotter?

    Scheduled Pinned Locked Moved
    General Discussion
    3
    37
    1.4k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • TCundefined
      TC
      last edited by

      Hi all,

      i am thinking of building a wall plotter like this one

      https://www.marginallyclever.com/products/makelangelo-5/

      just with 3 anchors instead of 2 for more stability.
      Is it possible to achieve this with a Duet Wifi? It seems to be a HangPrinter geometry just without a D axis. I would love to hear some oppinions about this project? 🙂

      1 Reply Last reply Reply Quote 0
      • TCundefined
        TC
        last edited by

        Actually I am also interested if it would also be possible with 2 anchors since mit might be easier as a first step 😉

        1 Reply Last reply Reply Quote 0
        • TCundefined
          TC
          last edited by

          @dc42 Or might it even be possible to define an own geometry?

          JoergS5undefined 1 Reply Last reply Reply Quote 0
          • JoergS5undefined
            JoergS5 @TC
            last edited by JoergS5

            @TC you can implement a new kinematic following this information: https://github.com/Duet3D/RepRapFirmware/blob/dev/AddingNewKinematics.md

            In the reprapforum is a specific section for hangprinter
            https://reprap.org/forum/list.php?423
            where peta created a thread about using it with Duet.

            TCundefined 1 Reply Last reply Reply Quote 0
            • TCundefined
              TC @JoergS5
              last edited by

              @JoergS5 Thanks that sounds interesting. I just had a look into the kinemetics cpp files and I guess I could do that. Do you know if all the functions need to be present? For example I am not planning to have any kind of auto callibration in the beginning. Bed leveling is obsolete anyway since be are talking about a 2D system 😉

              JoergS5undefined 1 Reply Last reply Reply Quote 0
              • JoergS5undefined
                JoergS5 @TC
                last edited by JoergS5

                @TC just take a cpp and h file of a kinematic which is similar as a template. The public functions in the h file must be implemented, often you can copy the code from the similar kinematic as a first version. You must implement the functions, because most of them are virtual ones.
                I would mark the methods which are not finished yet with a comment with the word todo.

                It is useful to look into the implementations of the methods for the different kinematics, this will tell you the functions the methods are for (e.g. the LinearDelta is very detailed).

                If the sense of a method is unclear, you can ask here.

                I expect you get problems if trying to implement only 2 coordinates, as most functions rely on a 3 axis cardesian world coordinate system. So you should implement the kinematics with a "virtual" third coordinate Z (or maybe Y in your case) which is always 0.

                TCundefined 2 Replies Last reply Reply Quote 0
                • TCundefined
                  TC @JoergS5
                  last edited by

                  This post is deleted!
                  TCundefined 1 Reply Last reply Reply Quote 0
                  • TCundefined
                    TC @TC
                    last edited by

                    This post is deleted!
                    1 Reply Last reply Reply Quote 0
                    • TCundefined
                      TC @JoergS5
                      last edited by TC

                      @JoergS5 I am thinking about a calibration method that uses 4 defined points (like the corners of a paper) to calculate the positions of the two anchor points. That way the user would not need to measure the them himself but instead can manually move the printhead to the 4 points and the maschine saves the relative changes of motor positions.

                      My problem now is that this "Homing" procedure involves manual movements and also has to be done to know the anchor points. Is there a way to pass these coordinates to the kinematics after homing is done? My Idea was to redefine the kinematics using M669 at the end of the homing macro...

                      In detail without given Position parameters in M669 the kinematics would create the axes A and B which corespondes to the single motor and then can be used by the user inside the homing procedure to move to the calibration points. After the anchor positions are calculated M669 is excecuted again with parameters passed and the kinematics creates a normal X and Z axis.

                      JoergS5undefined 1 Reply Last reply Reply Quote 0
                      • JoergS5undefined
                        JoergS5 @TC
                        last edited by JoergS5

                        @TC manually moving the steppers don't help, because the firmware doesn't know the position, and it's also not precise. It's only the firmware=>stepper direction working, not from stepper to firmware.

                        I would define the 4 limiting borders instead of points and place endstops there (borders are easier to target than points). You could use 4 endstops type NC (normally closed) wired in series (or 2*2) and connect them to one endstop(or 2), so when one of them is triggered, the circuit is open and the endstop is triggered. Then store this stepper positions. (Maybe by means of the new object model). Another method is to trigger the endstops by the wires, but this could be difficult to implement. I thought of optically marking them with a color could be a solution.

                        What I don't understand is why you want to measure 4 points. Two positions should be sufficient, because the other position is defined by the distance. The you can set the positions by G92 directly after endstop trigger.

                        You can set M669 values at all times and overwrite values also. If a kinematics or cache value recalculation is necessary, the Recalc() method is for this. When M669 reads in parameter X e.g., then in the code to read X must be set a flag to Recalc().

                        TCundefined 1 Reply Last reply Reply Quote 0
                        • TCundefined
                          TC @JoergS5
                          last edited by TC

                          @JoergS5 Ah I was not precise enough. I did not mean I would move them by hand but by defining motor A and B as axes and then use DWC to control them.

                          Well the idea behind the 4 point system is the following:
                          In the beginning the printer knows nothing. The printhead is hanging in two wires at the wall but it does not even know how long the wire is to the each anchor. So what it needs to find out is the X and Y coordinate for each anchor. That gives 4 variables. Now I move to the left top corner and define it as 0,0. For the followig 3 moves it can measure the change in wire length but still does not know its total length. That gives me 3 relative lengths that make it possible to calculate the anchor point. It might be possible with just 3 points but in my derivation it only works with 4 😉

                          The problem with endstops is that due to the highly non linear behaviour depending on the start position it is nt even clear which border got hit. Additionally a border only gives my one coordinate... I would need even more measurements

                          JoergS5undefined 1 Reply Last reply Reply Quote 0
                          • JoergS5undefined
                            JoergS5 @TC
                            last edited by

                            @TC you should try your idea. You can use the new object model to store the values and make the calculations, or you set parameters with M669 and let the firmware calculate the distances and other parameters.

                            I had some discussions in reprapforum about using wires. There were some interesting ideas to avoid the length deviation due to the take-up on a spindle.
                            This here eg: https://reprap.org/forum/read.php?14,815780,page=3

                            TCundefined droftartsundefined 2 Replies Last reply Reply Quote 0
                            • TCundefined
                              TC @JoergS5
                              last edited by

                              @JoergS5 oh thanks! I was thinking about the same problem and will study the thread!

                              JoergS5undefined 1 Reply Last reply Reply Quote 0
                              • JoergS5undefined
                                JoergS5 @TC
                                last edited by

                                @TC this were two additional links which I stored myself, giving ideas:
                                https://reprap.org/forum/read.php?2,151871,page=3
                                http://www.wemakerobots.com/en/3d-printer/dual-wire-gantry-3d-printer

                                1 Reply Last reply Reply Quote 0
                                • droftartsundefined
                                  droftarts administrators @JoergS5
                                  last edited by

                                  @JoergS5 said in Using HangPrinter geometry for Wall Plotter?:

                                  I had some discussions in reprapforum about using wires. There were some interesting ideas to avoid the length deviation due to the take-up on a spindle.
                                  This here eg: https://reprap.org/forum/read.php?14,815780,page=3

                                  @JoergS5 I remembered that there's this thread on the reprap forums https://reprap.org/forum/read.php?2,151871,177714#msg-177714 about using a tilted pulley to feed wire around a pulley. The incoming/outgoing wire is always on the same position, so there isn't an issue with it moving up and down the drive pulley, causing length deviation. Seem like they had problems getting it to work as a CoreXY though, possibly due to tension.

                                  Ian

                                  Bed-slinger - Mini5+ WiFi/1LC | RRP Fisher v1 - D2 WiFi | Polargraph - D2 WiFi | TronXY X5S - 6HC/Roto | CNC router - 6HC | Tractus3D T1250 - D2 Eth

                                  JoergS5undefined 1 Reply Last reply Reply Quote 0
                                  • JoergS5undefined
                                    JoergS5 @droftarts
                                    last edited by JoergS5

                                    @droftarts I didn't mean moving up and down the axis position, but doubling (tripling etc.) the wires on the spindle when they are stacked, changing the radius and so steps/mm. This will result in a changing movement which is difficult to calculate.
                                    The solution with two pulleys had a problem that the solution had too much friction. I think the solution with the stepper and 4 spindles/pulleys at the edges is a nice solution.

                                    For tension, there was also a lot of discussion what to take, like FireLine, Kevlar, steel etc.

                                    One interesting addition was a formula how much friction is needed for wires:
                                    https://reprap.org/forum/read.php?397,817525,826869#msg-826869
                                    Unfortunately I didn't understand the formula...

                                    TCundefined 1 Reply Last reply Reply Quote 0
                                    • TCundefined
                                      TC @JoergS5
                                      last edited by TC

                                      @JoergS5 Hey I saw on the other topic you are also building a new kinematic system. Can you help me to build the firmware? I tried to follow the BuildInstructions.md file but it seems some components are not availible for download...

                                      At point 3. I get to this page: https://sourceforge.net/projects/gnuarmeclipse/
                                      which tells me it is outddated 😕

                                      JoergS5undefined 1 Reply Last reply Reply Quote 0
                                      • JoergS5undefined
                                        JoergS5 @TC
                                        last edited by JoergS5

                                        @TC the BuidInstructions.md is a file in the github, your link is missing all the part http etc. in front of it.

                                        The correct path to the file is:
                                        https://github.com/Duet3D/RepRapFirmware/blob/v3.02-dev/BuildInstructions.md
                                        Please take the one of the branch you're using, they may be different. (Change branch in github, the correct .md file will be shown then)

                                        TCundefined 1 Reply Last reply Reply Quote 0
                                        • TCundefined
                                          TC @JoergS5
                                          last edited by

                                          @JoergS5 Yes I know but the download link in the BuildInstruction file in version 3.1.1 did not work. But the link in the file you posted worked 🙂
                                          Now I followed the instruction and unfortunately am stuck trying to build CoreNG. I get this error:

                                          17:29:36 **** Incremental Build of configuration Default for project CoreNG ****
                                          make all
                                          make: *** No rule to make target 'all'. Stop.
                                          "make all" terminated with exit code 2. Build might be incomplete.

                                          17:29:36 Build Failed. 1 errors, 0 warnings. (took 532ms)

                                          JoergS5undefined 1 Reply Last reply Reply Quote 0
                                          • JoergS5undefined
                                            JoergS5 @TC
                                            last edited by

                                            @TC I don't build for all, so I don't know how to help. I use a specific target, Duet 3 e.g. and then build. When I build RepRapFirmware, it builds all dependent projects automatically (including CoreNG).

                                            TCundefined 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Unless otherwise noted, all forum content is licensed under CC-BY-SA