a graphite pencil plotter

Similar projects worth following
The AutoGraph project is about exploring what it takes to automate the process of drawing on paper using a graphite pencil.

Graphite pencils are a very dynamic drawing tool. Applying a small force to a pencil against paper will result in a light marking. Pressing hard will produce a dark marking. Additionally, each marking wears away and changes the geometry of the graphite tip.

Graphite marking behaviors are not easy to predict and control. Automating the drawing process with graphite pencils will require new tools and methods.

  • Higher Contrast, Sharper Transitions

    John Opsahl11/23/2023 at 04:11 0 comments

    I am incredibly happy with the latest drawing. A huge improvement on contrast and sharper transitions. 

    Some of the improvements:

    1. Increased speed of the stepper motor controlling pencil position. Faster the pencil moves, the sharper the transitions are.
    2. Exponential moving average on the potentiometer reading. This had a huge impact on mitigating the effects of the noise on the potentiometer signal.
    3. Setting pencil zero position at near zero potentiometer readings. This ensures that position error from missed steps do not accumulate large enough over time to prevent the pencil from being lifted off the paper when a 0 pencil position was commanded.
    4. Returning to the last position after pencil graphite is dispensed. This ensures no visual artifact on the paper when graphite is dispensed. It just continues where it left off.

    Remaining challenges:

    1. I had to give up on any automated process for detected when more graphite needs to be dispensed because the pencil control stepper motor tends to lose steps at the current speed. I didn't want to run it any slower because it already takes so long. I added a switch to run the graphite dispense routine anytime I saw that the graphite was getting too low. 
      Options being considered:
      1. I could add an adjustable height non-contact limit switch to the pencil cart. The switch would trigger whenever the pencil was close enough to the paper that additional graphite should be dispensed.
      2. I could add an encoder on the motor. This is more expensive. I figure if I do this, I might as well just switch to a DC motor for faster speed.
    2. The system runs so slow because of the response time of the pencil control stepper motor. Options being considered:
      1. Increase stepper motor speed by decreasing microstepping configuration of the stepper motor driver. My testing so far has shown that motor chatter tends to increase at lower microstepping values, but there is likely still opportunity to increase speed with this approach without influencing draw quality.
      2. Change to a DC motor with an encoder.

    I will likely explore all the options that don't require spending more money on the system before I jump to a DC motor with an encoder. I often learn the most by pushing cheap hardware to it's operational limits.

  • First Drawing

    John Opsahl11/05/2023 at 04:14 0 comments

    This first drawing is a proof of concept. 3 hours to complete. A cheap 0.7mm HB mechanical pencil. An Arduino Nano to control the contact force between the pencil and paper and to dispense pencil graphite as needed. An Arduino Uno running GRBL and GRBL shield to control the 2 axes. G-code file generated using LaserGRBL. CNCjs as the g-code sender software. About 12 hours of troubleshooting and system tuning before achieving this level of drawing quality. 

    Next step is to achieve sharper transitions and higher contrast by increasing the speed of the pencil control response and/or increasing the duration between movements to match or exceed the pencil control response. I can start to play around with different pencils and multiple passes after that.

  • End Effector Upgrades

    John Opsahl09/27/2023 at 03:16 0 comments

    I am between projects at the moment so I figured I would make a few upgrades to the AutoGraph end effector. 

    I changed from a 3D printed design to a laser cut design. Two reasons -> 1) laser cutting is at least 10X faster so allows for faster iterations, 2) I was never able to print the 3D printed parts to a tight enough tolerance on my 3D printer.

    Instead of two cylindrical guide rails and four linear bearings, I am now using just one rectangular guide rail and two carriages. Using two guide rails added too many constraints on a design that can not hold a tight tolerance. The result was the pencil cart and push plates would bind up during travel and ultimately prevent the ability to make very light pencil makings. Travel is very smooth with the single rectangular guide rail. After making adjustments to the carriages and lubricating, the carriages would slide down the rail just by gravity. 

    The last significant change was selecting a new spring. The spring selection between the push cart and pencil cart is critical for achieving a wide range of pencil markings from light to dark. I played around with spring options for about two hours last Saturday before arriving at one that allows a very light pencil marking at the low side and doesn't push the pencil lead back into the pencil at the high side.

    All of the upgrades came together during initial testing tonight. The new end effector successfully made "light" and "dark" pencil makings with promising contrast between the two. After more than two years since I started on AutoGraph, it's looking like I may actually finish this project. 

    Now on to getting the 2 axis plotter wired up and working with GRBL. 

  • third attempt with slide potentiometer

    John Opsahl03/01/2022 at 16:18 1 comment

    It took three attempts but I believe I have arrived at a viable method to control the amount of force between the pencil graphite and paper. This third approach uses a slide potentiometer and two springs. The springs are placed between the driver cart (the cart directly connected to z-axis motor lead screw) and driven cart (the cart with the pencil that floats freely on the z-axis). As the driver cart moves down, the pencil graphite contacts the paper and begins to compress the springs between the driver and driven carts. All the while, the slide potentiometer is used to measure the relative vertical distance between the driver and driven carts (i.e. the spring compression distance).  

    By Hooke's law, we know that the amount of force needed to compress a spring is directly proportional to the distance that the spring is compressed => F=kx. More spring compression distance -> more force. Less spring compression distance -> less force. Therefore, a control on the slide potentiometer readings will allow control of the force between the pencil graphite and paper.

    My initial approach to spring constant selection has been the following. At full compression, the spring force must be near but no greater than the holding friction force between the graphite and mechanical pencil. When the force between the graphite and paper exceeds the holding friction force between the graphite and mechanical pencil, the graphite "slips" and is pushed back into the mechanical pencil. Having a spring force that is near holding friction force results in a wide range of graphite to paper contact forces (i.e. a wide range of light to dark pencil markings). 

    I anticipate that there is a point at which increasing force between the graphite and paper will not result in result in darker markings. Instead, the graphite will start to deform or tear the paper. Consequently, a more practical upper limit on the spring force at full compression is probably when the darkest pencil marking is achieved without deforming the paper. The main benefit of a lower upper limit of spring force at full compression is better slide potentiometer resolution -> a larger displacement (i.e. change in resistance) results in smaller change in contact pressure. My plan is to eventually make spring selections based on this approach, but the method described in the paragraph above is easier to determine and good enough for now.

    The main challenge I am working against right now is friction between the z-axis bearings and rails. The friction between these components prevents achieving low contact forces between the graphite and paper. It is bad enough that the current design cannot achieve what could be considered as light pencil markings. I believe the issue is that the 3d printed design is not square enough to achieve good alignment between the bearings and rails; the bearings are binding up on the rails. Two approaches that I have considered to resolve this: 1) redesign 3D printed parts to include rail and bearing adjustment features, 2) redesign the assembly for laser cut that has better part tolerance. Redesigning for laser cut is going to be the simplest and probably most successful approach. Primarily because I am very familiar with using laser cut parts for cnc design and laser cut has much faster turnaround time if I mess something up. 

  • bitmap image to AutoGraph drawing

    John Opsahl10/24/2021 at 00:00 0 comments

    The AutoGraph will operate using the same g-code instructions as a laser engraver. Instead of interpreting the "S" g-code command as laser power, the AutoGraph will interpret it as the pressure between the pencil and paper. The 0-5V "laser power" signal from a Arduino Uno running GRBL will be connected to an Arduino Nano that controls pressure between the pencil and paper (via control of the z-axis stepper motor). 

    Unlike a laser engraver, a graphite pencil wears down during use, requiring that graphite be periodically dispensed from the mechanical pencil. To account for this, the Arduino Nano controlling pencil pressure will also track the length of graphite currently at the tip of the pencil. When it detects that additional graphite should be dispensed, a feed hold will be commanded to the Arduino Uno via the feed hold hardware pin. During the feed hold, the Arduino Nano will command a graphite dispense operation. Afterwards, the feed hold will be released and the drawing will continue.

    The LaserGRBL application will be used to convert bitmap images to laser engraver g-code. 

  • first attempt with FSR

    John Opsahl10/13/2021 at 04:46 1 comment

    I was ultimately was unsuccessful at achieving controlled pressure between pencil and paper using a force sensitive resistor (FSR). 

    The first challenge is that the FSR has to be compressed between two contact surfaces to show a change in resistance. I went about making this work by placing the FSR between a driver cart (i.e. directly connected to z-axis motor lead screw) and a driven cart (i.e. cart that the pencil cart is mounted to) on the linear z-axis. Downward movement of the lead screw cart compresses the FSR at the pencil cart when the pencil graphite makes contact with the paper. The main issue is that whenever there is any small upward movement to decrease pressure between pencil and paper, the pencil cart tends to separate from the lead screw cart and removes all compression at the FSR. Such large changes in resistance for such small changes in movement resulted in oscillations around the pressure control point.

    Challenge two is that the weight of the pencil cart works against achieving a low pressure pencil marking. The weight of the pencil cart has to be overcome before compression at the FSR will occur. The result was that the lightest pencil marking possible was closer to what is generally a medium pencil marking value that can be achieved by hand. This essentially truncated the value gamut of the pencil by about fifty percent.

    The next strategy is to control pressure between pencil in paper by measuring and controlling to the displacement of a spring. A compression spring and linear potentiometer will be mounted between the lead screw and pencil carts. Displacement will be measured by change in resistance of the potentiometer. A spring constant will be selected such that a small pressure difference will correlate to a relatively large displacement (and resistance). 

  • first thought on how to automate pencil markings

    John Opsahl07/28/2021 at 03:38 0 comments

    Humans use pressure sense, muscle memory, and rapid visual feedback to make consistent pencil markings on paper. It follows then that my first thought on how to automate this process is to use a force sensor, a three axis position control gantry, and a camera.

    It may be possible to indirectly predict force applied between the graphite tip and paper based on a known position of the graphite tip relative to the paper. The challenging part of this approach would be knowing where the tip of graphite is even when every distance traveled on paper wears away some of the tip. The graphite tip wear behavior would have to be studied well enough to be able to make good predictions of how much tip wear occurs per unit length the pencil travels on paper. I imagine graphite tip wear increases with increased force between the pencil and paper as well. 

    Fixing the orientation of the pencil relative to the paper and using a force sensitive resistor is going to be the first pencil force measurement method I try. It seems to be a simpler approach than tracking the position of the graphite tip. 

    Interestingly, I found a force sensitive resistor that is used in stylus pens for purchase online. It has 5 to 500g sensitivity and shows near linear 1/resistance response to force input.

View all 7 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates