Gnevko

Пользователи
  • Продаж/оценка Барахолки

    0/0 (полученные отзывы)
  • Публикации

    134
  • Зарегистрирован

  • Посещение

Все публикации пользователя Gnevko

  1. Приветствую всех обитателей форума! Как то так получилось, что увлекли меня видео блоги ДМ, Дмитрия, BrunS, Виктора Леонтьева и прочих творческих людей. Результатом этого увлечения стало приобретение маленького настольного китайца под немецкой маркой Paulimot: И было мне счастье, пока руки не дошли до попыток нарезать резьбу. Оказалось, что менять шестерни в гитаре то еще удовольствие. Поэтому было принято решение от шестерен отказаться вообще и заменить их на связку шаговый двигатель + энкодер + Arduino. В интернете подобные решения встречаются достаточно часто и на какую то особенность моя попытка уж точно не претендует. Комплектующие, которые были заказаны для данного проекта: 1) Шаговый двигатель NEMA 23 (4.2A) + драйвер к нему 2) Электронный "маховик" на 100 импульсов 3) Джойстик 4х позиционный с "залипанием" 4) Энкодер на шпиндель 5) Экран для вывода информации 4х строчный 6) Энкодер для выбора шага резьбы и/или подачи и других плюшек, 20 позиций на оборот 7) Передача 1:1 на ремне 8) и собственно Arduino Mega 2560 (их уж было у меня) Шаговик с драйвером пришли достаточно быстро, и дабы хоть как то приступить к программированию, был сделан небольшой испытательный стенд За неимением пока что джойстика для включения подачи, решил прикрутить нунчаку от Wii, и ... это решение настолько оказалось удобным, что решил его так же включить в будущую финальную версию. Одним этим джойстиком можно управлять не только подачей суппорта, но и поперечными салазками (в будущем). А пока что на данный момент получилось как то так:
  2. Что делать: 1) Перейти к файлу TimerThree.h в библтотеке TimerThree и переименовать функции: void attachInterrupt(void (*isr)()) __attribute__((always_inline)) { и void attachInterrupt(void (*isr)(), unsigned long microseconds) __attribute__((always_inline)) { в void attachInterruptFunction(void (*isr)()) __attribute__((always_inline)) { и void attachInterruptFunction(void (*isr)(), unsigned long microseconds) __attribute__((always_inline)) { соответственно (в двух местах). Или скачайте файл TimerThree.h из этого сообщения TimerThree.h. Или скачайте файл по ссылке: https://github.com/Gnevko/Lathe-Arduino-Assistant/blob/master/ThreeTimeFix/TimerThree.h Откуда эти грабли: определение функции attachInterrupt конфликтует с другими библиотеками, проблема в инете известная, одно из решений - просто переименовать функции. Возможно кто то подскажет более элегантный способ ее решения.
  3. Конечно же я, джойстик не задумывался изначально как основной элемент управления, поэтому и "подключение" библиотеки к нему я не вынес в Config.h. Но нет ничего постояннее временного. Хождение по граблям - дело не благодарное, поэтому вам огромное спасибо!
  4. Таки да, ускользнула библиотека от зоркого ока https://github.com/timtro/wiinunchuck-h
  5. Спасибо, Sebra, за помощь! От себя добавлю, что в Config.h указаны так же и другие библиотеки, которые понадобятся для зборки.
  6. Если я правильно догадываюсь, то "No such ..." - это "No such file found" или что то в этом роде. Очень похоже на то, что вы загрузили (скачали) только сам скетч, но не все остальные файлы программы, такие как Config.h, GDisplay.h, GDisplay.cpp и так далее: Все файлы должны находиться в той же папке, что и сам скетч "LatheArduinoAssistant.ino". PS: можно было бы конечно все запихнуть и в один файл скетча, то тогда бы он получился просто гиганским, и ни о какой прозрачности и легкочитаемости и удобстве при внесении изменений речи бы уже не шло.
  7. Из альбома Paulimot Project

  8. "Не могу загрузить" в каком смысле? Не находит файлы, библиотеки или что то еще?
  9. В языках ли счастье ... но это уже тема для отдельного обсуждения. "Чётко симметричный импульс" в данной реализации программы не нужен, но потенциально он может быть полезен в случае, если вы захотите удвоить скорость реакции системы на изменения частоты вращения шпинделя. Например, у вас при нарезании резьбы очень сильно "проседает" скорость вращения шпиделя. Правда, в этом случае прийдется и в программе покопаться, и кое что переделать. Датчик вызывает опасения хотябы тем, что ему нужно от 10В ... ардуино работает с 5В. Джойстик заменить можно на вот такой переключатель Схема подключения + прийдется добавить две кнопки для сброса показаний позиции суппорта в ноль и для ускоренной подачи. Для продолжения автоматизации по оси Х нужен фрезеровочный станок, так как без дополнительных танцев с бубном там уже мотор не прикрепить. И такой станок у меня уже появился (маленький но все же), пока что осваиваю его и в процессе осваивания пришел к мысли, что программа один к одному, без каких либо изменений станет и на него (для управления координатным столом), стоит только прикрутить шаговики. Так что продолжение в любом случае будет.
  10. Господа, спокойствие, только спокойствие. О каких наездах идет речь? Окститесь, только здоровый диалог! 3 мм/об на 600 об/хв - это был пример не удачного подбора скорости для ускоренной подачи в режиме "Thread" (в коде я этот режим уже переименовал в "Sync", так как это больше соответствует его возможностям). А вообще, панове, система не идеальна, и если кто хочет поучаствовать в ее улучшении - то не стеснайтесь, прошу вас, весь код лежит в открытом доступе и что то даже задокументированно, сам код весьма прост и местами даже приметивен, что должно только улучшить его восприятие.
  11. Не то что бы не повредит, но и не поможет: 1) когда вы будете задавать скорость в 3мм система может еще и не знать, сколько у вас оборотов будет. Или же даже, если вы будете менять значение скорости с включенным шпинделем, то далеко не факт, что вы не повысите скорость уже после того, как выставили 3мм. 2) Это в моем конкретном случае, с моим шаговиком и драйвером нет возможности стартовать на такой скорости, а может быть с другим железом это и возможно. С более же слабым железом может быть и 0.75 мм на оборот при 600 оборотах уже много будет.
  12. Режим "Thread" всего лишь согласует скорости вращения шпинделя и подачи суппорта, режим "Auto" - подает суппорт с независимой от вращения шпинделя скоростью, а вот направление движения суппорта в обоих режимах полностью зависит от оператора. Это позволяет, на пример, нарезать резьбу вообще не останавливая шпиндель, тем более нет необходимости менять направление вращения оного, что бы отвести суппорт в начальную позицию - это очень удобно и экономит массу времени. Мой опыт показывает (во всяком случае мне), что любые запреты, оправданные в одном процессе, становятся огромной обузой в другом процессе, о наличие которого разработчик даже и не подозревает. Однако, мысль переключать в режим "Auto" у меня была, но только в том случае, если скорость вращения шпинделя вообще отсутствует, как и переключать в режим "Thread", как только шпиндель начал вращение, так как название режима "Thread" не в полной мере отображает его сути и возможностей. В этом режиме чудно осуществляются как черновые, так и чистовые проходы. Так же есть идея переключатся в режим "Auto", при ускоренной подаче, даже из режима "Thread". Причина банальна - в режиме "Thread" очень трудно подобрать такую скорость синхронизации подачи суппорта, что бы это работало на всех скоростях вращения шпинделя. Пример - выставляю для ускоренного режима "Thread" скорость в 3мм на оборот. На скорости вращения шпиндаля около 100 оборотов в минуту все ок, а вот уже на 600 оборотах шаговик просто "срывает", так как он не может без программируемого ускорения взять такую скорость. А программируемое ускорение в режиме "Thread" - это зло.
  13. Никак. Для определеня направления вращения шпинделя достаточно поставить второй оптический энкодер, с таким же зазором в 180 градусов, только смещенный на 90 градусов относительно первного, как я изначально и задумывал. Но ... мне так и не пришла в голову реальная ситуация, при которой на программном уровне мне нужно было бы знать/определить направление вращения шпинделя. А чисто для наглядности, что б только на экране отобразить - то оно этого для меня не стоило + опять же только дополнительный и не оправданный расход мощностей ардуино.
  14. Хотя ... в принципе ... любое кол-во срабатываний за один оборот можно "выдать" за одно. Предположим, что срабатываний 360, тогда если при каждом срабатывании делить счетчик на 360 и следить за остатком от деления, то при оном равном 0 у вас будет один оборот шпинделя. Но, есть одно жирное но - большое кол-во страбатываний грузит ардуино весьма серьезно, таким образом в таком подходе так же нет большого смысла. А вот одно срабатывание - самое оно, последнее время работал на скорости около 1300 оборотов шпинделя в минуту - все стабильно (конечно резьбы я на такой скорости не резал, а вот финальные проходы тестировал на разных скоростях синхронизированной подачи суппорта).
  15. Говорила мне мама - "учи, сынок, китайский" ... но я был не очень послушным ребенком. Если этот энкодер можно настроить на на одно срабатывание за один оборот шпинделя, то можно использовать без переделки кода. Если же нет - то кроме того, что прийдется в коде покапаться (хотя это и не сложно), все равно вам понадобиться еще один энкодер, который сможет срабатывать только один раз - для повторяемости захода при нарезании резьбы. Но тогда зачем танцы с бубном? Если же резьбы - это не ваша цель, а хочется просто синхронизировать скорости вращения шпинделя и подачи суппорта, тогда да, так как необходимость в "метке" в этом случае отпадает. ЗЫ: прошу прощения за поздний ответ, уведомления о новых постах в теме почему то до австрийских лугов не доходят
  16. Сегодня приехала замена первоначального основания, с виду ровно, но все равно не шлифовано (слева новая, справа старая).
  17. Доброго! Недавно приобрел настольный китайский фрезерный станочек, и все было хорошо до тех пор, пока не дернул меня черт проверить перпендикулярность оси вращения шпинделя к рабочей поверхности стола (насмотрелся умных видео - так и знал, до добра не доведет ): Разница приблизительно в 0,345 мм на расстоянии в 100 мм, что дает угол наклона в 0,2 градуса, то есть если базироваться по столу, то о прямых углах можно забыть Подскажите люди добрые, с чего начинать и как лечить это безобразие?
  18. Не, мужики, продавцы выслали новую основу к старой колоне, а это совсем другой вариант (за свои кровные), я о нем на второй странице этой темы писал. Другими словами, теперь у меня две колоны и два основания, причем одна колона поворотная Вот теперь думаю, чего бы такое с ней сделать, не пропадать же добру. По поводу шабрить - я даже и не знаю с какого боку подойти к этой задаче ... я ж только на одних примерках неделю потрачу ... ну да то такое. А по поводу примененного метода - то вроде как бы буржуи применяют и вроде бы даже довольны. Единственное, что может стоит рассверлить отверстия да М10 нарезать. Устойчивость я пытался измерить примитивным способом - даешь нажатие на голову рукой примерно с одинаковой силой и смотришь на показания (по 4 точкам в диаметре 18 см) ... что с болтами, что без них по длинной плоскости отклонение в сотку, а по короткой - на десятку, но там же и соединение головы с колонной тоже начинает играть роль.
  19. Пытался, а как же, только вот подобрать прокладки под три опоры так, что бы в пару соток попасть - мне так и не удалось.
  20. V-01-02-BETTA https://github.com/Gnevko/Lathe-Arduino-Assistant/tree/V-01-02-BETTA 1) Добавлена ускоренная подача в синхронном режиме, так как его можно использовать не только для нарезки резьбы, но и для обработки поверхности, в том числе и для чистовых проходов. 2) Теперь можно задавать электронные упоры по отдельности, а не два сразу, как это было до сих пор. Сброс упора теперь производится по длительному нажатию на кнопку энкодера меню, когда курсор стоит на соответствующем упоре.
  21. В продолжении темы, заменил я колонну, думал будет мне счастье, но замена оказалась не менее китайской, чем сам станок Места соединения основы и самой колонны были вообще не шлифованными, со следами грубой фрезерной обработки. Собрав все вместе получил результат примерно в 2 раза хуже, чем был до этого. Порывшись на просторах инета, нашел следующее решение: В итоге получилось выставить угол с погрешностью в 2 сотки на окружности диаметром 18 см. Но тем не менее жесткому соединению этот метод не способствует.