Самопальный интерпретатор

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

selenur писал(а):Крафтер - посмотрел твои исходники, и заметил что у тебя управление моторами реализовано не через драйверы моторов, где используется всего по 2 вывода (step, dir), а путем управления каждой обмоткой (т.е. практически минуя драйвер), чем обусловлена такая реализация? :-)
Ого, это надо было серьёзно порыться, чтобы найти. Переделать не долго, в планах такой пункт есть. Сделано так, во-первых, для того чтобы микрошаг был, во-вторых для экономии денег, вся обработка запихнута в мк стоимостью 150 рублей. А ещё я когда это писал, не очень понимал, как работает L297, да и сейчас пока не разобрался. Как там организовано торможение тока в обмотках? Катушка просто замыкается или включается в обратной полярности? У меня полярность меняется.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

Я когда пару лет назад, делал контроллер, думал тоже драйвер сделать сам, но почитав теорию понял, нехватит текущих знаний, а изучать долго, поэтому купил готовые недорогие, конечно это дороже (1600 руб.) :-) К тому-же я люблю больше программировать чем паять.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение sidor094 »

Я наоборот стараюсь сделать систему управления как можно более распределённой.Отдельно контроллер движения ,отдельно разгон-торможение и ,или отдельно привода.Сейчас у меня контроллер движения также занимается выводом на экран ,вводом с клавиатуры и редактированием .Я наоборот хочу сделать ввод и редактирование на отдельном контроллере или на компьютере в зависимости от желаний.На мой взгляд такое решение хоть и несколько удорожает систему ,но делает её значительно более гибкой.Что касается удорожания то оно будет незначительным ,учитывая нынешние цены на микроконтроллере.Но при таком подходе появляется дополнительная возможность подключения к работе нескольких сторонних разработчиков.При этом проект можно оставлять за собой так как свяэь кусков остаётся за основным разработчиком.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

самопал.zip
(103.45 КБ) 366 скачиваний
Новая версия программы. Из полезных изменений:
1. Переделан расчёт ускорения, теперь контроллер знает, сколько осталось до конца линии и скорость рассчитывает исходя из полного расстояния. Сопряжение прямых/кругов не приводит к торможениям в точке сопряжения.
2. Посылка данных с мк на компьютер сделана через DMA, в результате контроллер разгружен, максимальная частота шагов выше, скорость передачи тоже выше.
3. Добавлен ползунок регулировки скорости подачи, до нуля пока опустить нельзя, можно до 0.1%.
4. Немного наведено красоты: кнопки установки нуля, перехода к нулю, отображение текущих координат.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Baha писал(а): если шпиндель токарника не имеет возможность позиционного управления, то нужно специальная команда резьбонарезания, и синхронизация вращения шпинделя с двумя линейными осями, с внешнего сигнала, энкодера шпинделя.
По поводу энкодеров есть интересная информация. Обнаружил новые микроконтроллеры stm32f031, которые стоят совсем копейки, и на них по идее можно сделать управление серводвигателем с офигенной максимальной частотой. У самого мк частота 48 МГц, есть встроенная обработка сигналов энкодера (увеличение/уменьшение счётчика шагов). Получается, можно сделать учёт шагов на частоте где-то до 20 МГц. То есть текущая позиция и позиция, где он должен быть, будут считаться аппаратно, а программно надо будет считать, какое напряжение подать, чтобы они совпали. Есть ли смысл возиться с написанием под него программы, или уже такое есть? Я пока только UHU накопал.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Serg »

Помимо таймера, обслуживающего энкодер нужна ещё приличная куча сопутствующей логики и т.п., поэтому большинство производителей сервоприводов применяют FPGA, внутри которой можно сделать не только счётчик для энкодера, но и всю сопутствующую логику и ядро упрвляющего контроллера, хоть тот-же Cortex-M3.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
vovan
Кандидат
Сообщения: 49
Зарегистрирован: 06 апр 2015, 15:01
Репутация: -42
Настоящее имя: Valdemar Zabanist

Re: Самопальный интерпретатор

Сообщение vovan »

Крафтер писал(а):У самого мк частота 48 МГц, есть встроенная обработка сигналов энкодера (увеличение/уменьшение счётчика шагов).
Встроенная поддержка энкодеров присутствует даже на самых простеньких STM8.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

UAVpilot писал(а):Помимо таймера, обслуживающего энкодер нужна ещё приличная куча сопутствующей логики и т.п.
Хотелось бы список этой кучи. Как мне представляется оценка нагрузки на мк.
Энкодер не нагружает мк.
Шаги от того же Мача не нагружают мк, потому что переключение направления движения (dir = !dir) делается в момент, когда скорость нулевая, шаги не идут и пропуска их не случится. В остальное время учётом шагов занимается аппаратно таймер.
Допустим, движок крутит на большой скорости без ускорения. Цикл в программе в очередной раз сравнивает текущую позицию с ожидаемой, видит небольшое отклонение, добавляет немного к текущему напряжению. Здесь огромной скорости реакции не требуется.
Второй подозреваемый :D : двжок крутит на большой скорости и должен ускоряться. В программном цикле наблюдаем ускорение отклонения ожидаемой позиции от текущей и соответственно корректируем напряжение на двигателе.
Ни в одном месте не требуется работа программного цикла на той же частоте, с которой приходят шаги. В случае равномерного движения можно тикать хоть раз в секунду для корректировки позиции.
И вот ещё какое соображение. ШИМ на двигателе больше 100 кГц не задерёшь, а если шаги идут с частотой 10 МГц, то за один такт ШИМа пройдёт 100 шагов. Поэтому незачем рассчитывать внутри этих 100 шагов, что скорость сильно поменяется.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Serg »

