Страница 3 из 4
Re: маленький долгострой
Добавлено: 27 окт 2014, 23:59
crazydnb
по моему так и должно быть, когда питания нет двигатель можно крутить плавно на один шаг, при прокрутки включенных двигателях они перескакивают на несколько шагов. нужно двигатели к драйверам подключить и покрутить их программно. имхо. а энкодеры могут направление определять ? может происходит типа "дребезг контактов" свет оптопары попадает на край диска и при попытке покрутить рукой туда сюда ловит импульсы не перескочив при этом на другой шаг.
Re: маленький долгострой
Добавлено: 28 окт 2014, 10:22
Nick
С какой скоростью работает считывание энкодера?
Двигатель может достаточно быстро перескакивать с одного шага на другой и контроллер может не успевать считать все импульсы. Плюс проверить на дребезг.
Re: маленький долгострой
Добавлено: 28 окт 2014, 12:00
AlexNikov
gedrolium, доброго дня! Подскажите, а что за насос у вас гоняет охлаждалку к шпинделю?
Re: маленький долгострой
Добавлено: 28 окт 2014, 12:42
gedrolium
Nick писал(а):С какой скоростью работает считывание энкодера?
Двигатель может достаточно быстро перескакивать с одного шага на другой и контроллер может не успевать считать все импульсы. Плюс проверить на дребезг.
тактовая частота контроллера на 5v 20 МГц или 20 миллионов команд в секунду. Количество строк в в программе 154, соответственно 154 команды, некоторые из них выполняются за 2 такта. Мне неохота разбирать сейчас какие именно поэтому я просто умножу 154 на 2 = 308 команд требуется на один опрос. То есть 308 команд требуется для того чтобы считать один импульс с каждого энкодера, записать в счетчики, сравнить счетчик импульсов.
20 000 000 /308=64 935 опросов совершает за 1 секунду, вот только не помню выключал я стандартный делитель на 8 при прошивке или нет, контроллер с программирован еще в мае, по этому 64 935/8=8 116 опросов в секунду. или 486 960 опросов в минуту.
В энкодере 183 дырочки, контроллер считывает в lдва раза больше т.е за один оборот выдает 366 импульсов.
частота вращения двигателя при 2 метрах минуту составляет 400 оборотв в минуту (2000 мм / на 5 мм шаг винта). Что дает нам 366 на 400 = 146 400 выдает импульсов энкодер. Итого троекратный запас опросов контроллера.
Re: маленький долгострой
Добавлено: 28 окт 2014, 12:45
gedrolium
AlexNikov писал(а):gedrolium, доброго дня! Подскажите, а что за насос у вас гоняет охлаждалку к шпинделю?
Обычный циркуляционный насос, которые ставят в системах отопления
Re: маленький долгострой
Добавлено: 28 окт 2014, 12:55
gedrolium
crazydnb писал(а):по моему так и должно быть, когда питания нет двигатель можно крутить плавно на один шаг, при прокрутки включенных двигателях они перескакивают на несколько шагов. нужно двигатели к драйверам подключить и покрутить их программно. имхо. а энкодеры могут направление определять ? может происходит типа "дребезг контактов" свет оптопары попадает на край диска и при попытке покрутить рукой туда сюда ловит импульсы не перескочив при этом на другой шаг.
нет энкодеры направление определят не могут. Двигатели крутил программно на очень медленных оборотах. Кстати на один из ШД ток удержания поставил маленький поэтому он достаточно легко крутиться, на другой поставил стандартный, прокрутить на шаг нельзя, а вот чуть сдвинуть в полне удается. Вообще по хорошему надо глянуть на сам сигнал, нужен осциллограф
Re: маленький долгострой
Добавлено: 28 окт 2014, 14:14
Serg
gedrolium писал(а):тактовая частота контроллера на 5v 20 МГц или 20 миллионов команд в секунду.
20 МГц - это частота кварца. А тактовая частота МК обычно четверть от частоты кварца...
Re: маленький долгострой
Добавлено: 28 окт 2014, 15:05
gedrolium
UAVpilot писал(а):gedrolium писал(а):тактовая частота контроллера на 5v 20 МГц или 20 миллионов команд в секунду.
20 МГц - это частота кварца. А тактовая частота МК обычно четверть от частоты кварца...
У этого контроллера внутренний генератор, что если честно не очень хорошо. Скорость работы которого зависит от напряжения, делитель по умолчанию стоит 8. В любом случае его можно заставить работать на такой частоте. сейчас же идут какие то помехи, от которых работает не так как задумано даже на нескольких импульсов.
Re: маленький долгострой
Добавлено: 28 окт 2014, 15:31
solanto
Попробуй временно заземлить двигатели (вдруг поможет) и проведи свой тест заново. И хорошо бы заэкранировать сам датчик и провод от него к плате.
Re: маленький долгострой
Добавлено: 04 ноя 2014, 06:06
gedrolium
Нашел в чем была проблема, точнее сказать проблема была не одна. Все что было предложено выше форумчанами оказалось рядом, но не совсем. Было предположение, что модуль срабатывает не правильно из-за перескакивания через несколько отверстий, оно отчасти оказалось верным. Выяснилось, что при включенном двигателе, когда крутишь на один шаг, и правду перескакивает несколько положений диска, однако модуль срабатывал даже при смене одного положения. Включенный двигатель создает неплохие наводки, и им чихать, что датчик оптический. При смене положения, там не один импульс проскакивал, а несколько, что и приводило к сбою. Кстати заземление, ферритовые кольца не помогли, вопрос решился фильтром низких частот, ну а чтобы отсеять прочий хлам, и сделать импульсы более правильными, и убрать случайные дребезги поставил тригер Шмитта. Предполагалось, что при высоких оборотах будут проблемы, проблемы были на небольших меняющихся оборотах, как раз в районе резонансов. Также пришлось увеличить порог срабатывания до 30 импульсов, ибо на некоторых режимах появляются не нужные импульсы от датчиков, а также припаял эти датчики. При помощи пустой кружки с ложкой, отстроил чтобы двигатели работали ровно и плавно, а главное одинаково. Прогнал, несколько программ, сбоев нет, что вообщем, то радует особенно после 4 суток опытов и мозгового штурма.
https://www.youtube.com/watch?v=594-Ef_N_4M
Re: маленький долгострой
Добавлено: 05 ноя 2014, 02:44
gedrolium
Каким образом сделать так, чтобы управляющая программа выполнялась только после того, как шпиндель раскрутился до нужных оборотов? То есть после подачи сигнала готовности от шпинделя на один из входов lpt
Re: маленький долгострой
Добавлено: 05 ноя 2014, 06:14
Сергей Саныч
gedrolium писал(а):Каким образом сделать так, чтобы управляющая программа выполнялась только после того, как шпиндель раскрутился до нужных оборотов? То есть после подачи сигнала готовности от шпинделя на один из входов lpt
Нужно подключить этот сигнал на motion.spindle-at-speed
http://linuxcnc.org/docs/html/man/man9/motion.9.html
Re: маленький долгострой
Добавлено: 05 ноя 2014, 07:25
nERV
Я просто использую задержку.
M3 s12000
G4 p7
G1......
Re: маленький долгострой
Добавлено: 05 ноя 2014, 09:33
Сергей Саныч
nERV писал(а):Я просто использую задержку.
Можно. Но так неинтересно

