Jump to content

jhinkle

Dormant
  • Posts

    54
  • Joined

  • Last visited

jhinkle's Achievements

1

Reputation

  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 figured it out -- Thanks. All is well. Here I thought this was all magic -- now I know it's just fishy! -- Merlin vs Marlin.
  3. Reprint from Merlin code: // The speed change that does not require acceleration (i.e. the software might assume it can be done instantaneously) #define DEFAULT_XYJERK 20.0 // (mm/sec) #define DEFAULT_ZJERK 0.4 // (mm/sec) #define DEFAULT_EJERK 5.0 // (mm/sec)
  4. 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
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. You might run into a problem moving from 1/16 microsteps to 1/32 microsteps. That change requires Marlin to process interrupts twice as fast. I don't know if the micro has additional headroom to do that. Marlin already has code to deal with too fast of interrupt times --- halving that time might produce strange behavior.
  10. 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
  11. 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
  12. Diad: Does Cura ALWAYS generate gcode with X/Y/Z to two decimal places and E to 5 decimal places? Do you see the precision increasing in the future? Do you know what precision the other slicers generate? Thanks. Joe
  13. Diad: Thank you for quickly explaining. Joe
  14. 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.
×
×
  • Create New...