Jump to content

jhinkle

Dormant
  • Posts

    54
  • Joined

  • Last visited

Posts posted by jhinkle

  1. I'd like any positive/negative comments people might have.

    I started on this 1.5 years ago but it got shelved because of illness.

    I'm back into the development and wanted to see if anyone else is possibly working on something similar or has information/comments on my direction.

    I purchased a U1 almost two years ago. I have a habit of redesigning things to make them better for me -- for it it was redesigning the U1 control board.

    I designed a hi-end stepper motor controller that can be programmed to micro-step up to 128 or 256. That was phase one.

    Phase two was the controller that drives the stepper.

    The current board and software (Marlin) builds a trapezoid velocity profile for each segment using the axis that has the most steps in that segment. Marlin then uses Bresenham Line algorithm to step all 2 or 3 or 4 motors.

    The issue I have using the Bresenham Line algorithm is that it was designed for raster graphics and "pulls" the secondary steppers as it controls the main axis for that segment. If you analysis the secondary axis tracks, you will find that they don't run at a smooth profile but can have their speed/velocity jumping back and forth by half speed.

    I'm just attempting to take my good U1 and make it better for myself.

    My change in control design is to build a trapezoid profile for EACH axis and have them run independent but in parallel and synchronized with each other. My goal is to have a much smoother segment deposited (you might have to look under a magnifying glass to see the difference).

    Has anyone looked into something similar?

    Thanks in advance for any comments.

  2. I'm going through the Merlin code to get a complete understanding of its control over the steppers.

    I believe JERK is defined as the instantaneous allowed change in velocity (mm/sec) that can ignored at a junction so that the speed does not have to go all the way to zero.

    Merlin has the default XY jerk defined as 20mm/sec.

    Merlin has the default XY acceleration defined as 4000 mm/sec2.

    Kinematics states that v(i) = sqrt(((v(i-1) * (v(i-1)) + (2 * Acc))

    If we want to see the delta change in speed (v) we can choose v(i-1) to be 0 therefore

    DeltaV = sqrt(2 * Acc);

    Placing the Merlin values in .... DeltaV = sqrt(2 * 4000) = 89 mm/sec which is about 4.5 times the default Jerk value.

    My question is .... if Jerk is defined as the maximum change in speed that can occur at a junction and be ignored --- then should it not also be the maximum change in speed allowed during acceleration or deceleration?

    If at a junction you don't want more than an change in Jerk speed (20mm/sec) then why should acceleration be allowed to produce a change of speed of 89mm/sec and be acceptable?

    Thanks

    • Like 1
  3. Don't look at what I'm doing for electronics.

    I'm a retired embedded hardware/software guy who does not like Arduino.

    I'm designing a arm based controller with my own stepper controller which provides 255 sub-steps..

    I would stay with what is currently in the UM1 or UM2.

    That way you have a lot of support from this forum.

    The UM1 uses the Marlin board -- don't know what's in the UM2 --- someone else can share that.

     

  4. Be careful what you buy when it comes to steppers.

    There are a lot of "cheap" motors positioned for the 3D printer market.

    I am building my own printer and wanted motors -- I'm using my own control system.

    I purchased these from Amazon:

    http://www.amazon.com/Signstek-Printer-4800g-cm-Resistance-Electric/dp/B00H98FKVK/ref=sr_1_1?ie=UTF8&qid=1403048294&sr=8-1&keywords=Signstek+3D+Reprap+Printer+CNC+Nema17+48mm

    I returned them and wrote a 1 start review review.

    I suggest staying away from motors built by WANTAI motors in China.

    Hi torque motors are built with tight tolerances. Any slop will cause the rotor to bind to the stator. The motor will turn but the motor will turn jerky and will run much hotter than it should.

    You should be able to take your motor and turn it by hand with little resistance. If it turns freely and then seems to lock or get very difficult to turn -- the magnetic attraction has dynamically increased -- in operation, this will cause excessive current to turn the rotor hence resulting in a hot running motor.

    After a lot of looking, I purchased these on ebay -- I paid @20 each. They are 1.8 motors with rated phase current of 2.0amps and torque of 76.33 oz-in.

    http://www.ebay.com/itm/261209398157?ru=http%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_sacat%3D0%26_from%3DR40%26_nkw%3D261209398157%26_rdc%3D1

    LIN Engineering motors are made in the US and are expensive when you purchase the latest models.

    Older models sell on ebay at reduced prices.

    I purchased 8 of these and all were acceptable -- no tendency to bind.

    I hope that helps.

     

  5. The inside needs to as clean and polished as possible to reduce friction.

    That is why many hot-ends used PTFE tubes inside - low friction to the melted plastic and hi melting point of it's own.

    I suspect this will be one area where a cheap clone will not properly do the required work to reduce cost --- You the user will probably never look or know but the performance of the head will suffer.

     

  6. The actual voltage that appears at the sense coil will be the voltage on the "Part" of the sin wave that is associate with the associated microstep.

    Peak voltage will only appear at FULL step positions --- any microstep location will be less -- depending on where you are on the sine wave.

    Internally, the IC uses a lookup table as it steps through the microsteps. It measures the voltage across the sense resistors, amplifies them and then does an analog compare. When the voltage across the sense resistors reaches the internal values associated with the associated micrstep, the current thru the coil is turned off. That is how you get a sinusoidal current applied to the two coils of the stepper.

     

  7. May I make two replies - one on measuring stepper motor current and the other on a feed sensor that I have been pondering.

    Stepper Motor:

    Most stepper motor ICs have an internal clock (usually around 10khz) that determines when coil current is applied to the stepper motor. They have a sense resistor in each coil path to ground to measure coil current. Internally they have an amplifer and comparator that will trip when a specific voltage appears across the sense resistor thereby turning coil current off. This mythology allows the board designer to set max coil current and coil current only flows from the point it is initiated until the comparator is tripped.

    To measure that current you would need some access to the internal clock, which usually does not exist, so that you could trigger an ADC measurement. Just measuring voltage via a ADC with no synchronization to when the actual current is flowing will produce unstable and unreliable measurements.

    Material Feed Sensor:

    I have been pondering on a method to sense actual material being fed into the printhead. One of my design criteria is that the sensing mechanism imparts little to no additional forces/pressure onto the moving material.

    I have a design that uses a free-spinning bearing with rubber wheel. The material passes over and contacts the rubber wheel --- this could be before of after the extruder pinch/drive mechanism. The key is to impart as little friction onto the material but still have it freely turn the bearing/wheel assembly.

    Attached to the shaft of the bearing is a rare-earth magnet that will turn as the bearing turns.

    Place a magnetometer, like a LSM303 in close proximity to the rare-earth magnet--- no contact needed. The magnetometer is connected to the cpu using SPI or IIC.

    As the magnet rotates, the magnetometer will detect and report changes - hence material movement.

    What I have been pondering is a way of mechanically amplifying the amount of rotation imparted onto the magnet since the actual linear movement of material is very small per gcode segment.

    Measuring precision of flux changes in a rotating magnet is much higher than those obtained by using mechanical or chopper type sensors.

    Just my thoughts and 2 cents.

    Joe

     

  8. Thanks.

    Yes - micro-stepping does not provide a linear movement between full steps.

    Standard Stepper chips don't let you directly control the steppers current --- but if you could you can drive the coils NOT with a sine wave but with one which included specific harmonics that would linearize it's movement --- but THAT is much more complicated driver.

    Personally - I'm looking at 1/255 for better control over the extruder and smoother motor operations overall.

    You are at 78.7402 micro-steps per mm when driving 1/16 micro-steps.

    That increases to 1259.8 micro-steps per mm when driving 1/256 micro-steps

    Joe

     

  9. I'm getting old ... I looked at those large volume segments many times and did not see the delta from zero.

    This was a quickie test and I missed it -- nice catch on your part.

    The real intent of the post was the HALF volume segments as they might be some of the under extrusion concerns people are posting about.

     

  10. I just received my UM1 in the last 30 days.

    I purchased the UM1 because of its printing resolution and ability to be modified.

    I intended from day 1 to replace the marlin control system with one of my own design that would allow me to micro-step all steppers at 1/256 - or 16 times finer than Marlin does today.

    Towards that end, I have been analyzing the Gcode that Cura produces since THAT is what drives the control system.

    I have found two types of code generated by Cura that does not make sense to me --- I'm hoping someone can explain.

    First -- an assumption on my part. I am assuming that Cura attempts to lay down a constant volume of material during the formation of the printed part.

    I am also assuming that the printhead temperature is properly set for the material being extruded and the feed rate is set for precision printing and not speed.

    A G1 segment says go from my last position (X/Y) to the X/Y stated and if an E argument is present -- push the specified number of mm of material into the printhead.

    If you take the delta X and delta Y movement we can calculate a segment length (square root of the sum of the squares). This length will be the straight line segment length to deposit the amount of E material.

    In the file attached and pictures below, X,Y,and E have been multiplied by 100000 to remove the dependence on floating point.

    So --- for each G1 segment --- we have a straight line length that the printhead moves and we have the length of material the extruder pushes into the printhead.

    If my first assumption was correct -- that Cura is attempting to lay down a bead of constant volume --- then the ratio of E length to Segment length should be fairly constant.

    In fact --- most of the time that is true --- with a ratio (times 100) being in the area of .6.

    The two areas that puzzle me is were Cura lays a Segment of approximately HALF the volume or one that is thousands of times larger.

    The HALF volume segment may be associated with the under-extrusion concerns I have found in multiple threads.

    Gcode1.png

    The first number in the line is the actual line number in

    UltimakerRobot_support.gcode

    The string between the < > is the actual Gcode line segment definition.

    The remainder is delta X, delta Y, Segment Length, E length, and ratio

    Notice the first RED arrow .... it identifies a HALF volume segment to be extruded.

    The second area that puzzles me is indicated by the second arrow where the amount of material is thousands of times more than the standard segment.

    This second HI-VOLUME segment --- is Cura counting on it oozing sideways making a much wider track?

    Gcode2.png

    This second picture shows multiple HALF segments and multiple HI-Volume segments.

    I have shown examples well away from the initial foundation layers that Cura builds --- so these segments are associated with the actual robot.

    I have attached the file that holds this data if anyone would like to examine it in more detail ... please note ... only refer to the G1 lines that are associated with absolute X/Y positions. For this analysis, I did NOT pull out the relative addressed line ... there are not many --- but if you look at one --- ignore it.

    http://joehinkle.com/DownLoad/GDumpNew.txt

    Any and all comments welcome.

    Thanks.

    Joe

     

  11. I appreciated everyone's help and input.

    The hardest part in solving an issue is finding what the root-cause is. Once that is known - the rest is usually easy.

    I would have thought UM would have updated their assembly instructions on line about the new tool they provide.

    If not for this forum, I'd still be using 3B or the several other tools I was coming up with to do the job.

    Again --- thanks to all in helping resolve my issue.

    Joe

     

  12. It squared nicely once I got the rods in the print head to be 90 degrees.

    I loosened the print head's clamping screws and the adjoining bolts. The print head was still a very solid and no flexing anywhere was perceived.

    Using my drawing of perpendicular lines and the rods as lever arms, I attempted to get to 90 degrees.

    I felt nothing move at all. but after a couple of times on the rods applying force in the correct direction, the rods measured 90 degrees. I felt no movement -- but it moved.

    With the print head rods now at 90 degrees I inserted the print head into the printer.

    Set belt tension and placed the alignment squaring tools.

    Perfect square!!!

    It only took 8 hours of pain and anguish figuring out root-cause and addressing it.

    Now that everything is square WITHOUT having side forces applied to the bushing in the sliding blocks -- the head moves smoothly.

    I hope this helps anyone else with a squaring issue. Be careful NOT to just force square by forcing and setting the pulley (as UM suggests) or you will not run smooth and your stepper motor will run hotter than required.

    Joe

     

  13. I believe the current UM process of squaring the axises of the printer is severely flawed.

    If every thing was built to precisely 90 degree angle or rods parallel to one another -- then there would not be a squaring requirement.

    The proper way is to have alignment adjustments -- but that would add cost and complexity.

    Forcing a sliding block so that it becomes square and holding that square by tightening the pulley set screw--- DOES produce a square system but adds a twisting force to the bushing associated with the sliding block. The induced side forces produce friction which requires more torque from the stepper motor to move the print head and a hotter running stepper motor.

    In my case -- the print head assembly has a 1 to 2 degree error in the two rods being perpendicular. The block is designed with no adjustments so I've got some pondering to do to solve my issue.

    This all assumes that the rods attached to the frames ARE 90 degrees and parallel. If not --- there are no adjustments there also --- just a bigger compounded issue.

    I could fix all of my issues by manufacturing parts that would implement adjustments ... but I need my printer to do that,

    Talk about a catch-22.

    joe

     

  14. I just confirmed that the rods in the print head are not 90 degrees to each other.

    I drew a line on a piece of paper and then, using drafting tools, -- drew a line perpendicular to it.

    I placed the rods in the print head and placed it on the drawing.

    Getting my eye over the middle of the print head, I aligned one rod with the horizontal line in my drawing.

    I then expected the other print head rod to align itself with the perpendicular line --- but is is off by 1 to 2 degrees.

    So .... THAT is my issue ... Now ... how to adjust the rods in the print head to get them close to 90.

    Comments?

    Joe

     

  15. I totally understand and agree with what you say.

    Explain if you can, ....

    All frame located rods are square.

    Assume rods in print head are 90 degrees.

    If all of that is true --- then securing the print rods to the sliding blocks should also produce square.

    If its not ... then the only logical piece that could be off would be the print head.

    Assume for a minute that they were 89/91 degrees to each other.

    You will set the first print head rod parallel to its related frame rods.

    The other print head rod would not be 90 degrees and would produce a difference when using the alignment tool.

    What I see the squaring process saying to do is to "force" the distance to be correct --- thereby squaring it --- but in doing so -- you are actual applying a binding force to the bushing in the sliding block.

    That is what I'm trying to understand ... how to FORCE square without adding the additional binding force.

    Joe

     

  16. Robert:

    Yes --- I did you what you suggested. -- Still issue.

    I have now taken the print head (sorry for the wrong reference- I knew I had my head where things smelled funny) -- completely off and was going to go through the step-up/assembly again.

    Problem is ... if I did make a mistake ... and don't understand its a mistake -- my reassembly will probably end up with the same issue ..... that is why I'm trying to get a clear understanding of the process.

    Joe

     

  17. Not quite following you.

    The premise of this whole squaring process is that the drive rods and slide rods in the frame are 90 degrees to each other.

    Using the tool -- you are attempting to set the extruder rods parallel to their associated drive rods.

    If they can not be set parallel the something is off.

    The only flexible attachment points are where the small extruder rods enter and are secured to the sliding block. Those are almost a press fit which then locks the extruder rods to the "slide" rods which are expected to be 90 degrees and parallel to the drive rods since they are all positioned in the frame with no movement allowed.

    So ... if I have not misunderstood the complete process --- the ONLY place that could be OFF and would need some sort of adjustment would be the angle between the rods in the extruder.

    The extruder angle is fixed ... so how can you twist one axis as the assembly instructions suggest to make everything square.

    What is the squareing process really trying to accomplish as I see it accomplishing little but to add a binding force.

    Please tell me where I wrong so I can get this unit squared

    Thanks for any comments -- even ones that tell me I have my head up my ass.

    Thanks.

    Joe

     

×
×
  • Create New...