Skip to content

Commit

Permalink
1.41.23
Browse files Browse the repository at this point in the history
  • Loading branch information
Nibbels committed May 19, 2018
1 parent c05079c commit 0428574
Show file tree
Hide file tree
Showing 11 changed files with 298 additions and 7 deletions.
3 changes: 3 additions & 0 deletions Repetier/Configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -871,4 +871,7 @@ You can activate this to 1 and connect some Button. If you connect ground to pul
/** \brief Automatic Startline */
#define FEATURE_STARTLINE 1

/** \brief Automatic Startline */
#define FEATURE_Kurt67_WOBBLE_FIX 0

#endif // CONFIGURATION_H
2 changes: 1 addition & 1 deletion Repetier/Constants.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#define CONSTANTS_H


#define REPETIER_VERSION "RF.01.41.22"
#define REPETIER_VERSION "RF.01.41.23"
#define UI_PRINTER_COMPANY "Conrad Community"
#define UI_VERSION_STRING "V " REPETIER_VERSION

Expand Down
23 changes: 23 additions & 0 deletions Repetier/Eeprom.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,16 @@ ich glaube gesehen zu haben, dass acceleration und feedrates nicht neu eingelese

#if FEATURE_SENSIBLE_PRESSURE
g_nSensiblePressureOffsetMax = (short)SENSIBLE_PRESSURE_MAX_OFFSET;
Printer::g_senseoffset_autostart = false;
#endif //FEATURE_SENSIBLE_PRESSURE

#if FEATURE_Kurt67_WOBBLE_FIX
Printer::wobblePhaseXY = 0;
Printer::wobbleAmplitudes[0] = 0;
Printer::wobbleAmplitudes[1] = 0;
Printer::wobbleAmplitudes[2] = 0;
#endif //FEATURE_Kurt67_WOBBLE_FIX

#if FEATURE_EMERGENCY_PAUSE
g_nEmergencyPauseDigitsMax = EMERGENCY_PAUSE_DIGITS_MAX;
g_nEmergencyPauseDigitsMin = EMERGENCY_PAUSE_DIGITS_MIN;
Expand Down Expand Up @@ -558,6 +567,13 @@ void EEPROM::storeDataIntoEEPROM(uint8_t corrupted)
HAL::eprSetByte( EPR_RF_MOD_SENSEOFFSET_AUTOSTART, Printer::g_senseoffset_autostart );
#endif //FEATURE_SENSIBLE_PRESSURE

#if FEATURE_Kurt67_WOBBLE_FIX
HAL::eprSetByte( EPR_RF_MOD_WOBBLE_FIX_PHASEXY , Printer::wobblePhaseXY );
HAL::eprSetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPX , Printer::wobbleAmplitudes[0] );
HAL::eprSetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPY1 , Printer::wobbleAmplitudes[1] );
HAL::eprSetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPY2 , Printer::wobbleAmplitudes[2] );
#endif //FEATURE_Kurt67_WOBBLE_FIX

#if FEATURE_EMERGENCY_PAUSE
HAL::eprSetInt32( EPR_RF_EMERGENCYPAUSEDIGITSMIN, g_nEmergencyPauseDigitsMin );
HAL::eprSetInt32( EPR_RF_EMERGENCYPAUSEDIGITSMAX, g_nEmergencyPauseDigitsMax );
Expand Down Expand Up @@ -896,6 +912,13 @@ void EEPROM::readDataFromEEPROM()
Printer::g_senseoffset_autostart = HAL::eprGetByte(EPR_RF_MOD_SENSEOFFSET_AUTOSTART);
#endif //FEATURE_SENSIBLE_PRESSURE

#if FEATURE_Kurt67_WOBBLE_FIX
Printer::wobblePhaseXY = HAL::eprGetByte( EPR_RF_MOD_WOBBLE_FIX_PHASEXY );
Printer::wobbleAmplitudes[0] = HAL::eprGetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPX );
Printer::wobbleAmplitudes[1] = HAL::eprGetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPY1 );
Printer::wobbleAmplitudes[2] = HAL::eprGetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPY2 );
#endif //FEATURE_Kurt67_WOBBLE_FIX

#if FEATURE_EMERGENCY_PAUSE
g_nEmergencyPauseDigitsMin = (long)constrain( HAL::eprGetInt32( EPR_RF_EMERGENCYPAUSEDIGITSMIN ) , EMERGENCY_PAUSE_DIGITS_MIN , EMERGENCY_PAUSE_DIGITS_MAX ); //limit to value in config.
g_nEmergencyPauseDigitsMax = (long)constrain( HAL::eprGetInt32( EPR_RF_EMERGENCYPAUSEDIGITSMAX ) , EMERGENCY_PAUSE_DIGITS_MIN , EMERGENCY_PAUSE_DIGITS_MAX ); //limit to value in config.
Expand Down
7 changes: 7 additions & 0 deletions Repetier/Eeprom.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,13 @@ have problems with other modules using the eeprom */

#define EPR_RF_MOD_SENSEOFFSET_AUTOSTART 1953 //[1byte]

#define EPR_RF_MOD_WOBBLE_FIX_PHASEXY 1954 //[1byte]
#define EPR_RF_MOD_WOBBLE_FIX_AMPX 1955 //[+1956 2byte short]
#define EPR_RF_MOD_WOBBLE_FIX_AMPY1 1957 //[+1958 2byte short]
#define EPR_RF_MOD_WOBBLE_FIX_AMPY2 1959 //[+1960 2byte short]



//Nibbels: Computechecksum geht bis 2047

#define EEPROM_EXTRUDER_OFFSET 200
Expand Down
55 changes: 55 additions & 0 deletions Repetier/Printer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,16 @@ short Printer::g_pressure_offset = 0;
uint8_t Printer::motorMicroStepsModeValue[DRV8711_NUM_CHANNELS] = {0}; //init later because of recalculation of value
#endif // FEATURE_ADJUSTABLE_MICROSTEPS

#if FEATURE_Kurt67_WOBBLE_FIX

int8_t Printer::wobblePhaseXY = 0; //+100 = +PI | -100 = -PI
//int8_t Printer::wobblePhaseZ = 0; //+100 = +PI | -100 = -PI
int16_t Printer::wobbleAmplitudes[3/*4*/] = {0}; //X, Y(X_0), Y(X_max), /*Z*/
float Printer::wobblefixOffset[2/*3*/] = {0}; ///< last calculated target wobbleFixOffsets for display output.

#endif // FEATURE_Kurt67_WOBBLE_FIX


void Printer::constrainQueueDestinationCoords()
{
if(isNoDestinationCheck()) return;
Expand Down Expand Up @@ -550,6 +560,51 @@ uint8_t Printer::setDestinationStepsFromGCode(GCode *com)
y = queuePositionCommandMM[Y_AXIS] + Printer::extruderOffset[Y_AXIS];
z = queuePositionCommandMM[Z_AXIS] + Printer::extruderOffset[Z_AXIS];

#if FEATURE_Kurt67_WOBBLE_FIX

/*
Zielkoordinate in Z ist: "z"
Wir fügen beim Umrechnen in Steps vorher noch ein Offset in XYZ ein.
offsetZ = amplitude des hubs * drehposition spindel
offsetY = amplitude in Richtung Y linke Spindel * drehposition spindel
offsetY = amplitude in Richtung Y rechte Spindel * drehposition spindel
offsetX = amplitude in Richtung X * drehposition spindel
"sinOffset = amplitude * sin( 2*Pi*(Z/5mm + zStartOffset) );"
*/

//vorausgerechnete konstanten.
float zweiPi = 6.2832f; //2*Pi
float hundertstelPi = 0.031428f; //Pi/100
float spindelSteigung = 5.0f; //[mm]

//wobble durch Bauchtanz der Druckplatte
//wobbleX oder wobbleY(x0) oder wobbleX(x245)
if(Printer::wobbleAmplitudes[0] || Printer::wobbleAmplitudes[1] || Printer::wobbleAmplitudes[2]){
float anglePositionWobble = sin(zweiPi*(z/spindelSteigung + (float)Printer::wobblePhaseXY * hundertstelPi ));
//für das wobble in Richtung X-Achse gilt immer dieselbe Amplitude, weil im extremfall beide gegeneinander arbeiten und sich aufheben könnten, oder die Spindeln arbeiten zusammen.
Printer::wobblefixOffset[X_AXIS] = Printer::wobbleAmplitudes[0] * anglePositionWobble;
x += Printer::wobblefixOffset[X_AXIS]/1000; //offset in [um] -> kosys in [mm]

//gilt eher die Y-Achsen-Richtung-Amplitude links (x=0) oder rechts (x=achsenlänge)? (abhängig von der ziel-x-position wird anteilig verrechnet.)
float xPosPercent = x/Printer::lengthMM[X_AXIS];
Printer::wobblefixOffset[Y_AXIS] = ((1-xPosPercent) * Printer::wobbleAmplitudes[1] + (xPosPercent) * Printer::wobbleAmplitudes[2]) * anglePositionWobble;
y += Printer::wobblefixOffset[Y_AXIS]/1000; //offset in [um] -> kosys in [mm]
}
/*
//wobble durch Kippeln mit Hebel -> Z-Hub
//wobbleZ
if(Printer::wobbleAmplitudes[3]){
float anglePositionLift = sin(zweiPi*(z/spindelSteigung + (float)Printer::wobblePhaseZ * hundertstelPi )); //phase von +-100% -> +-Pi
Printer::wobblefixOffset[Z_AXIS] = Printer::wobbleAmplitudes[3] * anglePositionLift;
//z kippel-wobble nur mit etwas Abstand überhalb senseoffset ausgleichen. Drunter könnte das stören.
if(z > fabs(Printer::wobblefixOffset[Z_AXIS])+AUTOADJUST_STARTMADEN_AUSSCHLUSS){
z += Printer::wobblefixOffset[Z_AXIS]/1000; //offset in [um] -> kosys in [mm]
}
}
*/
#endif // FEATURE_Kurt67_WOBBLE_FIX

long xSteps = static_cast<long>(floor(x * axisStepsPerMM[X_AXIS] + 0.5f));
long ySteps = static_cast<long>(floor(y * axisStepsPerMM[Y_AXIS] + 0.5f));
long zSteps = static_cast<long>(floor(z * axisStepsPerMM[Z_AXIS] + 0.5f));
Expand Down
9 changes: 8 additions & 1 deletion Repetier/Printer.h
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,13 @@ class Printer
static uint8_t motorMicroStepsModeValue[DRV8711_NUM_CHANNELS]; //1=2MS, 2=4MS, 3=8MS, 4=16MS, 5=32MS, 6=64MS, 7=128MS, 8=256MS
#endif // FEATURE_ADJUSTABLE_MICROSTEPS

#if FEATURE_Kurt67_WOBBLE_FIX
static int8_t wobblePhaseXY;
//static int8_t wobblePhaseZ;
static int16_t wobbleAmplitudes[3/*4*/]; //X, Y(X_0), Y(X_max), /*Z*/
static float wobblefixOffset[2/*3*/]; //< last calculated target wobbleFixOffsets for display output.
#endif // FEATURE_Kurt67_WOBBLE_FIX

static INLINE void setMenuMode(uint8_t mode,bool on)
{
if(on)
Expand Down Expand Up @@ -929,7 +936,7 @@ class Printer
{
markAllSteppersDisabled();
#if FEATURE_UNLOCK_MOVEMENT
//Printer::g_unlock_movement = 0; //again lock movement until homing or keypress or another print happens. --> toooooo much?
Printer::g_unlock_movement = 0; //again lock movement until homing or keypress or another print happens. --> toooooo much? Ich aktiviers: http://www.rf1000.de/viewtopic.php?f=70&t=2282
#endif //FEATURE_UNLOCK_MOVEMENT
disableXStepper();
disableYStepper();
Expand Down
104 changes: 104 additions & 0 deletions Repetier/ui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2111,6 +2111,59 @@ void UIDisplay::parse(char *txt,bool ram)
}
break;
}
#if FEATURE_Kurt67_WOBBLE_FIX
case 'w': //wobblefix
{
if(c2=='x') // %wx : current wobblefix offset in x [um] (Bauchtanz)
{
addInt(Printer::wobblefixOffset[X_AXIS],4);
break;
}
else if(c2=='y') // %wy : current wobblefix offset in y [um] (Bauchtanz)
{
addInt(Printer::wobblefixOffset[Y_AXIS],4);
break;
}
/*
else if(c2=='z') // %wz : current wobblefix offset in z [um] (Hub)
{
addInt(Printer::wobblefixOffset[Z_AXIS],4);
break;
}*/
else if(c2=='a') // %wa : current wobblefix amplitude for X
{
addInt(Printer::wobbleAmplitudes[0],4);
break;
}
else if(c2=='b') // %wb : current wobblefix amplitude for Y(x_0)
{
addInt(Printer::wobbleAmplitudes[1],4);
break;
}
else if(c2=='c') // %wc : current wobblefix amplitude for Y(x_245)
{
addInt(Printer::wobbleAmplitudes[2],4);
break;
}/*
else if(c2=='d') // %wd : current wobblefix amplitude for Z-lift
{
addInt(Printer::wobbleAmplitudes[3],4);
break;
}
else if(c2=='p') // %wp : current wobblefix phase for Z-lift (Hub)
{
addInt(Printer::wobblePhaseZ,4);
break;
}*/
else if(c2=='P') // %wP : current wobblefix phase for YX-wobble (Bauchtanz)
{
addInt(Printer::wobblePhaseXY,4);
break;
}

break;
}
#endif //FEATURE_Kurt67_WOBBLE_FIX
case 'Z': // %Z1-Z4: Page5 service intervall, %Z5-Z8: Page4 printing/milling time
{
if(c2=='1') // Shows text printing/milling time since last service
Expand Down Expand Up @@ -3939,6 +3992,57 @@ void UIDisplay::nextPreviousAction(int8_t next)
}
#endif //FEATURE_SENSIBLE_PRESSURE

#if FEATURE_Kurt67_WOBBLE_FIX
//Antibauchtanz:
case UI_ACTION_WOBBLE_FIX_PHASEXY:
{
INCREMENT_MIN_MAX(Printer::wobblePhaseXY,1,-100,100);
#if FEATURE_AUTOMATIC_EEPROM_UPDATE
HAL::eprSetByte( EPR_RF_MOD_WOBBLE_FIX_PHASEXY, Printer::wobblePhaseXY );
EEPROM::updateChecksum();
#endif // FEATURE_AUTOMATIC_EEPROM_UPDATE
break;
}
case UI_ACTION_WOBBLE_FIX_AMPX:
{
INCREMENT_MIN_MAX(Printer::wobbleAmplitudes[0],5,-995,995);
#if FEATURE_AUTOMATIC_EEPROM_UPDATE
HAL::eprSetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPX, Printer::wobbleAmplitudes[0] );
EEPROM::updateChecksum();
#endif // FEATURE_AUTOMATIC_EEPROM_UPDATE
break;
}
case UI_ACTION_WOBBLE_FIX_AMPY1:
{
INCREMENT_MIN_MAX(Printer::wobbleAmplitudes[1],5,-995,995);
#if FEATURE_AUTOMATIC_EEPROM_UPDATE
HAL::eprSetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPY1, Printer::wobbleAmplitudes[1] );
EEPROM::updateChecksum();
#endif // FEATURE_AUTOMATIC_EEPROM_UPDATE
break;
}
case UI_ACTION_WOBBLE_FIX_AMPY2:
{
INCREMENT_MIN_MAX(Printer::wobbleAmplitudes[2],5,-995,995);
#if FEATURE_AUTOMATIC_EEPROM_UPDATE
HAL::eprSetInt16( EPR_RF_MOD_WOBBLE_FIX_AMPY2, Printer::wobbleAmplitudes[2] );
EEPROM::updateChecksum();
#endif // FEATURE_AUTOMATIC_EEPROM_UPDATE
break;
}
//Antikippeln:
/*
case UI_ACTION_WOBBLE_FIX_PHASEZ:
{
INCREMENT_MIN_MAX(Printer::wobblePhaseZ,1,-100,100);
break;
}
case UI_ACTION_WOBBLE_FIX_AMPZ:
{
INCREMENT_MIN_MAX(Printer::wobbleAmplitudes[3],5,-995,995);
break;
}*/
#endif //FEATURE_Kurt67_WOBBLE_FIX

