Добавлено after 4 hours 41 minute: *Trigger*, Арсений, а за что отвечает вот этот параметр? (winding.h) Спасибо! #define GUIDE_MOTOR_ACCEL_RPS 1UL //in 0.1 rps/sec units #define GUIDE_MOTOR_ACCEL_FREQ (GUIDE_MOTOR_ACCEL_RPS * GUIDE_MOTOR_MICROSTEPS_PER_REVOLUTION) #define GUIDE_MOTOR_ACCEL_FREQ_STEP (GUIDE_MOTOR_ACCEL_FREQ * MOTOR_ACCEL_PERIOD / 10000)
#define MOTOR_FREQ_MIN 3
Минимальная частота мотора 3? три чего?
Добавлено after 5 hours 36 minutes 34 seconds: Вот ещё обнаружил: https://www.youtube.com/watch?v=4k5eocw-NF4 Проверил я и первую версию прошивки там точно так же. Странно что из Болгарии дяденька ничего об этом не сказал. Который катушки из проволки 4 мм мотает
Привет из Болгарии, я почти закончил свою машину с ЧПУ. Я хочу поблагодарить вас, ребята, за программное обеспечение. Работает отлично. Вначале машина была с NEMA23, но сегодня я перешел на NEMA34 12NM. NEMA23 имеет трудности с 1,4 мм и более. Теперь с новым мотором я могу без проблем наматывать 4-миллиметровый провод. Есть еще несколько незначительных изменений, но позже. Для питания я использую тороидальный трансформатор 100V 5A. Поделюсь вам своей печатной платой с микроконтроллером.
Это частота импульсов STEP сразу после запуска какого-либо из двигателей. То есть начальное значение, с которого начинается разгон. Единица измерения - Гц.
Я думаю, это связано с тем, что направление вращения ШД укладчика резко меняется без замедления/ускорения. Когда шаг маленький, скорость вращения ШД невелика, и мгновенная смена направления не вызывает проблем. А при больших шагах ШД не успевает остановиться и заново раскрутиться в обратную сторону, и, в результате, начинает дергаться около одного положения. Аналогичная ситуация наблюдается, если попытаться запустить ШД сразу на большой скорости, без плавного разгона.
Чтобы убедиться, что проблема именно в этом, попробуйте запустить намотку с включенной паузой между слоями.
Похоже, нужно вводить остановку и плавный разгон в конце каждого слоя. В идеале, нужно делать ещё и плавную остановку, т.е. ограничивать ускорение не только при разгоне, ни при замедлении, заранее начиная снижать скорость. Добавить обычную резкую остановку и плавный разгон в начале слоя легко. А вот плавная остановка - это не очень просто. Там нужно будет хорошо подумать и посчитать. В связи с этим вопрос: а нужна ли она? По сути, нужно понять, может ли ШД остановиться мгновенно, не сделав лишних/не пропустив шагов. Можно это проверить, задав такие шаг и число витков, чтобы, во-первых, ШД успели разогнаться до макс. скорости, а во-вторых, чтобы ШД укладчика делал целое число оборотов. Число витков в слое установить так, чтобы был один слой. Затем пометить начальное положение ШД и запустить намотку несколько раз подряд (10-20). Если оба ШД после этого вернутся в исходное положение, плавного замедления не нужно. Но это не совсем корректный тест, т.к. нет нагрузки на валах ШД. При намотке тяжёлой катушки могут вылезти проблемы.
К слову, в станках с ЧПУ ускорение ограничивается как при разгоне, так и при торможении.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Я думаю, это связано с тем, что направление вращения ШД укладчика резко меняется без замедления/ускорения.
Это вряд ли. Я много наблюдал за работой шаговиков на ЧПУ фрезерах. Там ваще резкие смены и направления и нагрузки. Работают на заданных оборотах без всяких замедлений. Во всех трех осях. Что-то другое. Может зависеть от драйвера и самого движка. Я постараюсь найти время и собрать электронику на большой станок. Там nema23 и драйверы 6600. Если и там такая же шняга, то надо будет смотреть и записывать на осцилле-цифровике что происходит в этот момент. И насчет ширины намотки 200 мм. Она теряет всякий смысл ежели наматывать можно только виток к витку. Разве, что кто то будет реостаты мотать или мини катушку Теслы. Пробовал выставлять 50 витков, провод подразумевался 0,1 мм , а шаг 3 мм. Значит при этом ширина катушки получалась 150 мм...Не хочет. Только виток к витку. Это при залитой проге с pitch 4 mm. Вы ранее писали про зависимость( алгоритм) Брезенхема и вроде в него все это укладывается, но не хочет и все .Увы.
Почти уснул и тут посетила мысль. Может надо сделать в программе по принципу dead time как в драйверах переключения полевиков в импульсных источниках питания. Там оно ваще мизер милисекунды если не микро. Т.е. укладчик прошёл слой , пауза несколько милисекунд и смена направления. Я если исключу, что это не дравер и мотор -разу напишу.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
а во-вторых, чтобы ШД укладчика делал целое число оборотов.
А вот тут я не "догоняю". Как я понял из теории, программа задаёт шаговику определённоё кол-во импульсов и ему фиолетово - целоё это число оборотов или частичное. он должен повернуться на сколько ему "скажут". И если ему подают нормальные импульсы, то он не должен зависать. если конечно он исправен. Поясните пжлст. мысль свою )
Добавлено after 1 hour 39 minutes 54 seconds: Сейчас протестировал на разных скоростях. 1 мм провод, начинает зависать при 3 об/сек и больше. 2.5 об/сек без замечаний. Решил попробовать изменить толщину провода до 4 мм Как у болгарина. Но при компиляции выдал заложенную Вами в main.c фразу error "TURN_SPACING_MAX should be less than or equal to WINDING_TURN_SPACING_MAX!" Нашёл это место в main.c #if TURN_SPACING_MAX > WINDING_TURN_SPACING_MAX #error "TURN_SPACING_MAX should be less than or equal to WINDING_TURN_SPACING_MAX!" #endif // TURN_SPACING_MAX TURN_SPACING_MAX должно быть меньше или равно WINDING_TURN TURN_SPACING_MAX я выставил 400. Теперь по логике вроде надо увеличить так же WINDING_TURN. Но я не могу найти эту пару слов.??)
Добавлено after 1 hour 2 minutes 23 seconds: Попробовал мотать с паузой в конце каждого слоя. Всё норм. Может моторы дерьмовые... Ладно, время покажет. Ну и обратил внимание. Что в каждом слое при паузе показывает на виток меньше. Например должно быть 6 слоёв по 25 витков в слое (300 витков). Но на паузу встаёт недоматывая один виток Эта погрешность набегает и к тремстам виткам приходит с нехваткой шести витков которые потом кладёт в новый слой. Как это будет в реале тоже надо посмотреть. Хотя есть догадка, что укладчик заранее меняет направление движения, что бы на краях не получалось нагромождение
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Это вряд ли. Я много наблюдал за работой шаговиков на ЧПУ фрезерах. Там ваще резкие смены и направления и нагрузки. Работают на заданных оборотах без всяких замедлений.
Скорее всего, там просто настолько высокое значение ускорения, что этот эффект незаметен. И ШД, наверное, не простые, а с энкодерами, т.е. с обратной связью. Или вообще сервоприводы c другими, не шаговыми, двигателями.
И насчет ширины намотки 200 мм. Она теряет всякий смысл ежели наматывать можно только виток к витку. Разве, что кто то будет реостаты мотать или мини катушку Теслы. Пробовал выставлять 50 витков, провод подразумевался 0,1 мм , а шаг 3 мм. Значит при этом ширина катушки получалась 150 мм...Не хочет. Только виток к витку.
А Вы задавали длину намотки или число витков с слое? По умолчанию в слое 1 виток, поэтому длина будет не 150 мм. Попробуйте установить длину намотки равной 153 мм. Автоматически получите 50 витков в слое.
spov2 писал(а):
Может надо сделать в программе по принципу dead time как в драйверах переключения полевиков в импульсных источниках питания. Там оно ваще мизер милисекунды если не микро. Т.е. укладчик прошёл слой , пауза несколько милисекунд и смена направления.
Это не решит проблему полностью. ШД не может стартовать резко на большой скорости, без плавного разгона.
spov2 писал(а):
А вот тут я не "догоняю". Как я понял из теории, программа задаёт шаговику определённоё кол-во импульсов и ему фиолетово - целоё это число оборотов или частичное. он должен повернуться на сколько ему "скажут".
Тут я имел в виду, что для того, чтобы проверить, есть ли пропуск/набегание шагов при смене направления (это признак того, что нужно ограничивать ускорение, как я описал), удобно задать такие параметры, при которых ШД укладчика будет делать целое число оборотов. Тогда можно будет легко проконтролировать визуально, что он вернулся в исходное положение, т.е. все шаги отработались нормально.
spov2 писал(а):
Теперь по логике вроде надо увеличить так же WINDING_TURN. Но я не могу найти эту пару слов.??)
Этот параметр не задаётся, а рассчитывается на основе заданного шага винта и числа шагов/микрошагов двигателей. Проверка, которая вызвала ошибку, как раз и есть то самое условие для алгоритма Брезенхема. Что нужно сделать, чтобы условие выполнялось, я описывал раньше.
spov2 писал(а):
Ну и обратил внимание. Что в каждом слое при паузе показывает на виток меньше. Например должно быть 6 слоёв по 25 витков в слое (300 витков). Но на паузу встаёт недоматывая один виток Эта погрешность набегает и к тремстам виткам приходит с нехваткой шести витков которые потом кладёт в новый слой.
А как Вы задаёте число витков в слое? Если по длине, то так и должно быть. Расчёт числа витков в слое заточен под намотку "виток к витку", поэтому длина намотки равна шагу, умноженному на число витков плюс 1. Например, если намотать три витка виток к витку проводом 0,1, то длина намотки будет 0,1 * (3 + 1) = 0,4 мм, так как добавляется ещё одна толщина провода. После установки длины намотки посмотрите, чему равно автоматически рассчитанное число витков в слое (следующая строчка в меню). Скорее всего, там будет на один меньше, чем Вы планировали.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Последний раз редактировалось *Trigger* Пт авг 20, 2021 11:07:13, всего редактировалось 1 раз.
(А как Вы задаёте число витков в слое? Если по длине, то так и должно быть. Расчёт числа витков в слое заточен под намотку "виток к витку", поэтому длина намотки равна шагу, умноженному на число витков плюс 1)
а если не трогать длину каркаса а ставить только количество витков в слое ? пример: общее 900 в слое 150 диаметр 0.28
Приехал весь набор железа для станка с Алишки. Буду собирать, как опорный крепёж сделают. Меня тут клюнуло. А может парень из Болгарии не толщину провода переназначал и компилировал. Может он в 4 раза уменьшил GUIDE_SCREW_PITCH, 100 изменил на 25, а провод зарядил как и хотел 4 мм диаметром. Вот и получил катушки как у него на фотках)
уважаемый *Trigger*!! не могли бы вы сделать версию чтоб намотка начиналась с самых малых оборотов все остальное по умолчанию. ну не получается у самого .не мое это в программах лазить ! если не трудно помогите пожалуйста !
Я наконец-то придумал, как сделать плавную остановку. Вычисления получились не очень сложные, но без извлечения квадратного корня не обошлось. В результате память ATmega8 и, особенно, ATmega88, занята почти полностью. Дальнейшее расширение функциональности станка возможно только на ATmega168/328. Очередное обновление версии 1.1b на Гугл-диске. spov2, протестируйте, пожалуйста.
alekselektrik01, вот прошивка с мин. скоростью 0,1 об/с и ускорением обоих двигателей 0,1 об/с^2.
Я наконец-то придумал, как сделать плавную остановку. Вычисления получились не очень сложные, но без извлечения квадратного корня не обошлось. В результате память ATmega8 и, особенно, ATmega88, занята почти полностью. Дальнейшее расширение функциональности станка возможно только на ATmega168/328. Очередное обновление версии 1.1b на Гугл-диске. spov2, протестируйте, пожалуйста.
alekselektrik01, вот прошивка с мин. скоростью 0,1 об/с и ускорением обоих двигателей 0,1 об/с^2.
. Дальнейшее расширение функциональности станка возможно только на ATmega168/328.
А я планирую 168й ставить с кварцем 20 мгц что с Алишки приехали. В городе их не оказалось-расхватали все. Печатку переделаю и буду пробовать. Через неделю примерно. Быт заел.)))
Я наконец-то придумал, как сделать плавную остановку. Вычисления получились не очень сложные, но без извлечения квадратного корня не обошлось.
Не утерпел. Времени не много ушло. Сначала проверил с тем что у меня прошито. Освежил как говорится последние данные , что и как работало. Мотор укладчика зависает на смене слоя от провода 0.8 мм (Spacing 0.8мм) и скорости оборотов 4об/сек и выше. 3,5 об/сек работает норм. Но опять же это NEMA 17 дешманская по 600 руб. Да и провод 0.8 для 17й мне кажется великоват. Надо будет попробовать на nema 23. У неё радиан побольше... Хотя и угловая скорость на окружности ротора тоже больше. х.з. надо пробовать. А у меня сейчас нет возможности пока. Потом. Далее я скачал бету за 31е августа. Закинул гекс в контроллер. Даже не стал исправлять направления вращения Искал замедление в конце намотки, в авто паузах но... не узрел. Останавливается так же резко как и было. Что не так?
Я наконец-то придумал, как сделать плавную остановку. Вычисления получились не очень сложные, но без извлечения квадратного корня не обошлось. В результате память ATmega8 и, особенно, ATmega88, занята почти полностью. Дальнейшее расширение функциональности станка возможно только на ATmega168/328. Очередное обновление версии 1.1b на Гугл-диске. spov2, протестируйте, пожалуйста.
alekselektrik01, вот прошивка с мин. скоростью 0,1 об/с и ускорением обоих двигателей 0,1 об/с^2.
. Дальнейшее расширение функциональности станка возможно только на ATmega168/328.
А я планирую 168й ставить с кварцем 20 мгц что с Алишки приехали. В городе их не оказалось-расхватали все. Печатку переделаю и буду пробовать. Через неделю примерно. Быт заел.)))
Я наконец-то придумал, как сделать плавную остановку. Вычисления получились не очень сложные, но без извлечения квадратного корня не обошлось.
Не утерпел. Времени не много ушло. Сначала проверил с тем что у меня прошито. Освежил как говорится последние данные , что и как работало. Мотор укладчика зависает на смене слоя от провода 0.8 мм (Spacing 0.8мм) и скорости оборотов 4об/сек и выше. 3,5 об/сек работает норм. Но опять же это NEMA 17 дешманская по 600 руб. Да и провод 0.8 для 17й мне кажется великоват. Надо будет попробовать на nema 23. У неё радиан побольше... Хотя и угловая скорость на окружности ротора тоже больше. х.з. надо пробовать. А у меня сейчас нет возможности пока. Потом. Далее я скачал бету за 31е августа. Закинул гекс в контроллер. Даже не стал исправлять направления вращения Искал замедление в конце намотки, в авто паузах но... не узрел. Останавливается так же резко как и было. Что не так?Или оно есть но глаз не видит?
Я наконец-то придумал, как сделать плавную остановку.
Доброго дня! Арсений, нежданно-негаданно приключилась вот такая котовасия. Перестала работать компиляция. Либо я после летних отдыхов чего то перепутал. Но вроде много раз компилировал прошивку. А тут стало выдавать ошибку. Я перепробовал все скачанные версии. Но даже те которые рабочие 100% перестали компилироваться. Выдает вот такую картинку. Ятеперь и поэксперементировать не могу. и проверить ...Вы, как я понимаю не компилировали последние изменения с торможением раз они не работают.? Спасибо!
Побегал по форумам. Подобная ошибка выползает не только у меня. И похоже это что-то с системой. У меня в августе сдох системный диск. Поставил новый, сборка винды та же, но я не помню какие проги были на старой и какие сейчас, сравнить не могу. Может касперыч что то привнёс. Но он у меня отключен. Я заново скачал исходники, но это ничего не дало. Попробую найти другой комп и попробовать на нём. А может хватанул чего. Недели две я работал без антивиря. Нет...Попробовал на другом компе. Та же картина. не хочет копилировать выдаёт ошибку, не может что-то создать. Вот так выглядит окно после команды Make clean_all
Снёс винду. На чистой попробовал запустить компилятор. Картинка не изменилась. Не хочет компилировать. *Trigger* не появляется, начало учебного года, видимо занят. Кто подскажет- я правильно набираю команду, а то у меня уже моск набекрень?
Глас вопиющего в пустыне. Ну да ладно.Разобрался сам: В Makefile на 5й строке есть выражение CC_BASE = C:/AVR/avr-gcc-8.3.0-x86-mingw. Обратите внимание, что указана версия компилятора для 32bit версии Windows. До добавления по просьбе форумчан, компилятора для 32х разрядной версии винды, в Makefile выражение имело вид CC_BASE = C:/AVR/avr-gcc-8.3.0-x64-mingw. С этой версией я и проводил все эксперименты. А после смены винта и винды не обратил внимания что во всех бета версиях теперь торчит CC_BASE = C:/AVR/avr-gcc-8.3.0-x86-mingw, то бишь 32bit. Вот и протрахался неделю. Так что обратите на это внимание владельцы 64 битной Windows. Эксперименты продолжу, по результатм отпишусь. Всем успеха!
Добавлено after 3 hours 45 minutes 11 seconds: Вот слегка подправленная инструкция ( надеюсь *Trigger* не осудит) Итак, инструкция (в основном, для пользователей Windows. Те, кто используют Linux и подобные системы, с этим знакомы):
1. Скачать здесь архив с исходниками winding_machine_all.zip, а также архив с компилятором (из папки avr-gcc). Архив winding_machine_all.zip будет мной обновляться при доработках программы. 2. Распаковать оба архива куда-нибудь (не обязательно в одно и то же место), при этом в путях не должно быть пробелов и русских букв (для тех, у кого Windows с русским именем пользователя: не используйте папку пользователя в C:\Users\user, распакуйте куда-нибудь поближе к корню диска (D:\AVR ).
3. Открыть файл D:\AVR\winding_machine_all\winding_machine/Makefile (он без расширения, открыть можно блокнотом)
4. Найти в файле строку (5я строка) Код: CC_BASE = C:/AVR/avr-gcc-8.3.0-x64-mingw
и заменить в ней всё, что написано после знака "=", на тот путь, куда Вы распаковали компилятор (например, если это D:\AVR, то надо написать Код: CC_BASE = D:/AVR/avr-gcc-8.3.0-x64-mingw
Для 32х битной версии Windows код будет иметь вид: Код: CC_BASE = D:/AVR/avr-gcc-8.3.0-x86-mingw
Важно! обратные слеши "\" надо заменить на прямые "/". Сохранить изменения.
5. Внести, если требуются для вашего станка или вашего видения конструкции, изменения в файлы pins.h, lcdlibrary/lcd_definitions.h, winding.h и main.c, сохранить. Использовать можно любой текстовый редактор.
Переходим в папку winding_machine из распакованного архива D:\AVR\winding_machine_all\winding_machine
Для этого меняем директорию, т.е. заходим в папку с распакованным архивом
cd D:\AVR\winding_machine_all\winding_machine ,
получаем вид в командной строке
D:\AVR\winding_machine_all\winding_machine>
8. Далее. Если компилятор был распакован в D:\AVR\, то нужно ввести Код: D:\AVR\avr-gcc-8.3.0-x64-mingw\bin (потому, что в makefile так и прописано > CC_BASE = D:/AVR/avr-gcc-8.3.0-х64-mingw)
Осталось добавить команду make но... есть нюансы. В папке D:\AVR\winding_machine_all\winding_machine\bin > лежат хранилища для нескольких видов контроллеров серии ATmega Release Release_m88 Release_m88p Release_m168 Release_m168p Release_m328 Release_m328p
В них находятся прошивки для определённого вида механники, которая для каких-то станков не подходит. В таком случае в конце строки добавляем make clean_all D:\AVR\winding_machine_all\winding_machine>D:\AVR\avr-gcc-8.3.0-x64-mingw\bin\make clean_all и нажимаем Enter. Стирается вся информация в папках Release* Если например надо стереть сборку для одного МСU,то: D:\AVR\winding_machine_all\winding_machine>D:\AVR\avr-gcc-8.3.0-x64-mingw\bin\make clean MCU=atmega168pa ( на ваш выбор)
После этого вы можете без напрягов и танцев с бубном скомпилировать прошивку для любого микроконтроллера из списка Realese (в первой папке realese живёт ATmega8), предварительно внеся изменения в файлы указанные выше (pins.h, lcdlibrary/lcd_definitions.h, winding.h и main.c) Для этого: D:\AVR\winding_machine_all\winding_machine>D:\AVR\avr-gcc-8.3.0-x64-mingw\bin\make (для atmega8)
D:\AVR\winding_machine_all\winding_machine>D:\AVR\avr-gcc-8.3.0-x64-mingw\bin\make MCU=atmega88pa ( для atmega88pa)
D:\AVR\winding_machine_all\winding_machine>D:\AVR\avr-gcc-8.3.0-x64-mingw\bin\make MCU=atmeg168pa ( для atmega168pa) ну и т.д.
9. В случае успешной компиляции в конце будет выведено сообщение о занятой памяти: Код: AVR Memory Usage ---------- Device: atmega8
Никаких сообщений об ошибках быть не должно. Скомпилированную прошивку найдёте там, где исходники, по пути D:\AVR\winding_machine_all\winding_machine\bin\Release\winding_machine.hex. Прочие имеющиеся там файлы не используются.
Я прошиваю контроллером USBAsp Пробовал программы Khazama (на выскакивающие ошибки программы можно не обращать внимания) и AVERDUDE Возможны какие-то косяки с последней прошивкой она ещё не проверена в работе. Идёт тестирование. В этом варианте инструкции просто объединены ответы практически на все заданные в течение темы вопросы читателей по компиляции.
На 7ке не пробовал у меня 10ка. Но мне кажется без разницы, главное разрядность винды. По крайней мере *Trigger* вроде ничего не писал по этому поводу.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения