Welcome! Log In Create A New Profile

Advanced

How to disable servo movement between probing point ?

Posted by Steph ane 
How to disable servo movement between probing point ?
May 15, 2014 12:30PM
Hello,

I use marlin with the autoleveling option and I occured some probleme with the servo movement between the point of the probing ...
Somebody know how to stop the servo movement between the different points ?
Re: How to disable servo movement between probing point ?
May 15, 2014 06:06PM
I have found one part alone.

In "Marlin_main.cpp" tab. In auto leveling bed code (before G-Code programmation)

Near line 1055, I have comment the 2 line below

#ifdef SERVO_ENDSTOPS
//engage_z_probe(); // Engage Z Servo endstop if available // (Modif) enlève le fonctionnement servo pendant l'auto level
#endif //SERVO_ENDSTOPS

#ifdef SERVO_ENDSTOPS
//retract_z_probe(); // (Modif) enlève le fonctionnement servo pendant l'auto level
#endif //SERVO_ENDSTOPS

The servo continue to run 1 time before the probing but it's better for me now.

Edited 1 time(s). Last edit at 05/15/2014 06:36PM by Steph ane.
Re: How to disable servo movement between probing point ?
May 18, 2014 11:43AM
Re: How to disable servo movement between probing point ?
May 19, 2014 10:32AM
if you mean, the servo has jitter, you can squelch the noise by putting a 220ohm resistor between the negative and signal line at the servo.
That stops the jitters, which I found is caused by having the servo near the stepper motor.
If I separate them by several inches, the jitters go away, but that is not a solution for me.

You can also turn off the servo signal and try to park it, but if you leave the 5V going to the servo, it will still jitter.
I have successfully programmed the 5V to HIGH and LOW, which shuts off the power fully. This worked.
discussion here. [forums.reprap.org]


and also discussed similar here: [forums.reprap.org]
Re: How to disable servo movement between probing point ?
May 19, 2014 04:40PM
Lechonquinto : perhaps it's interresting but i speak french and try to speak english so spanish not yet. but thanks

davew_tx :
no i don't spoke about jitter. My question was because on my firmware the servo go up and down for each point of the levelling.
In my case I use sevo for set 3 positions of my own machine (dual extruder) : 1 for extruder N°1, 1 for extruder N°2 and 1 for the probe.
And my code before stop this movement.
I have had an aditionnal M-Code in Marlin_Main for had a personnal tool change in Slic3r
I'm a noob in arduino programmation but it's seems too work ...

Like this:

case 281: // M281 - M281 P RUN - Fonction Perso dual extruder - Met le servo en bonne position en fonction de l'extruder actif
      {
        int servo_index = -1;
        int servo_position = 0;
        
        if (code_seen('P'))
          servo_index = code_value();
         
        // #####################################################  Modif section ###################################  
        
        if (code_seen('RUN')) {
                      
          if (active_extruder != 1)
         {
            servo_position = 30;
            goto out;
         }
          else if (active_extruder != 0)
          {
            servo_position = 0;
          }             
          out:          
          
        // #####################################################  Modif section ###################################
          
          if ((servo_index >= 0) && (servo_index < NUM_SERVOS)) {
            #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
		      servos[servo_index].attach(0);
            #endif
            
            servos[servo_index].write(servo_position);
            
            #if defined (ENABLE_AUTO_BED_LEVELING) && (PROBE_SERVO_DEACTIVATION_DELAY > 0)
              delay(PROBE_SERVO_DEACTIVATION_DELAY);
              servos[servo_index].detach();
            #endif
          }
          else {
            SERIAL_ECHO_START;
            SERIAL_ECHO("Servo ");
            SERIAL_ECHO(servo_index);
            SERIAL_ECHOLN(" out of range");
          }
        }
        else if (servo_index >= 0) {
          SERIAL_PROTOCOL(MSG_OK);
          SERIAL_PROTOCOL(" Servo ");
          SERIAL_PROTOCOL(servo_index);
          SERIAL_PROTOCOL(": ");
          SERIAL_PROTOCOL(servos[servo_index].read());
          SERIAL_PROTOCOLLN("");
        }
      }
      break;
    #endif // NUM_SERVOS > 0    
    
    // ##################################    
        
    
    #if (LARGE_FLASH == true && ( BEEPER > 0 || defined(ULTRALCD) || defined(LCD_USE_I2C_BUZZER)))

I have some mechanic modification to do for test more ....

Edited 1 time(s). Last edit at 05/19/2014 04:41PM by Steph ane.
Sorry, only registered users may post in this forum.

Click here to login