Тем более, когда есть нужный сигнал. Тут смысл еще в чем. motion.spindle-at-speed не тормозит холостые перемещения (G0), и когда шпиндель раскручивается, он может двигаться к месту обработки
M3 s12000 (начали разгон)
G0 X100. Y200. (мы едем, а шпиндель раскручивается)
G0 Z0.5 (приближаемся к заготовке, шпиндель продолжает разгоняться)
G1...... (а вот перед этой командой подождем,если еще не набрал обороты)
Re: маленький долгострой
Добавлено: 05 ноя 2014, 14:52
nERV
Да, но время разгона шпинделя фиксированное и забивается в частотнике. А вот входных пинов в лпт не так много. Лучше завести ошибку шпинделя/аварию.
Re: маленький долгострой
Добавлено: 15 ноя 2014, 01:59
gedrolium
Война с инвертором все продолжается, пин я вывел все работает. Теперь наткнулся на другую проблему, пытался подключить частотник через modbus, по этой статье
http://www.cnc-club.ru/forum/viewtopic. ... 540#p27540, однако из этого мало что вышло, ибо аппарат скорее всего имеет собственный набор команд. Данных по командам нет, как их искать на что ссылаться, не знаю. Единственное что удалось сделать, это найти под "форточки" прогу которая может рулить частотником через modbus. Благодаря ей и сниферу удалось узнать байты команд для управления частотой шпинделя и остановки, с командами от частоника пока сложнее. Так вот у меня есть несколько идей как это использовать
1. прописать байты в файлы из поста указанного выше, но куда их там лепить ума не приложу...
2. подключаться через PLC, тут я вообще как свинья в апельсинах...
3. брать данные по командам S1500 M03 и при помощи самопальной проги отправлять их на ком порт. ну а от частотника ждать команду готовности, но тут я не знаю как считать эти команды....
байты которые уходят на частотник от
01 10 20 00 00 02 04 00 12
00 64 CB 80
до
01 10 20 00 00 02 04 00 12
9C 40 A2 9B
жирным выделены те байты которые несут информацию по частоте, мало того данные должны периодически отправляться, если частотник периодически не получает команду, он останавливает шпиндель и ждет дальнейших указаний.
пока идей больше нет.
частотник easydrive 3100
заранее спасибо.
Re: маленький долгострой
Добавлено: 17 ноя 2014, 09:33
Nick
А в частотнике нет управления по 0..10В? Может через него проще будет?
Re: маленький долгострой
Добавлено: 17 ноя 2014, 18:08
gedrolium
Nick писал(а):А в частотнике нет управления по 0..10В? Может через него проще будет?
есть , даже по току упрваление имеется, но у меня конвертора нет
Re: маленький долгострой
Добавлено: 18 ноя 2014, 02:15
Сергей Саныч
Nick писал(а):А в частотнике нет управления по 0..10В? Может через него проще будет?
Да как-то не по феншую

Особенно, если учесть, что modbus уже подключен и где-то даже работает. Остается только узнать систему команд и переписать софт.
Re: маленький долгострой
Добавлено: 25 ноя 2014, 01:40
gedrolium
не получается перебросить данные в python для обработки
в hal пропысываю строчки
loadusr -Wn test python test.py
net in <= motion.spindle-speed-out-rps
в самом пользовательском компоненте
Код: Выделить всё
#!/usr/bin/python
import hal, time
file = open("/home/usercnc/linuxcnc/configs/cnc/speed.txt", 'w')
h = hal.component("test")
h.newpin("in", hal.HAL_FLOAT, hal.HAL_IN)
#h.newpin("out", hal.HAL_FLOAT, hal.HAL_OUT)
h.ready()
try:
while 1:
time.sleep(1)
z= h['in']
write(z)
except KeyboardInterrupt:
raise SystemExit
т.е по идее частоты шпинделя дожны сохранятся в файле speed. txt
однако там пусто