Pull to refresh

Comments 53

Я конечно извиняюсь, но… зачем весь этот матан для измерения элементарных величин?

Говорите, измерения при малых токах некорректны… Ну ок, что мешает подать в движок пару ампер от изображённого на фото источника и измерить падение напряжения изображённым на том же фото мультиметром? А для измерения индуктивности — подать хоть те же 50 Гц из розетки с лампочкой в роли ограничителя тока и опять-таки измерить падение напряжения?
Мне этот матан пригодится в следующей части, когда без диффура уже никуда. Да и потом, я ж говорю, что я учусь. А понимать природу происходящих процессов важно. Кроме того, с моей специальностью мне матан гораздо проще работы с розеткой и лампочкой :)
Природа процессов такова, что коллекторный узел:
1) ненадёжен
2) вращается, искрит и генерит тучу помех.
Индуктивность меняется скачками от угла поворота. На вход таких двигателей часто вешают конденсатор. Может этот замер L_ротора+R_щёточного_узла+R_электродуги и не сильно нужен?

По-моему велосипед изобретен уже.
Тут ключевые параметры управления — ток и обороты вала:
http://vedder.se/2015/01/vesc-open-source-esc/

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

А иногда для управления каким-либо органом робота достаточно концевого выключателя.
Доехал манипулятор до упора — двигатель выключается. Защита ДПТ от перегрузок — плавкой вставкой или электронным предохранителем на 2-х транзисторах.
Роботы и 50 лет назад функционировали без столь подробного «матана» и ардуин — волшебством наверное :)
То, что у вас по ссылке, это явный оверкилл для меня. Мне нужно просто уметь задать силу тока, протекающую через двигатель, это всё. Как стандартный H-bridge, который задаёт напряжение, мне нужно то же самое, но с током. Концевики не устроят :)

Снятие данных с энкодера и т.п. не нужно для управления силой тока, это будет обрабатываться в других местах для других целей.
H-bridge не задает напряжение или силу тока, а только полярность и вкл/выкл. Остальное — задачи схемы управления с датчиками.
Есть такой хороший документ
AN-380
«How to drive DC motors with smart power ICs by Herbert Sax»
www.st.com/resource/en/application_note/cd00003758.pdf
На стр. 6 — сводная таблица методов получения скорости.
К которому из них ваша идея относится?

Вы хоть не шаговый двигатель пытаетесь делать из коллекторного?
Нет, не шаговый :) H-bridge, конечно, делает вкл-выкл. Только скормив ему ШИМ на вход, и учитывая индуктивность двигателя, получим плавное изменение тока, как если бы мы плавно меняли напряжение.

В контуре тока у меня не будет измерения скорости. То, что я пытаюсь сделать, будет называться по-английски closed loop torque control. Мне нужно контролировать не скорость, как в этом документе, а ускорение.
>получим плавное изменение тока, как если бы мы плавно меняли напряжение.

Который раз вы это уже пишете, но ток через индуктивность в принципе не может меняться резко. По первому закону коммутации.

>torque control
это крутящий момент.
Угловое ускорение вала ДПТ зависит от механич. нагрузки и её инерции, смысла мало на него опираться. Разве что вести учёт загустевания смазки узлов от времени.

Измерительную линейку поставьте что ли. В сканерах и матричных принтерах всё это решалось десятилетия назад дешевле — шаговиками и зубчатыми ремнями.

По-моему «оверкилл» вся эта ваша разработка. Математическое упражнение-игра, попытка забивать гвозди микроскопом (или извлекать корни растений математиками по армейскому анекдоту).

> я купил несколько макеток с ACS712 и ACS714 от разных производителей

На хоббикинге и т.д. продаются тучи готовых контроллеров (ESC). Годами отлаженных, со всевозможными защитами. Дешевле всего вашего исследовательского «железа», которое на макетках будет нещадно сбоить.
https://hobbyking.com/en_us/afro-hv-20a-multirotor-esc-high-voltage-3-8s.html — безщёточный. Историю версий любопытно почитать.
Высоковольтных (>12В) для «brushed motors» там не нашёл навскидку.

Коллекторные движки в радиоуправляемых моделях — редкость, из-за помех на всё вокруг.
Потому и дороже.
https://www.motiondynamics.com.au/12v-48v-dc-speed-control-single-direction-25a-pcb-model.html
С открытыми схемами тоже есть готовые, в зависимости от датчиков можете получить любой алгоритм управления.

P.S. про полумост я «накосячил», полярность он не меняет в отличие от полного.
Который раз вы это уже пишете, но ток через индуктивность в принципе не может меняться резко. По первому закону коммутации.


Ээ… А я что сказал?

На хоббикинге и т.д. продаются тучи готовых контроллеров


Мне нужно контролировать силу, прикладываемую валом мотора к ремню. То есть, крутящий момент. В случае, когда нагрузка плюс-минус постоянная (мой случай), это будет ускорением. Эта сила со знаком, мотор должен уметь крутиться в обе стороны. Вы же мне предлагаете контроллеры, которые контролируют скорость, а не крутящий момент.

Если вы мне дадите ссылку на коробочку, которая умеет управлять коллекторным движком, и которая на вход принимает ШИМ момента, то я буду счастлив.
А я что сказал?


Подавайте на мотор хоть напряжение прямоугольными ступеньками 20 кГц, а он станет брать плавный ток.

Готовая плата:
http://www.robotshop.com/en/cytron-13a-5-30v-single-dc-motor-controller.html

Там кажется микросхемы NE555 + IR2184 стоят, простые и без «закрытого кода».

Любые извращ ухищрения с управлением по моменту делаются программно. Датчик тока резисторный проще при таких сравнительно малых токах. Потери денег и мощности на нём должны быть меньше аллегровских (на эфф. Холла).

Если вы делаете электромаятник, как преподаватель лабораторную работу для головоломства/заинтересовывания студентов («занимательную физику» 21 века), то важность Фурье вам показать не получилось. Нынешние ученики с мозаичным мышлением и синдромом дефицита внимания скажут «много букв» и заснут на третьей формуле :)

Резонансную частоту колебаний (или оптимальный закон управления) можно отыскать программой для конкретной обвязки двигателя. По минимуму потребл. тока например.
А в древних электромеханич. часах подобное делалось на 2х транзисторах без всяких ШИМ и мостов.

В двигателе bosh 24V 180W внутри стоит помехоподавляющий кондёр 0,68 мкФ и 2 мелких дросселя:
http://www.bosch-ibusiness.com/boaaelmoocs/category/DPO-K/342/product/766 — вкладка «connection diagram».
Индуктивность самого ротора даже те дотошные немцы и нижеуказанные американцы в паспорте не указывают, значит она не играет существенной роли.

Зато в даташитах встречаются:
Torque Sensitivity (Nm/amp)
Back EMF (volts/KRPM)

http://www.moog.com/literature/MCG/moc23series.pdf

P.S. сюда бы вам свою задачку подкинуть с подробностями, там участники гораздо практичнее и не «шпарят формулами» с разбега.
https://geektimes.ru/post/275904/

P.P.S. «kill all humans» в метках это шутка? Роботы с такими приводами и затратами ресурсов на разработку и сборку невыгодны и нежизнеспособны. Редкоземельные металлы для магнитов ДПТ быстрее закончатся, чем людские самообучаемые ресурсы.
Индуктивность самого ротора даже те дотошные немцы и нижеуказанные американцы в паспорте не указывают, значит она не играет существенной роли.
Зато в даташитах встречаются:
Torque Sensitivity (Nm/amp)
Back EMF (volts/KRPM)

Все верно, не указывают Rя и Lя, но указывают постоянные времени (Electrical Time Constant, Mech. Time Constant), которые нужны для полной идентификации модели двигателя. Кстати, отдельно указаны сопротивление и индуктивность клемм! Можно не поверить на слово производителю и самому все измерить и отнять значения для клемм.

Описание ДПТ с постоянными магнитами, кратко и по существу ->
http://imed.narod.ru/el_mech/motor_dc.htm

З.Ы.: А даташит для примера отличнейший. Даже теплопроводность есть для расчета тепловых режимов работы.
Эээ… Вы мне предлагаете обычный мост, у меня даже лежит прямо этот на столе, плюс ставить датчик тока, и управлять моментом программно. Один-в-один то, что у меня получилось…
С датчика тока аппаратно (RC цепочкой) интегрируете показания, добавляете 2-3 оптрона (датчики положения маятника в ключевых точках, рассчитанных со всей мощью современного мат. аппарата), затем запираете студентов в пустой аудитории на N часов без еды с условием-заданием разработать самообучающуюся программу автомотоэлектроардуино-инерцоида с макс. возможной продолжительностью качаний на одном заряде АКБ.
Сталины-Берии в «шарашках» примерно так и делали. Ещё интернета и телевизора заключенные инженегры не видели и не отвлекались на женщин, поэтому военно-технический прогресс шёл быстрее нынешнего :)
Интересная ссылка, спасибо!

Но здесь немного иное. Здесь коллекторный двигатель постоянного тока (и, кстати, ни слова про тип возбуждения).

Имхо всё можно реализовать гораздо проще через аппаратный (1156ЕУ3, MC34063 и пр.) ШИМ с обратной связью по току с шунта в цепи двигателя. Даже в роли индуктивности можно индуктивность двигателя использовать.
Вчитался подробнее и разглядел: значения R и L находятся… подбором!
Столько матана чтобы потом тупо подобрать сопротивление и индуктивность, которые лучше всего соответствуют входным данным? И какова же точность такого способа?
Минуту. А существует вообще измерение чего бы то ни было, где подбора нет?
Не понял вопроса, если честно.

Если обратиться к моему первому комментарию например, то там происходит косвенное измерение сопротивления: измеряем ток и напряжение, затем по закону Ома вычисляем (это ключевое слово) искомую величину — сопротивление. Точность определения сопротивления обеспечивается точностью измерения тока и напряжения.

То же самое для индуктивности: измеряем переменные ток и напряжение. Для простоты можно принять f = 50 Гц, но по-серьёзному нужно измерять и частоту (и заодно применить генератор синусоидального сигнала). Затем по закону Ома вычисляем X_L — индуктивное сопротивление на данной частоте, а уже из него опять-таки вычисляем искомую индуктивность. Точность обеспечивается точностью измерения тока, напряжения и частоты.

Оба описанных способа обеспечивают косвенное измерение искомой величины без какого бы то ни было подбора.
> Оба описанных способа обеспечивают косвенное измерение искомой величины без какого бы то ни было подбора.

Вот тут позвольте не согласиться. Уже выбирая режим на омметре, у вас есть подбор. И то, что вы, выбрав режим на омметре, дальше читаете значение на дисплее, не говорит, что омметр не производит подбора. Он просто скрытый и аппаратно реализованный.
Выбирая режим на омметре, я выбираю режим работы прибора в соответствии с его руководством по эксплуатации. И мне не важно, как он работает. Мне важно, что он 1) обеспечивает измерение сопротивлений в заданном диапазоне; 2) делает это с достаточной точностью. Точность эта обеспечена самим прибором и подтверждена при его поверке. А чем обеспечена точность вашего способа нахождения (специально не говорю «измерения») R и L?

