Перейти к публикации
Олег А.

Еще одна электронная гитара для токарника, на Ардуино

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

Ребят, очень прошу, с вопросами, добавками, хотелками... - в рабочую тему,

Спасибо за понимание.

 

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

 

Принцип работы:

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

 

В данной поделке использовано:

Arduino Mega2560 (сам контроллер)

Prototype Board for Adduino (макетка для доп.элементов)

LCD Keypad Shield (клавиатура + экранчик) на текущий момент заменено отдельным LCD1602 и кнопками

Китайский шаговик, на текущий момент на продольной Leadshine 86HS35, на поперечной Nema 23, 57x76, 18.9 кг/см

Китайский драйвер Ш.Д. (2M542), на текущий момент заменен на Leadshine DM556 х 2шт.

Китайский импульсный Б.П. 36-42V на текущий момент заменен на 48V

Самодельный энкодер, на основе диска и датчика, из убитого принтера HP.

 

Писано в Arduino 1.0.2, никаких сторонних библиотек не использовано, именно эту версию рекомендую использовать для повторения.

 

На сегодня эта штука умеет:

7 подач: от 0.03mm до 0.21mm, с шагом 0.03, при оборотах шпинделя до ~~2500 об/мин

38 резьб: от 0.2mm до 3mm в метрическом диапазоне, от 80tpi до 12tpi в дюймовом, при оборотах шпинделя до ~~1800 об/мин

Делитель шпинделя: шаг 0.1 градуса, + встроеный калькулятор деления

Остановка кареток по программным упорам

Выход на внешний тахометр (1 имп/об)

 

Энкодер 1800 линий, обрабатывается в х2 режиме (3600 импульсов на оборот)

резьба на валу и гайке энкодера М40Х1 (СТ45) резалась уже электрогитарой

post-44073-038151400 1380217272_thumb.jpg post-44073-093465000 1380217285_thumb.jpg post-44073-025800500 1380217304_thumb.jpg

 

Для оценки, качество резьбы:

post-44073-023997500 1380217567_thumb.jpg post-44073-027033000 1380217591_thumb.jpg

 

Одна из первых версий для общего обзора

http://youtu.be/BaBK9teKUaA

 

Тест шума работы ш.д. на ускоренных перемещениях, (начиная с версии 4k)

на заднем фоне шум вентилятора Б.П.

http://youtu.be/BfCXV-jn7AY

 

 

Поперечная подача (начиная с версии 5a)

так же можно оценить шум работы ш.д. на фоне шума шпинделя

http://youtu.be/p5nGJtT2CRI

 

Схема, обрывками, но вроде вполне читается,

если на выходе вашего энкодере sin/cos, то необходим каскад для преобразования его в меандр:

post-44073-088079200_1478730222_thumb.jpg

 

далее каскад для выделения сигнала DIR, до версии 6 включительно:

post-44073-041831000 1380223538_thumb.jpg

 

и входы/выходы:

джойстик (до версии 5a) задействован только лево/право

post-44073-092211500 1403544198_thumb.jpg

 

Настройка под свое железо:

0. Первым делом фазировка энкодера, при прямом вращении шпинделя (на себя) значение угла должно увеличиваться,

если угол уменьшается - поменять местами выходы A B энкодера.

 

1. Указать кол-во рисок энкодера

post-44073-065374500 1388868283_thumb.jpg

 

2. Указать необходимое кол-во подач

post-44073-056326800 1388868300_thumb.jpg

 

3. Пересчитать для каждого шага подач коэффициент деления по формуле:

K = Enc_Line/(Step_Per_Revolution/Feed_Screw*Feed_mm)

где

Enc_Line - кол-во рабочих импульсов с энкодера

Step_Per_Revolution - кол-во шагов двигателя на оборот ходового винта

Feed_Screw - шаг ходового винта

Feed_mm - требуемый шаг подачи

коэфф. не может иметь значение больше чем 255

2-я колонка используется для вывода на дисплей

post-44073-052147700 1388868325_thumb.jpg

 

4. Указать необходимое кол-во резьб

post-44073-099870600 1388868337_thumb.jpg

 

5. Пересчитать для каждого шага резьб коэффициент деления по формуле:

K = Enc_Line/(Step_Per_Revolution/Feed_Screw*Thread_mm)

где

Enc_Line - кол-во рабочих импульсов с энкодера

Step_Per_Revolution - кол-во шагов двигателя на оборот ходового винта

Feed_Screw - шаг ходового винта

Thread_mm - требуемый шаг резьбы

1-я колонка целая часть, должна лежать в диапазоне 1 - 255, (лучше от 2-3)

2-я колонка дробная часть

