Vai al contenuto

vref senza trimmer!!


Messaggi raccomandati

  • Risposte 4
  • Creato
  • Ultima Risposta

Miglior contributo in questa discussione

Miglior contributo in questa discussione

Immagini Pubblicate

Adesso è tutto più chiaro

La tua stampante ha la regolazione delle vref digitale Esiste il comando M907 che può essere aggiunto al Gcode per fare questa regolazione 

non so piuttosto se la tua stampante lo supporti, dovresti chiedere a chi la conosce meglio di me, comunque il comando funziona cosi (con numeri di esempio, non è la regolazione per la tua stampante che dipende dai motori)

M907 X1100 Y1100 Z1100 E1250 

M907 è il codice per la corrente in ampere millisecondi a ciascuno dei motori dove X Y Z sono i motori degli assi ed E per i motori dell'estrusore.

se il comando M907 non dovesse funzionare allora credo non resti altro che ricompilare il Marlin tenendo presente che la regolazione è da fare nel  Configuration_adv.h e il parametro di chiama DIGIPOT_MOTOR_CURRENT

dal Marlin

// Motor Current setting (Only functional when motor driver current ref pins are connected to a digital trimpot on supported boards)
#define DIGIPOT_MOTOR_CURRENT {135,135,135,135,135} // Values 0-255 (RAMBO 135 = ~0.75A, 185 = ~1A)

 

Per la precisione queste info non derivano da una mia conoscenza diretta ma sono il frutto di una ricerca di oltre due ore sul web della quale ho effettuato i riscontri sul Marlin.

Tanto per curiosità dal codice Marlin si evincerebbe che la Y la mettano solo per estetica

 * M907: Set digital trimpot motor current using axis codes X, Y, Z, E, B, S
case 907: // M907 Set digital trimpot motor current using axis codes.
    {
      #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1
        for(int i=0;i<NUM_AXIS;i++) if(code_seen(axis_codes)) digipot_current(i,code_value());
        if(code_seen('B')) digipot_current(4,code_value());
        if(code_seen('S')) for(int i=0;i<=4;i++) digipot_current(i,code_value());
      #endif
      #ifdef MOTOR_CURRENT_PWM_XY_PIN
        if(code_seen('X')) digipot_current(0, code_value());
      #endif
      #ifdef MOTOR_CURRENT_PWM_Z_PIN
        if(code_seen('Z')) digipot_current(1, code_value());
      #endif
      #ifdef MOTOR_CURRENT_PWM_E_PIN
        if(code_seen('E')) digipot_current(2, code_value());
      #endif
      #ifdef DIGIPOT_I2C
        // this one uses actual amps in floating point
        for(int i=0;i<NUM_AXIS;i++) if(code_seen(axis_codes)) digipot_i2c_set_current(i, code_value());
        // for each additional extruder (named B,C,D,E..., channels 4,5,6,7...)
        for(int i=NUM_AXIS;i<DIGIPOT_I2C_NUM_CHANNELS;i++) if(code_seen('B'+i-NUM_AXIS)) digipot_i2c_set_current(i, code_value());
      #endif
    }

 

Buon divertimento 

Link al commento
Condividi su altri siti

Partecipa alla conversazione

Puoi pubblicare ora e registrarti più tardi. Se hai un account, accedi ora per pubblicarlo con il tuo account.

Ospite
Rispondi a questa discussione...

×   Hai incollato il contenuto con la formattazione.   Rimuovere la formattazione

  Sono consentiti solo 75 emoticon max.

×   Il tuo collegamento è stato incorporato automaticamente.   Mostra come un collegamento

×   Il tuo contenuto precedente è stato ripristinato.   Pulisci editor

×   Non puoi incollare le immagini direttamente. Carica o inserisci immagini dall'URL.

×
×
  • Crea Nuovo...