не вижу ни каких проблем в реализации. применение общего счётчика, ход которого кратен множителям х и у (тот алгоритм, что я и предлагал) полностью избавляет от потерь точности при вычислениях и за постепенный увод опасаться не стоит. если каретку двигает шаговик - то пид не нужен. максимальное отклонение каретки от требуемого положения при этом будет определяться количеством шагов энкодера, установленного на валу шпинделя (при всего одном импульсе на оборот максимальное отклонение составит 1 ширину наматываемого провода, при более точном энкодере ошибка станет меньше)
Добавлено after 6 minutes 24 seconds: ПИД может потребоваться для управления коллекторником из мк но т.к. в твоём случае весь процесс завязан на положение шпинделя, то и его точное позиционирование не обязательно и будет достаточно простого пропорционального регулирования... а может даже можно будет и без регулирования вовсе обойтись (просто подав некоторое напряжение на мотор... при этом не отслеживая в этой цепи его оборотов)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Да,а как отредактировать прошивку,с помощью какой программы?Если у меня шаг винта 2 мм?
Кажется, пришло время для инструкции по редактированию. Я наконец-то сделал Makefile, так что, теперь достаточно всего лишь скачать и распаковать два архива.
Итак, инструкция (в основном, для пользователей Windows, те, кто используют Linux и подобные системы, с этим всем знакомы, скорее всего):
1. Скачать здесь архив с исходниками winding_machine_all.zip, а также архив с компилятором (из папки avr-gcc). Архив winding_machine_all.zip будет мной обновляться при доработках программы.
2. Распаковать оба архива куда-нибудь (не обязательно в одно и то же место), при этом в путях не должно быть пробелов и русских букв (для тех, у кого Windows с русским именем пользователя: не используйте папку пользователя в C:\Users, распакуйте куда-нибудь поближе к корню диска (C:\winding_machine, D:\AVR ли что-то подобное).
3. Открыть файл winding_machine/Makefile (он без расширения, открыть можно любым текстовым редактором), который получен в п. 1 при распаковке архива winding_machine_all.zip.
4. Найти в файле строку
Код:
CC_BASE = C:/AVR/avr-gcc-8.3.0-x64-mingw
и заменить в ней всё, что написано после знака "=", на тот путь, куда Вы распаковали компилятор (например, если это D:\Electronics\avr-gcc, то надо написать
Никаких сообщений об ошибках быть не должно. Скомпилированная прошивка находится там, где исходники, по пути winding_machine/bin/Release/winding_machine.hex. Прочие имеющиеся там файлы не используются.
Добавлено after 4 minutes 13 seconds:
serg170 писал(а):
Я так понимаю,что #define GUIDE_SCREW_PITCH 100 нужно поменять на 50?
Нет, нужно на 200. Это величина шага винта в сотых долях миллиметра.
Добавлено after 13 minutes 31 second:
Ivanoff-iv писал(а):
применение общего счётчика, ход которого кратен множителям х и у (тот алгоритм, что я и предлагал) полностью избавляет от потерь точности при вычислениях и за постепенный увод опасаться не стоит.
Как это должно работать, если первый двигатель - коллекторный, и вместо его "шагов" есть импульсы с энкодера? Что-то до меня не доходит...
ПИД есть смысл использовать для управления скоростью ШД, который перемещает укладчик. На входе - ошибка позиционирования, на выходе - скорость.
Я думаю, нужно делать что-то похожее на это:
Код:
interrupt(enc1){ if (enc1 == forward) T += x; if (enc1 == reverse) T -= x;
не будет там ошибки деления, т.к остаток от деления остаётся в накопителе и переносится в следующую итерацию.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
В алгоритме с прибавлением a ошибки нет, согласен. Но как её применить в случае с энкодером?
В том, что я выше написал, ошибка есть. Вот тут:
Код:
set_timer_period(delta_t * y / x);
Это приведёт к ошибке в скорости перемещения укладчика. Ошибки позиционирования не возникнет, но укладчик будет периодически останавливаться перед каждым новым импульсом с энкодера (т.к. все периоды были чуть меньше, чем нужно). Нужно период считать заново в каждом прерывании от таймера, учитывая остаток именно здесь.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
остаток "к" можно раскидать на "к" последних периодов изменив их длительность на 1.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
А бывает ещё и так: если после какого-то импульса с энкодера скорость двигателя намотки увеличилась, и в промежуток времени до следующего импульса расчётное число периодов таймера не влезет (информация о периоде обновляться может только при приходе нового импульса). Нужно как-то учесть это после прихода следующего импульса с энкодера, используя накопленное значение ошибки. Вот это надо обдумать.
_________________ Этот пост оказался полезен? Не поленись, нажми слева!
Куплю индикаторы ИТС-1А, ИТС-1Б, ИГВ1-8х5Л, ИГПС1-222/7, ИГПС1-111/7 и подобные.
Может, действительно стоит взять более мощный ШД, и при необходимости добавить ещё и редуктор (например, 1:8, уменьшив при этом микрошаг на драйвере)?
Nema 34: 12 Ньютон-метров и вал диаметром 14мм со шпонкой. Есть две модификации - обычный и серво. Может их рассмотреть? Да, они подороже, но вряд ли понадобится еще и редуктор, который также стоит денег и займет место. К тому же драйвера к этим моторам с широкими настройками
можно поставить энкодер с бо́льшим числом шагов, тогда разбос танет меньше.
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Похоже, энкодер необходим. Допустим, в начале намотки мне нужно сделать пару-тройку витков, вручную вращая вал двигателя/катушку. Если программно заложено число витков в слое, то как учесть сделанные руками? Вводить параметры заново? Вычитая уже сделанные? В конце слоя аналогичная ситуация - проложил межслойную изоляцию, снова аккуратно провернул, чтобы убедиться что изоляция легла ровно и виток следующего слоя пошел правильно. А если неправильно, то в обратном направлении отмотал, исправил и снова вперед.
Насчет редуктора... А он позволит провернуть вал вручную? Червячный точно нет, с зубчатым ремнем не знаю, думаю зависит от соотношения зубцов на шестернях.
энкодеры хорошие по точности/простоте были в шариковых мышках (около 100 имп/об)... ещё есть в струйниках, но они большие (около 5-7 см в диаметре) и точность у них избыточна (1200-1800 имп/об)
_________________ Просто не учи физику в школе, и вся твоя жизнь будет наполнена чудесами и волшебством Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
Нашел характеристики промышленных станков. СУН-0,6 (до 0,6мм провод) крутящий момент 4Нм. Станок СУН-1,8 (до 1,8мм провод) макс. крутящий момент 6Нм. Можно рассматривать эти цифры как ориентир при выборе мотора. Если учесть, что Nema 23 до 3Нм, то вряд ли он подойдет, если только редуктор использовать.
Добрый вечер. У меня движки 23HS5628 и 17HS3401S. Подскажите какой нужен микрошаг? При установке скорости больше 0,7, перестает работать двигатель укладчика. С уважением Андрей.
Зарегистрирован: Ср сен 09, 2020 18:21:06 Сообщений: 5
Рейтинг сообщения:0
Здравствуйте! Уважаемый Ян, Вы применили в схеме намоточного станка Atmega8 в корпусе TQFP-32. А в корпусе DIP-28 микросхему можно использовать? Станок у Вас получился загляденье!
В том виде что сейчас можно. Atmega8 в корпусе TQFP-32 имеет отличие от DIP-28. Но в этой схеме с этой прошивкой это различие не используется. Выводы ADC6 и ADC7 в резерве.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения