Обсуждаем цифровые устройства...
Ответить

Re: Автоматический намоточный станок

Сб янв 30, 2021 12:59:17

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

Добавлено after 6 minutes 24 seconds:
ПИД может потребоваться для управления коллекторником из мк
но т.к. в твоём случае весь процесс завязан на положение шпинделя, то и его точное позиционирование не обязательно и будет достаточно простого пропорционального регулирования... а может даже можно будет и без регулирования вовсе обойтись (просто подав некоторое напряжение на мотор... при этом не отслеживая в этой цепи его оборотов)

Re: Автоматический намоточный станок

Сб янв 30, 2021 13:20:25

serg170 писал(а):Да,а как отредактировать прошивку,с помощью какой программы?Если у меня шаг винта 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, то надо написать
Код:
CC_BASE = D:/Electronics/avr-gcc/avr-gcc-8.3.0-x64-mingw

Важно: обратные слеши "\" надо заменить на прямые "/".
Сохранить изменения.

5. Внести нужные изменения в файлы pins.h, lcdlibrary/lcd_definitions.h, winding.h и main.c, сохранить. Использовать можно любой текстовый редактор.

6. Открыть командную строку (нажать Win + R, написать "cmd" (без кавычек), нажать Enter).

7. Перейти в папку winding_machine из распакованного архива. Например, если архив распакован в D:\Electronics\winding_machine_all, то нужно выполнить
Код:
cd D:\Electronics\winding_machine_all\winding_machine


8. Запустить make. Если компилятор был распакован в D:\Electronics\avr-gcc, то нужно ввести
Код:
D:\Electronics\avr-gcc\avr-gcc-8.3.0-x64-mingw\bin\make

и нажать Enter.

9. В случае успешной компиляции в конце будет выведено сообщение о занятой памяти:
Код:
AVR Memory Usage
----------
Device: atmega8

Program:    7712 bytes (94.1% Full)
(.text + .data + .bootloader)

Data:        230 bytes (22.5% Full)
(.data + .bss + .noinit)

Никаких сообщений об ошибках быть не должно. Скомпилированная прошивка находится там, где исходники, по пути 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 писал(а):применение общего счётчика, ход которого кратен множителям х и у (тот алгоритм, что я и предлагал) полностью избавляет от потерь точности при вычислениях и за постепенный увод опасаться не стоит.

Как это должно работать, если первый двигатель - коллекторный, и вместо его "шагов" есть импульсы с энкодера? Что-то до меня не доходит... :dont_know:

ПИД есть смысл использовать для управления скоростью ШД, который перемещает укладчик. На входе - ошибка позиционирования, на выходе - скорость.

Я думаю, нужно делать что-то похожее на это:
Код:
interrupt(enc1){
  if (enc1 == forward) T += x;
  if (enc1 == reverse) T -= x;

  delta_t = current_time() - last_time;
  last_time = current_time();
  set_timer_period(delta_t * y / x);
}

interrupt(timer){
  if (T >= y) {StepM2(F); T -= y;}
  if (T <= -y ) {StepM2(R); T += y;}
}


Только нужно разобраться с расчётом периода, чтобы не возникало ошибки из-за целочисленного деления.
Последний раз редактировалось *Trigger* Вс янв 31, 2021 01:03:46, всего редактировалось 1 раз.

Re: Автоматический намоточный станок

Сб янв 30, 2021 13:34:24

не будет там ошибки деления, т.к остаток от деления остаётся в накопителе и переносится в следующую итерацию.

Re: Автоматический намоточный станок

Сб янв 30, 2021 13:48:16

В алгоритме с прибавлением a ошибки нет, согласен. Но как её применить в случае с энкодером?

В том, что я выше написал, ошибка есть. Вот тут:
Код:
set_timer_period(delta_t * y / x);


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

Re: Автоматический намоточный станок

Сб янв 30, 2021 14:11:45

остаток "к" можно раскидать на "к" последних периодов изменив их длительность на 1.

Re: Автоматический намоточный станок

Сб янв 30, 2021 14:29:37

Ну это в идеальном случае.

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

Re: Автоматический намоточный станок

Сб янв 30, 2021 15:57:56

Может, действительно стоит взять более мощный ШД, и при необходимости добавить ещё и редуктор (например, 1:8, уменьшив при этом микрошаг на драйвере)?

Nema 34: 12 Ньютон-метров и вал диаметром 14мм со шпонкой. Есть две модификации - обычный и серво. Может их рассмотреть? Да, они подороже, но вряд ли понадобится еще и редуктор, который также стоит денег и займет место. К тому же драйвера к этим моторам с широкими настройками

Re: Автоматический намоточный станок

Сб янв 30, 2021 16:16:29

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

Re: Автоматический намоточный станок

Сб янв 30, 2021 18:38:33

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

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

Re: Автоматический намоточный станок

Сб янв 30, 2021 20:17:17

Я так понимаю,что #define GUIDE_SCREW_PITCH 100 нужно поменять на 50?

Под шаг винта 2мм это значение 200.

Re: Автоматический намоточный станок

Сб янв 30, 2021 20:34:21

энкодеры хорошие по точности/простоте были в шариковых мышках (около 100 имп/об)...
ещё есть в струйниках, но они большие (около 5-7 см в диаметре) и точность у них избыточна (1200-1800 имп/об)

Re: Автоматический намоточный станок

Вс янв 31, 2021 07:46:54

Нашел характеристики промышленных станков. СУН-0,6 (до 0,6мм провод) крутящий момент 4Нм. Станок СУН-1,8 (до 1,8мм провод) макс. крутящий момент 6Нм. Можно рассматривать эти цифры как ориентир при выборе мотора. Если учесть, что Nema 23 до 3Нм, то вряд ли он подойдет, если только редуктор использовать.

Re: Автоматический намоточный станок

Пн фев 01, 2021 23:19:49

Добрый вечер. У меня движки 23HS5628 и 17HS3401S. Подскажите какой нужен микрошаг? При установке скорости больше 0,7, перестает работать двигатель укладчика. С уважением Андрей.

Re: Автоматический намоточный станок

Вт фев 02, 2021 17:43:19

У меня оба двигателя 17HS4401. Микрошаг стоит 16. Он же изначально стоит в исходниках.

Re: Автоматический намоточный станок

Вт фев 02, 2021 20:27:57

Большое спасибо. Андрей.

Re: Автоматический намоточный станок

Ср мар 10, 2021 18:48:54



Доделал станочек. Вот совсем маленькое видео. Мотаю катушку, ради которой все и затевалось.

Re: Автоматический намоточный станок

Чт мар 11, 2021 09:24:00

Здравствуйте! Уважаемый Ян, Вы применили в схеме намоточного станка Atmega8 в корпусе TQFP-32. А в корпусе DIP-28 микросхему можно использовать? Станок у Вас получился загляденье!

Re: Автоматический намоточный станок

Чт мар 11, 2021 22:01:11

В том виде что сейчас можно. Atmega8 в корпусе TQFP-32 имеет отличие от DIP-28. Но в этой схеме с этой прошивкой это различие не используется. Выводы ADC6 и ADC7 в резерве.

Re: Автоматический намоточный станок

Пт мар 12, 2021 10:36:49

Ян, спасибо большое! Все-таки если делать, с расчетом на модернизацию, сразу в TQFP-32 стоит ставить? Улучшения, изменения планируются?

Re: Автоматический намоточный станок

Пт мар 12, 2021 20:30:18

Это к автору прошивки надо обращаться. Но, как мне кажется, все и так хорошо работает. Так что делайте как вам удобно.
Ответить