Ce site contient essentiellement des notes de travail. Le contenu est en constante évolution, et loin d'être achevé. (+ d'infos)
La plupart des documentations informatiques sont orientées Debian / Ubuntu.

Modélisme/CNC/Interpréteurs/Grbl/Recettes/Grbl 0.9 - spindle speed

De Ordinoscope.net
< Modélisme‎ | CNC‎ | Interpréteurs‎ | Grbl‎ | Recettes
Sauter à la navigation Sauter à la recherche

Introduction

Grbl 0.9 introduit la notion de « spindle speed », précédemment limitée à un du ON / OFF. Les pins 11 et 12 ont été inversées pour le besoin depuis la version 0.8.

Le « spindle speed » risque de décevoir certains. Par manque de documentation et d'information, il est difficilement utilisable pour l'utilisateur lambda:

  • le PWM utilise un duty cycle de 8 kHz - on utilise plus généralement du 1 kHz
  • le PWM est arbitrairement bridé aux valeurs 0 ~ 1000 - sera réglable dans la version 1.0

On peut modifier ces paramètres, mais au prix de devoir intervenir dans le code et le recompiler.

max RPM

config.h

#define VARIABLE_SPINDLE // Default enabled. Comment to disable.
#define SPINDLE_MAX_RPM 24000.0 // Max spindle RPM. This value is equal to 100% duty cycle on the PWM.
#define SPINDLE_MIN_RPM 0.0    // Min spindle RPM. This value is equal to (1/256) duty cycle on the PWM.

PWM duty cycle

spindle_control.c:85

   #ifdef VARIABLE_SPINDLE
     // TODO: Install the optional capability for frequency-based output for servos.
     #ifdef CPU_MAP_ATMEGA2560
     	TCCRA_REGISTER = (1<<COMB_BIT) | (1<<WAVE1_REGISTER) | (1<<WAVE0_REGISTER);
       TCCRB_REGISTER = (TCCRB_REGISTER & 0b11111000) | 0x02 | (1<<WAVE2_REGISTER) | (1<<WAVE3_REGISTER); // set to 1/8 Prescaler
       OCR4A = 0xFFFF; // set the top 16bit value
       uint16_t current_pwm;
     #else
       TCCRA_REGISTER = (1<<COMB_BIT) | (1<<WAVE1_REGISTER) | (1<<WAVE0_REGISTER);
       //TCCRB_REGISTER = (TCCRB_REGISTER & 0b11111000) | 0x02; // set to 1/8 Prescaler
       TCCRB_REGISTER = (TCCRB_REGISTER & 0b11111000) | 0x04; // set to 1/8 Prescaler
       // 0x02: 8 kHz (7.78)
       // 0x03: 2 kHz (1.94)
       // 0x04: 1 kHz (0.970)
       uint8_t current_pwm;
     #endif