kliment / Sprinter

Firmware for RepRap printers and similar devices
432 stars 329 forks source link

Refactor eeprom routines #193

Closed felipesanches closed 12 years ago

felipesanches commented 12 years ago

This pull request contains 2 unrelated commits. I'm not sure how to split it in two pull requests.

One of the commits refactors the eeprom routines so that it is now possible to modify the value of a single parameter stored in eeprom without having to save all the other variable values also. This will be useful for storing the z_max_length value, as part of the software-callibration routines I'm working on for the z-axis.

The other commit modifies the homing routine so that it reports how far did it travel while homing. It will also be useful for the z-axis software-calibration routine.

midopple commented 12 years ago

Hi,

Why makeing new Values for PID ? There are ready to use values for PID define PID_PGAIN 2560

define PID_IGAIN 64

define PID_DGAIN 4096

For EEPROM Adresse i like this way --> +#define axis_steps_per_unit_address (EEPROM_OFFSET + 4) +#define max_feedrate_address (axis_steps_per_unit_address + 16) ....

So its only the size of the last value had to add only a idea, so its easyer to add new Values to EEPROM

midopple

felipesanches commented 12 years ago

So should I modify the code to use PID_PGAIN, PID_IGAIN and PID_DGAIN (instead of DEFAULT_KP, DEFAULT_KI and DEFAULT_KD) as default values to be initially stored in eeprom? If that's the case, I can do it as an additional commit. Please let me know.

happy hacking, Felipe Sanches

felipesanches commented 12 years ago

here's it. have fun :-D

midopple commented 12 years ago

Hi,

I dont understand the distance value in the homing function. If the X Axis stand at 50 and need 70 mm to reach the endstop at homing what is the result in the distance value ?

felipesanches commented 12 years ago

Nowadays we callibrate the Z axis manually by mechanically adjusting the position of the z_min_endstop. This is not a much reliable way of callibrating the machine.

The idea is to callibrate Z via software, by first placing the tip of the nozzle in the desired z=0 position (using the control panel in Pronterface) and then performing a z homing routine that goes up until it reaches z max and records the distance travelled (thus the distance value returned by the homing routine). This value is stored in EEPROM so that from now on, the homing procedure will use z_max as a reference point and then travel down the necessary distance until it reaches the known zero position.

This is the same behaviour of the z axis callibration of Makerbot printers.

A possible further improvement would be to optionaly have the reference point just roughly 10 millimiters above the bed, by placing an extra opto at approximatelly that height, so that less time is spent homing z (going up and down only 10mm instead of travelling the whole z_max_length up and down).

felipesanches commented 12 years ago

I'm closing this pull request because I opened another one without the unrelated z axis homing/callibration commit.

I'll probably send other pull requests in the future with the z_callibration funcitonality.