打开 ErrorSnaKe 打开了这个 issue 2017 年 2 月 23 日 · 0 条评论 打开 脉宽调制问题#1186 ErrorSnaKe 打开了这个 issue 2017 年 2 月 23 日 · 0 条评论 注释 错误蛇 评论了 2017 年 2 月 23 日 你好, 我有一个具有下一个规格的激光二极管驱动器 调制 5V TTL/PWM 调制带宽 4kHz 调制上升/下降时间 40/60 ms Grbl 使用 Fast PWM 它的预分频器意味着我收到 7812.5 或 976.5625 Hz 但在相位校正 PWM 模式下,我看到正确的频率 – 3921.16 Hz 在 grbl 0,9j 中,我尝试更改 cpu_map_atmega328p.h 中的设置 `// PWM 和步进器启用主轴的启动 #ifdef VARIABLE_SPINDLE // 下面的高级配置您不需要触摸这些变量 #define PWM_MAX_VALUE 255.0 #define TCCRA_REGISTER TCCR2A #define TCCRB_REGISTER TCCR2B #define OCR_REGISTER OCR2A #define COMB_BIT COM2A1 #define WAVE0_REGISTER WGM20 #define WAVE1_REGISTER WGM21 #define WAVE2_REGISTER WGM22 #define WAVE3_REGISTER WGM23 // 注意:在 328p 上,这些必须与 SPINDLE_ENABLE 设置相同。 #define SPINDLE_PWM_DDR DDRB #define SPINDLE_PWM_PORT PORTB #define SPINDLE_PWM_BIT 3 // Uno 数字引脚 11 #endif // VARIABLE_SPINDLE 结束` 和 spindle_control.c #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) | 0x03 | (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) | 0x03; // set to 1/8 Prescaler uint8_t current_pwm; #endif 在 grbl 1.1 在 cpu_map.h ` #define SPINDLE_PWM_OFF_VALUE 0 #define SPINDLE_PWM_RANGE (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE) #define SPINDLE_TCCRA_REGISTER TCCR2A #define SPINDLE_TCCRB_REGISTER TCCR2B #define SPINDLE_TCCRB_REGISTER TCCR2B #define SPINDLE_TCCRB_REGISTER TCCR2B #define SPINDLE_OCRB OCR_COM1 #define SPINDLE_OCRB OCR_REGISTER1 // 预分频,8 位快速 PWM 模式。 #define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // 配置快速 PWM 模式。 // #define SPINDLE_TCCRB_INIT_MASK (1<<CS20) // 禁用预分频器 -> 62.5kHz // #define SPINDLE_TCCRB_INIT_MASK (1<<CS21) // 1/8 预分频器 -> 7.8kHz(在 v0.9 中使用) // #定义 SPINDLE_TCCRB_INIT_MASK ((1<<CS21) | (1<<CS20)) // 1/32 预分频器 -> 1.96kHz #define SPINDLE_TCCRB_INIT_MASK (1<<CS22) // 1/64 预分频器 -> 0.98kHz (J-tech激光) // 注意:在 328p 上,这些必须与 SPINDLE_ENABLE 设置相同。 #define SPINDLE_PWM_DDR DDRB #define SPINDLE_PWM_PORT PORTB #define SPINDLE_PWM_BIT 3 // Uno 数字引脚 11 #endif` 但不成功 问题如何将 TTL/PWM 调制更改为 4kHz? 喜欢 (0) 沿 X 轴的切割问题 Ortur Laser aster 2 #1015 SpnEn 无法在 CNC Shield V3.00 和 gbrl 1.1f 上工作 #1187 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭 无法在 gsender 1.2.0 中打开 .gcode 文件 #367 RaspberryPi 运行 gsender 时出现问题 #89 向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473 v1.3.8-EDGE 重启后键盘快捷键消失 #427 关闭无法在 gsender 1.2.0 中打开 .gcode 文件 #367RaspberryPi 运行 gsender 时出现问题 #89向 fluidnc 发送 $$ 会导致 gsender 崩溃 #473功能请求:抑制发送到机器的 gcode 中的 gcode 注释。 #444 关闭通过网络连接进行连接 #171操纵杆运动的剩余问题 #204 关闭新版本认为我的机器一直处于锁定状态 #474 关闭
你好,
我有一个具有下一个规格的激光二极管驱动器
调制 5V TTL/PWM
调制带宽 4kHz
调制上升/下降时间 40/60 ms
Grbl 使用 Fast PWM 它的预分频器意味着我收到 7812.5 或 976.5625 Hz
但在相位校正 PWM 模式下,我看到正确的频率 – 3921.16 Hz
在 grbl 0,9j 中,我尝试更改 cpu_map_atmega328p.h 中的设置
`// PWM 和步进器启用主轴的启动
#ifdef VARIABLE_SPINDLE
// 下面的高级配置您不需要触摸这些变量
#define PWM_MAX_VALUE 255.0
#define TCCRA_REGISTER TCCR2A
#define TCCRB_REGISTER TCCR2B
#define OCR_REGISTER OCR2A
#define COMB_BIT COM2A1
#define WAVE0_REGISTER WGM20
#define WAVE1_REGISTER WGM21
#define WAVE2_REGISTER WGM22
#define WAVE3_REGISTER WGM23
// 注意:在 328p 上,这些必须与 SPINDLE_ENABLE 设置相同。
#define SPINDLE_PWM_DDR DDRB
#define SPINDLE_PWM_PORT PORTB
#define SPINDLE_PWM_BIT 3 // Uno 数字引脚 11
#endif // VARIABLE_SPINDLE 结束`
和 spindle_control.c
#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) | 0x03 | (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) | 0x03; // set to 1/8 Prescaler uint8_t current_pwm; #endif在 grbl 1.1 在 cpu_map.h
` #define SPINDLE_PWM_OFF_VALUE 0
#define SPINDLE_PWM_RANGE (SPINDLE_PWM_MAX_VALUE-SPINDLE_PWM_MIN_VALUE)
#define SPINDLE_TCCRA_REGISTER TCCR2A
#define SPINDLE_TCCRB_REGISTER TCCR2B
#define SPINDLE_TCCRB_REGISTER TCCR2B #define SPINDLE_TCCRB_REGISTER TCCR2B #define SPINDLE_OCRB OCR_COM1 #define SPINDLE_OCRB
OCR_REGISTER1
// 预分频,8 位快速 PWM 模式。
#define SPINDLE_TCCRA_INIT_MASK ((1<<WGM20) | (1<<WGM21)) // 配置快速 PWM 模式。
// #define SPINDLE_TCCRB_INIT_MASK (1<<CS20) // 禁用预分频器 -> 62.5kHz
// #define SPINDLE_TCCRB_INIT_MASK (1<<CS21) // 1/8 预分频器 -> 7.8kHz(在 v0.9 中使用)
// #定义 SPINDLE_TCCRB_INIT_MASK ((1<<CS21) | (1<<CS20)) // 1/32 预分频器 -> 1.96kHz
#define SPINDLE_TCCRB_INIT_MASK (1<<CS22) // 1/64 预分频器 -> 0.98kHz (J-tech激光)
// 注意:在 328p 上,这些必须与 SPINDLE_ENABLE 设置相同。
#define SPINDLE_PWM_DDR DDRB
#define SPINDLE_PWM_PORT PORTB
#define SPINDLE_PWM_BIT 3 // Uno 数字引脚 11
#endif`
但不成功
问题如何将 TTL/PWM 调制更改为 4kHz?