Перейти к публикации

Из сообщений удалены кнопки "цитата" и "мультицитата". Используйте выделение для цитирования.

Олег А.

Управление токарным на Atmega

Какая версия "гитары", в текущий момент, установлена на Вашем станке?  

83 пользователя проголосовало

  1. 1. Какая версия "гитары", в текущий момент, установлена на Вашем станке?

    • Digital_Feed_2e
      6
    • Digital_Feed_3b
      1
    • Digital_Feed_3b_Uno
      2
    • Digital_Feed_4k
      2
    • Digital_Feed_4k_lite
      1
    • Digital_Feed_5d
      2
    • Digital_Feed_6c_auto
      13
    • Digital_Feed_7e2
      56


Рекомендованные сообщения

1. Несколько подач, от черновых до супер чистовых. Думаю 4 штуки за глаза. Хотя их количество вообще не принципиально. Для реализации этой функции энкодер не нужен. Достаточно чего-нибудь примитивного, типа фотодатчика и диска с прорезью.

2. Нарезание резьб. Только типовые варианты, никаких ручных вводов нестандартных параметров. Для этого уже потребуется энкодер.

3. Прогон суппорта на определенное расстояние - автоматизация точения

Отлично,

продолжу:

1a числом подач мы практически не лимитированы, они имеют вид двоичного/hex кода, в противном случае проект неосуществим.

2а -//-

никаких ручных вводов нестандартных параметров.

ДА!

3b прогон в первоначальную точку

4. угол поворота шпинделя в определенном режиме

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Проект не пошел в производство по причине нежелания персонала работать с "продвинутой" техникой, готовлю теперь попроще...

так как память у меня плохая, я вас всех записываю, :)

это 4-й проект реализованый на Атмеге,

присоединяйтесь без стеснения, и пожалуйста делитесь мыслями.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А где тут учтен шаг ходового винта? (у МН80 - 3, у ТВ-16 - 4, у моего 1Е61 - 5, у кашки вообще 6, кажется).

А где учет люфта маточной гайки или одностороннего подвода резца? без этого ни энкодер, ни метка смысла не имеют.

Описанное в посте -это вариант меню, а не реализации кода.

 

Учет шага винта будет на уровне кода. Зачем меню перегружать? Каждый под себя и подстроит. У всех разные энокодеры, драйверы шаговиков/серв могут быть. Чтож теперь писать прошивку, где все параметры из меню вводятся?

 

Односторонний подвод резца тоже не из меню выбирается. А будет заложен в алгоритм нарезания резьбы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Учет шага винта будет на уровне кода. Зачем меню перегружать? Каждый под себя и подстроит.

Однозначно!

каждый в состоянии поделить свой енкодер на свой шаг х.в.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос можно - почему Атмега?

доступно, недорого, есть рабочие некоммерческие решения,

мы же тут хоббийщики, как вы заметили.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Однозначно!

каждый в состоянии поделить свой енкодер на свой шаг х.в.

а если не делится? плавающую арифметику на микроконтроллере делать накладно.

 

Проще и удобнее для пользователя - сделать интерфейс с компом (RS-232 UART есть во всех микроконтроллерах, для компов без СОМ порта есть переходники USB-COM) и все константы записать во флеш с компа.

Заодно получите интерфейс для диагностики в процессе отладки девайса.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а если не делится? плавающую арифметику на микроконтроллере делать накладно

Не делится, без "если". :wink:

Дело в том что стандартный ряд шагов резьбы не имеет общего множителя.

Плавающая арифметика слишком затратна по времени, кроме того это не гарантирует точность

в смысле повторяемости циклов в процессе нарезании резьбы (потери точности на реверсе и т.п.).

В этом смысле лучше использовать целочисленные (с накоплением ошибки) или табличные методы.

 

Далее, лучше будет если главный привод вообще не будет рассматриваться в этой теме.

Этот привод может быть любого типа: постояноого тока со штатным китайским регулятором,

асинхронный с частотником, серво и т.п.

Главное чтобы привод обеспечивал плавный старт (если на ХВ используется шаговик).

 

Ключевой момент - энкодер.

Для унификации вполне подойдет самодельный, например диск диаметром 80мм

(для китайца 7х12) или большего (для по-крупнее) имеющий(например) 300 прорезей шириной от 0.2мм.

Две щелевые(узкие) оптопары сдвинутые по фазе на 90 град. дадут необходимую "квадратуру".

Посчитаем погрешность отклонения профиля ленточки резьбы для такого энкодера

для шага 3мм (кажись максимум в средних китайцах). Считается легко - 3/300 = 0.01мм.

Более чем достаточно.

 

Алгоритм слежения -

