roboforum.ru

Технический форум по робототехнике.

MKS SERVO42B шаговик с обратной связью не пропускающий шаги

Обсуждение технологии печати на 3D принтерах. Самостоятельное изготовление и приобретение. RepRap и его последователи.

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Dmitry__ » 23 янв 2020, 22:06

Myp писал(а):вобще цифра 511 подозрительно совпадает с таблицей синусов


Число 511 подозрительно совпадает с установленными всеми битами в "1" в двоичном коде. 511 = 0x1FF = 0b111111111 :)
И это логично, т.к. задает диапазон ШИМ, который желательно иметь кратный двоичному коду, чтоб не делать дикое колич. проверок и создавать таблицы синусов выровненные для двоичных масок...

Добавлено спустя 5 минут 28 секунд:
Re: MKS SERVO42B шаговик с обратной связью не пропускающий шаги
Вы не там ищете повышение частоты ШИМ. Выше частоты шины периферии не прыгните. Есть только один вариант - уменьшать разрядность ШИМ (период VREF_MAX), также выравнивая по двоичному коду: 511, 255, 127. Каждое послед. число увеличивает частоту ШИМ в 2 раза, соотв. уменьшая разрядность ШИМ тоже в 2 раза...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Myp » 23 янв 2020, 22:36

Блин, а как тогда нормальные люди делают ШИМ управление моторами чтобы они не пищали обмотками?
если даже с 72 мегагерцами получается писк, а там всего-то 512 значений.

и всё равно непонятно
посчитали синус по таблице, получили красивое в битовом плане число
а потом хренакс и засунули красивое число в формулу с каким то фигом фиксированными цифрами тока 3300 мА и 1500 мА
vrefSin = (uint16_t)((mA * fastAbs(sin) + 1500) / 3300);
в итоге при угле в 90 градусов sin=511 и получатся говняшка
vrefSin = (500мА*511+1500)/3300 = 77,88
а при нуле градусов vrefSin = 0,44
в сумме тоже фигня, 78,333333
потом эту цифру тащат в процедуру setVREF(vrefSin,vrefCos);
которая делает я не знаю что
Код: Выделить всёРазвернуть
//Vref
inline static void setVREF(uint16_t VREF12, uint16_t VREF34)
{
   VREF_TIM->CCR3 = VREF12;                  //TIM_SetCompare3(VREF_TIM, VREF12);
   VREF_TIM->CCR4 = VREF34;                  //TIM_SetCompare4(VREF_TIM, VREF34);
}

#define VREF_TIM TIM3
VREF_TIM->CCR3 = 77,88 это что блин значит ? :(
это тоже какая-то битовая магия?
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Dmitry__ » 24 янв 2020, 03:32

Myp писал(а):если даже с 72 мегагерцами получается писк, а там всего-то 512 значений.

APB1 может питаться только пониженной в 2 раза частотой от 72 мГц. 72/2/512 = уже 70 кГц. максимум. А это мы еще даже в код не заглядывали.Там шим простой или какой-нибудь центрированный?
Потом, а кто сказал что это пищит шим? Надо мерить частоту. Это может пищать PID регулятор с максимальной частотой снятия данных с энкодера.
Myp писал(а):посчитали синус по таблице, получили красивое в битовом плане число
а потом хренакс и засунули красивое число в формулу

С точность до наоборот. Посчитали что угодно в грязных цифрах, любой разрядности, а потом хренакс и обрезали до красивого числа двоичной маской.
Myp писал(а):в итоге при угле в 90 градусов sin=511 и получатся говняшка

Не очень понял, 90 град. от полного поворота сервы? Таблица в 512 дискрет в таком случае очень мало. Если 90град. от полного одного шага шаговика, то не понимаю где говняшка, т.к. полный шаг = 360/200 град.
Myp писал(а): это что блин значит ?

ХЗ! Ты хочешь меня заставить лопатить исходники? :cry: Тогда вопрос: В чем затык? Не нравится свист? Искать источник, может это не шим. Кста, а сколько драйвер шаговика может сьесть кГц ШИМ-а?

Попробуй поставить дроссели на шаговик (по 1 шт на обмотку, т.е. 2 :) ), Чтоб они полностью убрали пульсации шим. Потом лезь осциллом и изучай аналоговый сигнал на пинах двигателя после дросселей. Тогда станет понятно кто пищит, ШИМ или кривой алгоритм управления.

