Gnevko

Користувачі
  • Продажи

    0/0
  • Покупки

    0/0
  • Публікації

    152
  • Зареєстрований

  • Відвідування

Повідомлення, опубліковані користувачем Gnevko


  1. Так это ... как его ... что то вы меня озадачили - в новой версии все кнопки: две на джойстике (вперед, назад), ускоренная подача и сброс в ноль управляются как бы через плюс. Может я вас не правильно понял и вы о каких то других кнопках (хотя вроде бы других и нет, не считая энкодера) ?

    1

  2. Кстати закралась мне в голову такая идея: сейчас скорость вращения шпинделя и дистанция отображается каждые 200 милисекунд, даже если особых изменений и нет, что есть неоправданный расход ресурсов ардуины, но если предположить, что отображение изменения скорости вращения шпинделя с 891 оборотов/мин. до 891,2 не важно, то это обновление экрана можно и опустить.  

    1

  3. Это не то что бы библиотеки, скорее части одного скетча, который разнесен в несколько файлов (модулей, классов - называйте как хотите). Все ниже приведенные на изображении файлы должны лежать в одной папке вместе с LatheArduinoAssistant.ino:

    large.5cdf8efd9c068_2019-05-186_48_40.png

     

    0

  4. Ну вот и славненько. 

     

    Лучше всего понимается логика собственноручно написанного скетча, да и то только первые пол года :)  Вы можете спокойно удалить (по очереди) у себя все ненужные If'ы, благо они находятся только в одном единственном файле GJoystick.cpp, за одно и в логике модуля разберетесь, может быть даже и баг какой заметите - все ж польза. 

    0

  5. Строки пусть вас не смущают, так как поддержка второго шагового мотора на Х - это песня дааааааалекого будущего, поэтому JOYSTICK_X_FORWARD_PIN  вообще нигде не используется. По идее JOYSTICK_X_FORWARD_PIN и JOYSTICK_X_BACKWARD_PIN можно просто пока что удалить из кода. 

     

    По поводу 5 вольт. Не только дополнительные кнопки, но и контакты джойстика замыкаются на +5 вольт. Все 4 пина объявлены как "входящие" и переходят в состояние HIGH, когда на них поступает +5 вольт. Как то так ... (возможно вы контакты джойстика на землю пытаетесь замкнуть?)

     

    Схема подключения принципиально не изменилась, а все используемые пины специально вынесены в Config.h, что бы каждому было удобно использовать именно тот пин, до которого дотянется паяльник :) Если у вас JOYSTICK_Z_FORWARD_PIN установлен/припаян на  33ий пин, то пусть так и остается, в программе просто поставьте 33 вместо 39.

     

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

    1

  6. Новая версия программы (V-01-03-00): https://github.com/Gnevko/Lathe-Arduino-Assistant

     

    Что нового?

    1. Добавлена возможность переключаться между двумя режимами поддержки джойстика: с нунчакой и без. Параметр называется JOYSTICK_TYPE (находиться в файле Config.h, раздел "Joystick") и может принимать два значения:

    •  1 - поддержка нунчак включена
    •  2 - поддержка нунчак полностью удалена.

    large.5cd7ef1070f86_2019-05-1212_01_19.png

     

    2. Добавлены две новые кнопки:

    • JOYSTICK_BUTTON_A_PIN - кнопка для быстрого перемещения суппорта
    • JOYSTICK_BUTTON_B_PIN - сброс текущей позиции в ноль

    Настройка номера пина на ардуине для этих кнопок так же осуществляется в файле Config.h (см предыдущий рисунок)

     

    Подключение кнопок:

     

    large.5cd7f87ec7895_2019-05-1212_41_06.png

    0

  7. Как настроить программу под свой станок?

     

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

     

    Настройка осуществляется в файле Config.h в разделе "Z Axe Stepper", название параметра - "MM_PER_Z_STEP":large.5cd47a1c01bb3_2019-05-0921_04_58.png

     

    Как вы можете заметить, настройки для 3200, 1600 и 200 микрошагов закоментированы. Пример расчета так же приведен - 2мм деленные на 800 микрошагов, итого получаем 0.0025 мм на один микрошаг. Полученное таким образом ВАШЕ значение прописываем вместо 0.0025 в строчке:

     

    #define MM_PER_Z_STEP 0.0025 //2mm / 800 steps;

     

    Сохраняем файл, заливаем программу на Ардуино и все.

    0

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

    На данный момент перепечатал корпус, добавил джойстик и две кнопки:

     

    large.IMG_2354.jpglarge.IMG_2355.jpg

     

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

    0

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

    Это займет некоторое время, так как нужно будет не только переписать, но и протестировать (задизайнить корпус под джойстик и кнопки, напечатать, собрать и немного погонять систему в таком режиме). Усугубляется все это однако тем, что сейчас весна, а моя теплица не совсем еще готова (в частности автоматическая система смещивания удобрений и капельного полива, тоже на шаговых движках ... да я занаю, что извращенец :) ). Но постараюсь не затягивать.

    0

  10. Ну вот, кажется я вовремя вернулся :) Спасибо Старому Человеку (OldMan) за сообщение в личку. Сообщения о новых постах в теме на мой эл. почтовый ящик как не доходили так и не доходят, так что я уж подумал, что тема давно умерла и никого не интересует. Ан нет и это отрадно!

     

    Дабы не отвечать на уже решенные вопросы предлагаю "начать с чистого листа" и насущные проблемы озвучить еще раз. Я постараюсь разобраться (в силу возможностей и ума).  

     

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

     

    Так же забегая вперед - нунчаки. Панове! Это ж игрушка и была прикручена временно (Правда у меня она как то прижилась, так и осталась - нет ничего постояннее временного!). Тем не менее это I2C подключение, а I2C подключение  - это первый враг систем, жизненно зависящих от прерываний ибо I2C подключение само использует прерывания (если я не ошибаюсь). Так что тут палка о двух концах - быстродействие и стабильность взамен удобству (возможно сомнительному) и чем быстрее вы от этой нунчаки избавитесь, тем скорее всего будет лучше. 

    1

  11. Что делать:

     

    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 конфликтует с другими библиотеками, проблема в инете известная, одно из решений - просто переименовать функции. Возможно кто то подскажет более элегантный способ ее решения.

    0

  12. Конечно же я, джойстик не задумывался изначально как основной элемент управления, поэтому и "подключение" библиотеки к нему я не вынес в Config.h. Но нет ничего постояннее временного.  

     

    Хождение по граблям - дело не благодарное, поэтому вам огромное спасибо! 

    0

  13. 5 часов назад, Вуйко сказал:

    Не проходит верификацию.

    Ошибка.JPG

     

    Если я правильно догадываюсь, то "No such ..." - это "No such file found" или что то в этом роде.

    Очень похоже на то, что вы загрузили (скачали) только сам скетч, но не все остальные файлы программы, такие как Config.h, GDisplay.h, GDisplay.cpp и так далее:

    large.5ab1f10ed78a1_2018-03-2106_29_41-GitHub-Gnevko_Lathe-Arduino-AssistantatV-01-02-BETTA.jpg

     

    Все файлы должны находиться в той же папке, что и сам скетч "LatheArduinoAssistant.ino".

     

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

    0

  14. В языках ли счастье ... но это уже тема для отдельного обсуждения.

     

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

     

    Датчик вызывает опасения хотябы тем, что ему нужно от 10В ... ардуино работает с 5В.

     

    Джойстик заменить можно на вот такой переключатель

    large.59fe1641b315a_2017-11-0420_32_00.png

     

    Схема подключения

    large.5a58d21892523_2018-01-1216_19_12.png

     

    + прийдется добавить две кнопки для сброса показаний позиции суппорта в ноль и для ускоренной подачи. 

     

    Для продолжения автоматизации по оси Х нужен фрезеровочный станок, так как без дополнительных танцев с бубном там уже мотор не прикрепить. И такой станок у меня уже появился (маленький но все же), пока что осваиваю его и в процессе осваивания пришел к мысли, что программа один к одному, без каких либо изменений станет и на него (для управления координатным столом), стоит только прикрутить шаговики. Так что продолжение в любом случае будет.

    0

  15. Господа, спокойствие, только спокойствие. О каких наездах идет речь? Окститесь, только здоровый диалог!

     

    3 мм/об на 600 об/хв - это был пример не удачного подбора скорости для ускоренной подачи в режиме "Thread" (в коде я этот режим уже переименовал в "Sync", так как это больше соответствует его возможностям).

     

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

    1

  16. Не то что бы не повредит, но и не поможет:

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

    2) Это в моем конкретном случае, с моим шаговиком и драйвером нет возможности стартовать на такой скорости, а может быть с другим железом это и возможно. С более же слабым железом может быть и 0.75 мм на оборот при 600 оборотах уже много будет.

     

    1

  17. Режим "Thread" всего лишь согласует скорости вращения шпинделя и подачи суппорта, режим "Auto" - подает суппорт с независимой от вращения шпинделя скоростью, а вот направление движения суппорта в обоих режимах полностью зависит от оператора. Это позволяет, на пример, нарезать резьбу вообще не останавливая шпиндель, тем более нет необходимости менять направление вращения оного, что бы отвести суппорт в начальную позицию - это очень удобно и экономит массу времени. 

     

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

     

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

     

    Так же есть идея переключатся в режим "Auto", при ускоренной подаче, даже из режима "Thread". Причина банальна - в режиме "Thread" очень трудно подобрать такую скорость синхронизации подачи суппорта, что бы это работало на всех скоростях вращения шпинделя. Пример - выставляю для ускоренного режима "Thread" скорость в 3мм на оборот. На скорости вращения шпиндаля около 100 оборотов в минуту все ок, а вот уже на 600 оборотах шаговик просто "срывает", так как он не может без программируемого ускорения взять такую скорость. А программируемое ускорение в режиме "Thread" - это зло.

    1

  18. 14 часа назад, OldMan сказал:

    ТС, присоединяюсь к вопросу. Сам хотел его задать. Как при таком подходе контролируется направление вращения шпинделя?

     

    Никак. Для определеня направления вращения шпинделя достаточно поставить второй оптический энкодер, с таким же зазором в 180 градусов, только смещенный на 90 градусов относительно первного, как я изначально и задумывал. Но ... мне так и не пришла в голову реальная ситуация, при которой на программном уровне мне нужно было бы знать/определить направление вращения шпинделя. А чисто для наглядности, что б только на экране отобразить - то оно этого для меня не стоило + опять же только дополнительный и не оправданный расход мощностей ардуино.

    1

  19. Хотя ... в принципе ... любое кол-во срабатываний за один оборот можно "выдать" за одно. Предположим, что срабатываний 360, тогда если при каждом срабатывании делить счетчик на 360 и следить за остатком от деления, то при оном равном 0 у вас будет один оборот шпинделя. Но, есть одно жирное но - большое кол-во страбатываний грузит ардуино весьма серьезно, таким образом в таком подходе так же нет большого смысла. А вот одно срабатывание - самое оно, последнее время работал на скорости около 1300 оборотов шпинделя в минуту - все стабильно (конечно резьбы я на такой скорости не резал, а вот финальные проходы тестировал на разных скоростях синхронизированной подачи суппорта).

    0

  20. В 2/23/2018 в 08:25, Вуйко сказал:

    Алексей подскажите как использовать такой энкодер в в вашем варианте гитары.

    Энкодер С Али.jpg

     

    Говорила мне мама - "учи, сынок, китайский" ... но я был не очень послушным ребенком.

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

     

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

     

    ЗЫ: прошу прощения за поздний ответ, уведомления о новых постах в теме почему то до австрийских лугов не доходят :(

    0