Заводим одну оптопару энкодера на ногу с прерванием (INTx), конфигурируем на прерывания

от фронта низкого уровня. В обработчике прерывания просто смотрим на состояние второй

оптопары (и на направление резьбы заданное переключателем) определяем направление,

вычитаем/суммируем счетчик, по счетчику смотрим сколько импульсов подать на привод ХВ.

 

Подача - работает аналогично (просто "другой диапазон").

И не надо бояться что контроллер не успеет обработать. Так, при 3000 об/мин, частота

следования импульсов будет всего лишь 15 кГц. Моя Мега644 при табличном методе вычисления

шага на тактовой частоте 20 МГц обрабатывала импульсы с частотой более 1 Мгц.

 

Привод ХВ. Не надо стеснятся использовать редуктор и микрошаг, однако нужно смотреть

на временные параметры сигнала STEEP для данного привода. Ну как бы все легко просчитывается.

В этом смысле использование маломощного АС сервопривода с дополнительным

редуктором выглядит предпочтительнее (~$200 e-bay), там входная частота шага уже за мегагерц.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Считать надо только неполные обороты, полные сразу переводить в абсолютные и относительные координаты.

Спасибо за подсказку. Я об этом не думал еще.

Вот он Open Source в действии :) Много людей - куча опыта и знаний.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Две щелевые(узкие) оптопары сдвинутые по фазе на 90 град. дадут необходимую "квадратуру"

...

Заводим одну оптопару энкодера на ногу с прерванием (INTx), конфигурируем на прерывания

от фронта низкого уровня. В обработчике прерывания просто смотрим на состояние второй

оптопары

Именно так работает большинство энкодеров с отслеживанием направления,

в голове крутится мысль не отслеживать направление шпинделя т.к. направление прохода процессор знает, оно четко задано тумблером,

но тут вылезает "косяк" если мы остановили шпиндель и провернули его вручную,

тут в принципе можно подумать, скажем отслеживанием скорости, с превышением некоторого порога нам теоретически направление не важно,

а вот сколько рессурсов мы выиграем и сколько затратим я в голове прикинуть не в состоянии.

 

Андрей, в более высоком разрешении свою схему не мог бы куда скинуть?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в голове крутится мысль не отслеживать направление шпинделя т.к. направление прохода процессор знает, оно четко задано тумблером,

но тут вылезает "косяк" если мы остановили шпиндель и провернули его вручную,

Специально для шпиндельных энкодеров без квадратурного канала реализовывали режим возврата резца без остановки шпинделя. Т.е дорезали нитку, отвели резец, шпиндель продолжает вращаться. Отезжаем ходовым винтом в начало резьбы, разгоняем суппорт, ресинхронизируемся со шпинделем (контроллер все время помнит необходимую разницу энкодеров для ресинхронизации). Разгон суппорта по рампе и последующая ресинхронизация- это опция для тяжелых станков. Кстати, про торможении в канавке для выхода резца рампа тоже имеет смысл.

ЗЫ. Мы контроллер делаем на STM32- вот уж извините, не верю, что на Атмеге хватит ресурсов. STM32 имеет аппаратную поддержку энкодеров на каждом таймере- сейчас задействованы три канала- шпиндель, привод винта серводвигателем постоянного тока и задатчик положения- мелкий серводвигатель с энкодером. Притом на ручку энкодера идет обратная связь или от усилия на ходовом винте, или от потребляемой шпинделем мощности- ручка задатчика "упирается", если много стружки снимаем. Зачем это надо- не спрашивайте.

Таблицы интерполяции брезенхейма готовим заранее - 1 килобайт в ОЗУ лежит. Таймера прогружаются таблицей по ДМА каналу- таймер энкодера шпинделя досчитывает до заданной позиции, ходовой винт делает шаг, ДМА прогружает таймера следующим значением из таблицы. ЕСли таблица использована более чем наполовину- начинается досчет следующей части с использованием плавающей точки или FPU (для STm32F4).

Если есть желающие- можно просить организовать новую ветку "Управление токарным на STM32" и обсуждать особенности реализации именно для этой платформы- таймера, поддержка энкодеров, ДМА и таймер, алгоритмы с плавающей точкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

а вот сколько рессурсов мы выиграем и сколько затратим я в голове прикинуть не в состоянии.

3-4 цикла

1-чтение порта (или чтение с проверкой)

2-3 условный переход

 

код примерно такой:

if (bitВтораяОптопара)

{ Position++;}

else {Position--;}

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Андрей, в более высоком разрешении свою схему не мог бы куда скинуть?

Кинул в файлообменник -

http://www.chipmaker.ru/files/download/8235/

 

Специально для шпиндельных энкодеров без квадратурного канала реализовывали режим возврата резца без остановки шпинделя

