To make the experience fit your profile, pick a username and tell us what interests you.
I am incredibly happy with the latest drawing. A huge improvement on contrast and sharper transitions.
Some of the improvements:
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.
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.
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.
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.
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.
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).
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.
Become a member to follow this project and never miss any updates
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies. Learn More