Страница 1 из 3
Импульсная подача СОЖ/воздуха.
Добавлено: 09 ноя 2015, 11:26
eugenysg
Коллеги, приветствую!
Интересуют методы реализации импульсной подачи СОЖ/воздуха средствами LCNC. Скорее всего данную задачу уже решали, но к сожалению я не смог найти соответствующую тему. Подскажите пожалуйста.
По сути есть желание получить ШИМ на клапанах (с крайне низкой частотой) при M07 и M08. Частоту и скважность хочется иметь возможность изменять, оптимально через ползунки на панели

Клапаны подключены через промежуточные реле к 7i77.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 09 ноя 2015, 12:10
Nick
Делаешь pwmgen, настраиваешь на нем частоту, и подключаешь к релле.
http://linuxcnc.org/docs/html/man/man9/pwmgen.9.html
Какая именно частота нужна?
Какие пины?
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 09 ноя 2015, 12:26
eugenysg
Частота менее 1 гц. Пины точно не помню, посмотреть сейчас нет возможности. Какие то из output пинов 7i77 (TB7-8 pin17-24), как понимаю не принципиально.
Пример бы конфига какой, пусть и сильно отвлеченный. Пошел курить мануал.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 09 ноя 2015, 12:32
Nick
Ну суть в чем добавляешь в custom.hal:
Код: Выделить всё
loadrt pwmgen
addf pwmgen.update servo-thread
addf pwmgen.make-pulses servo-thread
net [сигнал сож] => pwmgen.0.enable
net [сигнал ползунка] => pwmgen.0.value
net [на вывод] <= pwmgen.0.pwm
setp pwmgen.0.pwm-freq [частота Гц]
ну и остальный параметры scale, offset и прочее...
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 09 ноя 2015, 12:35
eugenysg
Спасибо!
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 12:06
eugenysg
Вчера нашлось немного времени. Попробовал. Кусок castom.hal c моим творчеством приведен на кривом рисунке ниже
Собственно в чем проблема - pwmgen.X.value работает, скважность изменяется, а вот с частотой заданной pwmgen.X.pwm-freq какие-то чудеса - на картинке видно что указана частота 0.001Гц, при этом реальная выходная частота около 1 Гц. Если изменить pwmgen.X.pwm-freq на 0.1 (да, на 2 порядка) реальная выходная частота все равно около 1 Гц. Что то явно делаю не так.
Кроме того был реально удивлен активностью пина и реального выхода при machine off/estop. Запускаю LCNC и релюшка уже щелкает. Понятно что конфиг глубоко тестовый и не заведен на внутренние сиглалы lcnc сож , но предполагал что при machine off/estop активность физических выходов не допустима.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 12:35
Serg
eugenysg писал(а):предполагал что при machine off/estop активность физических выходов не допустима.
Вообще никак не связано.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 12:41
eugenysg
UAVpilot писал(а):Вообще никак не связано.
Понятно. А по поводу pwmgen мысли есть?
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 12:47
Serg
Пока нет, нужно время найти чтоб попробовать...
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 13:43
Сергей Саныч
eugenysg писал(а):А по поводу pwmgen мысли есть?
Функция pwmgen.make-pulses не использует вычисления с плавающей запятой.
Следовательно, есть ограничения, связанные с диапазоном целых 32-битных чисел - для знаковых -2147483648..+2147483647. Всякие времЕнные величины (периоды, длительности) внутри LCNC в основном представлены в наносекундах. Получается, что с генерацией периодов больше чем 2147483647 / 1000000000 ~= 2,1 сек. будут затруднения.
PS: В тексте pwmgen прямо сказано
/* min freq is 0.5 Hz (2 billion nsec period) */
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 13:48
aftaev
UAPilot, как то делал смазку по кол-ву смены направлений оси. Так же сделать, только вместо смазки СОЖ пшикать.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 13:56
Nick
А pdm - это же частотно импульсная модуляция? Она не спасет?
Ну или как вариант можно попробовать на других компонентах.
А там реально частота будет около 1Гц, или там будет раз в 15-20 секунд включить на 1-2 секунды?
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:17
eugenysg
Nick писал(а):А там реально частота будет около 1Гц, или там будет раз в 15-20 секунд включить на 1-2 секунды?
Хотелось бы раз в 3-4 секунды включить подачу на 0,2-0,5 секунды.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:24
eugenysg
Сергей Саныч писал(а):/* min freq is 0.5 Hz (2 billion nsec period) */
Нашел то о чем вы упоминаете, стало понятно что все что меньше 0,5 будет принудительно приравнено к 0,5.
if ( *(pwmgen->pwm_freq) < 0.5 ) { *(pwmgen->pwm_freq) = 0.5; /* min freq is 0.5 Hz (2 billion nsec period) */
https://github.com/jepler/linuxcnc-mirr ... s/pwmgen.c
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:25
raddd
Так может счетчика добавить в качестве делителя частоты?
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:26
eugenysg
raddd писал(а):Так может счетчика добавить в качестве делителя частоты?
Технически каким образом это реализуемо?
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:27
Serg
eugenysg писал(а):Хотелось бы раз в 3-4 секунды включить подачу на 0,2-0,5 секунды.
Можно попробовать парочку timedelay зациклить...
eugenysg писал(а):Технически каким образом это реализуемо?
компонентом encoder.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:31
raddd
Насколько я знаю в линукс можно логические элементы подключать. и еще можно внешнюю плату со счетчиком сделать. Скажем каждых 32 импульса от pwmgen появляется 1. После нее таймер на нужное время впрыска.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:33
Сергей Саныч
Nick писал(а):А там реально частота будет около 1Гц
Да, не менее 0,5 Гц.
Можно "из кубиков" собрать. Взять "пилу" или "треугольник" с выхода
siggen, подать ее на вход компаратора
comp, на второй вход
comp подать задающий уровень. С выхода out компаратора - на включение охлаждения.
Частота siggen будет задавать период включения, а задающий уровень - время работы.
Re: Импульсная подача СОЖ/воздуха.
Добавлено: 10 ноя 2015, 14:34
Serg
raddd писал(а):и еще можно внешнюю плату со счетчиком сделать
Внешнюю плату-то зачем? Вон бери триггеры (компонент flipflop) и "паяй" из них счётчики в обычном текстовом редакторе.