Крафтер писал(а):Хотелось бы список этой кучи.
Цепи контроля тока, положения ротора, ЦАП, логика контроля внешних сигналов, ...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

aftaev писал(а):
Крафтер писал(а):Что значит адаптивное управление? Не нагуглил ничего.
скорость подачи может регулироваться внешним сигналом, когда нужно быстрее, когда нужно замедляется
Если перемножить подачу на сигнал от АЦП, этого хватит, или тут вход какой-то цифровой? :controller: Если надо подачу регулировать в % входным напряжением, то АЦП я уже настроил, осталось самую малость.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Сергей Саныч »

Крафтер писал(а):То есть текущая позиция и позиция, где он должен быть, будут считаться аппаратно, а программно надо будет считать, какое напряжение подать, чтобы они совпали. Есть ли смысл возиться с написанием под него программы, или уже такое есть?
Есть смысл изучить основы теории автоматического регулирования, в частности про ПИД-регулирование.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

К стати у ряда моделей stm есть встроенный модуль dsp, который позволяет использовать ПИД-алгоритм, не напрягая при этом ядро мк.
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Сергей Саныч писал(а):Есть смысл изучить основы теории автоматического регулирования, в частности про ПИД-регулирование.
Титце. Шенк. Полупроводниковая схемотехника, стр 480 и дальше. Читал я всё, знания матанализа хватит, чтобы просчитать :D . Ладно, если будет результат, отпишусь.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11626
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Самопальный интерпретатор

Сообщение michael-yurov »

Крафтер писал(а):знания матанализа хватит, чтобы просчитать
А как найти и задать значения переменных?
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

michael-yurov писал(а):А как найти и задать значения переменных?
Считаем, что максимальное напряжение на двигателе крутит энкодер в положительном направлении, минимальное - в отрицательном. Известны целочисленные значения текущей позиции (энкодер) и необходимой позиции (входящие шаги), они лежат в регистрах таймеров. Необходимо задать напряжение на двигателе (скважность ШИМ).
Первый вариант. Если текущая позиция меньше ожидаемой, то напряжение = максимальному, иначе напряжение = минимальному. В данном случае будут колебания +-1 шаг. Расходимости не возникнет, поскольку в осях существует реальное трение. То есть путь, необходимый для ускорения до заданной скорости, больше пути, необходимого для замедления.
Второй вариант. Всё как в первом варианте, за исключением случая совпадения текущей и ожидаемой позиции. При совпадении задаём напряжение = интегралу предыдущих значений напряжения с затуханием. То есть на каждой итерации Uср = Uтек * eps + Uср * (1 - eps). Или для ускорения вычислений Uср += (Uтек - Uср) >> n. Это позволит уменьшить частоту колебаний в состоянии покоя.
Есть более сложные схемы, но они может быть и не понадобятся.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11626
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4634
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Самопальный интерпретатор

Сообщение michael-yurov »

Понятно.
У меня в принтере так устроен привод вала подачи бумаги.
Инерции внешних усилий там практически нет, так что подобная логика работает.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Добавил регулировку подачи напряжением на входе.
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Схема контроллера ЧПУ в Sprint-Layout 5, если кому надо. Хотя там много лишнего, можно выкинуть кварц на 32 кГц, а для основного кварца влепить нормальные smd конденсаторы. Вначале была идея перед запуском измерять параметры двигателей, поэтому торчит массив штырьков, который не используется, его тоже можно выкинуть. Разводка ножек есть в архиве с программой, файл .ioc, он открывается программой MicroXplorer. Группы по 4 ножки - это выводы ШИМ для руления полумостами.
stm32f100_pwm.zip
сам контроллер
(38.46 КБ) 400 скачиваний
bitbang.zip
преобразователь usb-com, не лучший вариант
(23.71 КБ) 343 скачивания
ir2104_driver.zip
полумосты с управлением от 3 вольт и питанием до 35, тоже не лучший вариант )
(37.74 КБ) 318 скачиваний
stm32_pwm.PNG (2889 просмотров) <a class='original' href='./download/file.php?id=51037&sid=814b32e3b3b03a5c4fad81e179361986&mode=view' target=_blank>Загрузить оригинал (22.51 КБ)</a>
Аватара пользователя
selenur
Почётный участник
Почётный участник
Сообщения: 4604
Зарегистрирован: 21 авг 2013, 19:44
Репутация: 1621
Настоящее имя: Сергей
Откуда: Новый Уренгой
Контактная информация:

Re: Самопальный интерпретатор

Сообщение selenur »

А фотки или видео, живой работы увидим? :-)
Мой сайт: http://selenur.ru
Исходники моих программ: https://github.com/selenur
Instagram https://www.instagram.com/zheigurov/
Аватара пользователя
Крафтер
Мастер
Сообщения: 211
Зарегистрирован: 27 мар 2015, 22:25
Репутация: 61
Настоящее имя: Андрей
Откуда: Ростов-на-Дону
Контактная информация:

Re: Самопальный интерпретатор

Сообщение Крафтер »

Меня просто попросили схему выложить, я выложил. Как время будет, переведу на нормальную платформу, чтобы заказать можно было, а не лепить самому. Там и схемы то никакой нет, от мк дорожки к пинам и всё.
selenur писал(а):А фотки или видео, живой работы увидим? :-)
Я решил всю механику переделать, так что ещё не скоро. В текущей реализации от надавливания пальцем можно фрезу сдвинуть на пару мм. Пришла в голову идея слепить рельсы из смеси профиля с трубами. Трубы уже вдоль пропилил болгаркой (пришлось для этого слепить приспособу). Осталось накинуть на профиль и приклеить. Хотя как показывает практика, клей в таком деле не катит :D .
Ответить

Вернуться в «Windows / Mach»