Added Retract Acceleration
This commit is contained in:
parent
c2d49bbdf0
commit
5aecc2cc70
@ -13,8 +13,8 @@ v3.11.2
|
|||||||
2. Execute `make`
|
2. Execute `make`
|
||||||
|
|
||||||
### Settings
|
### Settings
|
||||||
* Use without printer config to use linear moves. You should look at +10% Estimation
|
* Use without printer config to use linear moves. You should look at +10% Estimation. It's not reliable on prints with lots of infill.
|
||||||
* Alternatively copy `config_example.json` to `config.json` and edit based on your printer settings. You should look at -15% Estimation
|
* Alternatively copy `config_example.json` to `config.json` and edit based on your printer settings. You should look at -12.5% Estimation
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
`./gcode_time [file] ...`
|
`./gcode_time [file] ...`
|
||||||
@ -26,4 +26,4 @@ v3.11.2
|
|||||||
|
|
||||||
`+10% - 05:52:11`
|
`+10% - 05:52:11`
|
||||||
|
|
||||||
`-15% - 04:32:09`
|
`-12.5% - 04:40:09`
|
||||||
|
|||||||
46
TimeCalc.cpp
46
TimeCalc.cpp
@ -226,7 +226,8 @@ void TimeCalc::add_move(Point new_pos, double speed)
|
|||||||
double vel;
|
double vel;
|
||||||
double accel;
|
double accel;
|
||||||
double prev_move_idx;
|
double prev_move_idx;
|
||||||
bool is_print;
|
double special_accel;
|
||||||
|
double de_sum;
|
||||||
static int counter = 0;
|
static int counter = 0;
|
||||||
|
|
||||||
pos_new[0] = new_pos.x;
|
pos_new[0] = new_pos.x;
|
||||||
@ -274,34 +275,32 @@ void TimeCalc::add_move(Point new_pos, double speed)
|
|||||||
cout << "Vel - " << vel << endl;
|
cout << "Vel - " << vel << endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Calculate acceleration
|
de_sum = 0.0;
|
||||||
temp.clear();
|
|
||||||
|
|
||||||
// Is it a print move
|
|
||||||
is_print = false;
|
|
||||||
for (int i = 0; i < EXTRUDER_COUNT; ++i)
|
for (int i = 0; i < EXTRUDER_COUNT; ++i)
|
||||||
{
|
{
|
||||||
if (0.0 != move_new.delta[3 + i])
|
de_sum += move_new.delta[3 + i];
|
||||||
{
|
|
||||||
is_print = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add max acceleration for specific move to be considered
|
// Set max acceleration for specific move to be considered
|
||||||
if (is_print)
|
special_accel = 0.0;
|
||||||
|
if (0.0 == de_sum)
|
||||||
{
|
{
|
||||||
if (0.0 != m_print_accel_max)
|
special_accel = m_travel_accel_max;
|
||||||
{
|
}
|
||||||
temp.push_back(m_print_accel_max);
|
else if (move_new.dist == de_sum)
|
||||||
}
|
{
|
||||||
|
special_accel = m_retract_accel_max;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (0.0 != m_travel_accel_max)
|
special_accel = m_print_accel_max;
|
||||||
{
|
}
|
||||||
temp.push_back(m_travel_accel_max);
|
|
||||||
}
|
// Calculate acceleration
|
||||||
|
temp.clear();
|
||||||
|
if (0.0 != special_accel)
|
||||||
|
{
|
||||||
|
temp.push_back(special_accel);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0 ; i < AXIS_COUNT; ++i)
|
for (int i = 0 ; i < AXIS_COUNT; ++i)
|
||||||
@ -512,3 +511,8 @@ void TimeCalc::set_travel_accel(double value)
|
|||||||
{
|
{
|
||||||
m_travel_accel_max = value;
|
m_travel_accel_max = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TimeCalc::set_retract_accel(double value)
|
||||||
|
{
|
||||||
|
m_retract_accel_max = value;
|
||||||
|
}
|
||||||
|
|||||||
@ -35,6 +35,7 @@ private:
|
|||||||
|
|
||||||
double m_print_accel_max;
|
double m_print_accel_max;
|
||||||
double m_travel_accel_max;
|
double m_travel_accel_max;
|
||||||
|
double m_retract_accel_max;
|
||||||
|
|
||||||
std::vector<PrinterMove> m_moves;
|
std::vector<PrinterMove> m_moves;
|
||||||
|
|
||||||
@ -57,6 +58,7 @@ public:
|
|||||||
|
|
||||||
void set_print_accel(double value);
|
void set_print_accel(double value);
|
||||||
void set_travel_accel(double value);
|
void set_travel_accel(double value);
|
||||||
|
void set_retract_accel(double value);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TIMECALC_H_
|
#endif // TIMECALC_H_
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
{
|
{
|
||||||
"print": 500,
|
"print": 500,
|
||||||
"travel": 1000,
|
"travel": 1000,
|
||||||
|
"retract": 1000,
|
||||||
"x": 500,
|
"x": 500,
|
||||||
"y": 500,
|
"y": 500,
|
||||||
"z": 100,
|
"z": 100,
|
||||||
|
|||||||
12
main.cpp
12
main.cpp
@ -225,6 +225,14 @@ void init_calc(TimeCalc& calc)
|
|||||||
{
|
{
|
||||||
calc.set_travel_accel(conf["acceleration"]["travel"]);
|
calc.set_travel_accel(conf["acceleration"]["travel"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set Retract Acceleration
|
||||||
|
if (conf.contains("acceleration") &&
|
||||||
|
conf["acceleration"].contains("retract") &&
|
||||||
|
conf["acceleration"]["retract"].is_number())
|
||||||
|
{
|
||||||
|
calc.set_retract_accel(conf["acceleration"]["retract"]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -295,8 +303,8 @@ int main(int argc, char **argv)
|
|||||||
print_time(total_time * 1.1);
|
print_time(total_time * 1.1);
|
||||||
cout << endl;
|
cout << endl;
|
||||||
|
|
||||||
cout << "-15% - ";
|
cout << "-12.5% - ";
|
||||||
print_time(total_time * 0.85);
|
print_time(total_time * 0.875);
|
||||||
cout << endl;
|
cout << endl;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user