Skip to main content

dr4wbck

The Idea

requirements

Initially, our Idea was to build a drawing machine similar to the AxiDraw, but with a capstan drive instead of a belt for driving. We just learned about this type of drive in the lecture and were eager try it out. The motion system would be an H-bot.
For the capstan drive, we took much inspiration from the UrumbotXY 2.0.

First, we met and thought about how to build the machine in general. We decided to use aluminum extrusions and wheels as linear guides. We made some initial sketches to better understand, how the machine whould look like and what parts we would need.

20.jpg

Here you can see the inital concept. The wheels for the linear guide as well as the v-wheels for guiding the rope are placed on the middle carriage and the rope is fixated at the head.

10-sketch_top.jpg

We split the work into the following sub tasks.

  1. Trying out RAMPS (a kit containing an Arduino for the firmware and drivers) and get it working with Printrun.
  2. Designing the parts for the tail and the motor mounts.
  3. Designing a head with a Pen holder and a mechanism to lift it.
  4. Producing and testing the prototypes and the parts needed.

Initial Design

  • many things we modeled ourselves, but we also found models online we used for standard components.

The initial design we kept simple so we could produce them fast and test out the mechanism. We built a simple motor bracket for connecting the motor to the extrusion: 10-motor-mount.jpg

We printed the capstan and pulley from the UrumbotXY 2.0 as well as a simple head. 06-idler.jpg 40-head.jpg

The carriage we already had as a metal part. It was very sturdy. Here we needed to be carefull with the screws. But the wheels for the second axis where on top of the other wheels, which we couldn't implement and Ferdi advised against it. 13-carriage.jpg

The tail was designed with only one wheel, which may have bin one cause for our problem. 30-tail.jpg

Then we redesigned it to use both metall carriage, which was pretty sturdy. Also we used eccentric screws to tighten the rope. 14-carriage-new.jpg

Then we designed a head for initialy screw down and tighten the rope. 50-assembly.jpg

Also we produced a wire chain to connect the head with the board. In the end we noticed, that the chain was not that sturdy and was not that usable for our machine -.-. 90-cable.jpg

First Assembly

  • Capstion Line muss auf einer ebene sein

After designing and printing, we assambled everything... 05-gewinde.jpg

... cut threads, screwed everything down, assambled the capston drive rope... 10-assembly-rl.jpg

... and tried to operate it manually:

yay :D

And it worked nicely :P

Continuation & Redesign

design changes

  • removing 9 to place v bearings on same level as vertical extrusion
  • to do that we have to put v bearings at the end of the extrusion caps
  • do not use motor end caps but use metal or 3d printed plastic caps. ask ferdi, maybe also acrylic

When operating manually, we needed to hold it down so that it is stable, which was the first thing we improved.

10-mistakes.jpg

First just making a little angle in the motor bracket improved it a lot but still was oscillating...

... so we created a sideway stabilisation, which then was pretty stable. 30-new-foot.jpg

Here the head and the initial design for lifting holding and adjusting the pen.

10-head.jpg

Then we inkluded in the head and on the side an endstop for executing g-code.

And also a never produced new cariage for mounting the cable chains for the head.

20-carriage.jpg

Lessons Learned

  • distributing the work in a team is hard
    • also finding parts, that can be operated on parallel is not that easy
  • nothings works out as expected and things that can go wrong, will go wrong (as told so before)
  • we should have partitioned our time more efficiently, then we whould have had a good working product on time and not spend time on little, not necessary things