3-я колонка для вывода на дисплей

post-44073-033755100 1388868358_thumb.jpg

 

6. С версии 3b введены новые параметры для плавного ускорения

post-44073-070833200 1403518744_thumb.jpg

 

Accel - чем больше значение, тем длинней разгон/торможение,

значение может лежать в диапазоне от "максимальный коэф. деления на резьбах" до 255

 

Как пример, для данной таблицы "Резьб" Accel может лежать в диапазоне от 33 до 255

post-44073-049547900 1403519830_thumb.jpg

 

Repeat - для постоянства скорости в пределах полного шага,

значение должно быть кратно дроблению шага,

т.е. в вышеприведенном примере, дробление 1/4 (драйвер выставлен 800 шагов оборот), 4 полушага * 2 = 8,

хотите длинней разгон - просто кратно умножайте.

 

Желающие ознакомиться с полной историей создания могут заглянуть сюда

Текущая версия 7e2, исходники для повторения и доработки тут,

схема для 5-ой и 6-ой версии тут,

настройка 6-ой версии тут.

схема для 7-ой версии тут,

Важно! 6-ая и 7-ая версии собирались в Arduino 1.6.12

Внимание! Имена папок и файлов должны быть прописаны латиницей!

 

-----------------------------------------------------------

Попробую организовать вопросы/ответы

Из какого принтера выковырять энкодер

Энкодер от Андрея, именно его я использовал как образец, только посадил на 2 подшипника

Изготовление энкодера от Яна (trikot)

Чертеж энкодера от Михаила (migo58)

По тем же мотивам, чертеж энкодера от Константина (kYd)

Конструкция промышленного энкодера

Чертежи джойстика от Константина (Konstantin_K)

Реализация ELS на ТВ-шке от tioda

Реализация на ТВ-16 от Igorkawa, от энкодера, до...

Небольшое пояснение по таблицам резьба/подача

Чертеж джойстика от Михаила (migo58) и небольшая но важная доработка

Настройка ускоренных перемещений

Изготовление кабеля процессор-драйвер

Win утилита от Игоря (immokey) для 6-ой версии, рассчитывает и генерирует таблицы по заданному железу

Разводка шилда для 7 версии от Дениса (OilМажор) Gerber и *.png

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

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


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

Органы управления

 

post-44073-075411600_1541190388_thumb.jpg

 

5-ая кнопка меню:

в режиме "Делитель" - сбрасывает угол,

в некоторых режимах открывает вторую страницу настроек,

право не знаю, надо ли еще что-то описывать?

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

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


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

Тут будет порядок работы с некоторыми режимами. Обновляется.

 

Резьба (Thread)

1. с реверсом шпинделя без размыкания маточной гайки (без лимитов)

2. без реверса и без размыкания гайки, переключая направление джойстика (должны быть выставлены лимиты)

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

4. автоматически (см. ниже)

Кнопками Вверх-Вниз выбираем шаг резьбы, можно менять только при нейтральном положении джойстика,

4-ре направления резьбы по джойстику.

4-ре кнопки лимита, лимиты задаются только при нейтральном положении джойстика.

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

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

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

 

Синхронная подача (Feed mm/rev)

Потенциометром изменяем величину подачи, можно менять на ходу

4-ре направления подачи по джойстику

4-ре направления быстрого перемещения по джойстику и кнопке ускоренного

4-ре кнопки лимита, лимиты задаются только при нейтральном положении джойстика и нейтральном положении переключателя "Подрежим"

 

Асинхронная подача (Feed mm/min)

Потенциометром изменяем величину подачи, можно менять на ходу

4-ре направления подачи по джойстику

4-ре направления быстрого перемещения по джойстику и кнопке ускоренного

4-ре кнопки лимита, лимиты задаются только при нейтральном положении джойстика и нейтральном положении переключателя "Подрежим"

 

Конуса (Cone< и Cone>)

Кнопками Вправо-Влево (при нейтральном положении джойстика) выбираем конус.

Передний-задний лимиты (если они были выставлены ранее) игнорируются, но их положение в памяти сохраняется.

Резание включается джойстиком Вправо /Влево.

По кнопке джойстика работает ускоренное перемещение, траектория - выбранный конус.

Джойстик Вперед-Назад - синхронная подача.

 

Черновая сфера (Sphr)

инструмент - отрезной резец с прямой режущей кромкой

кнопками Вверх/Вниз задаем диаметр шара,

кнопками Вправо/Влево задаем диаметр недорезанной ножки,

с прижатой кнопкой "Sel" кнопками Вверх/Вниз задать ширину р.к. инструмента,