И вообще, измерительные приборы бывают аналоговые (стрелочные). Их точность бывает гораздо лучше 1%. Пользовался вольтамперметром постоянного тока класса 0,2. Замечательный прибор. Какой может быть подбор в магнитоэлектрическом например механизме?
Ну а у меня точность ограничена качеством АЦП в моей системе. И да, она гораздо ниже одного процента, но достаточна для моих целей. А давайте спорить, что ваш омметр всё равно не покажет два раза одного и того же сопротивления на клеммах двигателя? Разброс будет существенно большое 1%.
haqreu,Vcoderlab предлагает вам воспользоваться «готовым велосипедом». Это самый простейший способ нахождения параметров ДПТ с постоянными магнитами, если не считать данные из техпаспорта двигателя от производителя (если таковой есть). Этот способ не требует наличия какого-то навороченного измерительного оборудования. И это будут реальные данные.
По точности ваших измерений. Fpwm в вашем проекте 7,8кГц, а Fadc_conv — 9,6кГц. Может быть проблема с точностью измерения, т.к. частота дискретизации сопоставима с частотой измеряемого сигнала (Fadc_conv / Fpwm = 1,23). Я бы порекомендовал увеличить до Fadc_conv = 3...5 * Fpwm. Ну, или снизить Fpwm.
https://ru.wikipedia.org/wiki/Теорема_Котельникова
Простите, но если я не путаю педали, то теорема Котельникова здесь совершенно ни при чём. Давайте для простоты предположим, что Fpwm = Fadc_conv = 7.8кГц. Так вот, ацп в течение 128 микросекунд усредняет сигнал, измерив его примерно 13 раз, и посчитав среднее. Ну а затем мы этот усреднённый сигнал выводим наружу.

Способ с лампочками меня не устраивает, т.к. мне для контура тока неплохо бы иметь в сборе всю систему, включая и датчик тока, который может не соответствовать даташиту (мне повезло, один нашёлся хороший), и вносящий искажения драйвер.
АЦП в вашем МК типа SAR (последовательного приближения). В указанном вами даташите на рис. 24.5 (стр. 241) приведена диаграмма «боевого» режима: 1,5 такта — выборка канала и обновление опоры -> захват -> остальные такты — последовательное приближение и сохранение в буфер. Где тут 13 измерений и усреднение?
Для качественного регулирования вам нужно получить N выборок/измерений и выполнить расчет Irms, таким образом устраняем помехи. А ДПТ может ой как шуметь.
Вот с этим самым N нужно определиться, учесть характер нагрузки и возможности аппаратуры СУ.

Касаемо лампочек, Vcoderlab утрировал, тут главное принцип. Подавать 220В на ДПТ рабочим напряжением 24В опасно. Изоляция может не выдержать, с последствиями. А вот подать напряжение частотой 50Гц через трансформатор 220/24 (220/15), не имея лабораторного генератора, можно.

Датчик тока откалибруйте посредством ПО, введите юстировочные числа.
А скажите, пожалуйста, когда Вы проводите серию тестов, получаете набор измерений, а потом сводите этот набор к единственному значению, это не является некоторым подбором?
В разделах где даётся математика у вас полная каша. Куча смысловых ошибок, невнятные/непонятные определения. Очень сложно вас понять в этих абзацах.
Не могли бы вы быть более конкретным? Приведите, пожалуйста, список ошибок с исправлениями? Иначе ваш комментарий бесполезен.
1)В начале раздела «Преобразование Фурье» вы начинаете говорить о каких-то функция, но о каких не понятно. Что функции принимают, что возвращают? Если они работают с векторами, то в каком пространстве?

>я считаю, что функция и вектор — это одно и то же.
>Ровно так же можно считать этот вектор значениями функции в точках 0, 1, 2, 3,
Это вообще не понятно что значит? Фракталы или какое-то особое пространство?

2)>В нашем случае преобразование Фурье — это функция из вещественных чисел в комплексные:
Обычно это преобразование переводит вещественное число в вещественное и из ваших дальнейших слов совершенно непонятно что это за преобразование и от куда появляется комплексная часть. Я так понял что вы разлагаете в ряд через экспоненты с мнимой степенью и применяете формулу Эйлера?

3)>Аргумент функции (вещественное число) — это просто номер базисной функции или вектора (на самом деле, пары базисных функций)
Опять непонятно в каком пространстве мы работаем? Что такое базисная функция и её номер? Вектор в начале у вас 4D, преобразование фурье делаете в 1D, а говорите о пространстве функциональном.