Эх возбуждаете меня этой сервой, где ее можно быстро купить? Ненавижу ждать по 30 дней с али...
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Myp » 24 янв 2020, 23:13

Dmitry__ писал(а):Потом, а кто сказал что это пищит шим? Надо мерить частоту. Это может пищать PID регулятор с максимальной частотой снятия данных с энкодера.

блин, куда не глянь всюду непойми чё, я незнаю, пойду посмотрю как там угол снимается.

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

там таблица посчитанных синусов уже забита, в таблице цифры от -511 до 511
Код: Выделить всёРазвернуть
static const int16_t sineTable[1280] = {
0,3,6,9,13,16,19,22,25,28,31,34,38,41,44,47,
50,53,56,59,63,66,69,72,75,78,81,84,87,90,94,97,
   // и так далее до
501,502,502,503,503,504,505,505,505,506,506,507,507,508,508,508,
509,509,509,509,510,510,510,510,510,511,511,511,511,511,511,511,
   //и дальше в обратную сторону через ноль до -511



Dmitry__ писал(а):Не очень понял, 90 град. от полного поворота сервы? Таблица в 512 дискрет в таком случае очень мало. Если 90град. от полного одного шага шаговика, то не понимаю где говняшка, т.к. полный шаг = 360/200 град.

Для полного физического шага.
Для 90 градусов синус по табличке в памяти равен 511.
это красивое число 511 зачем-то засунули в странную формулу масштабирования до 3300 мА
(Это максимальный ток для шаговика размера 57, такое ощущение что формулу забыли исправить под 42 шаговик, у меня стоит драйвер A4954 и он в пике 2 ампера может дать)
текущий ток мотора умножают на синус угла, прибавляют 1500 мА и делят на 3300 мА
Снимок.PNG
Снимок.PNG (9.4 КиБ) Просмотров: 5182

получили цифру 77,87878787 запихали её в uint16_t и отправили в регистр ШИМа
Твоя теория про красивость цифр в битовом плане рушится.
нафига диапазон 0-511 масштабировать в 0-77?

Dmitry__ писал(а):ХЗ! Ты хочешь меня заставить лопатить исходники?

Да, там всего пара строчек, даже я почти разобрался.

Dmitry__ писал(а):Эх возбуждаете меня этой сервой, где ее можно быстро купить? Ненавижу ждать по 30 дней с али...

У нас не видел :(


Dmitry__ писал(а): Кста, а сколько драйвер шаговика может сьесть кГц ШИМ-а?

в даташите не нашёл http://elecanisms.olin.edu/handouts/2.3 ... asheet.pdf
там есть некая Toff Constant Off-time = 25 мкс
The current in each of the two output full bridges is regulated
with fixed off-time pulse width modulated (PWM) control circuitry
возможно надо от неё плясать
Безымянный1.png


Добавлено спустя 1 час 52 минуты 24 секунды:
Re: MKS SERVO42B шаговик с обратной связью не пропускающий шаги
феерически :shock:
у китайцев в прошивке вырезан пункт меню установки рабочего тока, оставлен только пункт тока удержания
при этом пункт удержания переименован как будто это рабочий ток
но по факту если на экране выбрать 100 мА то ток 100мА запишется в motorHoldCurrent, а в motorCurrent запишется 200 :o
при этом само собой в PID алгоритме выбирается ток для корректировки согласно этим двум величинам.
ma = (int32_t)((fastAbs(u) * fastAbs((int32_t)(motorParams.currentMa - motorParams.currentHoldMa))) / fullStep) + motorParams.currentHoldMa;
а потмо хренакс и та странная формула с масштабированием...
я понимаю если бы масштабировалась в заданные пределы 100-200 мА, но масштабируется в 1500-3300
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Myp » 25 янв 2020, 18:26

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

фик знает что ещё
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Myp » 27 янв 2020, 01:34

вернул кусок кода для масштабирования и меню для выбора тока.
вроде норм стало.

код местами совпадает с оригиналом, но видимо взята какая-то древняя версия, кое каких вещей не хватает плюс кое что китаец переименовал.
местами даже проапгрейдил, кое какие расчёты заменил битовыми сдвигами.
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Dmitry__ » 27 янв 2020, 11:09

Myp писал(а):вроде норм стало.

Молодчага, а норм стало что? :) Пропал свист? Или управление стало лучше?
А ссылки не дашь на ориг. код?
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Myp » 27 янв 2020, 18:21

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

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

Прошивка китайская https://github.com/makerbase-mks/MKS-SERVO42B
Прошивка исходного автора https://github.com/Misfittech/nano_step ... _nano_zero
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение setar » 28 янв 2020, 09:29

ты гляди, так и китайский ширпотреб напильником до ума доведешь !
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Dmitry__ » 28 янв 2020, 21:00

Myp, спасиба, гляну на днях. Не удаляй :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Dmitry__ » 31 янв 2020, 12:39

Сравнил код, да ну на фиг, один на ардуино иде32, другой на платформио. Удалил все с компа, свое время дороже :)
Буду вялотекуще наблюдать за развитием этого MKS SERVO42B, пока даже въехать не могу зачем замутили сервопривод на шаговике :)
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение macar2005 » 10 сен 2020, 07:47