Setting up the Firmware

    https://www.digikey.com/en/products/detail/texas-instruments/DRV8428PWPR/13563046 actually, they are in the lab alternative: hbot firmware together with ramps we fonud those at the 3d printer in the hackspace: https://www.allegromicro.com/~/media/Files/Datasheets/A4988-Datasheet.ashx can you use different stepper drivers in one project? just use the full ramps kit.

    Ferdi's Tipps:

      first, try stuff out with cartesian system, then switch to corexy Den Strom der Treiber stellt ihr so ein (deepseek):
      Stepper Motor Driver Voltage (Vref) Adjustment Guide for RAMPS 1.4
      ⚠️ Safety First
      Power Off before adjusting.
      Use a multimeter (DC 0-2V range).
      Ensure proper heatsinks/fans are installed.
      🔧 How to Adjust Vref
      Locate the potentiometer on each driver.
      Connect multimeter:
      Black probe → RAMPS ground (e.g., power supply negative)
      Red probe → Potentiometer
      Adjust screw:
      Clockwise → Increase voltage
      Counter-clockwise → Decrease voltage
      📊 Recommended Vref Values
      Calculation Formulas
      Driver	Formula
      A4988	Vref = Imax × 0.7
      DRV8825	Vref = Imax × 0.5
      TMC2xxx	Configure via UART
      Common Presets (Volts)
      Motor Current	A4988	DRV8825
      1.0A	0.7V	0.5V
      1.5A	1.05V	0.75V
      2.0A	1.4V	1.0V
      🛠 Troubleshooting
      Symptom	Solution
      Skipping steps	Slightly ↑ Vref
      Overheating	↓ Vref + check cooling
      Grinding noise	Check current + wiring
      💡 Pro Tips
      Start with lower values and test.
      For TMC drivers, use software configuration.
      Label adjusted drivers with a sharpie.
      📌 Always verify motor specs in their datasheet!
      

        Die Motor-Kabel identifiyiert Ihr, indem ihr erstmal die beiden paare identifiziert. Dazu könnt ihr zwei Kabel zusammendrehen (z.B. rot+grün) und schauen ob sich der Motor dann schwerer drehen lässt. Sobald Ihr ein paar gefunden habt, ist das andere das zweite Paar (schwarz gelb). Dann schraubt ihr zuerst Paar1 und dann Paar2 an die vier Klemmen z.B. rot, grün, schwarz, gelb. Wenn der Motor dann falsch rum dreht, invertiert Ihr ein Paar. grün, rot, schwarz, gelb. Ihr könnt aber auch einfach bis Sonntag warten wenn ich wieder da bin.

        even more tipps: Hi! Some Tipps for the ramps board:

          You plug the power to all 4 inputs on the Ramps board (either with 4 cables or 2 cables and two jumpers) Use all three jumpers on the drivers to do 1/32 microstepping. identify the pairs of the motors connect the motors to "X, Y, Z" connect x,y to the microswitches to the min-Endstopps z to max in Ramps adjust the current (as explained) install printrun/pronterface home each axis seperatly and see if it is going in the right direction. If not you invert a motor by twisting the two wires. ALWAYS TURN OFF THE POWER WHEN MESSING WITH THE MOTOR WIRES The is a file in Marlin configuration.h where you can adjust the settings for direction, size, min, max-endstops... Once you are able to home each axis, you can try to home all of them by clicking "Home" (and pressing X, Y, Z Endstop switches twice) Then you can start to see if the axes are moving the right distance and adjust the "steps per millimeter" Use the "rule of three" to find the right setting. You will have to repeat this a few times for each axis until it is right. Excel or OOCalc are your friends!
            There is a page that might help a bit: https://blog.prusa3d.com/calculator_3416/ You should do this with the normal XYZ firmware first. Once this works and you have the right steps per mm, you can switch to CoreXY. Oh...you know that you can enter Gcode-commands in pronterface. M119 is very useful for debugging the endstops!

            jakob checked:

            notation: ij (pair i, cable j)

            find out pairs: measuring current. current is induced when turning if both are connected to one coil, current can be measured

            pairs are:

              blue, red (1) green, black (2)

              in the end we want to have order

                1A 1B 2A 2B

                stepper motors behave in the following way:

                  if you change the order one of the cable pairs 1A 1B 2B 2A, the direction of the motor changes if you change the order of both of the pairs: 1B 1A 1B 1A, this is invariant to the direction of the motor direction if you change both cable directions and you switch the pairs 2B 2A 1B 1A, this changes the direction of the motor

                  procedure: align pairs next to each other, check if the motor turns right way. if not: change one of the pairs

                  what is right direction? we will find out when running everything, but one can also change that in software

                  setting all jumpers to do 1/16th microsteps: https://reprap.org/wiki/RAMPS_1.4#Drivers

                  connect motor to x

                  end stops. man will min und max end stops für z. für x und y reicht min.

                  adjust current limit: https://www.pololu.com/blog/484/video-setting-the-current-limit-on-pololu-stepper-motor-driver-carriers

                    connect everything but the motor find out max current, check datasheet
                      we use wantai stepper motor model number 42BYGHW811 max amperage: 2.5A choose a driver with continuous current > motor driver set current limit to max of motor limit set even lower if
                        set lower if want system to run cooler, less power etc. calculate vref according to product page for DRV8834 its Current Limit = VREF x 2 our VREF is 1.25V we have exactly that driver measuring
                          connect to power supply dont use the power supply current for current measurement since driver

                          installing printrun

                          installing marlin using platformio

                          getting it to run. tstraight forward

                          add servo

                            https://3digitalcooks.com/2013-12-setup-servo-with-marlin/ https://marlinfw.org/docs/gcode/M280.html and other gcodes servo: possible

                            corexy einstellen

                              https://marlinfw.org/docs/configuration/configuration.html

                              waiting for machine to be finished

                                adjust params x: 10cm -> tatsächlich 7.6 y: 10 -> 7.7 having cartesian system: one motor turns at a time when going in one direction. this is okay. we just have to measure how far a string travels:w using M92 gcode left motor: 100mm -> 78.4: steps per mm is originally 80 100/78.4 = */80 new steps per mm = 80 * 100/78.4 = 102 100mm -> 99.4 new steps per mm: 102 * 100/99.4 = 102.62

                                now transferring to corexy

                                setting corexy and try if we have to change something.

                                works the same.

                                switching axes: rotate one socket of the two

                                switching direction: switch motors

                                homing

                                  am anfang schon homing buttons hinpacken. besser

                                  steps calibrieren:

                                    eine umdrehung, messen wie weit. durch anzahl steps pro umdrehung teilen. iterativ machen. 3 bis 4 iterationen

                                    Getting it Running

                                    2025-04-15__11-31-33.jpg

                                    #define BAUDRATE 250000
                                    

                                    2025-04-15__11-32-50.jpg

                                    Determine Steps per Millimeter

                                    // Enable one of the options below for CoreXY, CoreXZ, or CoreYZ kinematics,
                                    // either in the usual order or reversed
                                    #define COREXY
                                    //#define CoreXZ
                                    //#define COREYZ
                                    //#define COREYX
                                    //#define COREZX
                                    //#define COREZY
                                    

                                    80-identify-steps-per-mm.jpg

                                    /**
                                     * Default Axis Steps Per Unit (linear=steps/mm, rotational=steps/deg)
                                     * Override with M92
                                     * X, Y, Z [, I [, J {, K...]]], E0 [, E1[, E2...]]
                                     */
                                    #define DEFAULT_AXIS_STEPS_PER_UNIT { 102, 102, 400, 500 }
                                    

                                    Homing

                                    Generate toolpath using inkscape

                                    10.jpg

                                    20.jpg

                                    30.jpg

                                    References

                                    Urumbu Drivers

                                    Capstan Drive

                                    Other

                                    Reflection

                                    • working in a team was difficult...