Skip to content

Commit

Permalink
UNTESTED: Hangprinter: Allow Hangprinter to be configured with 9 anchors
Browse files Browse the repository at this point in the history
  • Loading branch information
jtimon committed Sep 12, 2022
1 parent 3ce726d commit da87aeb
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 11 deletions.
19 changes: 10 additions & 9 deletions src/Movement/Kinematics/HangprinterKinematics.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@
constexpr size_t DefaultNumAnchors = 4;
// Default anchor coordinates
// These are only placeholders. Each machine must have these values calibrated in order to work correctly.
constexpr float DefaultAnchors[8][3] = {{ 0.0, -2000.0, -100.0},
constexpr float DefaultAnchors[9][3] = {{ 0.0, -2000.0, -100.0},
{ 2000.0, 1000.0, -100.0},
{-2000.0, 1000.0, -100.0},
{ 0.0, 0.0, 3000.0},
{ 0.0, 0.0, 0.0},
{ 0.0, 0.0, 0.0},
{ 0.0, 0.0, 0.0},
{ 0.0, 0.0, 0.0},
{ 0.0, 0.0, 0.0}};
constexpr float DefaultPrintRadius = 1500.0;

Expand Down Expand Up @@ -86,13 +87,13 @@ void HangprinterKinematics::Init() noexcept
* In practice you might want to compensate a bit more or a bit less */
constexpr float DefaultSpoolBuildupFactor = 0.007;
/* Measure and set spool radii with M669 to achieve better accuracy */
constexpr float DefaultSpoolRadii[HANGPRINTER_MAX_AXES] = { 75.0, 75.0, 75.0, 75.0, 75.0, 75.0, 75.0, 75.0}; // HP4 default
constexpr float DefaultSpoolRadii[HANGPRINTER_MAX_AXES] = { 75.0, 75.0, 75.0, 75.0, 75.0, 75.0, 75.0, 75.0, 75.0}; // HP4 default
/* If axis runs lines back through pulley system, set mechanical advantage accordingly with M669 */
constexpr uint32_t DefaultMechanicalAdvantage[HANGPRINTER_MAX_AXES] = { 2, 2, 2, 2, 2, 2, 2, 4}; // HP4 default
constexpr uint32_t DefaultLinesPerSpool[HANGPRINTER_MAX_AXES] = { 1, 1, 1, 1, 1, 1, 1, 1}; // HP4 default
constexpr uint32_t DefaultMotorGearTeeth[HANGPRINTER_MAX_AXES] = { 20, 20, 20, 20, 20, 20, 20, 20}; // HP4 default
constexpr uint32_t DefaultSpoolGearTeeth[HANGPRINTER_MAX_AXES] = { 255, 255, 255, 255, 255, 255, 255, 255}; // HP4 default
constexpr uint32_t DefaultFullStepsPerMotorRev[HANGPRINTER_MAX_AXES] = { 25, 25, 25, 25, 25, 25, 25, 25};
constexpr uint32_t DefaultMechanicalAdvantage[HANGPRINTER_MAX_AXES] = { 2, 2, 2, 2, 2, 2, 2, 2, 4}; // HP4 default
constexpr uint32_t DefaultLinesPerSpool[HANGPRINTER_MAX_AXES] = { 1, 1, 1, 1, 1, 1, 1, 1, 1}; // HP4 default
constexpr uint32_t DefaultMotorGearTeeth[HANGPRINTER_MAX_AXES] = { 20, 20, 20, 20, 20, 20, 20, 20, 20}; // HP4 default
constexpr uint32_t DefaultSpoolGearTeeth[HANGPRINTER_MAX_AXES] = { 255, 255, 255, 255, 255, 255, 255, 255, 255}; // HP4 default
constexpr uint32_t DefaultFullStepsPerMotorRev[HANGPRINTER_MAX_AXES] = { 25, 25, 25, 25, 25, 25, 25, 25, 25};
ARRAY_INIT(anchors, DefaultAnchors);
numAnchors = DefaultNumAnchors;
printRadius = DefaultPrintRadius;
Expand Down Expand Up @@ -677,8 +678,8 @@ void HangprinterKinematics::PrintParameters(const StringRef& reply) const noexce
HangprinterKinematics::ODriveAnswer HangprinterKinematics::GetODrive3EncoderEstimate(DriverId const driver, bool const makeReference, const StringRef& reply, bool const subtractReference) THROWS(GCodeException)
{
const uint8_t cmd = CANSimple::MSG_GET_ENCODER_ESTIMATES;
static CanAddress seenDrives[HANGPRINTER_MAX_AXES] = { 0, 0, 0, 0, 0, 0, 0, 0 };
static float referencePositions[HANGPRINTER_MAX_AXES] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
static CanAddress seenDrives[HANGPRINTER_MAX_AXES] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
static float referencePositions[HANGPRINTER_MAX_AXES] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
static size_t numSeenDrives = 0;
size_t thisDriveIdx = 0;

Expand Down
4 changes: 2 additions & 2 deletions src/Movement/Kinematics/HangprinterKinematics.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ class HangprinterKinematics : public RoundBedKinematics

private:
// Basic facts about movement system
const char* ANCHOR_CHARS = "ABCDEFHI"; // Skip the G, since it is reserved in G-code
static constexpr size_t HANGPRINTER_MAX_AXES = 8;
const char* ANCHOR_CHARS = "ABCDEFHIJ"; // Skip the G, since it is reserved in G-code
static constexpr size_t HANGPRINTER_MAX_AXES = 9;
static constexpr size_t A_AXIS = 0;
static constexpr size_t B_AXIS = 1;
static constexpr size_t C_AXIS = 2;
Expand Down

0 comments on commit da87aeb

Please sign in to comment.