Использую в своих принтерах MKS SERVO42А в директ экструдере. На мой взгляд лучше обычного шаговика.
macar2005
 
Сообщения: 142
Зарегистрирован: 22 янв 2015, 10:55
Откуда: Барнаул

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Dmitry__ » 23 авг 2022, 12:22

Купил 3 сервы MKS-SERVO42C
Одну серву поставил в mendel90. 2-ю в быструю поворотку для камеры (ради нее все и затеивалось). 3-я пока лежит без дела :)
Первым делом начал изучать систему команд для управления по uart, т.к. хотелось сделать поворотное устройство из желудей и веточек. Серва иногда замирает на 0.2 сек. и как с этим бороться пока не понял. Забил на uart, занялся step/dir как в 3d принтерах. На базе библиотеки AccelStepper написал управлялку, все замирания пропали, все крутится норм. И тут я решил проверить максимальную скорость сервы. Выставил запредельные параметры и начал крутить:

Код: Выделить всёРазвернуть
   myStepper.setMaxSpeed(10000);
   myStepper.setAcceleration(30000);
   myStepper.setSpeed(10000);


Ардуина выдала макс. частоту на step 4кГц. Серва крутилась примерно 8 об/сек. Что близко к ее параметрам. И тут я нажал reset на ардуине. Серва как крутилась так и осталась крутиться :))
Крутилась еще около 5 секунд. Т.е. серва не успевала обработать данные, накапливала их и отрабатывала по мере возможностей. Вот и думайте как это работает в принтере 8)

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

2. Для своих изделий: Сырое управление по uart. До сих пор нет исходников. В отличии от SERVO42B - применен китайский контроллер вместо stm32, пока не понял как его программировать :(

Фотки поворотки с тепловизором:

tepl_1.jpg
tepl_2.jpg

tepl_3.jpg
tepl_5.jpg
Последний раз редактировалось Dmitry__ 18 сен 2022, 20:25, всего редактировалось 1 раз.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение Madf » 13 сен 2022, 10:26

Алоха!

Запили своё. :)
А то попахивает блогерством и обзорами. :D
Madf
 
Сообщения: 3298
Зарегистрирован: 03 янв 2012, 12:55
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...

Re: MKS SERVO42B шаговик с обратной связью не пропускающий ш

Сообщение setar » 15 сен 2022, 13:37

я добавлю что вместо сглаживания скорее получается повторяемый "шов" перехода через ноль магнитного энкодера, хотя понятно это от прошивки зависит. нужно пилить свою и перед запоминанием калибровочных данных их "сглаживать"
Аватара пользователя
setar
Site Admin
 
Сообщения: 10989
Зарегистрирован: 04 окт 2004, 12:58
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко

Пред.След.

Вернуться в 3D печать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23