Не, так не пойдет, народ здесь засякнет надолго (т.е. как обычно, а это навсегда :wink: ).

Мне кажется задача должна быть максимально простой -

исключить манипуляции с гитарой получая при этом необходимый набор резьб и подач.

Иначе все кончится ЧПУ с автоматической сменой инструмента, с авто-подачей заготовок,

автоматическим выходным контролем, авто-складированием и т.д. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если есть желающие- можно просить организовать новую ветку "Управление токарным на STM32" и обсуждать особенности реализации именно для этой платформы- таймера, поддержка энкодеров, ДМА и таймер, алгоритмы с плавающей точкой.

А чем вам топик рядом не ? На STM как раз и остановились.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Моя Мега644 при табличном методе вычисления

шага на тактовой частоте 20 МГц обрабатывала импульсы с частотой более 1 Мгц.

скорость шпинделя ограничим 3000об/мин

энкодер ограничим 3600

получаем 180 Кгц на прерывании, при потолке около 1Мгц

все правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

скорость шпинделя ограничим 3000об/мин

энкодер ограничим 3600

получаем 180 Кгц на прерывании, при потолке около 1Мгц

все правильно?

Все правильно, но самодельный (или бюджетный) энкодер на 3600 имп/об не сделать (не найти).

Я пробовал обрабатывать сигналы энкодера по единому алгоритму для резьб и подач.

Начинало сбоить на скорости более 1800 об/мин, но у меня и энкодер был настроен на что-то более 10000 имп/об.

Поэтому на подаче я использую в качестве счетчика таймер и константы для сравнения, за это имею небольшая погрешность

 

А чем вам топик рядом не ? На STM как раз и остановились.

.

Народ любит атмеловскую мегу за доступность инструментов, кучу примеров программирования,

досок на любой вкус (наверное еще что-то важное упустил :rolleyes: )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Если есть желающие- можно просить организовать новую ветку "Управление токарным на STM32" и обсуждать особенности реализации именно для этой платформы- таймера, поддержка энкодеров, ДМА и таймер, алгоритмы с плавающей точкой.

 

Присоединяюсь!

 

А чем вам топик рядом не ? На STM как раз и остановились.

 

Топик "рядом" посвящен выкапыванию в инете разных шняг и ништяков....:(

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я пробовал обрабатывать сигналы энкодера по единому алгоритму для резьб и подач.

А почему не применили чип с квадратурным декодером?

К примеру на ПИКе 18ф2331 на 40МГц частота квадратурного декодера до 2.5МГц, этого хватит для обработки сигнала с 3600имп/об со скоростью 41,6 тысяч оборотов в минуту - полагаю такая макс скорость шпинделя всех устроит :)

ЗЫ

У атмела также есть чипы с квадратурным декодером.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Могу предложить оформить энкодер отдельным модулем со своей логикой и управляющему контроллеру давать уже просчитаную (готовую) информацию. Этим мы упростим главную часть программы и унифицируем интерфейс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да и центральный контроллер разгрузим

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему не применили чип с квадратурным декодером?

У меня бзик - если можно сделать что-то без лишнего железа, то я так и делаю.

Другими словами, если что-то можно обойти при помощи вдумчивого программирования

лучше сделать именно так. Но это (само-собой) мое скромное мнение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Народ любит атмеловскую мегу за доступность инструментов, кучу примеров программирования,

досок на любой вкус (наверное еще что-то важное упустил

не, мега настолько хороший камень, что предложение касается только того, кто хочет stm.

 

Топик "рядом" посвящен выкапыванию в инете разных шняг и ништяков....:(

Кто ж вам мешает найти наилучшый ништяк, чтобы мы (наверно, в первую очередь я) не мучались ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто ж вам мешает найти наилучшый ништяк, чтобы мы (наверно, в первую очередь я) не мучались ?

Никто :) Я уже его нашел :) четвертый раз ссылку постить не буду, еще в спаме обвинят...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Никто Я уже его нашел четвертый раз ссылку постить не буду, еще в спаме обвинят...

Алексей, откройте рядом ветку и пишите на здоровье. Давайте здесь холиваров не будем устраивать. Здесь мы выбрали Atmel.

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Учет шага винта будет на уровне кода.

Я думаю правильнее его зашить в EEPROM. Да и все параметры туда. В случае надобности (допустим на другой станок система переезжает), можно перезалить, а лучше, ежели место останется запрограммить изменение параметров снаружи, не такие уж большие проблемы и телодвижения. :) :hi:

Изменено пользователем Аэробус

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Андрей,

по твоей схеме P1 что висит на PD7 - что это?

Изменено пользователем Олег А.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×