Перейти к содержанию
Олег А.

Управление токарным на Atmega. Электронная гитара.

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

566 проголосовавших

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

    • Digital_Feed_2e
      47
    • Digital_Feed_3b
      6
    • Digital_Feed_3b_Uno
      21
    • Digital_Feed_4k
      6
    • Digital_Feed_4k_lite
      5
    • Digital_Feed_5d
      7
    • Digital_Feed_6c_auto
      37
    • Digital_Feed_7e2
      441


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

А где тут учтен шаг ходового винта? (у МН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: ).

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

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

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

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

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


Ссылка на сообщение

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

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

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

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

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

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

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


Ссылка на сообщение

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

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

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

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

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

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

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

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

 

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

.

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

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

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


Ссылка на сообщение

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

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

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

ЗЫ

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

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


Ссылка на сообщение

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

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


Ссылка на сообщение

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

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


Ссылка на сообщение

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

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

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

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

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


Ссылка на сообщение
Дата: (изменено)

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

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

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

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


Ссылка на сообщение
Дата: (изменено)

Андрей,

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

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

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


Ссылка на сообщение

Андрей,

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

Это пищалка, пищит однажды при старте. Зачем поставил уже не помню, наверное для "балды".

(Обычные издержки создания платформы разработки.)

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


Ссылка на сообщение

Вот нашел заместо регулятора напруги

Вот он же на бэее токо чуть дороже

И такой же токо с индикацией.

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


Ссылка на сообщение

Это аукцион,

вот он в свободной продаже у проверенного продавца с бесплатной доставкой и к нам и к вам и в Россию:

http://www.ebay.com/itm/1pcs-1-23V-30V-DC-DC-Buck-Converter-Step-Down-Module-LM2596-Power-Supply-Output-/110950894139?pt=LH_DefaultDomain_0&hash=item19d5304a3b

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


Ссылка на сообщение

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

 

1. Выбор режима. резьба / подача / делилка

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

 

1.1. режим резьба

выбор шага для режима резьба

а. выбирается поворотным энкодером (по типу ручной крутилки, кто не в курсе см. тему Андрея или немецкие ролики на ютубе)

б. выбирается (перебирается) кнопками по типу верх/низ

1.1.1. направление

а. задается тумблером

б. задается кнопками по типу право/лево

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

 

1.2. режим подача

выбор шага для режима подача

а. выбирается поворотным энкодером

б. выбирается (перебирается) кнопками по типу верх/низ

1.2.1. направление

а. задается тумблером

б. задается кнопками по типу право/лево

режим направление и шаг отображается на экране

 

1.3. режим делитель

а. выбирается ???

обязательно обнуление (сброс на 0 в произвольном положении) как и чем ???

режим и показания отображаются на экране

 

2. Длина прохода в режиме 1.1. и 1.2. (возможно как основная функция т.е. Выбор режима. резьба / резьба на з.д. / подача / подача на з.д. / делилка)

выбор длины прохода

а. выбирается поворотным энкодером

б. выбирается (перебирается) кнопками по типу верх/низ

установленное значение отображается на экране

2.1. возврат в точку старта

происходит однократным нажатием кнопки право/лево

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


Ссылка на сообщение

1. Выбор режима. резьба / подача / делилка

Добаввить резьба / подача / делилка/ параметры

 

Параметры, шаг ХВ, Люфт ХВ :rolleyes:

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


Ссылка на сообщение

А экран какой? ЖКИ на две строки на HD44780 ?

http://eldigi.ru/site/doc/1.php

 

Они распространены, дешевые, да и примеров под них много...

Семисегментные, видимо, уже не катят?

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


Ссылка на сообщение
Дата: (изменено)

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

p.s. а почему выбор режима тоже не сделать кнопками? Меньше тумблеров и крутилок- проще.....

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

Изменено пользователем Лунный заяц

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


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   1 пользователь онлайн

  • Модераторы тем

×
×
  • Создать...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.