с прижатой кнопкой "Sel" кнопами Вправо/Влево задать ширину ступеньки (смещение по Z)

Порядок работы:

1. проточили болванку в диаметр ++, ("++" должен быть < REBOUND_X)

2. установили отрезной резец

3. по правому краю болванки (прям отрезным) проточили 1-2-3мм с замерами в необходимый диаметр

4. активизировали задний упор

5. торцанули /пропылили заготовку

6. вернулись на задний упор

7. активизировали правый упор

8. переключили джойстик влево

9. ждем окончания процесса

 

Делилка, Калькулятор деления (Divider)

Кнопками Вверх-Вниз выставляем количество "зубов" деления (максимум 255), отображается в первой строке индикатора (z).

Кнопками Вправо-Влево перемещаемся к следующему-предыдущему "зубу", текущий "зуб" отображается во второй строке индикатора.

В первой строке индикатора отображается требуемый угол для текущего "зуба" (Req).

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

Все что требуется - это провернуть шпиндель для совпадения показаний.

Cброс угла 5-ой кнопкой меню

 

Автоматическое нарезание резьбы

1. Протачиваем заготовку в размер по ГОСТ-у любым привычным для Вас способом

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

3. В режиме "Резьба" кнопками Вверх/Вниз выбираем требуемый шаг

4. Переключателем "Подрежим" выбираем "Наружная" Ext, или "Внутренняя" Int, (по серединке "Ручная" Man)

5. На примере правой резьбы, прямые обороты шпинделя, режем к патрону:

перед стартом каретка должна стоять на правом упоре,

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

поперечные упоры погасли - процесс завершен.

6. После завершения цикла поперечная подача занимает стартовую позицию,

если материал пластилиновый, то можно переключиться в режим "Подача" и пройтись по вершинам,

для CT45 и аналогов Д16Т этого не требуется.

 

По поводу диаметров и допусков меня не дергаем, но наводку дам:

ГОСТ 19257-73 Отверстия под нарезание метрической резьбы

ГОСТ 19258-73 Стержни под нарезание метрической резьбы

 

Автоматическая многопроходная подача

Для всех нижеприведенных комбинаций:

Кнопками Вверх/Вниз выставляем величину съема,

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

1. внешняя проточка, направление к патрону,

в "Manual" режиме выставить правый + левый лимиты,

переместить инструмент на правый лимит,

переключатель "Подрежим" в положение "Ext",

переключить джойстик "Влево".

2. внешняя проточка, направление от патрона

в "Manual" режиме выставить правый + левый лимиты,

переместить инструмент на левый лимит,

переключатель "Подрежим" в положение "Ext",

переключить джойстик "Вправо".

3. внутренняя расточка, направление к патрону

в "Manual" режиме выставить правый + левый лимиты,

переместить инструмент на правый лимит,

переключатель "Подрежим" в положение "Int",

переключить джойстик "Влево".

4. внутренняя расточка, направление от патрона

в "Manual" режиме выставить правый + левый лимиты,

переместить инструмент на левый лимит,

переключатель "Подрежим" в положение "Int",

переключить джойстик "Вправо".

5. торцевание, направление к оси шпинделя

в "Manual" режиме выставить передний + задний лимиты,

переместить инструмент на задний лимит,

переключатель "Подрежим" в положение "Ext",

переключить джойстик "Вперед".

6. торцевание, направление от оси шпинделя

в "Manual" режиме выставить передний + задний лимиты,

переместить инструмент на передний лимит,

переключатель "Подрежим" в положение "Ext",

переключить джойстик "Назад".

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

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


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

Олег, похоже твоя долгая эпопея закончилась успешно, поздравляю! :good:

Осталось сделать нормальный реверс на главном приводе, и всё станет еще нарядней.

Ставь векторный частотник с асинхронным (или серву :) ) .

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


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

Мои поздравления :good: .

Такой вопрос, а шаговик с каким моментом?

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


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

круто! почти ЧПУ

Никак нет!

ЧПУ мало пригоден для единичных деталей.

 

Олег, похоже твоя долгая эпопея закончилась успешно, поздравляю!

Осталось сделать нормальный реверс на главном приводе, и всё станет еще нарядней.

Ставь векторный частотник с асинхронным

Спасибо Андрей, обкатываю я его уже наверно поболее 2 месяцев,

а закончилась - это вряд ли, много идей крутится в голове, в том числе и по приводу, а впереди зима.

Родной реверс конечно сделан через одно место, надо было бы первым делом от сброса потенциометра как-то избавиться.

В принципе, Китайский моторчик, в данный момент, меня устраивает на 90%, у меня переделана вся трансмиссия,