case UI_ACTION_CHOOSE_DMIN:
{
Expand Down
8 changes: 8 additions & 0 deletions Repetier/ui.h
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,14 @@
#define UI_ACTION_SENSEOFFSET_MAX 1711
#define UI_ACTION_SENSEOFFSET_AUTOSTART 1712

#define UI_ACTION_WOBBLE_FIX_PHASEXY 1713
#define UI_ACTION_WOBBLE_FIX_PHASEZ 1714
#define UI_ACTION_WOBBLE_FIX_AMPX 1715
#define UI_ACTION_WOBBLE_FIX_AMPY1 1716
#define UI_ACTION_WOBBLE_FIX_AMPY2 1717
#define UI_ACTION_WOBBLE_FIX_AMPZ 1718


#define UI_ACTION_FET1_OUTPUT 2001
#define UI_ACTION_FET2_OUTPUT 2002

Expand Down
26 changes: 26 additions & 0 deletions Repetier/uilang.h
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@
#define UI_TEXT_MILLER_TYPE "Miller: %mt"
#define UI_TEXT_GENERAL "General"
#define UI_TEXT_DMS "DMS Features"
#define UI_TEXT_WOBBLE "Kurts Wobblefix"
#define UI_TEXT_EXTR_STEPS "Steps/mm:%Se"
#define UI_TEXT_EXTR_STEPS0 "E0-Steps/mm:%S0"
#define UI_TEXT_EXTR_STEPS1 "E1-Steps/mm:%S1"
Expand Down Expand Up @@ -410,6 +411,12 @@
#define UI_ACTION_TEXT_TYREUS_LYBEN_TIPP "(choose for highpower bed)"

#if MOTHERBOARD == DEVICE_TYPE_RF2000 || MOTHERBOARD == DEVICE_TYPE_RF2000_V2
#define UI_TEXT_WOBBLE_FIX_PHASEXY "Phase XY: %wP%%%Pi"
#define UI_TEXT_WOBBLE_FIX_AMPX "Amplit.X: %wa[um]"
#define UI_TEXT_WOBBLE_FIX_AMPY1 "Amp. Y-l: %wb[um]"
#define UI_TEXT_WOBBLE_FIX_AMPY2 "Amp. Y-r: %wc[um]"
#define UI_TEXT_WOBBLE_FIX_PHASEZ "Phase Z: %wp%%%Pi"
#define UI_TEXT_WOBBLE_FIX_AMPZ "Amplit.Z: %wd[um]"
#define UI_TEXT_EMERGENCY_PAUSE_MIN "Min:%pl digits"
#define UI_TEXT_EMERGENCY_PAUSE_MAX "Max:%ph digits"
#define UI_TEXT_EMERGENCY_ZSTOP_MIN "Min:%pL digits"
Expand Down Expand Up @@ -465,6 +472,12 @@
#define UI_TEXT_OPERATION_DENIED "Operation denied"
#define UI_TEXT_TEMPERATURE_WRONG "Temperature wrong"
#else
#define UI_TEXT_WOBBLE_FIX_PHASEXY "PhaseXY:%wP%%%Pi"
#define UI_TEXT_WOBBLE_FIX_AMPX "Ampli.X:%waum"
#define UI_TEXT_WOBBLE_FIX_AMPY1 "Amp.Y-l:%wbum"
#define UI_TEXT_WOBBLE_FIX_AMPY2 "Amp.Y-r:%wcum"
#define UI_TEXT_WOBBLE_FIX_PHASEZ "Phase Z:%wp%%%"
#define UI_TEXT_WOBBLE_FIX_AMPZ "Ampli.Z:%wdum"
#define UI_TEXT_EMERGENCY_PAUSE_MIN "Min:%pl digi"
#define UI_TEXT_EMERGENCY_PAUSE_MAX "Max:%ph digi"
#define UI_TEXT_EMERGENCY_ZSTOP_MIN "Min:%pL digi"
Expand Down Expand Up @@ -622,6 +635,7 @@
#define UI_TEXT_MILLER_TYPE "Fr" STR_auml "ser: %mt"
#define UI_TEXT_GENERAL "Allgemein"
#define UI_TEXT_DMS "DMS Features"
#define UI_TEXT_WOBBLE "Kurts Wobblefix"
#define UI_TEXT_EXTR_MAX_FEED "Max FR:%XF"
#define UI_TEXT_EXTR_ADVANCE_L "Advance lin:%Xl"
#define UI_TEXT_EXTR_ADVANCE_K "Advance quad:%Xa"
Expand Down Expand Up @@ -802,6 +816,12 @@
#define UI_ACTION_TEXT_TYREUS_LYBEN_TIPP "(empf. f" STR_uuml "r highpower Bett)"

#if MOTHERBOARD == DEVICE_TYPE_RF2000 || MOTHERBOARD == DEVICE_TYPE_RF2000_V2
#define UI_TEXT_WOBBLE_FIX_PHASEXY "Phase XY: %wP%%%Pi"
#define UI_TEXT_WOBBLE_FIX_AMPX "Amplit.X: %wa[um]"
#define UI_TEXT_WOBBLE_FIX_AMPY1 "Amp. Y-li:%wb[um]"
#define UI_TEXT_WOBBLE_FIX_AMPY2 "Amp. Y-re:%wc[um]"
#define UI_TEXT_WOBBLE_FIX_PHASEZ "Phase Z: %wp%%%"
#define UI_TEXT_WOBBLE_FIX_AMPZ "Amplit. Z:%wd[um]"
#define UI_TEXT_EMERGENCY_PAUSE_MIN "Min:%pl digits"
#define UI_TEXT_EMERGENCY_PAUSE_MAX "Max:%ph digits"
#define UI_TEXT_EMERGENCY_ZSTOP_MIN "Min:%pL digits"
Expand Down Expand Up @@ -891,6 +911,12 @@
#define UI_TEXT_INVALID_MATRIX "Ung" STR_uuml" ltige Matrix"
#define UI_TEXT_TEMPERATURE_WRONG "Temperatur falsch"
#else
#define UI_TEXT_WOBBLE_FIX_PHASEXY "PhaseXY:%wP%%%Pi"
#define UI_TEXT_WOBBLE_FIX_AMPX "Ampli.X:%waum"
#define UI_TEXT_WOBBLE_FIX_AMPY1 "Amp.Y-l:%wbum"
#define UI_TEXT_WOBBLE_FIX_AMPY2 "Amp.Y-r:%wcum"
#define UI_TEXT_WOBBLE_FIX_PHASEZ "Phase Z:%wp%%%"
#define UI_TEXT_WOBBLE_FIX_AMPZ "Ampli.Z:%wdum"
#define UI_TEXT_EMERGENCY_PAUSE_MIN "Min:%pl digi"
#define UI_TEXT_EMERGENCY_PAUSE_MAX "Max:%ph digi"
#define UI_TEXT_EMERGENCY_ZSTOP_MIN "Min:%pL digi"
Expand Down
Loading

0 comments on commit 0428574

Please sign in to comment.