4)>Как вариант, в лоб: сначала посчитать производную, а затем посчитать преобразование Фурье:
-----формула-----
производная у вас посчитана неправильно

дальше не осилил
Давайте по порядку, начиная с простого. В производной да, моя ошибка, разумеется, 90° не умножается на t, это опечатка. Спасибо за замечание, сейчас поправлю.
Так, поправил производную. Давайте дальше.

>Это вообще не понятно что значит? Фракталы или какое-то особое пространство?

Ни о каких фракталах речи не идёт. Простое сэмплирование функции. Если у вас четыре сэмпла, то это «проекция» изначальной функции из |R в |R на базис (1,0,0,0), (0,1,0,0), (0,0,1,0), (0,0,0,1). Каждый из базисный векторов под номером i может рассматриваться как сдвиг единичного всплеска δ(x-i).
>Обычно это преобразование переводит вещественное число в вещественное и из ваших дальнейших слов
>совершенно непонятно что это за преобразование и от куда появляется комплексная часть. Я так понял
>что вы разлагаете в ряд через экспоненты с мнимой степенью и применяете формулу Эйлера?

Вот тут, возможно, я чего-то подзабыл, но мне казалось, что Фурье вещественен для чистых косинусов, без сдвига по фазе. Как только появляется фазовый сдвиг, появляются синусные координаты, то есть, комплексная часть. Так что да, формула Эйлера.

>Опять непонятно в каком пространстве мы работаем? Что такое базисная функция и её номер?
>Вектор в начале у вас 4D, преобразование фурье делаете в 1D, а говорите о пространстве функциональном.

Так. Берём входную функцию f из |R в |R. Чтобы её представить, нам нужно очень большое количество сэмплов (вообще бесконечное). Каждый из сэмплов получается сдвигом единичного всплеска (в нуле) на заданную величину. Таким образом, сдвиг, по факту, даёт нам индекс базисной функции (всплеска) из |R в |R.

