Makergear make excellent hot ends, and have excellent support. They're well liked by the reprap community. Rick (the owner) hangs out in reprap irc and his own channel, #MakerGearV2 under the nickname 'MakerGear|Rick' if you have any specific questionsby Triffid_Hunter - General
However I can't make a mechanical relay PWM at frequencies above my hearing rangeby Triffid_Hunter - General
Vthresh is where they just start to turn on. To carry any decent current, you need to find the Vgs where the Rds(on) or Ids flattens out. It's quite a bit higher than Vthresh! Good examples of logic level mosfets are IRL3803 or IRLB8748 which can both carry about 15A at Vgs=4.5v. Even these aren't much good at Vgs=3v though!by Triffid_Hunter - General
Actually, since the temperature measurement is done with the ratio of two resistors and we're using vcc as a reference, it doesn't actually matter what voltage Vcc is! The ADC readings should be fine. The part that worries me is the mosfets- they won't be turned on fully at only 3.3v, so they'll dissipate too much heat and explode, especially the bed mosfet which is already struggling. They'll nby Triffid_Hunter - General
try with Kliment's Pronterface, the other host talkers all do funky stuffby Triffid_Hunter - Firmware - experimental, borrowed, and future
have you connected the step and dir from your motherboard to your extruder controller as discussed here and displayed here?by Triffid_Hunter - Firmware - experimental, borrowed, and future
oozebane is fine for dc extruders because they don't do acceleration. We need something a little more complex. Extrudate flowrate is proportional to melt chamber pressure, and melt chamber pressure is proportional to filament in minus extrudate out, so we end up with E needing to lead the toolhead by a distance related to velocity. this will mean exponential curves and even reversals in E's veloby Triffid_Hunter - Firmware - experimental, borrowed, and future
The math for start/stop speed is available here: generate stepper motor speed profiles in real time, specifically equation 16 and dda.c:364. A single-axis move blender here: trapezoidal velocity profile trajectory planner which would need to be expanded to 4-axis and have per-axis speed and acceleration limits implemented. I'll probably have a crack at these when my printer is actually printingby Triffid_Hunter - Firmware - experimental, borrowed, and future
ah yes sbi/cbi are indeed 2 cycle, sorry about that. still faster than digitalWriteFast. oh, and that thread you listed about port F says that it's a bug with AVR studio, and gcc does the correct thing Out of reset, the PORTF pins are configured as digital inputs. If arduino's libraries set them up a different way between reset and main() then yes you'll have to undo it to use them.by Triffid_Hunter - Firmware - experimental, borrowed, and future
jamesdanielv Wrote: ------------------------------------------------------- > not all pins registers are directly writable! care to name an example? I know of none, unless you mean something like TCNT which isn't a pin register.by Triffid_Hunter - Firmware - experimental, borrowed, and future
sample = ADC; works for meby Triffid_Hunter - Firmware - experimental, borrowed, and future
see arduino.h and friends in teacup for the fastest way. Sprinter adopted my approach just recently. It may seem complex, but the preprocessor does all the work, and the compiler simplifies to a single sbi or cbi instruction for each operation. that's even faster than digitalwritefast!by Triffid_Hunter - Firmware - experimental, borrowed, and future
thanks for your kind words! Hope you enjoy!by Triffid_Hunter - Firmware - experimental, borrowed, and future
if your temperature goes higher than setpoint + hysteresis (as well as lower), it resets the "temperature good" flag. if it's stabilising above your setpoint, you may need to increase your hysteresis or tweak your PID factors.by Triffid_Hunter - Firmware - experimental, borrowed, and future
the thing that bugs me is that XON/XOFF should never trigger unless there's a /single/ line of gcode with 47 (64 * 3/4 - 1) or more characters. I find skeinforge almost never produces them, so I wonder what's going on...by Triffid_Hunter - Firmware - experimental, borrowed, and future
I've been thinking about this.. perhaps we need to add the line number to ok responses, so if the hostware doesn't get a response for too long it can retry?by Triffid_Hunter - Firmware - experimental, borrowed, and future
try enabling ramping acceleration. I committed a fix to restore c to the DDA regardless of acceleration settings. I'm not sure how you're printing at all with that bug in place! As for the pauses, teacup has an 8 move buffer by default, so it'll actually be choking on the move 8 lines up from the last one sent. Also, M111 S2 will enable a ton of debug output which may help figure out what's goinby Triffid_Hunter - Firmware - experimental, borrowed, and future
sounds like something that gcc should do for usby Triffid_Hunter - Firmware - experimental, borrowed, and future
Kliment's Pronterface works great, although its home buttons will slam your axes into the ends and grind the motors. Alter the home commands in pronsole.py or add different buttons with custombtn.txt. My custombtn.txt looks like this at the moment: btns=[ ###Defining custom buttons for pronterface is easy. Here's how. ###Below these instructions, add a line with the following format for each butby Triffid_Hunter - Firmware - experimental, borrowed, and future
like this: diff --git a/gcode_process.c b/gcode_process.c index 00d5b29..34b2dba 100644 --- a/gcode_process.c +++ b/gcode_process.c @@ -453,6 +453,7 @@ void process_gcode_command() { enqueue(NULL); } #ifdef DC_EXTRUDER + e_direction(0);by Triffid_Hunter - Firmware - experimental, borrowed, and future
M102 is only relevant to DC motor extruders. You're correct in that it hasn't been implemented. For stepper motor extruders, sending an E word that causes a negative E move retracts the filament. M102 would be easy if you do want it, e_direction(1); heater_set(DC_EXTRUDER, DC_EXTRUDER_PWM); then add e_direction(0) before heater_set in M101 to make sure it sets direction too. Are you actually gby Triffid_Hunter - Firmware - experimental, borrowed, and future
you want a zigzag that slowly converges to a point so the frequency increases, have one parallel to both axes so we can find out the mechanical resonance frequency of X and Y independently. See nophead's Frequency Limit post. If your goal is to print as fast as possible, some code to avoid the resonant speed of each axis is paramount since mechanical resonance will cause inaccurately placed extrby Triffid_Hunter - Firmware - experimental, borrowed, and future
I thought exponent was only %g and %e, but not %f?by Triffid_Hunter - Firmware - experimental, borrowed, and future
perhaps replace strtod() with sscanf("%f", ...) ?by Triffid_Hunter - Firmware - experimental, borrowed, and future
in devel branch we have merged sdcard support, eeprom config and multiple extruder support, all waiting for willing testers to tell me which parts of the integration I've missedby Triffid_Hunter - RAMPS Electronics
Here's my ghetto SD card<->arduino solution!by Triffid_Hunter - RAMPS Electronics
I've also written multitasking microkernels in c and assembly, albeit not for avr platform. In c, the best way to task switch is by firing a software interrupt of some kind, then all the registers are saved into the stack for you and you just have to alter the stack pointer before reti. It really is overkill for our current workload, especially the ram needed for separate stacks. Add a few moreby Triffid_Hunter - Firmware - experimental, borrowed, and future
I think what traumflug is trying to say is that 3d printing only really has one high priority task, and that's firing out step pulses. It can be made to run quite quickly and therefore is a prime candidate to be stuffed into a timer interrupt. All the other tasks can run in sequence from main loop, and they'll sort stuff out between them quite happily. Reading serial and interpreting gcode can bby Triffid_Hunter - Firmware - experimental, borrowed, and future
Here's an integer bresenham curve interpolator algorithm if you feel like implementing it EMC2's path planner has some interesting write-ups too, which should go nicely with the above algorithm. I think a minimum speed and a minimum ramp distance would do far more for corners than having a no accel distanceby Triffid_Hunter - Firmware - experimental, borrowed, and future
yet another reason to use pronterface insteadby Triffid_Hunter - Controllers