author
13Instructables101,698Views69CommentsNew ZealandJoined November 6th, 2015
55+ years in electronics, computers, and teaching ... now retired.

Tell us about yourself!

Complete Your Profile

Achievements

10K+ Views Earned a bronze medal
Show 1 More »
  • lingib commented on lingib's instructable CNC Dual Arm Plotter17 hours ago
    CNC Dual Arm Plotter

    Thank you for the servo info :)And fine on the cosine formula. It is definitely the way to go for arm ratios other than 1:1. The cosine formula simplifies down to angle=acos(distance/(2*arm-length)) if the arms have a 1:1 ratio.The problem you have with the joints can be eliminated by drilling the joints to 3/16 inches (4.76mm) and inserting a tubular 3/16 inch radio spacer. Cut the spacer length to suit by placing it to the correct depth in an electric drill and holding a hacksaw blade or fine pitch file against the spacer ... works like magic. Now sandwich the spacer between two 3mm washers and a 3mm nut and bolt. The finished result is a low friction joint with no sideways play.

    View Instructable »
  • lingib commented on lingib's instructable How to Cut & Fold Sheet Aluminium2 days ago
    How to Cut & Fold Sheet Aluminium

    I found a length of angle in a scrap yard many years ago and made it myself.Just cut two equal lengths and drill two holes for the bolts. I drilled the holes at least 25mm below the top edge so the full length of the bender can be used to form a lip when making radio chassis.The reason for so many slots is to accommodate different width radio chassis. I always bend the two longer sides then bend the shorter sides which means I need two slots.

    View Instructable »
  • lingib commented on lingib's instructable CNC Dual Arm Plotter3 days ago
    CNC Dual Arm Plotter

    Thank you for your comment :)I looked at 1:2 shoulder:elbow ratios but opted for equal length arms as the maths was simpler and making "Offset1=Offset2" allows for 360 degrees rotation should that be required.The accuracy of the "dual-arm" plotter configuration can be improved by attaching GT2-20 pulleys to each of the motors and repositioning them sideways. Now fix each of the shoulder arms to a GT2-80 pulley that is free to spin about 6mm bolts located where the motors were originally positioned. GT2-200 timing belts linking each of the pulley pairs creates a 4:1 gear ratio.Replacing the "EasyDriver" with a "Big EasyDriver" set to 16 times microstepping increases the total resolution by a factor of 4(gear)x2(microstepping)=8.The lines shown in t...

    see more »

    Thank you for your comment :)I looked at 1:2 shoulder:elbow ratios but opted for equal length arms as the maths was simpler and making "Offset1=Offset2" allows for 360 degrees rotation should that be required.The accuracy of the "dual-arm" plotter configuration can be improved by attaching GT2-20 pulleys to each of the motors and repositioning them sideways. Now fix each of the shoulder arms to a GT2-80 pulley that is free to spin about 6mm bolts located where the motors were originally positioned. GT2-200 timing belts linking each of the pulley pairs creates a 4:1 gear ratio.Replacing the "EasyDriver" with a "Big EasyDriver" set to 16 times microstepping increases the total resolution by a factor of 4(gear)x2(microstepping)=8.The lines shown in the "After" photo in step 11 are now perfectly straight.Would be interested to know what servos you are using?

    View Instructable »
  • lingib commented on lingib's instructable CNC Dual Arm Plotter4 weeks ago
    CNC Dual Arm Plotter

    The lines would still be curved.There is an inherent distortion whenever you convert XY co-ordinates into angle-distance. The maths behind this is explained in step 3.The good news is that this distortion can be masked by introducing addition plotting points as demonstrated in step 11.

    View Instructable »
  • lingib commented on lingib's instructable CNC Drum Plotter1 month ago
    CNC Drum Plotter

    Thank you for your comments :)The plotter was built as proof-of-concept. If I were to redesign this plotter I would use stronger motors and add a step-up belt drive to rotate the drum ... this would eliminate the need for a drum tensioner. Other than that your ideas would work ... plus you could make the drum as long as you like.

    View Instructable »
  • lingib commented on lingib's instructable CNC Dual Arm Plotter1 month ago
    CNC Dual Arm Plotter

    The code for this plotter has been udated to support lines and arcs. See Step 11 of this instructable for "CNC_dual_arm_plotter_v2.ino"

    View Instructable »
  • lingib commented on lingib's instructable CNC Dual Arm Plotter1 month ago
    CNC Dual Arm Plotter

    The "interpreter" commands to which you refer do not appear on the menu as they are only required when plotting the output from Inkscape.The only commands that an Inkscape plotter must recognise are G00 (linear move with the pen up), G01 (linear move with the pen down), G02 (clockwise arc with the pen down), and G03 (counter-clockwise arc with the pen down). All other commands may be safely ignored.For proof-of-concept testing I have converted all G02, and G03 commands to G01 (linear move with pen down). For the purpose of transferring watercolor outlines to paper this is accurate enough as points that are close together approximate a straight line.Code for generating perfect lines and true XY arcs are detailed in my instructable https://www.instructables.com/id/CNC-Drum-Plott...

    see more »

    The "interpreter" commands to which you refer do not appear on the menu as they are only required when plotting the output from Inkscape.The only commands that an Inkscape plotter must recognise are G00 (linear move with the pen up), G01 (linear move with the pen down), G02 (clockwise arc with the pen down), and G03 (counter-clockwise arc with the pen down). All other commands may be safely ignored.For proof-of-concept testing I have converted all G02, and G03 commands to G01 (linear move with pen down). For the purpose of transferring watercolor outlines to paper this is accurate enough as points that are close together approximate a straight line.Code for generating perfect lines and true XY arcs are detailed in my instructable https://www.instructables.com/id/CNC-Drum-Plotter/To implement true arcs for this plotter the XY co-ordinates from the above code must be converted into angle-distance co-ordinates before being sent to the move_to() function.Regarding the parts ... the BYJ48 stepper motors that I have used in all of my other projects couldn't withstand the "push" from each other so I searched the internet for the cheapest parts that would be suitable.

    View Instructable »
  • lingib commented on lingib's instructable CNC Dual Arm Plotter1 month ago
    CNC Dual Arm Plotter

    The NEMA17 17HS4401 stepper is not compatible with the EasyDriver module as that stepper requires 1.7A but the EasyDriver module only supports currents up to 750mA. The code, however, will work if you locate a substitute board for the EasyDriver as both motors are 1.8 degrees per step.

    The wobble goes if you substitute a short pencil for the tall ink pen which has a lot of inertia.

    It may work vertically if you were to attach a strong (lightweight) magnet to one of the arms and use a magnetic whiteboard ... just a thought.

    Stronger motors, or some method of counter-balancing, would be needed for vertical plotting. The existing motors lift the mechanism but don't prevent the mechanism dropping (due to gravity) past the target location when the pen is being lowered.

    View Instructable »
  • lingib commented on lingib's instructable CNC Dual Arm Plotter1 month ago
  • lingib commented on lingib's instructable CNC Graphics Tablet1 month ago
    CNC Graphics Tablet

    Step 6 contains the source code for this project

    View Instructable »
  • lingib commented on lingib's instructable Photo Blending Modes4 months ago
  • lingib's instructable Photo Blending Modes's weekly stats: 5 months ago
    • Photo Blending Modes
      148 views
      2 favorites
      1 comments
  • lingib's instructable Photo Enhancing's weekly stats: 5 months ago
    • Photo Enhancing
      100 views
      1 favorites
      0 comments
  • lingib commented on lingib's instructable Photo Editing5 months ago
    Photo Editing

    I'm glad that you enjoyed my instructable :)There are many photo editors with filters similar to those found in Snapseed. You may wish to check out Adobe Lightroom, Corel Aftershot Pro, and Lightzone.

    View Instructable »
  • lingib's instructable CNC Edge Detection For Plotters's weekly stats: 5 months ago
    • CNC Edge Detection For Plotters
      789 views
      18 favorites
      0 comments
  • lingib's instructable Photo Editing's weekly stats: 6 months ago
    • Photo Editing
      707 views
      19 favorites
      0 comments
  • lingib posted an instructable Photo Editing6 months ago
  • lingib commented on lingib's instructable CNC Drum Plotter6 months ago
    CNC Drum Plotter

    The code for this drum plotter has been further optimised.See step 13 of this instructable for drum_plotter_v4.ino

    View Instructable »
  • lingib's instructable CNC Gcode Sender's weekly stats: 7 months ago
    • CNC Gcode Sender
      191 views
      12 favorites
      0 comments
  • lingib commented on lingib's instructable CNC Graphics Tablet7 months ago
  • lingib commented on lingib's instructable CNC Drum Plotter7 months ago
    CNC Drum Plotter

    Further improvements have been made to the code.See step 12 of this instructable for drum_plotter_v3.ino

    View Instructable »
  • lingib completed the lesson Welcome! in the class Raspberry Pi Class7 months ago
  • lingib completed the lesson Welcome to Arduino in the class Arduino Class8 months ago
  • lingib commented on lingib's instructable CNC Drum Plotter8 months ago
    CNC Drum Plotter

    The code for this plotter has been updated.See step 11 of this instructable for Drum_Plotter_V2.ino

    View Instructable »
  • lingib commented on lingib's instructable CNC Graphics Tablet8 months ago
  • lingib commented on lingib's instructable CNC Drum Plotter8 months ago
  • lingib's instructable CNC Drum Plotter's weekly stats: 8 months ago
    • CNC Drum Plotter
      20,553 views
      238 favorites
      20 comments
  • lingib commented on lingib's instructable CNC Drum Plotter8 months ago
    CNC Drum Plotter

    Glad you liked it :)

    The linear guide is pretty solid and would probably carry the weight of a laser assembly.As mentioned the mechanical side needs to be improved and biarc curves need to be added to the interpreter if you are looking for a professional result.

    Several reasons for the lettering(1) wobbles due to backlash in the motor gears.(2) small motors don't like a lot of belt-tension. Changes of direction must take up any belt slack before anything moves. That can be fixed using larger motors (which have a higher torque) and matching controllers.(3) "play" in the linear guide.(4) ball-bearings not used for the drum(5) my interpreter ignores the I,J biarc Inkscape information for determining circle centers. It simply plots a line from point to point, rather than an arc, which accounts for the slight truncated look.Items (1) to (4) are purely mechanical and easily fixed $$$$Item (5) requires a software patch which I am currently working on. Instead of plotting a line between two points when it encounters a curve, a series of addit...

    see more »

    Several reasons for the lettering(1) wobbles due to backlash in the motor gears.(2) small motors don't like a lot of belt-tension. Changes of direction must take up any belt slack before anything moves. That can be fixed using larger motors (which have a higher torque) and matching controllers.(3) "play" in the linear guide.(4) ball-bearings not used for the drum(5) my interpreter ignores the I,J biarc Inkscape information for determining circle centers. It simply plots a line from point to point, rather than an arc, which accounts for the slight truncated look.Items (1) to (4) are purely mechanical and easily fixed $$$$Item (5) requires a software patch which I am currently working on. Instead of plotting a line between two points when it encounters a curve, a series of additional points will be introduced such that a true arc is plotted. I will upload the new .ino code to this instructable once it has been tested.As is, this plotter meets my requirement of transferring watercolor outlines onto paper.

    Thank you :)

    View Instructable »
  • lingib commented on lingib's instructable CNC Drum Plotter9 months ago
    CNC Drum Plotter

    Weather maps, wire photos, and slow scan TV. That brings back some fond memories.Unlike traditional XY plotters, raster scan images are possible with this plotter but the drum speed would need to be increased somewhat.Thanks for the memory :)

    Nice thought :)

    Details on constructing end-plugs, together with photos, are given in step 3

    I like to experiment. For example my hanging plotter, using the same motors and half-stepping, has a resolution of 4096 steps per revolution, whereas this plotter, using full-stepping, has a resolution of only 2048 steps per revolution but more output torque from the motors.

    View Instructable »
  • lingib commented on lingib's instructable CNC Drum Plotter9 months ago
  • lingib completed the lesson Class Overview in the class 3D Printing Class10 months ago
  • lingib commented on lingib's instructable CNC Robot Plotter10 months ago
    CNC Robot Plotter

    Hi ThomasYour plotter seems to be working okay ... that's great ... well done :)The issue seems to be with the gcode that you are sending to the plotter. The following suggestions will help isolate the problem:(1) Send a series of manual commands (G0 X100 Y200) to the plotter. Does the plotter move to that co-ordinate. Each command should be echo'd onto your screen along with the Xon Xoff handshaking codes (17: 19:). If this is happening then your serial connection is working okay.(2) The third party gcode interpreter MUST be able to display your desired tool-path. If it can't then the plotter is receiving a garbled message. This will explain the random moves. Since the plotter is happy with the on-board test square try sending a square via the bluetooth link.(3) If that doesn't work ha...

    see more »

    Hi ThomasYour plotter seems to be working okay ... that's great ... well done :)The issue seems to be with the gcode that you are sending to the plotter. The following suggestions will help isolate the problem:(1) Send a series of manual commands (G0 X100 Y200) to the plotter. Does the plotter move to that co-ordinate. Each command should be echo'd onto your screen along with the Xon Xoff handshaking codes (17: 19:). If this is happening then your serial connection is working okay.(2) The third party gcode interpreter MUST be able to display your desired tool-path. If it can't then the plotter is receiving a garbled message. This will explain the random moves. Since the plotter is happy with the on-board test square try sending a square via the bluetooth link.(3) If that doesn't work have a look at the gcode output generated by Inkscape. A square only has six gcode instructions ... two positioning codes plus each of the four corners. Are these what you expect?(4) Inkscape generates headers and footers plus a lot of other codes that the on-board interpreter ignores. It is possible that Inkscape has generated an unfortunate sequence of alpha-numerics in the header. To eliminate this possibilty try "Step 8 ... Code Pre-Preprocessing" in my instructable https://www.instructables.com/id/CNC-HANGING-PLOTTE...Not only does this technique strip out all of the unwanted code it significantly reduces your plot time :)The important points are:(a) each gcode line must have a G-value, an X-value, and a Y-value(b) there should only be one of the above values in each line(c) you should be able manually plot the tool-path by following the gcode.

    Hi ThomasYour plotter seems to be working okay ... that great ... well done :)The issue seems to be with the gcode that you are sending to the plotter. The following suggestions will help isolate the problem:(1) Send a series of manual commands (G0 X100 Y200) to the plotter. Does the plotter move to that co-ordinate. Each command should be echo'd onto your screen along with the Xon Xoff handshaking codes (17: 19:). If this is happening then your serial connection is working okay.(2) The third party gcode interpreter MUST be able to display your desired tool-path. If it can't then the plotter is receiving a garbled message. This will explain the random moves. Since the plotter is happy with the on-board test square try sending a square via the bluetooth link.(3) If that doesn't work have...

    see more »

    Hi ThomasYour plotter seems to be working okay ... that great ... well done :)The issue seems to be with the gcode that you are sending to the plotter. The following suggestions will help isolate the problem:(1) Send a series of manual commands (G0 X100 Y200) to the plotter. Does the plotter move to that co-ordinate. Each command should be echo'd onto your screen along with the Xon Xoff handshaking codes (17: 19:). If this is happening then your serial connection is working okay.(2) The third party gcode interpreter MUST be able to display your desired tool-path. If it can't then the plotter is receiving a garbled message. This will explain the random moves. Since the plotter is happy with the on-board test square try sending a square via the bluetooth link.(3) If that doesn't work have a look at the gcode output generated by Inkscape. A square only has six gcode instructions ... two positioning codes plus each of the four corners. Are these what you expect? (4) Inkscape generates headers and footers plus a lot of other codes that the on-board interpreter ignores. It is possible that Inkscape has generated an unfortunate sequence of alpha-numerics in the header. To eliminate this possibilty try "Step 8 ... Code Pre-Preprocessing" in my instructable https://www.instructables.com/id/CNC-HANGING-PLOTTE...Not only does this technique strip out all of the unwanted code it significantly reduces your plot time :)The important points are:(a) each gcode line must have a G-value, an X-value, and a Y-value(b) there should only be one of the above values in each line(c) you should be able manually plot the tool-path by following the gcode.

    Hi ThomasYour plotter seems to be working okay ... that's great ... well done :)The issue seems to be with the gcode that you are sending to the plotter. The following suggestions will help isolate the problem:(1) Send a series of manual commands (G0 X100 Y200) to the plotter. Does the plotter move to that co-ordinate. Each command should be echo'd onto your screen along with the Xon Xoff handshaking codes (17: 19:). If this is happening then your serial connection is working okay.(2) The third party gcode interpreter MUST be able to display your desired tool-path. If it can't then the plotter is receiving a garbled message. This will explain the random moves. Since the plotter is happy with the on-board test square try sending a square via the bluetooth link.(3) If that doesn't work ha...

    see more »

    Hi ThomasYour plotter seems to be working okay ... that's great ... well done :)The issue seems to be with the gcode that you are sending to the plotter. The following suggestions will help isolate the problem:(1) Send a series of manual commands (G0 X100 Y200) to the plotter. Does the plotter move to that co-ordinate. Each command should be echo'd onto your screen along with the Xon Xoff handshaking codes (17: 19:). If this is happening then your serial connection is working okay.(2) The third party gcode interpreter MUST be able to display your desired tool-path. If it can't then the plotter is receiving a garbled message. This will explain the random moves. Since the plotter is happy with the on-board test square try sending a square via the bluetooth link.(3) If that doesn't work have a look at the gcode output generated by Inkscape. A square only has six gcode instructions ... two positioning codes plus each of the four corners. Are these what you expect?(4) Inkscape generates headers and footers plus a lot of other codes that the on-board interpreter ignores. It is possible that Inkscape has generated an unfortunate sequence of alpha-numerics in the header. To eliminate this possibilty try "Step 8 ... Code Pre-Preprocessing" in my instructable https://www.instructables.com/id/CNC-HANGING-PLOTTE...Not only does this technique strip out all of the unwanted code it significantly reduces your plot time :)The important points are:(a) each gcode line must have a G-value, an X-value, and a Y-value(b) there should only be one of the above values in each line(c) you should be able manually plot the tool-path by following the gcode.

    Some questions:1: What happens when you run one of the in-built test patterns ... say the square? Does this work as described? 2: How did you generate your gcode? The onboard interpreter will only accept the output from inkscape.3. Does the third-party gcode simulator draw what you expect?4: What is your Teraterm delay between characters when sending? Does it work if you increase the delay between characters to say 200mS? If it does then gradually reduce the delay until the bluetooth transmission is no longer reliable.5: Are you feeding the motors and servo via the 5 volt regulator? Voltage fluctuations can cause an arduino to do strange things.

    View Instructable »
  • lingib commented on lingib's instructable CNC Robot Plotter11 months ago
    CNC Robot Plotter

    The chassis dimensions are not critical. My chassis is 16cm long and 11cm wide.

    View Instructable »
  • lingib commented on lingib's instructable CNC Robot Plotter1 year ago
    CNC Robot Plotter

    A separate regulator is used because the the supply current, when both motors are running, peaks at around 550mA which exceeds the current rating for the onboard regulator.A summary of the Arduino current ratings may be found here:https://forum.arduino.cc/index.php?topic=50287.0

    A separate regulator is used because the supply current, when both motors are running, peaks at around 550mA which exceeds the current rating for the onboard regulator.A summary of the Arduino current ratings may be found here:https://forum.arduino.cc/index.php?topic=50287.0

    View Instructable »
  • lingib commented on lingib's instructable CNC Hanging Plotter1 year ago
    CNC Hanging Plotter

    Thank you for your comment.The main reason for not using an Arduino motor controller shield is that the BJY-48 stepping motors came with their own ULN2003 controllers plus I happened to have a number of Arduinos lying around. But you have raised some interesting points.Motor shields, https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino , do not appear to have the functionality required for this project. The lowest speed using the setSpeed() function in an Arduino motor shield appears to be 1 RPM whereas this project requires fractional speeds.Most plotter's use a line drawing algorithm such as https://en.wikipedia .org/wiki/Bresenham%27s_line_algorithm which requires a decision for each X-axis or Y-axis change. A motor shield that suports multiple stepping motors is ideal fo...

    see more »

    Thank you for your comment.The main reason for not using an Arduino motor controller shield is that the BJY-48 stepping motors came with their own ULN2003 controllers plus I happened to have a number of Arduinos lying around. But you have raised some interesting points.Motor shields, https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino , do not appear to have the functionality required for this project. The lowest speed using the setSpeed() function in an Arduino motor shield appears to be 1 RPM whereas this project requires fractional speeds.Most plotter's use a line drawing algorithm such as https://en.wikipedia .org/wiki/Bresenham%27s_line_algorithm which requires a decision for each X-axis or Y-axis change. A motor shield that suports multiple stepping motors is ideal for this algorithm.My algorithm is significantly different in that it only performs one set of calculations for each pen move: the number of steps, and the delay between steps, for each motor. The ratio of these delays is often extremly large ... often greater than possible using delay() or delayMicroseconds(). My algorithm caters for this but requires that each motor be placed in its own dedicated delay loop. This requires that two Arduinos are used as Arduino microcontrollers are only single-tasking.

    View Instructable »
  • lingib commented on lingib's instructable CNC Robot Plotter1 year ago
    CNC Robot Plotter

    The motor speed can be reduced by increasing the delay between motor steps. Search the code for "delay(" and play with the delay values. Currently the delay is set to delay(2) or 2 milliseconds between steps. Theoretically the motor speed may be doubled by setting the delay between steps to delay(1) but I have found that 1mS between steps is too fast for the motor to respond. Increasing the delay to delay(4) will half the robot speed.

    The motor speed can be reduced by increasing the delay between motor steps. Search the code for "delay(" and play with the delay values. Currently the delay is set to delay(2) or 2 milliseconds between steps. Theoretically the motor speed may be doubled by setting the delay between steps to delay(1) but I have found that 1mS between steps is too fast for the motor to respond. Increasing the delay to delay(4) will halve the robot speed.

    View Instructable »