Преобразование Фурье берёт эту функцию f на вход, и сопоставляет ей другую функцию F: |R -> (C. Другими словами, F — это разложение функции f в (бесконечный) базис синусов и косинусов. F отображает множество частот |R в множество пар коэффициентов |R^2 [ну или (C ].
Когда F(w) = a + bi, то это значит, что функция f имеет ненулевую проекцию на функцию sin(wt) и ненулевую проекцию на cos(wt). Иначе говоря, сэмплируем c огромным количеством sin(wt) и cos(wt), получим два вектора. Сэмплируем вектор f(t) в тех же точках. Проекция вектора f(t) на вектор sin(wt) будет равна b, проекция вектора f(t) на вектор cos(wt) будет равна a.

Не могу понять что такое у вас всплеск δ(x-i)? Это дельта функция?
Я вообще говорил про её дискретную версию, но вообще да, она.
Это плохое разложение, у вас при нём не будет работать производная, а вы её используете в статье.
Я его не использую вообще. Собственно, это разложение — это стандартное представление функций через сэмплирование. Я только пытался донести до людей, кто не работал с таким матаппаратом, что преобразование Фурье и Лапласа — это просто смена базиса, но мы продолжаем работать с той же самой функцией, это всё.
Я про производную. Её от этой функции брали и от новой функции после разложения Фурье.

У вас проблема с подачей. Одновременно и запутанно и избыточно, так что новичок не поймёт. В тоже время слишком неформально и знающему тоже не понять.

Мне вообще было интересно про измерение индуктивности почитать, а я из-за этой штуки завис)
Как я понял, происходит измерение осциллограммы тока при подаче постоянного напряжения, а потом подбор значений R и L, при которых рассчётный график максимально близок к измеренному.
Не уверен про термин осциллограмма, но в целом именно так.
Вообще согласен. Я привык о математике устно разговаривать, там всё проще. Вообще раздел «ликбез» можно из данной статьи опустить, но он мне там нравится, поскольку если и плохо объясняет, то, по меньшей мере, даёт ключевые слова для понимания базы.
Далее, параметры, найденные при высокой амплитуде сигнала, не совсем совпадают с тем, что получается при низких напряжениях. Может быть интересно (тут не рассмотрено) делать модель не только двигателя, а всей системы в целом, включая нелинейность ШИМ-драйвера.

Т.к. используется ДПТ, то есть падение напряжения на щетках коллектора, отсюда отличие на малых напряжениях.

Вы же разрабатываете систему позиционирования (удержание обратного маятника)? Т.е., скорости почти нулевые, но ускорения могут принимать большие значения. Поправьте, если не правильно понял.

Корректно было б рассматривать систему в целом, учесть механическую часть (массы, моменты инерции, лин./угл. скорости, ускорения) и привести все это к валу двигателя. Несмотря на кажущуюся простоту, там есть где «забуксовать» и не единожды.
Нашел у себя в остатках восстановленного методичку ХАИ по системам позиционирования:
https://yadi.sk/d/dgfiDOr4yDLx5
Да, мне нужно управлять чем-нибудь вроде маятника. Реально мне нужно управлять силой, приложенной к ремню, а это ток, протекающий через обмотки. Массы-моменты-инерции это уже будет уровнем выше. Спасибо за методичку, полистаю.
Если в вашей конструкции сила будет прикладываться без движения, я бы на вашем месте беспокоился о перегреве двигателя. Моторы обычно рассчитаны на охлаждение воздухом, гонимым якорем / ротором на номинальных оборотах. Протекание близкого к номинальному тока без вращения или на сильно заниженных оборотах может привести к перегреву.
Извините, ниже немного оффтопик.
Правильно ли я понимаю, что с помощью предложенной схемы можно менять усилие на валу и одновременно понимать, что двигатель застопорился (достиг упора или перегружен)? У меня сейчас похожая задача, а в голове только решения в стиле орков из Wh40k:
имеется магазинный ченджер светофильтров, ёмкостью в 4 штуки. Его видно на этом фото, между предметным столом и станиной, с жёлтой наклейкой. В каждой из 4 позиций ченджер фиксируется с помощью классического подпружиненного шарика. Положения меняются вручную, перемещением ручки.
Я хотел бы добавить возможность переключать светофильтры с компьютера, не теряя возможности переключать вручную.
Реализовать я хотел с помощью абсолютного энкодера и простенького ШД немного избыточной мощности, у которого по достижении нужного положения просто снимался ток с обмоток, чтобы он свободно прокручивался рукой. Если я правильно понял посыл статьи, то можно будет выкинуть энкодер и позиционироваться по точкам механической фиксации, и взять маломощный асинхронник, из точек фиксации выходить рывком через повышение тока, а потом ток снижать.
Остановитесь на ШД, думаю, это значительно проще будет.
Мне почему-то думается, что если в авторской задаче период колебаний маятника около секунды, то для его стабилизации хватит и обычного коллекторного ДПТ без ШИМ управления. Даём ему 2 дозированных по времени разнонаправленных импульса за цикл работы. Полностью включаем ток на несколько сотен мс, пока маятник не долетит до следующей контр. точки. Потом в другую сторону подталкиваем и всё.
Главное датчики положения маятника и ускорения тележки правильно расставить и ардуину обучить слать сигналы вовремя.
Мне кажется, поставлена задача — реализовать DTC, баста. ВУЗ… не ищите логику
что такое DTC? в гугле какая-то ерунда возвращается, самое «техническое» — про БМВ.
Direct torque control
https://en.wikipedia.org/wiki/Direct_torque_control
Спасибо. Это то, чего бы мне хотелось, но, судя по статье на вики, это дикий оверкилл.
Прошу извинить, сам ошибся и вас ввел в заблуждение. Аббревиатура DTC из управления 3-фазными двигателями. В задаче автора ДПТ.
Подскажите пожалуйста ссылочку, на платку, которая у вас питает макетку.
У меня сейчас это основная головная боль — приделать к макету вменяемое питание.
Sign up to leave a comment.

Articles