Quantcast
Channel: Reprap Forum - Delta Machines
Viewing all articles
Browse latest Browse all 20289

Re: RepRap 3DR Delta printer Released

$
0
0
>> but when I move to 50mm -Y, the bed is off 0.010 or more.<<

Other than mechanical problems (slop in the linear bearings or rod connectors, drive filament not REALLY tight, etc.) it might be a warped bed - this is what I found with mine too. Also, slightly warps or other tolerances in the plastic parts (remember those were made with simple and usually not perfectly calibrated 3D printers, too ;-)) could well add up to cause those Z variances. All of this results in (roughly) +/- 0.2mm Z variations mainly at extreme radius positions far away from any of the towers (for example 0, -80, 0). Only the inner, say, 50 mm radius looks better with 0.1mm max.

I'll see if I can find a better glass (or carbon) bed, preferrably ground flat - the rest of tolerances I fear we have to accept, or implement a Z probe like Johann's.

As for this LCD problem which can be found in ALL Marlin versions I examined:

>> It randomly shows , + ' *. (- etc, single character at a time instead of the correct X or Y position i.e a number <<

The problem is that the X/Y display function works only for positive numbers - a bug which is of course not apparent on normal (cartesian) printers which (usually) never move to negative X/Y positions.

Look for the following in ultralcd_implementation_hitachi_HD44780.h around line 463:

lcd.print('X');
lcd.print(ftostr3(current_position[X_AXIS]));
lcd_printPGM(PSTR(" Y"));
lcd.print(ftostr3(current_position[Y_AXIS]));

Change "ftostr3" to "ftostr30" and implement a new function somewhere in ultralcp.cpp (I suggest somewhere around line 1298, depending on the version you have):

//  convert float to string with +123 format
char *ftostr30(const float &x)
{
  int xx=x;
  conv[0]=(xx>=0)?'+':'-';
  xx=abs(xx);
  conv[1]=(xx/100)%10+'0';
  conv[2]=(xx/10)%10+'0';
  conv[3]=(xx)%10+'0';
  conv[4]=0;
  return conv;
}

Also add the prototype to ultralcd.h:

char *ftostr30(const float &x);

This fixes the problem while not breaking the display for cartesian printers. Probably someone might want to have this fix pushed to the Marlin repository (don't have the time for that right now, sorry).

There are more fixes in ultralcd.cpp with lesser importance - to correct the display of Z Jerk and Z steps per unit for Deltas:

#ifdef DELTA
    MENU_ITEM_EDIT(float3, MSG_VZ_JERK, &max_z_jerk, 1, 990);
#else
    MENU_ITEM_EDIT(float52, MSG_VZ_JERK, &max_z_jerk, 0.1, 990);
#endif

#ifdef DELTA
    MENU_ITEM_EDIT(float52, MSG_ZSTEPS, &axis_steps_per_unit[Z_AXIS], 5, 9999);
#else
    MENU_ITEM_EDIT(float51, MSG_ZSTEPS, &axis_steps_per_unit[Z_AXIS], 5, 9999);
#endif

As mentioned those are just cosmetic fixes :-) - this printer should work just fine without them.

Viewing all articles
Browse latest Browse all 20289

Trending Articles