Насколько близко к 5 кГц я могу установить частоту ШИМ на выводе 11 UNO?

pwm

Я перестраиваю лазерный станок с ЧПУ и использую LaserWeb4 в качестве интерфейса управления и GRBL 1.1 в качестве низкоуровневого интерфейса для шаговых двигателей, концевых выключателей и лазера. Я разобрался со всеми движениями и работаю над управлением лазером.

Рис. 1. Распиновка GRBL 1.1. Контакт 11 используется для управления скоростью вращения шпинделя (резака) на фрезерном станке или для управления мощностью лазера на лазерном резаке.

На компьютере используется Synrad серии 48 лазерный модуль, для которого требуется частота ШИМ 5 кГц (стр. 45–46).

Скетч GRBL 1.1 можно настроить для различных частот ШИМ. См. cpu_map.h.

  // Предварительно масштабированный, 8-битный режим Fast PWM.
  #define SPINDLE_TCCRA_INIT_MASK   ((1<<WGM20) | (1<<WGM21))  // Настраивает режим быстрого ШИМ.
  // #define SPINDLE_TCCRB_INIT_MASK (1<<CS20) // Отключить прескалер -> 62,5 кГц
  // #define SPINDLE_TCCRB_INIT_MASK (1<<CS21) // 1/8 прескалера -> 7,8 кГц (используется в v0.9)
  // #define SPINDLE_TCCRB_INIT_MASK ((1<<CS21) | (1<<CS20)) // 1/32 прескалера -> 1,96 кГц
  #define SPINDLE_TCCRB_INIT_MASK      (1<<CS22)               // 1/64 прескалер -> 0,98 кГц (лазер J-tech)

  // ПРИМЕЧАНИЕ. На 328p они должны совпадать с настройками SPINDLE_ENABLE.
  #define SPINDLE_PWM_DDR     DDRB
  #define SPINDLE_PWM_PORT  PORTB
  #define SPINDLE_PWM_BIT     3    // Цифровой контакт Uno 11

Кажется, мои варианты: 62,5 кГц, 7,8 кГц, 1,96 кГц или 0,98 кГц.

Почему это важно? Две выдержки из руководства Synrad:

Чикающие частоты [сигнал «поддержки бодрствования» при нулевой мощности] ниже 4,5 кГц могут ухудшить характеристики лазера, ... и вызвать нагрузку на ВЧ [радиочастотную] электронику, тем самым снижая долговременную надежность, в то время как частоты щекотки выше 5 кГц может вызвать непреднамеренную генерацию.

Поскольку выходной сигнал лазера следует за входным сигналом ШИМ с постоянной времени нарастания и спада ~100 мкс, лазер не может точно следовать частотам командного сигнала выше t кГц с коэффициентом заполнения более 50 %.

Кто-нибудь может найти обходной путь для этого в рамках ограничений конфигурации GRBL?

Я могу только придумать аппаратное решение для фильтрации ШИМ и пропуска его через другое устройство для преобразования аналогового сигнала в ШИМ с частотой 5 кГц.

Большое спасибо.

, 👍2

Обсуждение

Я пытаюсь сделать то же самое, и ответ на ваш вопрос может сэкономить мне много времени. Пришлось ли вам фильтровать ШИМ и пропускать его через другой uno, чтобы преобразовать аналоговый сигнал в ШИМ с частотой 5 кГц?, @Pete


2 ответа


Лучший ответ:

1

Нет, у вас не может быть аппаратного ШИМ на частоте 5 кГц на контакте 11 Arduino. Уно. Самое близкое, что вы можете получить, это 3,92 кГц. Вы получите это, установив предварительный делитель на 8 и настройку таймера для фазовой корректной ШИМ, вместо быстрого режима PWM, обычно используемого GRBL. Ваши варианты для для получения частоты 5 кГц нужно либо использовать программный ШИМ, либо изменить распиновку.

Вы можете получить довольно точный ШИМ-сигнал 5 кГц на контактах 3, 9. и 10. Вы можете сделать программную ШИМ на частоте 5 кГц на любом выводе, но это склонен к значительному дрожанию, что может не понравиться вашему лазеру.

,

1

Простой способ, который может повлиять на синхронизацию других ваших цифровых выходов: https://playground.arduino.cc/Code /PwmFrequency

Или, если вы хотите поместить выход PWM на контакт 9/10 и управлять регистрами AVR напрямую:

Цифровые контакты 9 (OC1A) и 10 (OC1B) являются выходами 16-битного таймера AVR (TIMER1) на 328p. С ними вы можете получить ШИМ-сигнал на частоте 5000 кГц, но если вам нужна надежность, вам может понадобиться Arduino с внешним кварцевым резонатором. Вам нужно будет установить регистры TCCR1A, TCCR1B и OCR1A,OCR1B,ICR1,TIFR1 соответственно, подробности можно найти в техническом описании AVR.

,

Керамический резонатор Uno надежен, хотя и не точен и не стабилен., @Edgar Bonet