ну а если вдруг "кончится", тогда конечно асинхронник+частотник, но наверно все равно через коробку.

 

Такой вопрос, а шаговик с каким моментом?

Поправил первое сообщение.

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


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

ЧПУ мало пригоден для единичных деталей.

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

ну а работа проделана хорошая :good:

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


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

Олег А., Молодец, добил таки :) а еще *спецы* говорили на ардуино не потянет, а тут на далекий от этого человек, взял и собрал.

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


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

В п.м. были вопросы по поводу бюджета,

при самостоятельной сборке затраты порядка 150$, и на 80% зависят от силовой части.

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


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

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

 

Среди них был Artie? Если был-то почему бы его не назвать.

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


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

Вы действительно думаете, что стОит кого-то выделять в ущерб остальным участникам?,

я думаю, что эти Замечательные Ребята сами отлично знают и понимают свой уровень.

Если они глянут в мой код, конечно же схватятся за голову из за моих детских ошибок,

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

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

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


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

Поздравляем с успешным завершением этого этапа проекта :good:

Думаем, он на этом не закончится.

 

Проект абсолютно открыт, как и ветка по его созданию

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

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


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

Пока был в "бане" тут уже очередной проект созрел. Поздравляю. Результат не плохой получился. Теперь поперечную подачу добавляйте срочно. И, указание кнопками, начала и конца скажем резьбы. Остальное, потом скажу.

Изменено пользователем chkmatulla

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


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

И, указание кнопками, начала и конца скажем резьбы. Остальное, потом скажу

Ограничение будет датчиками,

остальное с удовольствием выслушаю в "стартовой" теме.

 

Теперь поперечную подачу добавляйте срочно.

Поперечная на столе уже работает,

но на станке скорей всего ее не будет, все выходные смотрел куда и как двигатель воткнуть - нет у меня решения.

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


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

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

Изменено пользователем chkmatulla

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


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

Смотрел, там салазки довольно далеко выезжают, а от винта (ему придется опору делать) до салазок места под шкив нет.

Пока забыл эту затею, может в нете что попадется со временем.

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


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

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

Изменено пользователем chkmatulla

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


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

Обнаружил в закромах датчики от принтеров, припаянные к платам.

В Вашей схеме при подключении датчики остаются на "родных" платах или их необходимо выпаивать и использовать "чистыми"?

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


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

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

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

Для "цифровых" датчиков, большинство от принтеров Canon, канал на компараторах не нужен, но на них не очень удачное кол-во тиков.

Для правильного меандра и смещения каналов на 90гр важно использовать датчик и диск из одного комплекта (с одинаковым LPI), поэтому вышеупомянутая печать дисков, на мой скромный взгляд, не совсем удачная затея.

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


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

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

 

И вот Ваш успех несколько меня вдохновил достать его из закромов ...

 

У меня вот такой датчик.

 

post-85500-042312400 1381859320_thumb.jpg

 

Что с него надо обрезать?

Изменено пользователем ApWert

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


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

Подключение похоже так:

post-44073-081377100 1381863902_thumb.jpg

 

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

Обрезать или нет решать Вам, и наверно в большей мере зависит от будущего корпуса, R, C я отметил, можете паять прям на ноги.

п.с. по техническим вопросам прошу постить в родительской теме.

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


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

Пару косметических поправочек от меня:

вместо:

//**********************************************************
void loop()
{
 if (Mode == Mode_Divider)
 {
StepMotorDisable();
 }
 else
 {
 if (Motor_En_flag==true) StepMotorEnable();
 if (Motor_En_flag==false) StepMotorDisable();
 }

 menu();
}

написать:

//**********************************************************
void loop()
{
 if ((Mode == Mode_Divider) || !Motor_En_flag) StepMotorDisable();
else StepMotorEnable();

 menu();
}

Изменено пользователем YuriS

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


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

Вместо вот таких констеляций:

if (Motor_En_flag==true)
 {
 lcd.print("ON	   ");
 }
 else if (Motor_En_flag==false)
 {
 lcd.print("OFF	  ");
 }

использовать типа таких:

 if (Motor_En_flag) lcd.print("ON	   ");
else   lcd.print("OFF	  ");

Изменено пользователем YuriS

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


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

Через какие шкивы ШД подлключен к ходовому винту?

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


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

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

Спасибо Юрий, а по поводу lcd.print, в настояшее время он претерпел серьезные изменения, выглядит абсолютно по другому, и сидит в отдельной подпрограмме.

 

Через какие шкивы ШД подлключен к ходовому винту?

Профиль XL, ширина 9мм, кол-во зубов не помню, редукция 1:1.5, наверно 14/21.

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


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×